func (s *serviceSuite) TestClientServiceDeployWithPlacement(c *gc.C) { curl, ch := s.UploadCharm(c, "precise/dummy-42", "dummy") err := service.AddCharmWithAuthorization(s.State, params.AddCharmWithAuthorization{URL: curl.String()}) c.Assert(err, jc.ErrorIsNil) var cons constraints.Value args := params.ServiceDeploy{ ServiceName: "service", CharmUrl: curl.String(), NumUnits: 1, Constraints: cons, Placement: []*instance.Placement{ {"deadbeef-0bad-400d-8000-4b1d0d06f00d", "valid"}, }, ToMachineSpec: "will be ignored", } results, err := s.serviceApi.ServicesDeploy(params.ServicesDeploy{ Services: []params.ServiceDeploy{args}}, ) c.Assert(err, jc.ErrorIsNil) c.Assert(results, gc.DeepEquals, params.ErrorResults{ Results: []params.ErrorResult{{Error: nil}}, }) svc := apiservertesting.AssertPrincipalServiceDeployed(c, s.State, "service", curl, false, ch, cons) units, err := svc.AllUnits() c.Assert(err, jc.ErrorIsNil) c.Assert(units, gc.HasLen, 1) }
func (s *serviceSuite) TestClientServiceDeployDefaultFilesystemStorage(c *gc.C) { setupStoragePool(c, s.State) curl, ch := s.UploadCharm(c, "trusty/storage-filesystem-1", "storage-filesystem") var cons constraints.Value args := params.ServiceDeploy{ ServiceName: "service", CharmUrl: curl.String(), NumUnits: 1, Constraints: cons, } results, err := s.serviceApi.ServicesDeploy(params.ServicesDeploy{ Services: []params.ServiceDeploy{args}}, ) c.Assert(err, jc.ErrorIsNil) c.Assert(results, gc.DeepEquals, params.ErrorResults{ Results: []params.ErrorResult{{Error: nil}}, }) svc := apiservertesting.AssertPrincipalServiceDeployed(c, s.State, "service", curl, false, ch, cons) storageConstraintsOut, err := svc.StorageConstraints() c.Assert(err, jc.ErrorIsNil) c.Assert(storageConstraintsOut, gc.DeepEquals, map[string]state.StorageConstraints{ "data": { Count: 1, Size: 1024, Pool: "rootfs", }, }) }
func (s *serviceSuite) assertServiceDeployPrincipal(c *gc.C, curl *charm.URL, ch charm.Charm, mem4g constraints.Value) { results, err := s.serviceApi.ServicesDeploy(params.ServicesDeploy{ Services: []params.ServiceDeploy{{ CharmUrl: curl.String(), ServiceName: "service", NumUnits: 3, Constraints: mem4g, }}}) c.Assert(err, jc.ErrorIsNil) c.Assert(results.Results, gc.HasLen, 1) c.Assert(results.Results[0].Error, gc.IsNil) apiservertesting.AssertPrincipalServiceDeployed(c, s.State, "service", curl, false, ch, mem4g) }
func (s *serviceSuite) TestClientServiceDeployWithStorage(c *gc.C) { setupStoragePool(c, s.State) curl, ch := s.UploadCharm(c, "utopic/storage-block-10", "storage-block") storageConstraints := map[string]storage.Constraints{ "data": { Count: 1, Size: 1024, Pool: "loop-pool", }, } var cons constraints.Value args := params.ServiceDeploy{ ServiceName: "service", CharmUrl: curl.String(), NumUnits: 1, Constraints: cons, Storage: storageConstraints, } results, err := s.serviceApi.ServicesDeploy(params.ServicesDeploy{ Services: []params.ServiceDeploy{args}}, ) c.Assert(err, jc.ErrorIsNil) c.Assert(results, gc.DeepEquals, params.ErrorResults{ Results: []params.ErrorResult{{Error: nil}}, }) svc := apiservertesting.AssertPrincipalServiceDeployed(c, s.State, "service", curl, false, ch, cons) storageConstraintsOut, err := svc.StorageConstraints() c.Assert(err, jc.ErrorIsNil) c.Assert(storageConstraintsOut, gc.DeepEquals, map[string]state.StorageConstraints{ "data": { Count: 1, Size: 1024, Pool: "loop-pool", }, "allecto": { Count: 0, Size: 1024, Pool: "loop", }, }) }