예제 #1
0
파일: manager.go 프로젝트: contiv/cluster
// NewManager initializes and returns an instance of the Manager. It returns nil
// if a failure occurs as part of initialization.
func NewManager(config *Config, configFile string) (*Manager, error) {
	if config == nil {
		return nil, errored.Errorf("nil config passed")
	}

	var err error
	config.Ansible.ExtraVariables, err = validateAndSanitizeEmptyExtraVars(
		"ansible.ExtraVariables configuration", config.Ansible.ExtraVariables)
	if err != nil {
		return nil, err
	}

	m := &Manager{
		monitor:       monitor.NewSerfSubsys(&config.Serf),
		configuration: configuration.NewAnsibleSubsys(&config.Ansible),
		reqQ:          make(chan event, 100),
		addr:          config.Manager.Addr,
		nodes:         make(map[string]*node),
		config:        config,
		configFile:    configFile,
	}
	// We give priority to boltdb inventory if both are set in config
	if config.Inventory.BoltDB != nil {
		if m.inventory, err = boltdbinv.NewBoltdbSubsys(*config.Inventory.BoltDB); err != nil {
			return nil, err
		}
	} else if config.Inventory.Collins != nil {
		if m.inventory, err = collinsinv.NewCollinsSubsys(*config.Inventory.Collins); err != nil {
			return nil, err
		}
	} else {
		// if no inventory config was provided then we default to boltDb
		if m.inventory, err = boltdbinv.NewBoltdbSubsys(boltdb.DefaultConfig()); err != nil {
			return nil, err
		}
	}

	if err := m.monitor.RegisterCb(monitor.Discovered, m.enqueueMonitorEvent); err != nil {
		return nil, errored.Errorf("failed to register node discovery callback. Error: %s", err)
	}

	if err := m.monitor.RegisterCb(monitor.Disappeared, m.enqueueMonitorEvent); err != nil {
		return nil, errored.Errorf("failed to register node disappearance callback. Error: %s", err)
	}

	return m, nil
}
예제 #2
0
파일: utils.go 프로젝트: contiv/cluster
func (s *SystemTestSuite) nukeNodesInBoltdb(c *C) {
	dbfile := boltdb.DefaultConfig().DBFile
	out, err := s.tbn1.RunCommandWithOutput(fmt.Sprintf("sudo rm -f %s", dbfile))
	c.Logf("boltdb asset deletion result: %v. Output: %s", err, out)
}