From ad228b6f1791c7fc8d5d73770366ab41fb5e645e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Thu, 30 May 2024 00:44:41 -0400 Subject: [PATCH] incusd/api_project: Fix UsedBy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- cmd/incusd/api_project.go | 52 +++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/cmd/incusd/api_project.go b/cmd/incusd/api_project.go index ef3f351cced..5225e4f6c44 100644 --- a/cmd/incusd/api_project.go +++ b/cmd/incusd/api_project.go @@ -208,9 +208,9 @@ func projectUsedBy(ctx context.Context, tx *db.ClusterTx, project *cluster.Proje return nil, err } - profiles, err := cluster.GetProfiles(ctx, tx.Tx(), cluster.ProfileFilter{Project: &project.Name}) - if err != nil { - return nil, err + for _, instance := range instances { + apiInstance := api.Instance{Name: instance.Name} + usedBy = append(usedBy, apiInstance.URL(version.APIVersion, project.Name).String()) } images, err := cluster.GetImages(ctx, tx.Tx(), cluster.ImageFilter{Project: &project.Name}) @@ -218,39 +218,55 @@ func projectUsedBy(ctx context.Context, tx *db.ClusterTx, project *cluster.Proje return nil, err } - for _, instance := range instances { - apiInstance := api.Instance{Name: instance.Name} - usedBy = append(usedBy, apiInstance.URL(version.APIVersion, project.Name).String()) + for _, image := range images { + apiImage := api.Image{Fingerprint: image.Fingerprint} + usedBy = append(usedBy, apiImage.URL(version.APIVersion, project.Name).String()) } - for _, profile := range profiles { - apiProfile := api.Profile{Name: profile.Name} - usedBy = append(usedBy, apiProfile.URL(version.APIVersion, project.Name).String()) + networks, err := tx.GetNetworkURIs(ctx, project.ID, project.Name) + if err != nil { + return nil, err } - for _, image := range images { - apiImage := api.Image{Fingerprint: image.Fingerprint} - usedBy = append(usedBy, apiImage.URL(version.APIVersion, project.Name).String()) + usedBy = append(usedBy, networks...) + + networkACLs, err := tx.GetNetworkACLURIs(ctx, project.ID, project.Name) + if err != nil { + return nil, err } - volumes, err := tx.GetStorageVolumeURIs(ctx, project.Name) + usedBy = append(usedBy, networkACLs...) + + networkZones, err := tx.GetNetworkZoneURIs(ctx, project.ID, project.Name) if err != nil { return nil, err } - networks, err := tx.GetNetworkURIs(ctx, project.ID, project.Name) + usedBy = append(usedBy, networkZones...) + + profiles, err := cluster.GetProfiles(ctx, tx.Tx(), cluster.ProfileFilter{Project: &project.Name}) + if err != nil { + return nil, err + } + + for _, profile := range profiles { + apiProfile := api.Profile{Name: profile.Name} + usedBy = append(usedBy, apiProfile.URL(version.APIVersion, project.Name).String()) + } + + storageBuckets, err := tx.GetStorageBucketURIs(ctx, project.Name) if err != nil { return nil, err } - acls, err := tx.GetNetworkACLURIs(ctx, project.ID, project.Name) + usedBy = append(usedBy, storageBuckets...) + + storageVolumes, err := tx.GetStorageVolumeURIs(ctx, project.Name) if err != nil { return nil, err } - usedBy = append(usedBy, volumes...) - usedBy = append(usedBy, networks...) - usedBy = append(usedBy, acls...) + usedBy = append(usedBy, storageVolumes...) return usedBy, nil }