From a02b39fe0526da1de40f630a5f7f5bc7e46d2e55 Mon Sep 17 00:00:00 2001 From: Kadin Sayani Date: Tue, 21 Jan 2025 09:20:39 -0700 Subject: [PATCH 1/2] Revert "lxc/image: Add `GetImagesAllProjects` and `GetImagesAllProjectsWithFilter` client functions and interfaces to `simplestreams_images.go`" This reverts commit 003e92879e1a9590985b5518e900b30041bbb916. Signed-off-by: Kadin Sayani --- client/interfaces.go | 4 ++-- client/simplestreams_images.go | 10 ---------- lxc/image.go | 9 +++++++-- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/client/interfaces.go b/client/interfaces.go index 1d5d60d62917..cc374a9bff81 100644 --- a/client/interfaces.go +++ b/client/interfaces.go @@ -50,8 +50,6 @@ type ImageServer interface { GetImages() (images []api.Image, err error) GetImageFingerprints() (fingerprints []string, err error) GetImagesWithFilter(filters []string) (images []api.Image, err error) - GetImagesAllProjects() (images []api.Image, err error) - GetImagesAllProjectsWithFilter(filters []string) (images []api.Image, err error) GetImage(fingerprint string) (image *api.Image, ETag string, err error) GetImageFile(fingerprint string, req ImageFileRequest) (resp *ImageFileResponse, err error) @@ -245,6 +243,8 @@ type InstanceServer interface { UpdateImageAlias(name string, alias api.ImageAliasesEntryPut, ETag string) (err error) RenameImageAlias(name string, alias api.ImageAliasesEntryPost) (err error) DeleteImageAlias(name string) (err error) + GetImagesAllProjects() (images []api.Image, err error) + GetImagesAllProjectsWithFilter(filters []string) (images []api.Image, err error) // Network functions ("network" API extension) GetNetworkNames() (names []string, err error) diff --git a/client/simplestreams_images.go b/client/simplestreams_images.go index 9e4495ca8888..863a8440efb9 100644 --- a/client/simplestreams_images.go +++ b/client/simplestreams_images.go @@ -23,11 +23,6 @@ func (r *ProtocolSimpleStreams) GetImages() ([]api.Image, error) { return r.ssClient.ListImages() } -// GetImagesAllProjects returns a list of available images as Image structs. -func (r *ProtocolSimpleStreams) GetImagesAllProjects() ([]api.Image, error) { - return r.GetImages() -} - // GetImageFingerprints returns a list of available image fingerprints. func (r *ProtocolSimpleStreams) GetImageFingerprints() ([]string, error) { // Get all the images from simplestreams @@ -50,11 +45,6 @@ func (r *ProtocolSimpleStreams) GetImagesWithFilter(filters []string) ([]api.Ima return nil, fmt.Errorf("GetImagesWithFilter is not supported by the simplestreams protocol") } -// GetImagesAllProjectsWithFilter returns an error indicating compatibility with the simplestreams protocol. -func (r *ProtocolSimpleStreams) GetImagesAllProjectsWithFilter(filters []string) ([]api.Image, error) { - return nil, fmt.Errorf("GetImagesAllProjectsWithFilter is not supported by the simplestreams protocol") -} - // GetImage returns an Image struct for the provided fingerprint. func (r *ProtocolSimpleStreams) GetImage(fingerprint string) (*api.Image, string, error) { image, err := r.ssClient.GetImage(fingerprint) diff --git a/lxc/image.go b/lxc/image.go index 6bb80a5329ff..9c13033992f2 100644 --- a/lxc/image.go +++ b/lxc/image.go @@ -1353,6 +1353,11 @@ func (c *cmdImageList) run(cmd *cobra.Command, args []string) error { return err } + d, err := c.global.conf.GetInstanceServer(remoteName) + if err != nil { + return err + } + // Process the filters filters := []string{} if name != "" { @@ -1373,9 +1378,9 @@ func (c *cmdImageList) run(cmd *cobra.Command, args []string) error { var allImages []api.Image if c.flagAllProjects { - allImages, err = remoteServer.GetImagesAllProjectsWithFilter(serverFilters) + allImages, err = d.GetImagesAllProjectsWithFilter(serverFilters) if err != nil { - allImages, err = remoteServer.GetImagesAllProjects() + allImages, err = d.GetImagesAllProjects() if err != nil { return err } From 01817551fb09573fe3498e83d82f96a44bd52da5 Mon Sep 17 00:00:00 2001 From: Kadin Sayani Date: Tue, 21 Jan 2025 09:28:25 -0700 Subject: [PATCH 2/2] lxc/image: Add `InstanceServer` type assertion for `--all-projects` error handling Signed-off-by: Kadin Sayani --- lxc/image.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lxc/image.go b/lxc/image.go index 9c13033992f2..d11a84d2bc3a 100644 --- a/lxc/image.go +++ b/lxc/image.go @@ -1353,11 +1353,6 @@ func (c *cmdImageList) run(cmd *cobra.Command, args []string) error { return err } - d, err := c.global.conf.GetInstanceServer(remoteName) - if err != nil { - return err - } - // Process the filters filters := []string{} if name != "" { @@ -1378,9 +1373,14 @@ func (c *cmdImageList) run(cmd *cobra.Command, args []string) error { var allImages []api.Image if c.flagAllProjects { - allImages, err = d.GetImagesAllProjectsWithFilter(serverFilters) + instanceServer, ok := remoteServer.(lxd.InstanceServer) + if !ok { + return fmt.Errorf("--all-projects flag is not supported for this server") + } + + allImages, err = instanceServer.GetImagesAllProjectsWithFilter(serverFilters) if err != nil { - allImages, err = d.GetImagesAllProjects() + allImages, err = instanceServer.GetImagesAllProjects() if err != nil { return err }