本文整理汇总了Golang中github.com/juju/juju/cmd/envcmd.GetEnvironmentVersion函数的典型用法代码示例。如果您正苦于以下问题:Golang GetEnvironmentVersion函数的具体用法?Golang GetEnvironmentVersion怎么用?Golang GetEnvironmentVersion使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetEnvironmentVersion函数的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestSuccess
func (s *EnvironmentVersionSuite) TestSuccess(c *gc.C) {
vs := "1.22.1"
s.fake.agentVersion = vs
v, err := envcmd.GetEnvironmentVersion(s.fake)
c.Assert(err, jc.ErrorIsNil)
c.Assert(v.Compare(version.MustParse(vs)), gc.Equals, 0)
}
示例2: TestInvalidVersion
func (s *EnvironmentVersionSuite) TestInvalidVersion(c *gc.C) {
s.fake.agentVersion = "a.b.c"
_, err := envcmd.GetEnvironmentVersion(s.fake)
c.Assert(err, gc.ErrorMatches, "unable to parse environment version: .+")
}
示例3: TestInvalidVersionType
func (s *EnvironmentVersionSuite) TestInvalidVersionType(c *gc.C) {
s.fake.agentVersion = 99
_, err := envcmd.GetEnvironmentVersion(s.fake)
c.Assert(err, gc.ErrorMatches, "invalid environment version type in config")
}
示例4: TestNoVersion
func (s *EnvironmentVersionSuite) TestNoVersion(c *gc.C) {
_, err := envcmd.GetEnvironmentVersion(s.fake)
c.Assert(err, gc.ErrorMatches, "version not found in environment config")
}
示例5: TestApiCallFails
func (s *EnvironmentVersionSuite) TestApiCallFails(c *gc.C) {
s.fake.err = errors.New("boom")
_, err := envcmd.GetEnvironmentVersion(s.fake)
c.Assert(err, gc.ErrorMatches, "unable to retrieve environment config: boom")
}
示例6: Run
func (c *addCommand) Run(ctx *cmd.Context) error {
client, err := c.getClientAPI()
if err != nil {
return errors.Trace(err)
}
defer client.Close()
var machineManager MachineManagerAPI
if len(c.Disks) > 0 {
machineManager, err = c.getMachineManagerAPI()
if err != nil {
return errors.Trace(err)
}
defer machineManager.Close()
if machineManager.BestAPIVersion() < 1 {
return errors.New("cannot add machines with disks: not supported by the API server")
}
}
logger.Infof("load config")
var config *config.Config
if defaultStore, err := configstore.Default(); err != nil {
return err
} else if config, err = c.Config(defaultStore, client); err != nil {
return err
}
if c.Placement != nil && c.Placement.Scope == "ssh" {
logger.Infof("manual provisioning")
args := manual.ProvisionMachineArgs{
Host: c.Placement.Directive,
Client: client,
Stdin: ctx.Stdin,
Stdout: ctx.Stdout,
Stderr: ctx.Stderr,
UpdateBehavior: ¶ms.UpdateBehavior{
config.EnableOSRefreshUpdate(),
config.EnableOSUpgrade(),
},
}
machineId, err := manualProvisioner(args)
if err == nil {
ctx.Infof("created machine %v", machineId)
}
return err
}
logger.Infof("environment provisioning")
if c.Placement != nil && c.Placement.Scope == "env-uuid" {
c.Placement.Scope = client.EnvironmentUUID()
}
if c.Placement != nil && c.Placement.Scope == instance.MachineScope {
// It does not make sense to add-machine <id>.
return fmt.Errorf("machine-id cannot be specified when adding machines")
}
jobs := []multiwatcher.MachineJob{multiwatcher.JobHostUnits}
envVersion, err := envcmd.GetEnvironmentVersion(client)
if err != nil {
return err
}
// Servers before 1.21-alpha2 don't have the networker so don't
// try to use JobManageNetworking with them.
//
// In case of MAAS and Joyent JobManageNetworking is not added
// to ensure the non-intrusive start of a networker like above
// for the manual provisioning. See this related joyent bug
// http://pad.lv/1401423
if envVersion.Compare(version.MustParse("1.21-alpha2")) >= 0 &&
config.Type() != provider.MAAS &&
config.Type() != provider.Joyent {
jobs = append(jobs, multiwatcher.JobManageNetworking)
}
machineParams := params.AddMachineParams{
Placement: c.Placement,
Series: c.Series,
Constraints: c.Constraints,
Jobs: jobs,
Disks: c.Disks,
}
machines := make([]params.AddMachineParams, c.NumMachines)
for i := 0; i < c.NumMachines; i++ {
machines[i] = machineParams
}
var results []params.AddMachinesResult
// If storage is specified, we attempt to use a new API on the service facade.
if len(c.Disks) > 0 {
results, err = machineManager.AddMachines(machines)
} else {
results, err = client.AddMachines(machines)
if params.IsCodeNotImplemented(err) {
if c.Placement != nil {
containerType, parseErr := instance.ParseContainerType(c.Placement.Scope)
if parseErr != nil {
// The user specified a non-container placement directive:
//.........这里部分代码省略.........