mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 02:37:24 +08:00
fix: fail to delete removed cloud resources (#364)
* fix: fail to delete removed cloud resources * fix: private_cloud and on_premise filter overlaps * fix: loadbalancer* should use pending_delete to remove resources
This commit is contained in:
committed by
yunion-ci-robot
parent
bf7a6a2b30
commit
e3946e8485
@@ -46,7 +46,7 @@ func (self *SQcloudGuestDriver) GetHypervisor() string {
|
||||
}
|
||||
|
||||
func (self *SQcloudGuestDriver) GetDefaultSysDiskBackend() string {
|
||||
return models.STORAGE_CLOUD_BASIC
|
||||
return models.STORAGE_CLOUD_PREMIUM
|
||||
}
|
||||
|
||||
func (self *SQcloudGuestDriver) GetMinimalSysDiskSizeGb() int {
|
||||
|
||||
@@ -133,11 +133,11 @@ func (manager *SCloudproviderManager) GetPublicProviderIdsQuery() *sqlchemy.SSub
|
||||
}
|
||||
|
||||
func (manager *SCloudproviderManager) GetPrivateProviderIdsQuery() *sqlchemy.SSubQuery {
|
||||
return manager.GetProviderIdsQuery(tristate.False, tristate.None)
|
||||
return manager.GetProviderIdsQuery(tristate.False, tristate.False)
|
||||
}
|
||||
|
||||
func (manager *SCloudproviderManager) GetOnPremiseProviderIdsQuery() *sqlchemy.SSubQuery {
|
||||
return manager.GetProviderIdsQuery(tristate.False, tristate.True)
|
||||
return manager.GetProviderIdsQuery(tristate.None, tristate.True)
|
||||
}
|
||||
|
||||
func (manager *SCloudproviderManager) GetProviderIdsQuery(isPublic tristate.TriState, isOnPremise tristate.TriState) *sqlchemy.SSubQuery {
|
||||
@@ -154,7 +154,7 @@ func (manager *SCloudproviderManager) GetProviderIdsQuery(isPublic tristate.TriS
|
||||
if isOnPremise.IsTrue() {
|
||||
q = q.Filter(sqlchemy.IsTrue(account.Field("is_on_premise")))
|
||||
} else if isOnPremise.IsFalse() {
|
||||
q = q.Filter(sqlchemy.IsTrue(account.Field("is_on_premise")))
|
||||
q = q.Filter(sqlchemy.IsFalse(account.Field("is_on_premise")))
|
||||
}
|
||||
return q.SubQuery()
|
||||
}
|
||||
|
||||
@@ -1053,7 +1053,12 @@ func (self *SDisk) syncRemoveCloudDisk(ctx context.Context, userCred mcclient.To
|
||||
lockman.LockObject(ctx, self)
|
||||
defer lockman.ReleaseObject(ctx, self)
|
||||
|
||||
return self.SetStatus(userCred, DISK_UNKNOWN, "missing original disk after sync")
|
||||
err := self.ValidatePurgeCondition(ctx)
|
||||
if err != nil {
|
||||
return self.SetStatus(userCred, DISK_UNKNOWN, "missing original disk after sync")
|
||||
} else {
|
||||
return self.RealDelete(ctx, userCred)
|
||||
}
|
||||
}
|
||||
|
||||
func (self *SDisk) syncWithCloudDisk(ctx context.Context, userCred mcclient.TokenCredential, provider cloudprovider.ICloudProvider, extDisk cloudprovider.ICloudDisk, index int, projectId string) error {
|
||||
|
||||
@@ -293,7 +293,7 @@ func (self *SElasticip) syncRemoveCloudEip(ctx context.Context, userCred mcclien
|
||||
if err != nil {
|
||||
return self.SetStatus(userCred, EIP_STATUS_UNKNOWN, "sync to delete")
|
||||
} else {
|
||||
return self.Delete(ctx, userCred)
|
||||
return self.RealDelete(ctx, userCred)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1379,14 +1379,14 @@ func (self *SHost) syncRemoveCloudHost(ctx context.Context, userCred mcclient.To
|
||||
lockman.LockObject(ctx, self)
|
||||
defer lockman.ReleaseObject(ctx, self)
|
||||
|
||||
err := self.ValidateDeleteCondition(ctx)
|
||||
err := self.ValidatePurgeCondition(ctx)
|
||||
if err != nil {
|
||||
err = self.SetStatus(userCred, HOST_OFFLINE, "sync to delete")
|
||||
if err == nil {
|
||||
_, err = self.PerformDisable(ctx, userCred, nil, nil)
|
||||
}
|
||||
} else {
|
||||
err = self.Delete(ctx, userCred)
|
||||
err = self.RealDelete(ctx, userCred)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -325,13 +325,9 @@ func (lbacl *SLoadbalancerAcl) Delete(ctx context.Context, userCred mcclient.Tok
|
||||
return nil
|
||||
}
|
||||
|
||||
func (lbacl *SLoadbalancerAcl) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
return lbacl.SSharableVirtualResourceBase.Delete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (man *SLoadbalancerAclManager) getLoadbalancerAclsByRegion(region *SCloudregion, provider *SCloudprovider) ([]SLoadbalancerAcl, error) {
|
||||
acls := []SLoadbalancerAcl{}
|
||||
q := man.Query().Equals("cloudregion_id", region.Id).Equals("manager_id", provider.Id)
|
||||
q := man.Query().Equals("cloudregion_id", region.Id).Equals("manager_id", provider.Id).IsFalse("pending_deleted")
|
||||
if err := db.FetchModelObjects(man, q, &acls); err != nil {
|
||||
log.Errorf("failed to get acls for region: %v provider: %v error: %v", region, provider, err)
|
||||
return nil, err
|
||||
@@ -401,7 +397,7 @@ func (self *SLoadbalancerAcl) syncRemoveCloudLoadbalanceAcl(ctx context.Context,
|
||||
if err != nil { // cannot delete
|
||||
err = self.SetStatus(userCred, api.LB_STATUS_UNKNOWN, "sync to delete")
|
||||
} else {
|
||||
err = self.Delete(ctx, userCred)
|
||||
self.DoPendingDelete(ctx, userCred)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -331,13 +331,9 @@ func (lbbg *SLoadbalancerBackendGroup) Delete(ctx context.Context, userCred mccl
|
||||
return nil
|
||||
}
|
||||
|
||||
func (lbbg *SLoadbalancerBackendGroup) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
return lbbg.SVirtualResourceBase.Delete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (man *SLoadbalancerBackendGroupManager) getLoadbalancerBackendgroupsByLoadbalancer(lb *SLoadbalancer) ([]SLoadbalancerBackendGroup, error) {
|
||||
lbbgs := []SLoadbalancerBackendGroup{}
|
||||
q := man.Query().Equals("loadbalancer_id", lb.Id)
|
||||
q := man.Query().Equals("loadbalancer_id", lb.Id).IsFalse("pending_deleted")
|
||||
if err := db.FetchModelObjects(man, q, &lbbgs); err != nil {
|
||||
log.Errorf("failed to get lbbgs for lb: %s error: %v", lb.Name, err)
|
||||
return nil, err
|
||||
@@ -423,7 +419,7 @@ func (lbbg *SLoadbalancerBackendGroup) syncRemoveCloudLoadbalancerBackendgroup(c
|
||||
if err != nil { // cannot delete
|
||||
err = lbbg.SetStatus(userCred, api.LB_STATUS_UNKNOWN, "sync to delete")
|
||||
} else {
|
||||
err = lbbg.Delete(ctx, userCred)
|
||||
lbbg.PreDeleteSubs(ctx, userCred)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -241,10 +241,6 @@ func (lbb *SLoadbalancerBackend) Delete(ctx context.Context, userCred mcclient.T
|
||||
return nil
|
||||
}
|
||||
|
||||
func (lbb *SLoadbalancerBackend) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
return lbb.SVirtualResourceBase.Delete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (lbb *SLoadbalancerBackend) AllowPerformPurge(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool {
|
||||
return db.IsAdminAllowPerform(userCred, lbb, "purge")
|
||||
}
|
||||
@@ -272,7 +268,7 @@ func (lbb *SLoadbalancerBackend) StartLoadBalancerBackendDeleteTask(ctx context.
|
||||
func (man *SLoadbalancerBackendManager) getLoadbalancerBackendsByLoadbalancerBackendgroup(loadbalancerBackendgroup *SLoadbalancerBackendGroup) ([]SLoadbalancerBackend, error) {
|
||||
loadbalancerBackends := []SLoadbalancerBackend{}
|
||||
q := man.Query().Equals("backend_group_id", loadbalancerBackendgroup.Id)
|
||||
q = q.Filter(sqlchemy.OR(sqlchemy.IsNull(q.Field("pending_deleted")), sqlchemy.IsFalse(q.Field("pending_deleted"))))
|
||||
q = q.IsFalse("pending_deleted")
|
||||
if err := db.FetchModelObjects(man, q, &loadbalancerBackends); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -377,7 +373,8 @@ func (lbb *SLoadbalancerBackend) syncRemoveCloudLoadbalancerBackend(ctx context.
|
||||
if err != nil { // cannot delete
|
||||
err = lbb.SetStatus(userCred, api.LB_STATUS_UNKNOWN, "sync to delete")
|
||||
} else {
|
||||
err = lbb.MarkPendingDelete(userCred)
|
||||
// err = lbb.MarkPendingDelete(userCred)
|
||||
err = lbb.DoPendingDelete(ctx, userCred)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -260,10 +260,6 @@ func (lbcert *SLoadbalancerCertificate) Delete(ctx context.Context, userCred mcc
|
||||
return nil
|
||||
}
|
||||
|
||||
func (lbcert *SLoadbalancerCertificate) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
return lbcert.SVirtualResourceBase.Delete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (lbcert *SLoadbalancerCertificate) GetRegion() *SCloudregion {
|
||||
region, err := CloudregionManager.FetchById(lbcert.CloudregionId)
|
||||
if err != nil {
|
||||
@@ -311,7 +307,7 @@ func (lbcert *SLoadbalancerCertificate) StartLoadBalancerCertificateDeleteTask(c
|
||||
|
||||
func (man *SLoadbalancerCertificateManager) getLoadbalancerCertificatesByRegion(region *SCloudregion, provider *SCloudprovider) ([]SLoadbalancerCertificate, error) {
|
||||
certificates := []SLoadbalancerCertificate{}
|
||||
q := man.Query().Equals("cloudregion_id", region.Id).Equals("manager_id", provider.Id)
|
||||
q := man.Query().Equals("cloudregion_id", region.Id).Equals("manager_id", provider.Id).IsFalse("pending_deleted")
|
||||
if err := db.FetchModelObjects(man, q, &certificates); err != nil {
|
||||
log.Errorf("failed to get lb certificates for region: %v provider: %v error: %v", region, provider, err)
|
||||
return nil, err
|
||||
@@ -408,7 +404,7 @@ func (lbcert *SLoadbalancerCertificate) syncRemoveCloudLoadbalancerCertificate(c
|
||||
if err != nil { // cannot delete
|
||||
err = lbcert.SetStatus(userCred, api.LB_STATUS_UNKNOWN, "sync to delete")
|
||||
} else {
|
||||
err = lbcert.Delete(ctx, userCred)
|
||||
err = lbcert.DoPendingDelete(ctx, userCred)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -285,15 +285,11 @@ func (lbr *SLoadbalancerListenerRule) Delete(ctx context.Context, userCred mccli
|
||||
return nil
|
||||
}
|
||||
|
||||
func (lbr *SLoadbalancerListenerRule) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
return lbr.SVirtualResourceBase.Delete(ctx, userCred)
|
||||
}
|
||||
|
||||
// Delete, Update
|
||||
|
||||
func (man *SLoadbalancerListenerRuleManager) getLoadbalancerListenerRulesByListener(listener *SLoadbalancerListener) ([]SLoadbalancerListenerRule, error) {
|
||||
rules := []SLoadbalancerListenerRule{}
|
||||
q := man.Query().Equals("listener_id", listener.Id)
|
||||
q := man.Query().Equals("listener_id", listener.Id).IsFalse("pending_deleted")
|
||||
if err := db.FetchModelObjects(man, q, &rules); err != nil {
|
||||
log.Errorf("failed to get lb listener rules for listener %s error: %v", listener.Name, err)
|
||||
return nil, err
|
||||
@@ -412,7 +408,7 @@ func (lbr *SLoadbalancerListenerRule) syncRemoveCloudLoadbalancerListenerRule(ct
|
||||
if err != nil { // cannot delete
|
||||
err = lbr.SetStatus(userCred, api.LB_STATUS_UNKNOWN, "sync to delete")
|
||||
} else {
|
||||
err = lbr.Delete(ctx, userCred)
|
||||
err = lbr.DoPendingDelete(ctx, userCred)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -584,10 +584,6 @@ func (lblis *SLoadbalancerListener) Delete(ctx context.Context, userCred mcclien
|
||||
return nil
|
||||
}
|
||||
|
||||
func (lblis *SLoadbalancerListener) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
return lblis.SVirtualResourceBase.Delete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (lblis *SLoadbalancerListener) GetLoadbalancerListenerParams() (*cloudprovider.SLoadbalancerListener, error) {
|
||||
listener := &cloudprovider.SLoadbalancerListener{
|
||||
Name: lblis.Name,
|
||||
@@ -687,7 +683,7 @@ func (lblis *SLoadbalancerListener) GetIRegion() (cloudprovider.ICloudRegion, er
|
||||
|
||||
func (man *SLoadbalancerListenerManager) getLoadbalancerListenersByLoadbalancer(lb *SLoadbalancer) ([]SLoadbalancerListener, error) {
|
||||
listeners := []SLoadbalancerListener{}
|
||||
q := man.Query().Equals("loadbalancer_id", lb.Id)
|
||||
q := man.Query().Equals("loadbalancer_id", lb.Id).IsFalse("pending_deleted")
|
||||
if err := db.FetchModelObjects(man, q, &listeners); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -822,7 +818,8 @@ func (lblis *SLoadbalancerListener) syncRemoveCloudLoadbalancerListener(ctx cont
|
||||
if err != nil { // cannot delete
|
||||
err = lblis.SetStatus(userCred, api.LB_STATUS_UNKNOWN, "sync to delete")
|
||||
} else {
|
||||
err = lblis.Delete(ctx, userCred)
|
||||
// err = lblis.PendingDelete(ctx, userCred)
|
||||
lblis.PreDeleteSubs(ctx, userCred)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -437,8 +437,8 @@ func (lb *SLoadbalancer) PendingDelete(ctx context.Context, userCred mcclient.To
|
||||
}
|
||||
LoadbalancernetworkManager.DeleteLoadbalancerNetwork(ctx, userCred, req)
|
||||
}
|
||||
lb.DoPendingDelete(ctx, userCred)
|
||||
lb.PreDeleteSubs(ctx, userCred)
|
||||
lb.DoPendingDelete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (lb *SLoadbalancer) PreDeleteSubs(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
@@ -462,13 +462,9 @@ func (lb *SLoadbalancer) Delete(ctx context.Context, userCred mcclient.TokenCred
|
||||
return nil
|
||||
}
|
||||
|
||||
func (lb *SLoadbalancer) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
return lb.SVirtualResourceBase.Delete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (man *SLoadbalancerManager) getLoadbalancersByRegion(region *SCloudregion, provider *SCloudprovider) ([]SLoadbalancer, error) {
|
||||
lbs := []SLoadbalancer{}
|
||||
q := man.Query().Equals("cloudregion_id", region.Id).Equals("manager_id", provider.Id)
|
||||
q := man.Query().Equals("cloudregion_id", region.Id).Equals("manager_id", provider.Id).IsFalse("pending_deleted")
|
||||
if err := db.FetchModelObjects(man, q, &lbs); err != nil {
|
||||
log.Errorf("failed to get lbs for region: %v provider: %v error: %v", region, provider, err)
|
||||
return nil, err
|
||||
@@ -589,11 +585,11 @@ func (lb *SLoadbalancer) syncRemoveCloudLoadbalancer(ctx context.Context, userCr
|
||||
|
||||
err := lb.ValidateDeleteCondition(ctx)
|
||||
if err != nil { // cannot delete
|
||||
err = lb.SetStatus(userCred, api.LB_STATUS_UNKNOWN, "sync to delete")
|
||||
return lb.SetStatus(userCred, api.LB_STATUS_UNKNOWN, "sync to delete")
|
||||
} else {
|
||||
err = lb.Delete(ctx, userCred)
|
||||
lb.PendingDelete(ctx, userCred)
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (lb *SLoadbalancer) syncLoadbalancerNetwork(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
|
||||
@@ -158,20 +158,10 @@ func managedResourceFilterByCloudType(q *sqlchemy.SQuery, query jsonutils.JSONOb
|
||||
|
||||
if jsonutils.QueryBoolean(query, "private_cloud", false) || jsonutils.QueryBoolean(query, "is_private", false) {
|
||||
if len(filterField) == 0 {
|
||||
q = q.Filter(
|
||||
sqlchemy.OR(
|
||||
sqlchemy.In(q.Field("manager_id"), CloudproviderManager.GetPrivateProviderIdsQuery()),
|
||||
sqlchemy.IsNullOrEmpty(q.Field("manager_id")),
|
||||
),
|
||||
)
|
||||
q = q.Filter(sqlchemy.In(q.Field("manager_id"), CloudproviderManager.GetPrivateProviderIdsQuery()))
|
||||
} else {
|
||||
sq := subqFunc()
|
||||
sq = sq.Filter(
|
||||
sqlchemy.OR(
|
||||
sqlchemy.In(sq.Field("manager_id"), CloudproviderManager.GetPrivateProviderIdsQuery()),
|
||||
sqlchemy.IsNullOrEmpty(sq.Field("manager_id")),
|
||||
),
|
||||
)
|
||||
sq = sq.Filter(sqlchemy.In(sq.Field("manager_id"), CloudproviderManager.GetPrivateProviderIdsQuery()))
|
||||
q = q.Filter(sqlchemy.In(q.Field(filterField), sq.SubQuery()))
|
||||
}
|
||||
}
|
||||
@@ -209,22 +199,6 @@ func managedResourceFilterByCloudType(q *sqlchemy.SQuery, query jsonutils.JSONOb
|
||||
return q
|
||||
}
|
||||
|
||||
/*func (self *SManagedResourceBase) getExtraDetails(ctx context.Context, extra *jsonutils.JSONDict) *jsonutils.JSONDict {
|
||||
manager := self.GetCloudprovider()
|
||||
if manager != nil {
|
||||
extra.Add(jsonutils.NewString(manager.Name), "manager")
|
||||
extra.Add(jsonutils.NewString(manager.ProjectId), "manager_tenant_id")
|
||||
extra.Add(jsonutils.NewString(manager.ProjectId), "manager_project_id")
|
||||
project := manager.getProject(ctx)
|
||||
if project != nil {
|
||||
extra.Add(jsonutils.NewString(project.Name), "manager_tenant")
|
||||
extra.Add(jsonutils.NewString(project.Name), "manager_project")
|
||||
}
|
||||
}
|
||||
return extra
|
||||
}
|
||||
*/
|
||||
|
||||
type SCloudProviderInfo struct {
|
||||
Provider string `json:",omitempty"`
|
||||
Account string `json:",omitempty"`
|
||||
|
||||
@@ -541,7 +541,7 @@ func (self *SNetwork) syncRemoveCloudNetwork(ctx context.Context, userCred mccli
|
||||
if err != nil { // cannot delete
|
||||
err = self.SetStatus(userCred, NETWORK_STATUS_UNKNOWN, "Sync to remove")
|
||||
} else {
|
||||
err = self.Delete(ctx, userCred)
|
||||
err = self.RealDelete(ctx, userCred)
|
||||
|
||||
}
|
||||
return err
|
||||
|
||||
@@ -162,7 +162,7 @@ func (lbcert *SLoadbalancerCertificate) purge(ctx context.Context, userCred mccl
|
||||
return err
|
||||
}
|
||||
|
||||
return lbcert.RealDelete(ctx, userCred)
|
||||
return lbcert.DoPendingDelete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (manager *SLoadbalancerAclManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error {
|
||||
@@ -189,7 +189,7 @@ func (lbacl *SLoadbalancerAcl) purge(ctx context.Context, userCred mcclient.Toke
|
||||
return err
|
||||
}
|
||||
|
||||
return lbacl.RealDelete(ctx, userCred)
|
||||
return lbacl.DoPendingDelete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (manager *SLoadbalancerManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error {
|
||||
@@ -246,7 +246,8 @@ func (lb *SLoadbalancer) purge(ctx context.Context, userCred mcclient.TokenCrede
|
||||
return err
|
||||
}
|
||||
|
||||
return lb.RealDelete(ctx, userCred)
|
||||
lb.PendingDelete(ctx, userCred)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (manager *SLoadbalancerListenerManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error {
|
||||
@@ -273,7 +274,8 @@ func (lbl *SLoadbalancerListener) purge(ctx context.Context, userCred mcclient.T
|
||||
return err
|
||||
}
|
||||
|
||||
return lbl.RealDelete(ctx, userCred)
|
||||
lbl.PreDeleteSubs(ctx, userCred)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (manager *SLoadbalancerListenerRuleManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error {
|
||||
@@ -299,7 +301,7 @@ func (lblr *SLoadbalancerListenerRule) purge(ctx context.Context, userCred mccli
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return lblr.RealDelete(ctx, userCred)
|
||||
return lblr.DoPendingDelete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (manager *SLoadbalancerBackendGroupManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error {
|
||||
@@ -326,7 +328,8 @@ func (lbbg *SLoadbalancerBackendGroup) purge(ctx context.Context, userCred mccli
|
||||
return err
|
||||
}
|
||||
|
||||
return lbbg.RealDelete(ctx, userCred)
|
||||
lbbg.PreDeleteSubs(ctx, userCred)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (manager *SLoadbalancerBackendManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error {
|
||||
@@ -352,7 +355,7 @@ func (lbb *SLoadbalancerBackend) purge(ctx context.Context, userCred mcclient.To
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return lbb.RealDelete(ctx, userCred)
|
||||
return lbb.DoPendingDelete(ctx, userCred)
|
||||
}
|
||||
|
||||
func (manager *SSnapshotManager) purgeAll(ctx context.Context, userCred mcclient.TokenCredential, providerId string) error {
|
||||
|
||||
@@ -463,7 +463,7 @@ func (self *SRouteTable) syncRemoveCloudRouteTable(ctx context.Context, userCred
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = self.Delete(ctx, userCred)
|
||||
err = self.RealDelete(ctx, userCred)
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -556,7 +556,7 @@ func (self *SSnapshot) syncRemoveCloudSnapshot(ctx context.Context, userCred mcc
|
||||
if err != nil {
|
||||
err = self.SetStatus(userCred, SNAPSHOT_UNKNOWN, "sync to delete")
|
||||
} else {
|
||||
err = self.Delete(ctx, userCred)
|
||||
err = self.RealDelete(ctx, userCred)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -330,7 +330,7 @@ func (self *SVpc) syncRemoveCloudVpc(ctx context.Context, userCred mcclient.Toke
|
||||
err = self.SetStatus(userCred, VPC_STATUS_UNKNOWN, "sync to delete")
|
||||
}
|
||||
} else {
|
||||
err = self.Delete(ctx, userCred)
|
||||
err = self.RealDelete(ctx, userCred)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -585,43 +585,11 @@ func (manager *SVpcManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQue
|
||||
}
|
||||
q = managedResourceFilterByCloudType(q, query, "", nil)
|
||||
|
||||
/*managerStr := jsonutils.GetAnyString(query, []string{"manager", "cloudprovider", "cloudprovider_id", "manager_id"})
|
||||
if len(managerStr) > 0 {
|
||||
provider, err := CloudproviderManager.FetchByIdOrName(nil, managerStr)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(CloudproviderManager.Keyword(), managerStr)
|
||||
}
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
}
|
||||
q = q.Filter(sqlchemy.Equals(q.Field("manager_id"), provider.GetId()))
|
||||
queryDict.Remove("manager_id")
|
||||
}*/
|
||||
|
||||
q, err = manager.SStatusStandaloneResourceBaseManager.ListItemFilter(ctx, q, userCred, query)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
/* accountStr := jsonutils.GetAnyString(query, []string{"account", "account_id", "cloudaccount", "cloudaccount_id"})
|
||||
if len(accountStr) > 0 {
|
||||
account, err := CloudaccountManager.FetchByIdOrName(nil, accountStr)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, httperrors.NewResourceNotFoundError2(CloudaccountManager.Keyword(), accountStr)
|
||||
}
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
}
|
||||
subq := CloudproviderManager.Query("id").Equals("cloudaccount_id", account.GetId()).SubQuery()
|
||||
q = q.Filter(sqlchemy.In(q.Field("manager_id"), subq))
|
||||
}
|
||||
|
||||
providerStr := jsonutils.GetAnyString(query, []string{"provider"})
|
||||
if len(providerStr) > 0 {
|
||||
subq := CloudproviderManager.Query("id").Equals("provider", providerStr).SubQuery()
|
||||
q = q.Filter(sqlchemy.In(q.Field("manager_id"), subq))
|
||||
}*/
|
||||
|
||||
return q, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user