Skip to content

Commit

Permalink
Merge pull request juju#18634 from gfouillet/v4/dqlite/resources/wire…
Browse files Browse the repository at this point in the history
…up/remove-domain-resources

juju#18634

prdesc Remove `domain.Resources`, `domain.ApplicationResources`,
  `domain.UnitResources`
* Use instead same named struct in core
* Replace `Tag` by `coreunit.Name` in `core.UnitResource`
* Remove `DownloadProgress` from `UnitResource`
* Replace `Resource.ID` by `Resource.UUID`
* Change `ApplicationID` to `ApplicationName` in `Resource`
* Replace `Username` by `RetrievedBy` in `Resource`

No change in facade, rpc/params remains the same, but some fields are
deprecated.


> [!WARNING]
> prdesc [x] Based on juju#18615... Wait for it to land.

This PR remove domain.Resource and update core.Resource to match with what is expected for new resource domain.

## Checklist

<!-- If an item is not applicable, use `~strikethrough~`. -->

- [X] Code style: imports ordered, good names, simple structure, etc
- [X] Comments saying why design decisions were made
- [X] Go unit tests, with comments saying what you're testing
- [X] [Integration tests](https://github.com/juju/juju/tree/main/tests), with comments saying what you're testing
- [X] [doc.go](https://discourse.charmhub.io/t/readme-in-packages/451) added or updated in changed packages

## QA steps

Deploy application with resources and check if things continue to run smoothly :)

## Documentation changes

None

## Links

Based on juju#18615
  • Loading branch information
jujubot authored Jan 27, 2025
2 parents 44f439e + 980136f commit 12188f5
Show file tree
Hide file tree
Showing 47 changed files with 568 additions and 718 deletions.
10 changes: 5 additions & 5 deletions api/client/resources/client_upload_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ func newResource(c *gc.C, name, username, data string) (coreresources.Resource,
opened := resourcetesting.NewResource(c, nil, name, "a-application", data)
res := opened.Resource
res.Revision = 1
res.Username = username
res.RetrievedBy = username
if username == "" {
// Note that resourcetesting.NewResource() returns a resources
// with a username and timestamp set. So if the username was
Expand All @@ -313,10 +313,10 @@ func newResource(c *gc.C, name, username, data string) (coreresources.Resource,
Fingerprint: res.Fingerprint.Bytes(),
Size: res.Size,
},
ID: res.ID,
ApplicationID: res.ApplicationID,
Username: username,
Timestamp: res.Timestamp,
UUID: res.UUID.String(),
ApplicationName: res.ApplicationName,
Username: username,
Timestamp: res.Timestamp,
}

return res, apiRes
Expand Down
58 changes: 25 additions & 33 deletions api/client/resources/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

apiservererrors "github.com/juju/juju/apiserver/errors"
"github.com/juju/juju/core/resource"
"github.com/juju/juju/core/unit"
charmresource "github.com/juju/juju/internal/charm/resource"
"github.com/juju/juju/rpc/params"
)
Expand All @@ -17,12 +18,11 @@ import (
// a Resource struct.
func Resource2API(res resource.Resource) params.Resource {
return params.Resource{
CharmResource: CharmResource2API(res.Resource),
ID: res.ID,
PendingID: res.PendingID,
ApplicationID: res.ApplicationID,
Username: res.Username,
Timestamp: res.Timestamp,
CharmResource: CharmResource2API(res.Resource),
UUID: res.UUID.String(),
ApplicationName: res.ApplicationName,
Username: res.RetrievedBy,
Timestamp: res.Timestamp,
}
}

Expand Down Expand Up @@ -53,7 +53,11 @@ func apiResult2ApplicationResources(apiResult params.ResourcesResult) (resource.
return resource.ApplicationResources{}, errors.Annotate(err, "got bad data from server")
}
resNames := map[string]bool{}
unitResources := resource.UnitResources{Tag: tag}
unitName, err := unit.NewName(tag.Id())
if err != nil {
return resource.ApplicationResources{}, errors.Annotate(err, "got bad data from server")
}
unitResources := resource.UnitResources{Name: unitName}
for _, apiRes := range unitRes.Resources {
res, err := API2Resource(apiRes)
if err != nil {
Expand All @@ -62,16 +66,6 @@ func apiResult2ApplicationResources(apiResult params.ResourcesResult) (resource.
resNames[res.Name] = true
unitResources.Resources = append(unitResources.Resources, res)
}
if len(unitRes.DownloadProgress) > 0 {
unitResources.DownloadProgress = make(map[string]int64)
for resName, progress := range unitRes.DownloadProgress {
if _, ok := resNames[resName]; !ok {
err := errors.Errorf("got progress from unrecognized resource %q", resName)
return resource.ApplicationResources{}, errors.Annotate(err, "got bad data from server")
}
unitResources.DownloadProgress[resName] = progress
}
}
result.UnitResources = append(result.UnitResources, unitResources)
}

Expand All @@ -80,7 +74,7 @@ func apiResult2ApplicationResources(apiResult params.ResourcesResult) (resource.
if err != nil {
return resource.ApplicationResources{}, errors.Annotate(err, "got bad data from server")
}
result.CharmStoreResources = append(result.CharmStoreResources, res)
result.RepositoryResources = append(result.RepositoryResources, res)
}

return result, nil
Expand All @@ -93,24 +87,18 @@ func ApplicationResources2APIResult(svcRes resource.ApplicationResources) params
}

for _, unitResources := range svcRes.UnitResources {
tag := unitResources.Tag
tag := names.NewUnitTag(unitResources.Name.String())
apiRes := params.UnitResources{
Entity: params.Entity{Tag: tag.String()},
}
for _, unitRes := range unitResources.Resources {
apiRes.Resources = append(apiRes.Resources, Resource2API(unitRes))
}
if len(unitResources.DownloadProgress) > 0 {
apiRes.DownloadProgress = make(map[string]int64)
for resName, progress := range unitResources.DownloadProgress {
apiRes.DownloadProgress[resName] = progress
}
}
result.UnitResources = append(result.UnitResources, apiRes)
}

result.CharmStoreResources = make([]params.CharmResource, len(svcRes.CharmStoreResources))
for i, chRes := range svcRes.CharmStoreResources {
result.CharmStoreResources = make([]params.CharmResource, len(svcRes.RepositoryResources))
for i, chRes := range svcRes.RepositoryResources {
result.CharmStoreResources[i] = CharmResource2API(chRes)
}
return result
Expand All @@ -126,13 +114,17 @@ func API2Resource(apiRes params.Resource) (resource.Resource, error) {
return res, errors.Trace(err)
}

uuid, err := resource.ParseUUID(apiRes.UUID)
if err != nil {
return res, errors.Trace(err)
}

res = resource.Resource{
Resource: charmRes,
ID: apiRes.ID,
PendingID: apiRes.PendingID,
ApplicationID: apiRes.ApplicationID,
Username: apiRes.Username,
Timestamp: apiRes.Timestamp,
Resource: charmRes,
UUID: uuid,
ApplicationName: apiRes.ApplicationName,
RetrievedBy: apiRes.Username,
Timestamp: apiRes.Timestamp,
}

if err := res.Validate(); err != nil {
Expand Down
Loading

0 comments on commit 12188f5

Please sign in to comment.