本文整理汇总了Golang中github.com/juju/juju/agent.ReadConfig函数的典型用法代码示例。如果您正苦于以下问题:Golang ReadConfig函数的具体用法?Golang ReadConfig怎么用?Golang ReadConfig使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ReadConfig函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: RunTestOpenAPIState
func (s *UnitSuite) RunTestOpenAPIState(c *gc.C, ent state.AgentEntity, agentCmd Agent, initialPassword string) {
conf, err := agent.ReadConfig(agent.ConfigPath(s.DataDir(), ent.Tag()))
c.Assert(err, jc.ErrorIsNil)
conf.SetPassword("")
err = conf.Write()
c.Assert(err, jc.ErrorIsNil)
// Check that it starts initially and changes the password
assertOpen := func(conf agent.Config) {
st, gotEnt, err := OpenAPIState(conf, agentCmd)
c.Assert(err, jc.ErrorIsNil)
c.Assert(st, gc.NotNil)
st.Close()
c.Assert(gotEnt.Tag(), gc.Equals, ent.Tag().String())
}
assertOpen(conf)
// Check that the initial password is no longer valid.
err = ent.Refresh()
c.Assert(err, jc.ErrorIsNil)
c.Assert(ent.PasswordValid(initialPassword), jc.IsFalse)
// Read the configuration and check that we can connect with it.
conf, err = agent.ReadConfig(agent.ConfigPath(conf.DataDir(), conf.Tag()))
//conf = refreshConfig(c, conf)
c.Assert(err, gc.IsNil)
// Check we can open the API with the new configuration.
assertOpen(conf)
}
示例2: TestOpenAPIState
func (s *UnitSuite) TestOpenAPIState(c *gc.C) {
_, unit, conf, _ := s.primeAgent(c)
configPath := agent.ConfigPath(conf.DataDir(), conf.Tag())
// Set an invalid password (but the old initial password will still work).
// This test is a sort of unsophisticated simulation of what might happen
// if a previous cycle had picked, and locally recorded, a new password;
// but failed to set it on the state server. Would be better to test that
// code path explicitly in future, but this suffices for now.
confW, err := agent.ReadConfig(configPath)
c.Assert(err, gc.IsNil)
confW.SetPassword("nonsense-borken")
err = confW.Write()
c.Assert(err, jc.ErrorIsNil)
// Check that it successfully connects (with the conf's old password).
assertOpen := func() {
agent := NewAgentConf(conf.DataDir())
err := agent.ReadConfig(conf.Tag().String())
c.Assert(err, jc.ErrorIsNil)
st, gotEntity, err := apicaller.OpenAPIState(agent)
c.Assert(err, jc.ErrorIsNil)
c.Assert(st, gc.NotNil)
st.Close()
c.Assert(gotEntity.Tag(), gc.Equals, unit.Tag().String())
}
assertOpen()
// Check that the old password has been invalidated.
assertPassword := func(password string, valid bool) {
err := unit.Refresh()
c.Assert(err, jc.ErrorIsNil)
c.Check(unit.PasswordValid(password), gc.Equals, valid)
}
assertPassword(initialUnitPassword, false)
// Read the stored password and check it's valid.
confR, err := agent.ReadConfig(configPath)
c.Assert(err, gc.IsNil)
apiInfo, ok := confR.APIInfo()
c.Assert(ok, jc.IsTrue)
newPassword := apiInfo.Password
assertPassword(newPassword, true)
// Double-check that we can open a fresh connection with the stored
// conf ... and that the password hasn't been changed again.
assertOpen()
assertPassword(newPassword, true)
}
示例3: assertUpgradeSteps
func (s *UpgradeSuite) assertUpgradeSteps(c *gc.C, job state.MachineJob) {
s.agentSuite.PatchValue(&version.Current, s.upgradeToVersion)
err := s.State.SetEnvironAgentVersion(s.upgradeToVersion.Number)
c.Assert(err, gc.IsNil)
oldVersion := s.upgradeToVersion
oldVersion.Major = 1
oldVersion.Minor = 16
var oldConfig agent.Config
s.machine, oldConfig, _ = s.primeAgent(c, oldVersion, job)
a := s.newAgent(c, s.machine)
go func() { c.Check(a.Run(nil), gc.IsNil) }()
defer func() { c.Check(a.Stop(), gc.IsNil) }()
// Wait for upgrade steps to run.
success := false
for attempt := coretesting.LongAttempt.Start(); attempt.Next(); {
conf, err := agent.ReadConfig(agent.ConfigPath(oldConfig.DataDir(), s.machine.Tag()))
c.Assert(err, gc.IsNil)
success = conf.UpgradedToVersion() == s.upgradeToVersion.Number
if success {
break
}
}
// Upgrade worker has completed ok.
c.Assert(success, jc.IsTrue)
}
示例4: assertConfigNotProcessed
func (s *migrateLocalProviderAgentConfigSuite) assertConfigNotProcessed(c *gc.C) {
envConfig, err := s.State.EnvironConfig()
c.Assert(err, jc.ErrorIsNil)
allAttrs := envConfig.AllAttrs()
namespace, _ := allAttrs["namespace"].(string)
c.Assert(namespace, gc.Equals, "")
container, _ := allAttrs["container"].(string)
c.Assert(container, gc.Equals, "")
rootDir, _ := allAttrs["root-dir"].(string)
expectedSharedStorageDir := filepath.Join(rootDir, "shared-storage")
_, err = os.Lstat(expectedSharedStorageDir)
c.Assert(err, jc.ErrorIsNil)
tag := s.ctx.AgentConfig().Tag()
// We need to read the actual migrated agent config.
configFilePath := agent.ConfigPath(agent.DefaultDataDir, tag)
agentConfig, err := agent.ReadConfig(configFilePath)
c.Assert(err, jc.ErrorIsNil)
c.Assert(agentConfig.DataDir(), gc.Equals, agent.DefaultDataDir)
c.Assert(agentConfig.LogDir(), gc.Equals, agent.DefaultLogDir)
c.Assert(agentConfig.Jobs(), gc.HasLen, 0)
c.Assert(agentConfig.Value("SHARED_STORAGE_ADDR"), gc.Equals, "blah")
c.Assert(agentConfig.Value("SHARED_STORAGE_DIR"), gc.Equals, expectedSharedStorageDir)
c.Assert(agentConfig.Value(agent.Namespace), gc.Equals, "")
c.Assert(agentConfig.Value(agent.AgentServiceName), gc.Equals, "")
c.Assert(agentConfig.Value(agent.ContainerType), gc.Equals, "")
}
示例5: removeEnvUUIDFromAgentConfig
func (s *migrateAgentEnvUUIDSuite) removeEnvUUIDFromAgentConfig(c *gc.C) {
// Read the file in as simple map[string]interface{} and delete
// the element, and write it back out again.
// First step, read the file contents.
filename := agent.ConfigPath(agent.DefaultDataDir, s.machine.Tag())
data, err := ioutil.ReadFile(filename)
c.Assert(err, jc.ErrorIsNil)
c.Logf("Data in:\n\n%s\n", data)
// Parse it into the map.
var content map[string]interface{}
err = goyaml.Unmarshal(data, &content)
c.Assert(err, jc.ErrorIsNil)
// Remove the environment value, and marshal back into bytes.
delete(content, "environment")
data, err = goyaml.Marshal(content)
c.Assert(err, jc.ErrorIsNil)
// Write the yaml back out remembering to add the format prefix.
data = append([]byte("# format 1.18\n"), data...)
c.Logf("Data out:\n\n%s\n", data)
err = ioutil.WriteFile(filename, data, 0644)
c.Assert(err, jc.ErrorIsNil)
// Reset test attributes.
cfg, err := agent.ReadConfig(filename)
c.Assert(err, jc.ErrorIsNil)
s.ctx.realAgentConfig = cfg
}
示例6: Run
func (c *MigrateCommand) Run(ctx *cmd.Context) (err error) {
defer func() {
if err != nil {
fmt.Fprintf(ctx.Stdout, "error stack:\n"+errors.ErrorStack(err))
}
}()
loggo.GetLogger("juju").SetLogLevel(loggo.DEBUG)
conf, err := agent.ReadConfig(agent.ConfigPath(c.dataDir, c.machineTag))
if err != nil {
return err
}
info, ok := conf.MongoInfo()
if !ok {
return errors.Errorf("no state info available")
}
st, err := state.Open(conf.Model(), info, mongo.DefaultDialOpts(), environs.NewStatePolicy())
if err != nil {
return err
}
defer st.Close()
if c.operation == "export" {
return c.exportModel(ctx, st)
}
return c.importModel(ctx, st)
}
示例7: assertConfigProcessed
func (s *migrateLocalProviderAgentConfigSuite) assertConfigProcessed(c *gc.C) {
envConfig, err := s.State.EnvironConfig()
c.Assert(err, jc.ErrorIsNil)
allAttrs := envConfig.AllAttrs()
namespace, _ := allAttrs["namespace"].(string)
c.Assert(namespace, gc.Equals, "user-dummyenv")
container, _ := allAttrs["container"].(string)
c.Assert(container, gc.Equals, "lxc")
expectedDataDir, _ := allAttrs["root-dir"].(string)
expectedSharedStorageDir := filepath.Join(expectedDataDir, "shared-storage")
_, err = os.Lstat(expectedSharedStorageDir)
c.Assert(err, gc.NotNil)
c.Assert(err, jc.Satisfies, os.IsNotExist)
expectedLogDir := filepath.Join(*upgrades.RootLogDir, "juju-"+namespace)
expectedJobs := []multiwatcher.MachineJob{multiwatcher.JobManageEnviron}
tag := s.ctx.AgentConfig().Tag()
// We need to read the actual migrated agent config.
configFilePath := agent.ConfigPath(expectedDataDir, tag)
agentConfig, err := agent.ReadConfig(configFilePath)
c.Assert(err, jc.ErrorIsNil)
c.Assert(agentConfig.DataDir(), gc.Equals, expectedDataDir)
c.Assert(agentConfig.LogDir(), gc.Equals, expectedLogDir)
c.Assert(agentConfig.Jobs(), gc.DeepEquals, expectedJobs)
c.Assert(agentConfig.Value("SHARED_STORAGE_ADDR"), gc.Equals, "")
c.Assert(agentConfig.Value("SHARED_STORAGE_DIR"), gc.Equals, "")
c.Assert(agentConfig.Value(agent.Namespace), gc.Equals, namespace)
agentService := "juju-agent-user-dummyenv"
c.Assert(agentConfig.Value(agent.AgentServiceName), gc.Equals, agentService)
c.Assert(agentConfig.Value(agent.ContainerType), gc.Equals, "")
}
示例8: getMachine0Config
func (s *UpgradeSuite) getMachine0Config(c *gc.C) agent.Config {
conf, err := agent.ReadConfig(agent.ConfigPath(
s.machine0Config.DataDir(),
s.machine0.Tag(),
))
c.Assert(err, gc.IsNil)
return conf
}
示例9: assertCanOpenState
func (s *agentSuite) assertCanOpenState(c *gc.C, tag, dataDir string) {
config, err := agent.ReadConfig(agent.ConfigPath(dataDir, tag))
c.Assert(err, gc.IsNil)
info, ok := config.StateInfo()
c.Assert(ok, jc.IsTrue)
st, err := state.Open(info, mongo.DialOpts{}, environs.NewStatePolicy())
c.Assert(err, gc.IsNil)
st.Close()
}
示例10: AssertCanOpenState
func (s *AgentSuite) AssertCanOpenState(c *gc.C, tag names.Tag, dataDir string) {
config, err := agent.ReadConfig(agent.ConfigPath(dataDir, tag))
c.Assert(err, jc.ErrorIsNil)
info, ok := config.MongoInfo()
c.Assert(ok, jc.IsTrue)
st, err := state.Open(config.Model(), info, mongo.DefaultDialOpts(), environs.NewStatePolicy())
c.Assert(err, jc.ErrorIsNil)
st.Close()
}
示例11: AssertCanOpenState
func (s *AgentSuite) AssertCanOpenState(c *gc.C, tag names.Tag, dataDir string) {
config, err := agent.ReadConfig(agent.ConfigPath(dataDir, tag))
c.Assert(err, jc.ErrorIsNil)
info, ok := config.MongoInfo()
c.Assert(ok, jc.IsTrue)
st, err := state.Open(config.Model(), config.Controller(), info, mongotest.DialOpts(), stateenvirons.GetNewPolicyFunc(
stateenvirons.GetNewEnvironFunc(environs.New),
))
c.Assert(err, jc.ErrorIsNil)
st.Close()
}
示例12: TestWriteAndRead
func (*suite) TestWriteAndRead(c *gc.C) {
testParams := attributeParams
testParams.Paths.DataDir = c.MkDir()
testParams.Paths.LogDir = c.MkDir()
conf, err := agent.NewAgentConfig(testParams)
c.Assert(err, jc.ErrorIsNil)
c.Assert(conf.Write(), gc.IsNil)
reread, err := agent.ReadConfig(agent.ConfigPath(conf.DataDir(), conf.Tag()))
c.Assert(err, jc.ErrorIsNil)
c.Assert(reread, jc.DeepEquals, conf)
}
示例13: TestInitialPassword
func (s *BootstrapSuite) TestInitialPassword(c *gc.C) {
machineConf, cmd, err := s.initBootstrapCommand(c, nil, "--env-config", s.envcfg, "--instance-id", string(s.instanceId))
c.Assert(err, gc.IsNil)
err = cmd.Run(nil)
c.Assert(err, gc.IsNil)
// Check that we cannot now connect to the state without a
// password.
info := &authentication.MongoInfo{
Info: mongo.Info{
Addrs: []string{gitjujutesting.MgoServer.Addr()},
CACert: testing.CACert,
},
}
testOpenState(c, info, errors.Unauthorizedf(""))
// Check we can log in to mongo as admin.
// TODO(dfc) does passing nil for the admin user name make your skin crawl ? mine too.
info.Tag, info.Password = nil, testPasswordHash()
st, err := state.Open(info, mongo.DefaultDialOpts(), environs.NewStatePolicy())
c.Assert(err, gc.IsNil)
// Reset password so the tests can continue to use the same server.
defer st.Close()
defer st.SetAdminMongoPassword("")
// Check that the admin user has been given an appropriate
// password
u, err := st.User("admin")
c.Assert(err, gc.IsNil)
c.Assert(u.PasswordValid(testPassword), gc.Equals, true)
// Check that the machine configuration has been given a new
// password and that we can connect to mongo as that machine
// and that the in-mongo password also verifies correctly.
machineConf1, err := agent.ReadConfig(agent.ConfigPath(machineConf.DataDir(), names.NewMachineTag("0")))
c.Assert(err, gc.IsNil)
stateinfo, ok := machineConf1.MongoInfo()
c.Assert(ok, jc.IsTrue)
st, err = state.Open(stateinfo, mongo.DialOpts{}, environs.NewStatePolicy())
c.Assert(err, gc.IsNil)
defer st.Close()
m, err := st.Machine("0")
c.Assert(err, gc.IsNil)
c.Assert(m.HasVote(), jc.IsTrue)
}
示例14: checkUnitInstalled
func (fix *SimpleToolsFixture) checkUnitInstalled(c *gc.C, name, password string) {
tag := names.NewUnitTag(name)
svcName := "jujud-" + tag.String()
assertContains(c, fix.data.InstalledNames(), svcName)
svcConf := fix.data.GetInstalled(svcName).Conf()
// TODO(ericsnow) For now we just use upstart serialization.
uconfData, err := upstart.Serialize(svcName, svcConf)
c.Assert(err, jc.ErrorIsNil)
uconf := string(uconfData)
regex := regexp.MustCompile("(?m)(?:^\\s)*exec\\s.+$")
execs := regex.FindAllString(uconf, -1)
if nil == execs {
c.Fatalf("no command found in conf:\n%s", uconf)
} else if 1 > len(execs) {
c.Fatalf("Test is not built to handle more than one exec line.")
}
_, toolsDir := fix.paths(tag)
jujudPath := filepath.Join(toolsDir, "jujud"+cmdSuffix)
logPath := filepath.Join(fix.logDir, tag.String()+".log")
for _, pat := range []string{
"^exec " + quote + jujudPath + quote + " unit ",
" --unit-name " + name + " ",
" >> " + logPath + " 2>&1$",
} {
match, err := regexp.MatchString(pat, execs[0])
c.Assert(err, jc.ErrorIsNil)
if !match {
c.Fatalf("failed to match:\n%s\nin:\n%s", pat, execs[0])
}
}
conf, err := agent.ReadConfig(agent.ConfigPath(fix.dataDir, tag))
c.Assert(err, jc.ErrorIsNil)
c.Assert(conf.Tag(), gc.Equals, tag)
c.Assert(conf.DataDir(), gc.Equals, fix.dataDir)
jujudData, err := ioutil.ReadFile(jujudPath)
c.Assert(err, jc.ErrorIsNil)
c.Assert(string(jujudData), gc.Equals, fakeJujud)
}
示例15: stateInfo
func stateInfo() (*state.Info, error) {
dataDir := agent.DefaultDataDir
tag, err := machineAgentTag(dataDir)
if err != nil {
return nil, err
}
cfgPath := agent.ConfigPath(dataDir, tag)
cfg, err := agent.ReadConfig(cfgPath)
if err != nil {
return nil, err
}
info, ok := cfg.StateInfo()
if !ok {
return nil, fmt.Errorf("no state info found")
}
return info, nil
}