func (s *clientSuite) TestClientAddMachinesWithPlacement(c *gc.C) { apiParams := make([]params.AddMachineParams, 4) for i := range apiParams { apiParams[i] = params.AddMachineParams{ Jobs: []multiwatcher.MachineJob{multiwatcher.JobHostUnits}, } } apiParams[0].Placement = instance.MustParsePlacement("lxd") apiParams[1].Placement = instance.MustParsePlacement("lxd:0") apiParams[1].ContainerType = instance.LXD apiParams[2].Placement = instance.MustParsePlacement("controller:invalid") apiParams[3].Placement = instance.MustParsePlacement("controller:valid") machines, err := s.APIState.Client().AddMachines(apiParams) c.Assert(err, jc.ErrorIsNil) c.Assert(len(machines), gc.Equals, 4) c.Assert(machines[0].Machine, gc.Equals, "0/lxd/0") c.Assert(machines[1].Error, gc.ErrorMatches, "container type and placement are mutually exclusive") c.Assert(machines[2].Error, gc.ErrorMatches, "cannot add a new machine: invalid placement is invalid") c.Assert(machines[3].Machine, gc.Equals, "1") m, err := s.BackingState.Machine(machines[3].Machine) c.Assert(err, jc.ErrorIsNil) c.Assert(m.Placement(), gc.DeepEquals, apiParams[3].Placement.Directive) }
func (s *DeployLocalSuite) TestDeployForceMachineIdWithContainer(c *gc.C) { f := &fakeDeployer{State: s.State} serviceCons := constraints.MustParse("cores=2") _, err := juju.DeployApplication(f, juju.DeployApplicationParams{ ApplicationName: "bob", Charm: s.charm, Constraints: serviceCons, NumUnits: 1, Placement: []*instance.Placement{instance.MustParsePlacement(fmt.Sprintf("%s:0", instance.LXD))}, }) c.Assert(err, jc.ErrorIsNil) c.Assert(f.args.Name, gc.Equals, "bob") c.Assert(f.args.Charm, gc.DeepEquals, s.charm) c.Assert(f.args.Constraints, gc.DeepEquals, serviceCons) c.Assert(f.args.NumUnits, gc.Equals, 1) c.Assert(f.args.Placement, gc.HasLen, 1) c.Assert(*f.args.Placement[0], gc.Equals, instance.Placement{Scope: string(instance.LXD), Directive: "0"}) }
func (s *DeployLocalSuite) TestDeployForceMachineId(c *gc.C) { f := &fakeDeployer{State: s.State} serviceCons := constraints.MustParse("cpu-cores=2") _, err := juju.DeployService(f, juju.DeployServiceParams{ ServiceName: "bob", Charm: s.charm, Constraints: serviceCons, NumUnits: 1, Placement: []*instance.Placement{instance.MustParsePlacement("0")}, }) c.Assert(err, jc.ErrorIsNil) c.Assert(f.args.Name, gc.Equals, "bob") c.Assert(f.args.Charm, gc.DeepEquals, s.charm) c.Assert(f.args.Constraints, gc.DeepEquals, serviceCons) c.Assert(f.args.NumUnits, gc.Equals, 1) c.Assert(f.args.Placement, gc.HasLen, 1) c.Assert(*f.args.Placement[0], gc.Equals, instance.Placement{Scope: instance.MachineScope, Directive: "0"}) }