gpu add export keys

This commit is contained in:
wanyaoqi
2019-11-14 16:21:21 +08:00
parent 8c2ef6f329
commit 2eb4492de3
2 changed files with 40 additions and 1 deletions
+8 -1
View File
@@ -2432,7 +2432,14 @@ func (self *SGuest) DoCancelPendingDelete(ctx context.Context, userCred mcclient
disk := guestdisk.GetDisk()
disk.DoCancelPendingDelete(ctx, userCred)
}
return self.SVirtualResourceBase.DoCancelPendingDelete(ctx, userCred)
err := self.SVirtualResourceBase.DoCancelPendingDelete(ctx, userCred)
if err != nil {
return err
}
if self.BillingType == billing_api.BILLING_TYPE_POSTPAID && !self.ExpiredAt.IsZero() {
return self.CancelExpireTime(ctx, userCred)
}
return nil
}
func (self *SGuest) StartUndeployGuestTask(ctx context.Context, userCred mcclient.TokenCredential, parentTaskId string, targetHostId string) error {
+32
View File
@@ -189,6 +189,38 @@ func (self *SIsolatedDevice) AllowDeleteItem(ctx context.Context, userCred mccli
return userCred.IsSystemAdmin()
} */
func (manager *SIsolatedDeviceManager) ListItemExportKeys(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (*sqlchemy.SQuery, error) {
var err error
q, err = manager.SModelBaseManager.ListItemExportKeys(ctx, q, userCred, query)
if err != nil {
return nil, err
}
exportKeys, _ := query.GetString("export_keys")
keys := strings.Split(exportKeys, ",")
if utils.IsInStringArray("guest", keys) {
guestNameQuery := GuestManager.Query("name", "id").SubQuery()
q.LeftJoin(guestNameQuery, sqlchemy.Equals(q.Field("guest_id"), guestNameQuery.Field("id")))
q.AppendField(guestNameQuery.Field("name", "guest"))
}
if utils.IsInStringArray("host", keys) {
hostNameQuery := HostManager.Query("name", "id").SubQuery()
q.LeftJoin(hostNameQuery, sqlchemy.Equals(q.Field("host_id"), hostNameQuery.Field("id")))
q.AppendField(hostNameQuery.Field("name", "host"))
}
return q, nil
}
func (manager *SIsolatedDeviceManager) GetExportExtraKeys(ctx context.Context, query jsonutils.JSONObject, rowMap map[string]string) *jsonutils.JSONDict {
res := manager.SStandaloneResourceBaseManager.GetExportExtraKeys(ctx, query, rowMap)
if guest, ok := rowMap["guest"]; ok && len(guest) > 0 {
res.Set("guest", jsonutils.NewString(guest))
}
if host, ok := rowMap["host"]; ok {
res.Set("host", jsonutils.NewString(host))
}
return res
}
func (self *SIsolatedDevice) ValidateDeleteCondition(ctx context.Context) error {
if len(self.GuestId) > 0 {
return httperrors.NewNotEmptyError("Isolated device used by server")