mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 06:09:39 +08:00
fix(region): delete gpu device only on guest pending delete
Signed-off-by: wanyaoqi <d3lx.yq@gmail.com>
This commit is contained in:
@@ -571,6 +571,29 @@ func (manager *SIsolatedDeviceManager) findHostUnusedByDevConfig(model, devType,
|
||||
return devs, nil
|
||||
}
|
||||
|
||||
func (manager *SIsolatedDeviceManager) ReleaseGPUDevicesOfGuest(ctx context.Context, guest *SGuest, userCred mcclient.TokenCredential) error {
|
||||
devs := manager.findAttachedDevicesOfGuest(guest)
|
||||
if devs == nil {
|
||||
return fmt.Errorf("fail to find attached devices")
|
||||
}
|
||||
for _, dev := range devs {
|
||||
if !utils.IsInStringArray(dev.DevType, api.VALID_GPU_TYPES) {
|
||||
continue
|
||||
}
|
||||
_, err := db.Update(&dev, func() error {
|
||||
dev.GuestId = ""
|
||||
dev.NetworkIndex = -1
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
db.OpsLog.LogEvent(guest, db.ACT_GUEST_DETACH_ISOLATED_DEVICE_FAIL, dev.GetShortDesc(ctx), userCred)
|
||||
return err
|
||||
}
|
||||
db.OpsLog.LogEvent(guest, db.ACT_GUEST_DETACH_ISOLATED_DEVICE, dev.GetShortDesc(ctx), userCred)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (manager *SIsolatedDeviceManager) ReleaseDevicesOfGuest(ctx context.Context, guest *SGuest, userCred mcclient.TokenCredential) error {
|
||||
devs := manager.findAttachedDevicesOfGuest(guest)
|
||||
if devs == nil {
|
||||
|
||||
@@ -196,7 +196,7 @@ func (self *GuestDeleteTask) OnDiskDetachCompleteFailed(ctx context.Context, obj
|
||||
// revoke all secgroups
|
||||
func (self *GuestDeleteTask) doClearSecurityGroupComplete(ctx context.Context, guest *models.SGuest) {
|
||||
log.Debugf("doClearSecurityGroupComplete")
|
||||
models.IsolatedDeviceManager.ReleaseDevicesOfGuest(ctx, guest, self.UserCred)
|
||||
models.IsolatedDeviceManager.ReleaseGPUDevicesOfGuest(ctx, guest, self.UserCred)
|
||||
guest.RevokeAllSecgroups(ctx, self.UserCred)
|
||||
// sync revoked secgroups to remote cloud
|
||||
if jsonutils.QueryBoolean(self.Params, "purge", false) {
|
||||
|
||||
Reference in New Issue
Block a user