func (c *UnitFacadeClient) getResourceInfo(resourceName string) (resource.Resource, error) { var response private.ResourcesResult args := private.ListResourcesArgs{ ResourceNames: []string{resourceName}, } if err := c.FacadeCall("GetResourceInfo", &args, &response); err != nil { return resource.Resource{}, errors.Annotate(err, "could not get resource info") } if response.Error != nil { err, _ := common.RestoreError(response.Error) return resource.Resource{}, errors.Annotate(err, "request failed on server") } if len(response.Resources) != 1 { return resource.Resource{}, errors.New("got bad response from API server") } if response.Resources[0].Error != nil { err, _ := common.RestoreError(response.Error) return resource.Resource{}, errors.Annotate(err, "request failed for resource") } res, err := api.API2Resource(response.Resources[0].Resource) if err != nil { return resource.Resource{}, errors.Annotate(err, "got bad data from API server") } return res, nil }
func (helpersSuite) TestAPI2Resource(c *gc.C) { now := time.Now() res, err := api.API2Resource(api.Resource{ CharmResource: api.CharmResource{ Name: "spam", Type: "file", Path: "spam.tgz", Description: "you need it", Origin: "upload", Revision: 1, Fingerprint: []byte(fingerprint), Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, }) c.Assert(err, jc.ErrorIsNil) fp, err := charmresource.NewFingerprint([]byte(fingerprint)) c.Assert(err, jc.ErrorIsNil) expected := resource.Resource{ Resource: charmresource.Resource{ Meta: charmresource.Meta{ Name: "spam", Type: charmresource.TypeFile, Path: "spam.tgz", Description: "you need it", }, Origin: charmresource.OriginUpload, Revision: 1, Fingerprint: fp, Size: 10, }, ID: "a-service/spam", PendingID: "some-unique-ID", ServiceID: "a-service", Username: "******", Timestamp: now, } err = expected.Validate() c.Assert(err, jc.ErrorIsNil) c.Check(res, jc.DeepEquals, expected) }