From 04917c93453febb0843a178ac9f1b3c9327fe3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Sat, 17 Nov 2018 15:31:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B7=E6=96=B0scheduler=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/hosts.go | 18 +++++++++++++++--- .../tasks/cloud_provider_sync_info_task.go | 2 +- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index 5a52ab1505..79028ba701 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -958,7 +958,7 @@ func (manager *SHostManager) getHostsByZone(zone *SZone, provider *SCloudprovide return hosts, nil } -func (manager *SHostManager) SyncHosts(ctx context.Context, userCred mcclient.TokenCredential, provider *SCloudprovider, zone *SZone, hosts []cloudprovider.ICloudHost) ([]SHost, []cloudprovider.ICloudHost, compare.SyncResult) { +func (manager *SHostManager) SyncHosts(ctx context.Context, userCred mcclient.TokenCredential, provider *SCloudprovider, zone *SZone, hosts []cloudprovider.ICloudHost, projectSync bool) ([]SHost, []cloudprovider.ICloudHost, compare.SyncResult) { localHosts := make([]SHost, 0) remoteHosts := make([]cloudprovider.ICloudHost, 0) syncResult := compare.SyncResult{} @@ -1002,7 +1002,7 @@ func (manager *SHostManager) SyncHosts(ctx context.Context, userCred mcclient.To } } for i := 0; i < len(commondb); i += 1 { - err = commondb[i].syncWithCloudHost(commonext[i]) + err = commondb[i].syncWithCloudHost(commonext[i], projectSync) if err != nil { syncResult.UpdateError(err) } else { @@ -1025,7 +1025,7 @@ func (manager *SHostManager) SyncHosts(ctx context.Context, userCred mcclient.To return localHosts, remoteHosts, syncResult } -func (self *SHost) syncWithCloudHost(extHost cloudprovider.ICloudHost) error { +func (self *SHost) syncWithCloudHost(extHost cloudprovider.ICloudHost, projectSync bool) error { _, err := self.GetModelManager().TableSpec().Update(self, func() error { self.Name = extHost.GetName() self.Status = extHost.GetStatus() @@ -1052,6 +1052,13 @@ func (self *SHost) syncWithCloudHost(extHost cloudprovider.ICloudHost) error { if err != nil { log.Errorf("syncWithCloudZone error %s", err) } + + if projectSync { + if err := HostManager.ClearSchedDescCache(self.Id); err != nil { + log.Errorf("ClearSchedDescCache for host %s error %v", self.Name, err) + } + } + return err } @@ -1089,6 +1096,11 @@ func (manager *SHostManager) newFromCloudHost(extHost cloudprovider.ICloudHost, log.Errorf("newFromCloudHost fail %s", err) return nil, err } + + if err := manager.ClearSchedDescCache(host.Id); err != nil { + log.Errorf("ClearSchedDescCache for host %s error %v", host.Name, err) + } + return &host, nil } diff --git a/pkg/compute/tasks/cloud_provider_sync_info_task.go b/pkg/compute/tasks/cloud_provider_sync_info_task.go index 18e75d4d03..85a3d60bb3 100644 --- a/pkg/compute/tasks/cloud_provider_sync_info_task.go +++ b/pkg/compute/tasks/cloud_provider_sync_info_task.go @@ -343,7 +343,7 @@ func syncZoneHosts(ctx context.Context, provider *models.SCloudprovider, task *C logSyncFailed(provider, task, msg) return } - localHosts, remoteHosts, result := models.HostManager.SyncHosts(ctx, task.UserCred, provider, localZone, hosts) + localHosts, remoteHosts, result := models.HostManager.SyncHosts(ctx, task.UserCred, provider, localZone, hosts, syncRange.ProjectSync) msg := result.Result() notes := fmt.Sprintf("SyncHosts for zone %s result: %s", localZone.Name, msg) log.Infof(notes)