From b50cd5f667142aeb30a1658af129da13b1a62e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Mon, 17 Dec 2018 11:30:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=AE=8C=E6=88=90=E5=90=8E?= =?UTF-8?q?=E6=B8=85=E7=90=86=E8=B0=83=E5=BA=A6=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/cloudproviders.go | 16 ++++++++++++++-- .../tasks/cloud_provider_sync_info_task.go | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pkg/compute/models/cloudproviders.go b/pkg/compute/models/cloudproviders.go index ec6905900d..02197c383e 100644 --- a/pkg/compute/models/cloudproviders.go +++ b/pkg/compute/models/cloudproviders.go @@ -8,14 +8,14 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" - "yunion.io/x/onecloud/pkg/httperrors" - "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/pkg/util/timeutils" "yunion.io/x/pkg/utils" "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman" "yunion.io/x/onecloud/pkg/cloudprovider" + "yunion.io/x/onecloud/pkg/httperrors" + "yunion.io/x/onecloud/pkg/mcclient" ) const ( @@ -70,6 +70,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 4b80702ca0..58520f0d04 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) }