diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index d2ebd85bfa..c75e3b595e 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -1343,6 +1343,9 @@ func (self *SGuest) Attach2Network(ctx context.Context, userCred mcclient.TokenC } } notes := jsonutils.NewDict() + if len(address) == 0 { + address = guestnic.IpAddr + } notes.Add(jsonutils.NewString(address), "ip_addr") db.OpsLog.LogAttachEvent(self, network, userCred, notes) return nil diff --git a/pkg/compute/tasks/guest_delete_task.go b/pkg/compute/tasks/guest_delete_task.go index a9c9dd7088..b0d50c4400 100644 --- a/pkg/compute/tasks/guest_delete_task.go +++ b/pkg/compute/tasks/guest_delete_task.go @@ -33,8 +33,10 @@ func (self *GuestDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel self.SetStage("on_guest_stop_complete", nil) err := guest.GetDriver().RequestStopGuestForDelete(ctx, guest, self) if err != nil { - errMsg := jsonutils.NewString(err.Error()) - self.OnGuestStopCompleteFailed(ctx, obj, errMsg) + log.Errorf("RequestStopGuestForDelete fail %s", err) + // errMsg := jsonutils.NewString(err.Error()) + // self.OnGuestStopCompleteFailed(ctx, obj, errMsg) + self.OnGuestStopComplete(ctx, obj, data) } } @@ -56,6 +58,10 @@ func (self *GuestDeleteTask) OnGuestStopComplete(ctx context.Context, obj db.ISt } func (self *GuestDeleteTask) OnGuestStopCompleteFailed(ctx context.Context, obj db.IStandaloneModel, err jsonutils.JSONObject) { + self.OnGuestStopComplete(ctx, obj, err) // ignore stop error +} + +func (self *GuestDeleteTask) OnGuestDeleteFailed(ctx context.Context, obj db.IStandaloneModel, err jsonutils.JSONObject) { guest := obj.(*models.SGuest) guest.SetStatus(self.UserCred, models.VM_DELETE_FAIL, err.String()) db.OpsLog.LogEvent(guest, db.ACT_DELOCATE_FAIL, err, self.UserCred) @@ -94,6 +100,10 @@ func (self *GuestDeleteTask) OnGuestDetachDisksComplete(ctx context.Context, obj self.DoDeleteGuest(ctx, guest) } +func (self *GuestDeleteTask) OnGuestDetachDisksCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { + self.OnGuestDeleteFailed(ctx, obj, data) +} + func (self *GuestDeleteTask) DoDeleteGuest(ctx context.Context, guest *models.SGuest) { models.IsolatedDeviceManager.ReleaseDevicesOfGuest(guest, self.UserCred) host := guest.GetHost()