diff --git a/pkg/compute/models/cloudproviders.go b/pkg/compute/models/cloudproviders.go index 6cf9c21a2c..ae2ed0f80e 100644 --- a/pkg/compute/models/cloudproviders.go +++ b/pkg/compute/models/cloudproviders.go @@ -114,6 +114,18 @@ func (self *SCloudprovider) ValidateDeleteCondition(ctx context.Context) error { return self.SEnabledStatusStandaloneResourceBase.ValidateDeleteCondition(ctx) } +func (self *SCloudprovider) CleanSchedCache() { + hosts := []SHost{} + q := HostManager.Query().Equals("manager_id", self.Id) + if err := db.FetchModelObjects(HostManager, q, &hosts); err != nil { + log.Errorf("failed to get hosts for cloudprovider %s error: %v", self.Name, err) + return + } + for _, host := range hosts { + host.ClearSchedDescCache() + } +} + func (self *SCloudprovider) GetGuestCount() int { sq := HostManager.Query("id").Equals("manager_id", self.Id) return GuestManager.Query().In("host_id", sq).Count() diff --git a/pkg/compute/tasks/cloud_provider_sync_info_task.go b/pkg/compute/tasks/cloud_provider_sync_info_task.go index 90ffa4fd41..693b1c3015 100644 --- a/pkg/compute/tasks/cloud_provider_sync_info_task.go +++ b/pkg/compute/tasks/cloud_provider_sync_info_task.go @@ -80,6 +80,7 @@ func (self *CloudProviderSyncInfoTask) OnInit(ctx context.Context, obj db.IStand } provider.SetStatus(self.UserCred, models.CLOUD_PROVIDER_CONNECTED, "") + provider.CleanSchedCache() self.SetStageComplete(ctx, nil) logclient.AddActionLog(provider, getAction(self.Params), body, self.UserCred, true) }