feat(region): add SExternalizedResourceBase, SManagedResourceBase to SInstanceSnapshot

This commit is contained in:
rainzm
2020-11-10 15:19:30 +08:00
parent 1e297dca12
commit bb109953df
2 changed files with 46 additions and 0 deletions
+3
View File
@@ -37,6 +37,7 @@ type SimpleSnapshot struct {
type InstanceSnapshotDetails struct {
apis.VirtualResourceDetails
ManagedResourceInfo
SInstanceSnapshot
// 云主机状态
@@ -57,6 +58,8 @@ type InstanceSnapshotDetails struct {
type InstanceSnapshotListInput struct {
apis.VirtualResourceListInput
apis.ExternalizedResourceBaseListInput
ManagedResourceListInput
ServerFilterListInput
+43
View File
@@ -52,6 +52,8 @@ type SInstanceSnapshot struct {
db.SVirtualResourceBase
db.SExternalizedResourceBase
SManagedResourceBase
// 云主机Id
GuestId string `width:"36" charset:"ascii" nullable:"false" list:"user" create:"required" index:"true"`
// 云主机配置
@@ -77,6 +79,7 @@ type SInstanceSnapshot struct {
type SInstanceSnapshotManager struct {
db.SVirtualResourceBaseManager
db.SExternalizedResourceBaseManager
SManagedResourceBaseManager
}
var InstanceSnapshotManager *SInstanceSnapshotManager
@@ -99,6 +102,16 @@ func (manager *SInstanceSnapshotManager) ListItemFilter(
return nil, errors.Wrap(err, "SVirtualResourceBaseManager.ListItemFilter")
}
q, err = manager.SExternalizedResourceBaseManager.ListItemFilter(ctx, q, userCred, query.ExternalizedResourceBaseListInput)
if err != nil {
return nil, errors.Wrap(err, "SExternalizedResourceBaseManager.ListItemFilter")
}
q, err = manager.SManagedResourceBaseManager.ListItemFilter(ctx, q, userCred, query.ManagedResourceListInput)
if err != nil {
return nil, errors.Wrap(err, "SManagedResourceBaseManager.ListItemFilter")
}
guestStr := query.ServerId
if len(guestStr) > 0 {
guestObj, err := GuestManager.FetchByIdOrName(userCred, guestStr)
@@ -132,6 +145,25 @@ func (manager *SInstanceSnapshotManager) OrderByExtraFields(
return nil, errors.Wrap(err, "SVirtualResourceBaseManager.OrderByExtraFields")
}
q, err = manager.SManagedResourceBaseManager.OrderByExtraFields(ctx, q, userCred, query.ManagedResourceListInput)
if err != nil {
return nil, errors.Wrap(err, "SManagedResourceBaseManager.OrderByExtraFields")
}
return q, nil
}
func (manager *SInstanceSnapshotManager) ListItemExportKeys(ctx context.Context,
q *sqlchemy.SQuery,
userCred mcclient.TokenCredential,
keys stringutils2.SSortedStrings,
) (*sqlchemy.SQuery, error) {
var err error
q, err = manager.SVirtualResourceBaseManager.ListItemExportKeys(ctx, q, userCred, keys)
if err != nil {
return nil, err
}
return q, nil
}
@@ -143,6 +175,11 @@ func (manager *SInstanceSnapshotManager) QueryDistinctExtraField(q *sqlchemy.SQu
return q, nil
}
q, err = manager.SManagedResourceBaseManager.QueryDistinctExtraField(q, field)
if err == nil {
return q, nil
}
return q, httperrors.ErrNotFound
}
@@ -210,10 +247,12 @@ func (manager *SInstanceSnapshotManager) FetchCustomizeColumns(
rows := make([]api.InstanceSnapshotDetails, len(objs))
virtRows := manager.SVirtualResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
manRows := manager.SManagedResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList)
for i := range rows {
rows[i] = api.InstanceSnapshotDetails{
VirtualResourceDetails: virtRows[i],
ManagedResourceInfo: manRows[i],
}
rows[i] = objs[i].(*SInstanceSnapshot).getMoreDetails(userCred, rows[i])
}
@@ -304,6 +343,8 @@ func (manager *SInstanceSnapshotManager) CreateInstanceSnapshot(ctx context.Cont
instanceSnapshot.SetModelManager(manager, instanceSnapshot)
instanceSnapshot.Name = name
instanceSnapshot.AutoDelete = autoDelete
host := guest.GetHost()
instanceSnapshot.ManagerId = host.ManagerId
manager.fillInstanceSnapshot(userCred, guest, instanceSnapshot)
err := manager.TableSpec().Insert(ctx, instanceSnapshot)
if err != nil {
@@ -476,6 +517,8 @@ func (manager *SInstanceSnapshotManager) newFromCloudInstanceSnapshot(ctx contex
}
instanceSnapshot.ExternalId = extSnapshot.GetGlobalId()
instanceSnapshot.Status = extSnapshot.GetStatus()
host := guest.GetHost()
instanceSnapshot.ManagerId = host.ManagerId
manager.fillInstanceSnapshot(userCred, guest, &instanceSnapshot)
err = manager.TableSpec().Insert(ctx, &instanceSnapshot)
if err != nil {