mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 14:19:49 +08:00
feat(region): add SExternalizedResourceBase, SManagedResourceBase to SInstanceSnapshot
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user