Example #1
0
func TestDriverNames(t *testing.T) {
	allDriverNames := []string{
		strings.ToLower(mock.MockOSDriverName),
		strings.ToLower(mock.MockVolDriverName),
		strings.ToLower(mock.MockStorDriverName),
		strings.ToLower(mock.BadMockOSDriverName),
		strings.ToLower(mock.BadMockVolDriverName),
		strings.ToLower(mock.BadMockStorDriverName),
		"linux",
		"docker",
		"ec2",
		"openstack",
		"rackspace",
		"scaleio",
		"xtremio",
	}

	var regDriverNames []string
	for dn := range core.DriverNames() {
		regDriverNames = append(regDriverNames, strings.ToLower(dn))
	}

	for _, n := range allDriverNames {
		if !util.StringInSlice(n, regDriverNames) {
			t.Fail()
		}
	}

	for _, n := range regDriverNames {
		if !util.StringInSlice(n, allDriverNames) {
			t.Fail()
		}
	}
}
Example #2
0
func TestEnvVars(t *testing.T) {
	c := New()
	c.Viper.Set("awsSecretKey", "Hello, world.")
	if !util.StringInSlice("AWS_SECRET_KEY=Hello, world.", c.EnvVars()) {
		t.Fail()
	}

	if util.StringInSlice("AWS_SECRET_KEY=Hello, world.", New().EnvVars()) {
		t.Fail()
	}
}
Example #3
0
func GetDrivers(osDrivers string) (map[string]Driver, error) {
	var err error
	var osDriversArr []string
	if osDrivers != "" {
		osDriversArr = strings.Split(osDrivers, ",")
	}

	if debug == "TRUE" {
		fmt.Println(driverInitFuncs)
	}

	for name, initFunc := range driverInitFuncs {
		if len(osDriversArr) > 0 && !util.StringInSlice(name, osDriversArr) {
			continue
		}
		drivers[name], err = initFunc()
		if err != nil {
			if debug == "TRUE" {
				fmt.Println(fmt.Sprintf("Info (%s): %s", name, err))
			}
			delete(drivers, name)
		}
	}

	return drivers, nil
}
Example #4
0
File: os.go Project: Oskoss/rexray
func getDrivers(conf *config.Config) (map[string]Driver, error) {

	driverNames := conf.OsDrivers

	log.WithFields(log.Fields{
		"driverInitFuncs": driverInitFuncs,
		"driverNames":     driverNames}).Debug("getting driver instances")

	drivers := map[string]Driver{}

	for name, initFunc := range driverInitFuncs {
		if len(driverNames) > 0 && !util.StringInSlice(name, driverNames) {
			continue
		}

		var initErr error
		drivers[name], initErr = initFunc(conf)
		if initErr != nil {
			log.WithFields(log.Fields{
				"driverName": name,
				"error":      initErr}).Debug("error initializing driver")
			delete(drivers, name)
			continue
		}

		log.WithField("driverName", name).Debug("initialized driver")
	}

	return drivers, nil
}
Example #5
0
func TestRexRayDriverNames(t *testing.T) {

	var err error
	var r *core.RexRay
	if r, err = getRexRay(); err != nil {
		panic(err)
	}

	allDriverNames := []string{
		strings.ToLower(mock.MockOSDriverName),
		strings.ToLower(mock.MockVolDriverName),
		strings.ToLower(mock.MockStorDriverName),
		strings.ToLower(mock.BadMockOSDriverName),
		strings.ToLower(mock.BadMockVolDriverName),
		strings.ToLower(mock.BadMockStorDriverName),
		"linux",
		"docker",
		"ec2",
		"openstack",
		"rackspace",
		"scaleio",
		"xtremio",
	}

	var regDriverNames []string
	for dn := range r.DriverNames() {
		regDriverNames = append(regDriverNames, strings.ToLower(dn))
	}

	for _, n := range allDriverNames {
		if !util.StringInSlice(n, regDriverNames) {
			t.Fail()
		}
	}

	for _, n := range regDriverNames {
		if !util.StringInSlice(n, allDriverNames) {
			t.Fail()
		}
	}
}
Example #6
0
func GetDrivers(daemonDrivers string) (map[string]Driver, error) {
	var err error
	var daemonDriversArr []string
	if daemonDrivers != "" {
		daemonDriversArr = strings.Split(daemonDrivers, ",")
	}

	if debug == "TRUE" {
		fmt.Println(driverInitFuncs)
	}

	driverPriority := []string{
		"dockervolumedriver",
		"dockerremotevolumedriver",
	}

	for _, name := range driverPriority {

		if len(daemonDriversArr) > 0 && !util.StringInSlice(name, daemonDriversArr) {
			continue
		}

		var initFunc InitFunc
		var ok bool
		if initFunc, ok = driverInitFuncs[name]; !ok {
			continue
		}

		drivers[name], err = initFunc()
		if err != nil {
			if debug == "TRUE" {
				fmt.Println(fmt.Sprintf("Info (%s): %s", name, err))
			}
			delete(drivers, name)
		}
		return drivers, nil
	}
	return nil, errors.New("No daemon driver loaded")
}
Example #7
0
// InitDrivers initializes the drivers for the REX-Ray platform.
func (r *RexRay) InitDrivers() error {

	od := map[string]OSDriver{}
	vd := map[string]VolumeDriver{}
	sd := map[string]StorageDriver{}

	for n, d := range r.drivers {
		switch td := d.(type) {
		case OSDriver:
			if util.StringInSlice(n, r.Config.OSDrivers) {
				if err := d.Init(r); err != nil {
					log.WithFields(log.Fields{
						"driverName": n,
						"error":      err}).Debug("error initializing driver")
					continue
				}
				od[n] = td
			}
		case VolumeDriver:
			if util.StringInSlice(n, r.Config.VolumeDrivers) {
				if err := d.Init(r); err != nil {
					log.WithFields(log.Fields{
						"driverName": n,
						"error":      err}).Debug("error initializing driver")
					continue
				}
				vd[n] = td
			}
		case StorageDriver:
			if util.StringInSlice(n, r.Config.StorageDrivers) {
				if err := d.Init(r); err != nil {
					log.WithFields(log.Fields{
						"driverName": n,
						"error":      err}).Debug("error initializing driver")
					continue
				}
				sd[n] = td
			}
		}
	}

	r.OS = &odm{
		rexray:  r,
		drivers: od,
	}

	r.Volume = &vdm{
		rexray:  r,
		drivers: vd,
	}

	r.Storage = &sdm{
		rexray:  r,
		drivers: sd,
	}

	if err := r.OS.Init(r); err != nil {
		return err
	}

	if err := r.Volume.Init(r); err != nil {
		return err
	}

	if err := r.Storage.Init(r); err != nil {
		return err
	}

	return nil
}
Example #8
0
// InitDrivers initializes the drivers for the REX-Ray platform.
func (r *RexRay) InitDrivers() error {

	od := map[string]OSDriver{}
	vd := map[string]VolumeDriver{}
	sd := map[string]StorageDriver{}

	log.Info(r.Config.Get("osDrivers"))
	log.Info(r.Config.Get("volumeDrivers"))
	log.Info(r.Config.Get("storageDrivers"))

	osDrivers := r.Config.GetStringSlice("osDrivers")
	volDrivers := r.Config.GetStringSlice("volumeDrivers")
	storDrivers := r.Config.GetStringSlice("storageDrivers")

	log.WithFields(log.Fields{
		"osDrivers":      osDrivers,
		"volumeDrivers":  volDrivers,
		"storageDrivers": storDrivers,
	}).Debug("core get drivers")

	for n, d := range r.drivers {
		switch td := d.(type) {
		case OSDriver:
			if util.StringInSlice(n, osDrivers) {
				if err := d.Init(r); err != nil {
					log.WithFields(log.Fields{
						"driverName": n,
						"error":      err}).Debug("error initializing driver")
					continue
				}
				od[n] = td
			}
		case VolumeDriver:
			if util.StringInSlice(n, volDrivers) {
				if err := d.Init(r); err != nil {
					log.WithFields(log.Fields{
						"driverName": n,
						"error":      err}).Debug("error initializing driver")
					continue
				}
				vd[n] = td
			}
		case StorageDriver:
			if util.StringInSlice(n, storDrivers) {
				if err := d.Init(r); err != nil {
					log.WithFields(log.Fields{
						"driverName": n,
						"error":      err}).Debug("error initializing driver")
					continue
				}
				sd[n] = td
			}
		}
	}

	r.OS = &odm{
		rexray:  r,
		drivers: od,
	}

	r.Volume = &vdm{
		rexray:  r,
		drivers: vd,
	}

	r.Storage = &sdm{
		rexray:  r,
		drivers: sd,
	}

	if err := r.OS.Init(r); err != nil {
		return err
	}

	if err := r.Volume.Init(r); err != nil {
		return err
	}

	if err := r.Storage.Init(r); err != nil {
		return err
	}

	return nil
}
Example #9
0
func assertEnvVar(s string, evs []string, t *testing.T) {
	if !util.StringInSlice(s, evs) {
		t.Fatal(s)
	}
}