Skip to content

Commit ebf13b0

Browse files
authored
Merge pull request #1409 from stgraber/client
incus/image: Make use of server-side alias handling
2 parents 646a571 + 333c349 commit ebf13b0

File tree

2 files changed

+30
-26
lines changed

2 files changed

+30
-26
lines changed

client/incus_images.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -738,8 +738,12 @@ func (r *ProtocolIncus) CopyImage(source ImageServer, image api.Image, args *Ima
738738
},
739739
}
740740

741+
imagesPost.Aliases = args.Aliases
741742
if args.CopyAliases {
742743
imagesPost.Aliases = image.Aliases
744+
if args.Aliases != nil {
745+
imagesPost.Aliases = append(imagesPost.Aliases, args.Aliases...)
746+
}
743747
}
744748

745749
imagesPost.ExpiresAt = image.ExpiresAt
@@ -764,7 +768,6 @@ func (r *ProtocolIncus) CopyImage(source ImageServer, image api.Image, args *Ima
764768
Target: info.URL,
765769
Certificate: info.Certificate,
766770
Secret: secret.(string),
767-
Aliases: image.Aliases,
768771
Project: info.Project,
769772
Profiles: image.Profiles,
770773
}
@@ -832,6 +835,7 @@ func (r *ProtocolIncus) CopyImage(source ImageServer, image api.Image, args *Ima
832835
imagePost.Public = args.Public
833836
imagePost.Profiles = image.Profiles
834837

838+
imagePost.Aliases = args.Aliases
835839
if args.CopyAliases {
836840
imagePost.Aliases = image.Aliases
837841
if args.Aliases != nil {
@@ -877,6 +881,19 @@ func (r *ProtocolIncus) CopyImage(source ImageServer, image api.Image, args *Ima
877881
rop.err = remoteOperationError("Failed to copy image", nil)
878882
return
879883
}
884+
885+
// Apply the aliases.
886+
for _, entry := range imagePost.Aliases {
887+
alias := api.ImageAliasesPost{}
888+
alias.Name = entry.Name
889+
alias.Target = image.Fingerprint
890+
891+
err := r.CreateImageAlias(alias)
892+
if err != nil {
893+
rop.err = remoteOperationError("Failed to add alias", nil)
894+
return
895+
}
896+
}
880897
}()
881898

882899
return &rop, nil

cmd/incus/image.go

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,6 @@ func (c *cmdImageCopy) Run(cmd *cobra.Command, args []string) error {
228228

229229
// Copy the image
230230
var imgInfo *api.Image
231-
var fp string
232231
if conf.Remotes[remoteName].Protocol != "incus" && !c.flagCopyAliases && len(c.flagAliases) == 0 {
233232
// All image servers outside of other Incus servers are always public, so unless we
234233
// need the aliases list too or the real fingerprint, we can skip the otherwise very expensive
@@ -243,22 +242,26 @@ func (c *cmdImageCopy) Run(cmd *cobra.Command, args []string) error {
243242
if err != nil {
244243
return err
245244
}
246-
247-
// Store the fingerprint for use when creating aliases later (as imgInfo.Fingerprint may be overridden)
248-
fp = imgInfo.Fingerprint
249245
}
250246

251247
if imgInfo.Public && imgInfo.Fingerprint != name && !strings.HasPrefix(imgInfo.Fingerprint, name) {
252248
// If dealing with an alias, set the imgInfo fingerprint to match the provided alias (needed for auto-update)
253249
imgInfo.Fingerprint = name
254250
}
255251

252+
aliases := make([]api.ImageAlias, len(c.flagAliases))
253+
for i, entry := range c.flagAliases {
254+
aliases[i].Name = entry
255+
}
256+
256257
copyArgs := incus.ImageCopyArgs{
257-
AutoUpdate: c.flagAutoUpdate,
258-
Public: c.flagPublic,
259-
Type: imageType,
260-
Mode: c.flagMode,
261-
Profiles: c.flagProfile,
258+
Aliases: aliases,
259+
AutoUpdate: c.flagAutoUpdate,
260+
CopyAliases: c.flagCopyAliases,
261+
Public: c.flagPublic,
262+
Type: imageType,
263+
Mode: c.flagMode,
264+
Profiles: c.flagProfile,
262265
}
263266

264267
// Do the copy
@@ -288,22 +291,6 @@ func (c *cmdImageCopy) Run(cmd *cobra.Command, args []string) error {
288291

289292
progress.Done(i18n.G("Image copied successfully!"))
290293

291-
// Ensure aliases
292-
aliases := make([]api.ImageAlias, len(c.flagAliases))
293-
for i, entry := range c.flagAliases {
294-
aliases[i].Name = entry
295-
}
296-
297-
if c.flagCopyAliases {
298-
// Also add the original aliases
299-
aliases = append(aliases, imgInfo.Aliases...)
300-
}
301-
302-
err = ensureImageAliases(destinationServer, aliases, fp)
303-
if err != nil {
304-
return err
305-
}
306-
307294
return nil
308295
}
309296

0 commit comments

Comments
 (0)