// ListResources returns the list of resources for the given application. func (f Facade) ListResources(args api.ListResourcesArgs) (api.ResourcesResults, error) { var r api.ResourcesResults r.Results = make([]api.ResourcesResult, len(args.Entities)) for i, e := range args.Entities { logger.Tracef("Listing resources for %q", e.Tag) tag, apierr := parseApplicationTag(e.Tag) if apierr != nil { r.Results[i] = api.ResourcesResult{ ErrorResult: params.ErrorResult{ Error: apierr, }, } continue } svcRes, err := f.store.ListResources(tag.Id()) if err != nil { r.Results[i] = errorResult(err) continue } r.Results[i] = api.ServiceResources2APIResult(svcRes) } return r, nil }
func (HelpersSuite) TestServiceResources2API(c *gc.C) { res1 := resourcetesting.NewResource(c, nil, "res1", "a-service", "data").Resource res2 := resourcetesting.NewResource(c, nil, "res2", "a-service", "data2").Resource tag0 := names.NewUnitTag("a-service/0") tag1 := names.NewUnitTag("a-service/1") chres1 := res1.Resource chres2 := res2.Resource chres1.Revision++ chres2.Revision++ svcRes := resource.ServiceResources{ Resources: []resource.Resource{ res1, res2, }, UnitResources: []resource.UnitResources{ { Tag: tag0, Resources: []resource.Resource{ res1, res2, }, DownloadProgress: map[string]int64{ res2.Name: 2, }, }, { Tag: tag1, }, }, CharmStoreResources: []charmresource.Resource{ chres1, chres2, }, } result := api.ServiceResources2APIResult(svcRes) apiRes1 := api.Resource2API(res1) apiRes2 := api.Resource2API(res2) apiChRes1 := api.CharmResource2API(chres1) apiChRes2 := api.CharmResource2API(chres2) c.Check(result, jc.DeepEquals, api.ResourcesResult{ Resources: []api.Resource{ apiRes1, apiRes2, }, UnitResources: []api.UnitResources{ { Entity: params.Entity{ Tag: "unit-a-service-0", }, Resources: []api.Resource{ apiRes1, apiRes2, }, DownloadProgress: map[string]int64{ res2.Name: 2, }, }, { // we should have a listing for every unit, even if they // have no resources. Entity: params.Entity{ Tag: "unit-a-service-1", }, }, }, CharmStoreResources: []api.CharmResource{ apiChRes1, apiChRes2, }, }) }