diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index bc55354e8c..8e093b6753 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -1658,6 +1658,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 cbf076c5d6..b6f7293118 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) } } @@ -75,6 +77,10 @@ func (self *GuestDeleteTask) OnEipDissociateComplete(ctx context.Context, obj db } 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) self.OnFailed(ctx, guest, err) } @@ -122,6 +128,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()