func (c *UnitCommandBase) Init(args []string) error { if c.NumUnits < 1 { return errors.New("--num-units must be a positive integer") } if c.ToMachineSpec != "" { if c.NumUnits > 1 { return errors.New("cannot use --num-units > 1 with --to") } if !cmd.IsMachineOrNewContainer(c.ToMachineSpec) { return fmt.Errorf("invalid --to parameter %q", c.ToMachineSpec) } } return nil }
func (*namesSuite) TestNameChecks(c *gc.C) { assertMachineOrNewContainer := func(s string, expect bool) { c.Assert(cmd.IsMachineOrNewContainer(s), gc.Equals, expect) } assertMachineOrNewContainer("0", true) assertMachineOrNewContainer("00", false) assertMachineOrNewContainer("1", true) assertMachineOrNewContainer("0/lxc/0", true) assertMachineOrNewContainer("lxc:0", true) assertMachineOrNewContainer("lxc:lxc:0", false) assertMachineOrNewContainer("kvm:0/lxc/1", true) assertMachineOrNewContainer("lxc:", false) assertMachineOrNewContainer(":lxc", false) assertMachineOrNewContainer("0/lxc/", false) assertMachineOrNewContainer("0/lxc", false) assertMachineOrNewContainer("kvm:0/lxc", false) assertMachineOrNewContainer("0/lxc/01", false) assertMachineOrNewContainer("0/lxc/10", true) assertMachineOrNewContainer("0/kvm/4", true) }
func (c *AddMachineCommand) Init(args []string) error { if c.Constraints.Container != nil { return fmt.Errorf("container constraint %q not allowed when adding a machine", *c.Constraints.Container) } containerSpec, err := cmd.ZeroOrOneArgs(args) if err != nil { return err } if containerSpec == "" { return nil } // container arg can either be 'type:machine' or 'type' if c.ContainerType, err = instance.ParseSupportedContainerType(containerSpec); err != nil { if names.IsMachine(containerSpec) || !cmd.IsMachineOrNewContainer(containerSpec) { return fmt.Errorf("malformed container argument %q", containerSpec) } sep := strings.Index(containerSpec, ":") c.MachineId = containerSpec[sep+1:] c.ContainerType, err = instance.ParseSupportedContainerType(containerSpec[:sep]) } return err }