@@ -40,7 +40,7 @@ import (
4040
4141type (
4242 evacuateStopFunc func (inst instance.Instance , action string ) error
43- evacuateMigrateFunc func (ctx context.Context , s * state.State , inst instance.Instance , sourceMemberInfo * db.NodeInfo , targetMemberInfo * db.NodeInfo , live bool , startInstance bool , metadata map [ string ] any , op * operations.Operation ) error
43+ evacuateMigrateFunc func (ctx context.Context , s * state.State , inst instance.Instance , sourceMemberInfo * db.NodeInfo , targetMemberInfo * db.NodeInfo , live bool , startInstance bool , op * operations.Operation ) error
4444)
4545
4646type evacuateOpts struct {
@@ -185,8 +185,6 @@ func evacuateInstances(ctx context.Context, opts evacuateOpts) error {
185185}
186186
187187func evacuateInstancesFunc (ctx context.Context , inst instance.Instance , opts evacuateOpts ) error {
188- metadata := make (map [string ]any )
189-
190188 instProject := inst .Project ()
191189 l := logger .AddContext (logger.Ctx {"project" : instProject .Name , "instance" : inst .Name ()})
192190
@@ -214,8 +212,7 @@ func evacuateInstancesFunc(ctx context.Context, inst instance.Instance, opts eva
214212 isRunning := inst .IsRunning ()
215213 if action != "live-migrate" {
216214 if opts .stopInstance != nil && isRunning {
217- metadata ["evacuation_progress" ] = fmt .Sprintf ("Stopping %q in project %q" , inst .Name (), instProject .Name )
218- _ = opts .op .UpdateMetadata (metadata )
215+ _ = opts .op .ExtendMetadata (map [string ]any {"evacuation_progress" : fmt .Sprintf ("Stopping %q in project %q" , inst .Name (), instProject .Name )})
219216
220217 err := opts .stopInstance (inst , action )
221218 if err != nil {
@@ -245,16 +242,15 @@ func evacuateInstancesFunc(ctx context.Context, inst instance.Instance, opts eva
245242 }
246243
247244 // Start migrating the instance.
248- metadata ["evacuation_progress" ] = fmt .Sprintf ("Migrating %q in project %q to %q" , inst .Name (), instProject .Name , targetMemberInfo .Name )
249- _ = opts .op .UpdateMetadata (metadata )
245+ _ = opts .op .ExtendMetadata (map [string ]any {"evacuation_progress" : fmt .Sprintf ("Migrating %q in project %q to %q" , inst .Name (), instProject .Name , targetMemberInfo .Name )})
250246
251247 // Set origin server (but skip if already set as that suggests more than one server being evacuated).
252248 if inst .LocalConfig ()["volatile.evacuate.origin" ] == "" {
253249 _ = inst .VolatileSet (map [string ]string {"volatile.evacuate.origin" : opts .srcMemberName })
254250 }
255251
256252 start := isRunning || instanceShouldAutoStart (inst )
257- err = opts .migrateInstance (ctx , opts .s , inst , sourceMemberInfo , targetMemberInfo , action == "live-migrate" , start , metadata , opts .op )
253+ err = opts .migrateInstance (ctx , opts .s , inst , sourceMemberInfo , targetMemberInfo , action == "live-migrate" , start , opts .op )
258254 if err != nil {
259255 return err
260256 }
@@ -342,9 +338,7 @@ func restoreClusterMember(d *Daemon, r *http.Request) response.Response {
342338 }
343339
344340 // Start the instance.
345- metadata := make (map [string ]any )
346- metadata ["evacuation_progress" ] = fmt .Sprintf ("Starting %q in project %q" , inst .Name (), inst .Project ().Name )
347- _ = op .UpdateMetadata (metadata )
341+ _ = op .ExtendMetadata (map [string ]any {"evacuation_progress" : fmt .Sprintf ("Starting %q in project %q" , inst .Name (), inst .Project ().Name )})
348342
349343 // If configured for stateful stop, try restoring its state.
350344 action := inst .CanMigrate ()
@@ -396,15 +390,13 @@ func restoreClusterMemberFunc(inst instance.Instance, op *operations.Operation,
396390 var err error
397391 var source incus.InstanceServer
398392 var sourceNode db.NodeInfo
399- metadata := make (map [string ]any )
400393
401394 l := logger .AddContext (logger.Ctx {"project" : inst .Project ().Name , "instance" : inst .Name ()})
402395
403396 // Check the action.
404397 live := inst .CanMigrate () == "live-migrate"
405398
406- metadata ["evacuation_progress" ] = fmt .Sprintf ("Migrating %q in project %q from %q" , inst .Name (), inst .Project ().Name , inst .Location ())
407- _ = op .UpdateMetadata (metadata )
399+ _ = op .ExtendMetadata (map [string ]any {"evacuation_progress" : fmt .Sprintf ("Migrating %q in project %q from %q" , inst .Name (), inst .Project ().Name , inst .Location ())})
408400
409401 err = s .DB .Cluster .Transaction (context .Background (), func (ctx context.Context , tx * db.ClusterTx ) error {
410402 sourceNode , err = tx .GetNodeByName (ctx , inst .Location ())
@@ -432,8 +424,7 @@ func restoreClusterMemberFunc(inst instance.Instance, op *operations.Operation,
432424
433425 isRunning := apiInst .StatusCode == api .Running
434426 if isRunning && ! live {
435- metadata ["evacuation_progress" ] = fmt .Sprintf ("Stopping %q in project %q" , inst .Name (), inst .Project ().Name )
436- _ = op .UpdateMetadata (metadata )
427+ _ = op .ExtendMetadata (map [string ]any {"evacuation_progress" : fmt .Sprintf ("Stopping %q in project %q" , inst .Name (), inst .Project ().Name )})
437428
438429 timeout := inst .ExpandedConfig ()["boot.host_shutdown_timeout" ]
439430 val , err := strconv .Atoi (timeout )
@@ -514,8 +505,7 @@ func restoreClusterMemberFunc(inst instance.Instance, op *operations.Operation,
514505 return nil
515506 }
516507
517- metadata ["evacuation_progress" ] = fmt .Sprintf ("Starting %q in project %q" , inst .Name (), inst .Project ().Name )
518- _ = op .UpdateMetadata (metadata )
508+ _ = op .ExtendMetadata (map [string ]any {"evacuation_progress" : fmt .Sprintf ("Starting %q in project %q" , inst .Name (), inst .Project ().Name )})
519509
520510 err = inst .Start (false )
521511 if err != nil {
@@ -728,7 +718,7 @@ func healClusterMember(d *Daemon, op *operations.Operation, name string) error {
728718 logger .Info ("Starting cluster healing" , logger.Ctx {"server" : name })
729719 defer logger .Info ("Completed cluster healing" , logger.Ctx {"server" : name })
730720
731- migrateFunc := func (ctx context.Context , s * state.State , inst instance.Instance , sourceMemberInfo * db.NodeInfo , targetMemberInfo * db.NodeInfo , live bool , startInstance bool , metadata map [ string ] any , op * operations.Operation ) error {
721+ migrateFunc := func (ctx context.Context , s * state.State , inst instance.Instance , sourceMemberInfo * db.NodeInfo , targetMemberInfo * db.NodeInfo , live bool , startInstance bool , op * operations.Operation ) error {
732722 // This returns an error if the instance's storage pool is local.
733723 // Since we only care about remote backed instances, this can be ignored and return nil instead.
734724 poolName , err := inst .StoragePool ()
0 commit comments