mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #755 in YUNIONIO/onecloud from ~TANGBIN/onecloud:bugfix/tb-skus-table-update to release/2.4.0
* commit '17ec3fecb06dd64dcd8bd57e5e412fc710b06d54': skus delete query fix delete invalid sku while sync skus add clean invalid sku job
This commit is contained in:
@@ -536,3 +536,30 @@ func (manager *SServerSkuManager) GetSkuCountByProvider(provider string) int {
|
||||
|
||||
return q.Count()
|
||||
}
|
||||
|
||||
// 删除表中zone not found的记录
|
||||
func (manager *SServerSkuManager) PendingDeleteInvalidSku() error {
|
||||
sq := ZoneManager.Query("id").Distinct().SubQuery()
|
||||
skus := make([]SServerSku, 0)
|
||||
q := manager.Query()
|
||||
q = q.NotIn("zone_id", sq).IsNotEmpty("zone_id")
|
||||
err := db.FetchModelObjects(manager, q, &skus)
|
||||
if err != nil {
|
||||
log.Errorf(err.Error())
|
||||
return httperrors.NewInternalServerError("query sku list failed.")
|
||||
}
|
||||
|
||||
for i := range skus {
|
||||
sku := skus[i]
|
||||
_, err = manager.TableSpec().Update(&sku, func() error {
|
||||
return sku.MarkDelete()
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
log.Errorf(err.Error())
|
||||
return httperrors.NewInternalServerError("delete sku %s failed.", sku.Id)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -306,6 +306,7 @@ func (self *SkusZoneList) SyncToLocalDB() error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 全量同步sku列表.
|
||||
func SyncSkus(ctx context.Context, userCred mcclient.TokenCredential, isStart bool) {
|
||||
if isStart {
|
||||
if models.ServerSkuManager.GetSkuCountByProvider("") > 0 {
|
||||
@@ -320,8 +321,13 @@ func SyncSkus(ctx context.Context, userCred mcclient.TokenCredential, isStart bo
|
||||
if e := skus.SyncToLocalDB(); e != nil {
|
||||
log.Errorf("SyncSkus sync to local db failed, %s", e.Error())
|
||||
}
|
||||
|
||||
// 清理无效的sku
|
||||
log.Debugf("DeleteInvalidSkus in processing...")
|
||||
models.ServerSkuManager.PendingDeleteInvalidSku()
|
||||
}
|
||||
|
||||
// 同步指定provider sku列表
|
||||
func SyncSkusByProviderIds(providerIds []string) error {
|
||||
skus := SkusZoneList{}
|
||||
log.Debugf("SyncSkusByProviderIds %s", providerIds)
|
||||
|
||||
Reference in New Issue
Block a user