Merge branch 'release/2.4.0' of ssh://git.yunion.io/~qiujian/onecloud into hotfix/qj-resolve-conflict-2.5.0-20190213

Conflicts:
	pkg/compute/models/guests.go
	pkg/compute/service/service.go
	pkg/compute/tasks/cloud_provider_sync_info_task.go
This commit is contained in:
Qiu Jian
2019-02-13 12:01:01 +08:00
14 changed files with 115 additions and 45 deletions
+2
View File
@@ -49,6 +49,8 @@ type ICloudProvider interface {
GetBalance() (float64, error)
GetSubAccounts() ([]SSubAccount, error)
SupportPrepaidResources() bool
}
var providerTable map[string]ICloudProviderFactory
+14 -12
View File
@@ -873,7 +873,7 @@ func (manager *SDiskManager) getDisksByStorage(storage *SStorage) ([]SDisk, erro
return disks, nil
}
func (manager *SDiskManager) syncCloudDisk(ctx context.Context, userCred mcclient.TokenCredential, vdisk cloudprovider.ICloudDisk, index int, projectId string, projectSync bool) (*SDisk, error) {
func (manager *SDiskManager) syncCloudDisk(ctx context.Context, userCred mcclient.TokenCredential, provider cloudprovider.ICloudProvider, vdisk cloudprovider.ICloudDisk, index int, projectId string, projectSync bool) (*SDisk, error) {
diskObj, err := manager.FetchByExternalId(vdisk.GetGlobalId())
if err != nil {
if err == sql.ErrNoRows {
@@ -885,13 +885,13 @@ func (manager *SDiskManager) syncCloudDisk(ctx context.Context, userCred mcclien
return nil, err
}
storage := storageObj.(*SStorage)
return manager.newFromCloudDisk(ctx, userCred, vdisk, storage, -1, projectId)
return manager.newFromCloudDisk(ctx, userCred, provider, vdisk, storage, -1, projectId)
} else {
return nil, err
}
} else {
disk := diskObj.(*SDisk)
err = disk.syncWithCloudDisk(ctx, userCred, vdisk, index, projectId, projectSync)
err = disk.syncWithCloudDisk(ctx, userCred, provider, vdisk, index, projectId, projectSync)
if err != nil {
return nil, err
}
@@ -899,7 +899,7 @@ func (manager *SDiskManager) syncCloudDisk(ctx context.Context, userCred mcclien
}
}
func (manager *SDiskManager) SyncDisks(ctx context.Context, userCred mcclient.TokenCredential, storage *SStorage, disks []cloudprovider.ICloudDisk, projectId string, projectSync bool) ([]SDisk, []cloudprovider.ICloudDisk, compare.SyncResult) {
func (manager *SDiskManager) SyncDisks(ctx context.Context, userCred mcclient.TokenCredential, provider cloudprovider.ICloudProvider, storage *SStorage, disks []cloudprovider.ICloudDisk, projectId string, projectSync bool) ([]SDisk, []cloudprovider.ICloudDisk, compare.SyncResult) {
localDisks := make([]SDisk, 0)
remoteDisks := make([]cloudprovider.ICloudDisk, 0)
syncResult := compare.SyncResult{}
@@ -931,7 +931,7 @@ func (manager *SDiskManager) SyncDisks(ctx context.Context, userCred mcclient.To
}
for i := 0; i < len(commondb); i += 1 {
err = commondb[i].syncWithCloudDisk(ctx, userCred, commonext[i], -1, projectId, projectSync)
err = commondb[i].syncWithCloudDisk(ctx, userCred, provider, commonext[i], -1, projectId, projectSync)
if err != nil {
syncResult.UpdateError(err)
} else {
@@ -942,7 +942,7 @@ func (manager *SDiskManager) SyncDisks(ctx context.Context, userCred mcclient.To
}
for i := 0; i < len(added); i += 1 {
new, err := manager.newFromCloudDisk(ctx, userCred, added[i], storage, -1, projectId)
new, err := manager.newFromCloudDisk(ctx, userCred, provider, added[i], storage, -1, projectId)
if err != nil {
syncResult.AddError(err)
} else {
@@ -955,10 +955,10 @@ func (manager *SDiskManager) SyncDisks(ctx context.Context, userCred mcclient.To
return localDisks, remoteDisks, syncResult
}
func (self *SDisk) syncWithCloudDisk(ctx context.Context, userCred mcclient.TokenCredential, extDisk cloudprovider.ICloudDisk, index int, projectId string, projectSync bool) error {
func (self *SDisk) syncWithCloudDisk(ctx context.Context, userCred mcclient.TokenCredential, provider cloudprovider.ICloudProvider, extDisk cloudprovider.ICloudDisk, index int, projectId string, projectSync bool) error {
recycle := false
guests := self.GetGuests()
if len(guests) == 1 && guests[0].IsPrepaidRecycle() {
if provider.SupportPrepaidResources() && len(guests) == 1 && guests[0].IsPrepaidRecycle() {
recycle = true
}
_, err := self.GetModelManager().TableSpec().Update(self, func() error {
@@ -981,7 +981,7 @@ func (self *SDisk) syncWithCloudDisk(ctx context.Context, userCred mcclient.Toke
self.IsEmulated = extDisk.IsEmulated()
if !recycle {
if provider.SupportPrepaidResources() && !recycle {
self.BillingType = extDisk.GetBillingType()
self.ExpiredAt = extDisk.GetExpiredAt()
}
@@ -1013,7 +1013,7 @@ func (self *SDisk) syncWithCloudDisk(ctx context.Context, userCred mcclient.Toke
return nil
}
func (manager *SDiskManager) newFromCloudDisk(ctx context.Context, userCred mcclient.TokenCredential, extDisk cloudprovider.ICloudDisk, storage *SStorage, index int, projectId string) (*SDisk, error) {
func (manager *SDiskManager) newFromCloudDisk(ctx context.Context, userCred mcclient.TokenCredential, provider cloudprovider.ICloudProvider, extDisk cloudprovider.ICloudDisk, storage *SStorage, index int, projectId string) (*SDisk, error) {
disk := SDisk{}
disk.SetModelManager(manager)
@@ -1036,8 +1036,10 @@ func (manager *SDiskManager) newFromCloudDisk(ctx context.Context, userCred mccl
disk.IsEmulated = extDisk.IsEmulated()
disk.BillingType = extDisk.GetBillingType()
disk.ExpiredAt = extDisk.GetExpiredAt()
if provider.SupportPrepaidResources() {
disk.BillingType = extDisk.GetBillingType()
disk.ExpiredAt = extDisk.GetExpiredAt()
}
err := manager.TableSpec().Insert(&disk)
if err != nil {
+36 -9
View File
@@ -1661,10 +1661,13 @@ func (self *SGuest) GetIsolatedDevices() []SIsolatedDevice {
return IsolatedDeviceManager.findAttachedDevicesOfGuest(self)
}
func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.TokenCredential, host *SHost, extVM cloudprovider.ICloudVM, projectId string, projectSync bool) error {
func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.TokenCredential, provider cloudprovider.ICloudProvider, host *SHost, extVM cloudprovider.ICloudVM, projectId string, projectSync bool) error {
lockman.LockObject(ctx, self)
defer lockman.ReleaseObject(ctx, self)
recycle := false
if self.IsPrepaidRecycle() {
if provider.SupportPrepaidResources() && self.IsPrepaidRecycle() {
recycle = true
}
@@ -1710,7 +1713,7 @@ func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.Token
self.IsEmulated = extVM.IsEmulated()
if !recycle {
if provider.SupportPrepaidResources() && !recycle {
self.BillingType = extVM.GetBillingType()
self.ExpiredAt = extVM.GetExpiredAt()
}
@@ -1760,7 +1763,7 @@ func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.Token
}
}
if recycle {
if provider.SupportPrepaidResources() && recycle {
vhost := self.GetHost()
err = vhost.syncWithCloudPrepaidVM(extVM, host, projectSync)
if err != nil {
@@ -1771,7 +1774,7 @@ func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.Token
return nil
}
func (manager *SGuestManager) newCloudVM(ctx context.Context, userCred mcclient.TokenCredential, host *SHost, extVM cloudprovider.ICloudVM, projectId string) (*SGuest, error) {
func (manager *SGuestManager) newCloudVM(ctx context.Context, userCred mcclient.TokenCredential, provider cloudprovider.ICloudProvider, host *SHost, extVM cloudprovider.ICloudVM, projectId string) (*SGuest, error) {
guest := SGuest{}
guest.SetModelManager(manager)
@@ -1790,8 +1793,10 @@ func (manager *SGuestManager) newCloudVM(ctx context.Context, userCred mcclient.
guest.IsEmulated = extVM.IsEmulated()
guest.BillingType = extVM.GetBillingType()
guest.ExpiredAt = extVM.GetExpiredAt()
if provider.SupportPrepaidResources() {
guest.BillingType = extVM.GetBillingType()
guest.ExpiredAt = extVM.GetExpiredAt()
}
guest.HostId = host.Id
@@ -2144,7 +2149,7 @@ type sSyncDiskPair struct {
vdisk cloudprovider.ICloudDisk
}
func (self *SGuest) SyncVMDisks(ctx context.Context, userCred mcclient.TokenCredential, host *SHost, vdisks []cloudprovider.ICloudDisk, projectId string, projectSync bool) compare.SyncResult {
func (self *SGuest) SyncVMDisks(ctx context.Context, userCred mcclient.TokenCredential, provider cloudprovider.ICloudProvider, host *SHost, vdisks []cloudprovider.ICloudDisk, projectId string, projectSync bool) compare.SyncResult {
result := compare.SyncResult{}
newdisks := make([]sSyncDiskPair, 0)
@@ -2152,7 +2157,7 @@ func (self *SGuest) SyncVMDisks(ctx context.Context, userCred mcclient.TokenCred
if len(vdisks[i].GetGlobalId()) == 0 {
continue
}
disk, err := DiskManager.syncCloudDisk(ctx, userCred, vdisks[i], i, projectId, projectSync)
disk, err := DiskManager.syncCloudDisk(ctx, userCred, provider, vdisks[i], i, projectId, projectSync)
if err != nil {
log.Errorf("syncCloudDisk error: %v", err)
result.Error(err)
@@ -3427,6 +3432,22 @@ func (manager *SGuestManager) getExpiredPrepaidGuests() []SGuest {
return guests
}
func (self *SGuest) doExternalSync(ctx context.Context, userCred mcclient.TokenCredential) error {
host := self.GetHost()
if host == nil {
return fmt.Errorf("no host???")
}
ihost, iprovider, err := host.GetIHostAndProvider()
if err != nil {
return err
}
iVM, err := ihost.GetIVMById(self.ExternalId)
if err != nil {
return err
}
return self.syncWithCloudVM(ctx, userCred, iprovider, host, iVM, "", false)
}
func (manager *SGuestManager) DeleteExpiredPrepaidServers(ctx context.Context, userCred mcclient.TokenCredential, isStart bool) {
guests := manager.getExpiredPrepaidGuests()
if guests == nil {
@@ -3434,6 +3455,12 @@ func (manager *SGuestManager) DeleteExpiredPrepaidServers(ctx context.Context, u
}
for i := 0; i < len(guests); i += 1 {
// fake delete expired prepaid servers
if len(guests[i].ExternalId) > 0 {
err := guests[i].doExternalSync(ctx, userCred)
if err == nil && guests[i].IsValidPrePaid() {
continue
}
}
guests[i].SetDisableDelete(false)
guests[i].StartDeleteGuestTask(ctx, userCred, "", false, false)
}
+8 -2
View File
@@ -646,7 +646,13 @@ func (host *SHost) RebuildRecycledGuest(ctx context.Context, userCred mcclient.T
return err
}
err = guest.syncWithCloudVM(ctx, userCred, &oHost, extVM, "", false)
iprovider, err := oHost.GetDriver()
if err != nil {
log.Errorf("oHost.GetDriver fail %s", err)
return err
}
err = guest.syncWithCloudVM(ctx, userCred, iprovider, &oHost, extVM, "", false)
if err != nil {
log.Errorf("guest.syncWithCloudVM fail %s", err)
return err
@@ -666,7 +672,7 @@ func (host *SHost) RebuildRecycledGuest(ctx context.Context, userCred mcclient.T
log.Errorf("disk.SetExternalId fail %s", err)
return err
}
err = disk.syncWithCloudDisk(ctx, userCred, idisks[i], i, "", false)
err = disk.syncWithCloudDisk(ctx, userCred, iprovider, idisks[i], i, "", false)
if err != nil {
log.Errorf("disk.syncWithCloudDisk fail %s", err)
return err
+13 -8
View File
@@ -1606,7 +1606,7 @@ func (self *SHost) newCloudHostWire(ctx context.Context, userCred mcclient.Token
return err
}
func (self *SHost) SyncHostVMs(ctx context.Context, userCred mcclient.TokenCredential, vms []cloudprovider.ICloudVM, projectId string, projectSync bool) ([]SGuest, []cloudprovider.ICloudVM, compare.SyncResult) {
func (self *SHost) SyncHostVMs(ctx context.Context, userCred mcclient.TokenCredential, iprovider cloudprovider.ICloudProvider, vms []cloudprovider.ICloudVM, projectId string, projectSync bool) ([]SGuest, []cloudprovider.ICloudVM, compare.SyncResult) {
localVMs := make([]SGuest, 0)
remoteVMs := make([]cloudprovider.ICloudVM, 0)
syncResult := compare.SyncResult{}
@@ -1634,7 +1634,7 @@ func (self *SHost) SyncHostVMs(ctx context.Context, userCred mcclient.TokenCrede
}
for i := 0; i < len(commondb); i += 1 {
err := commondb[i].syncWithCloudVM(ctx, userCred, self, commonext[i], projectId, projectSync)
err := commondb[i].syncWithCloudVM(ctx, userCred, iprovider, self, commonext[i], projectId, projectSync)
if err != nil {
syncResult.UpdateError(err)
} else {
@@ -1656,7 +1656,7 @@ func (self *SHost) SyncHostVMs(ctx context.Context, userCred mcclient.TokenCrede
continue
}
}
new, err := GuestManager.newCloudVM(ctx, userCred, self, added[i], projectId)
new, err := GuestManager.newCloudVM(ctx, userCred, iprovider, self, added[i], projectId)
if err != nil {
syncResult.AddError(err)
} else {
@@ -1884,9 +1884,14 @@ func (self *SHost) GetIZone() (cloudprovider.ICloudZone, error) {
*/
func (self *SHost) GetIHost() (cloudprovider.ICloudHost, error) {
host, _, err := self.GetIHostAndProvider()
return host, err
}
func (self *SHost) GetIHostAndProvider() (cloudprovider.ICloudHost, cloudprovider.ICloudProvider, error) {
provider, err := self.GetDriver()
if err != nil {
return nil, fmt.Errorf("No cloudprovide for host: %s", err)
return nil, nil, fmt.Errorf("No cloudprovide for host: %s", err)
}
var iregion cloudprovider.ICloudRegion
if provider.IsOnPremiseInfrastructure() {
@@ -1896,20 +1901,20 @@ func (self *SHost) GetIHost() (cloudprovider.ICloudHost, error) {
if region == nil {
msg := "fail to find region of host???"
log.Errorf(msg)
return nil, fmt.Errorf(msg)
return nil, nil, fmt.Errorf(msg)
}
iregion, err = provider.GetIRegionById(region.ExternalId)
}
if err != nil {
log.Errorf("fail to find iregion: %s", err)
return nil, err
return nil, nil, err
}
ihost, err := iregion.GetIHostById(self.ExternalId)
if err != nil {
log.Errorf("fail to find ihost by id %s %s", self.ExternalId, err)
return nil, fmt.Errorf("fail to find ihost by id %s", err)
return nil, nil, fmt.Errorf("fail to find ihost by id %s", err)
}
return ihost, nil
return ihost, provider, nil
}
func (self *SHost) GetIRegion() (cloudprovider.ICloudRegion, error) {
@@ -144,8 +144,8 @@ func syncPublicCloudProviderInfo(ctx context.Context, provider *models.SCloudpro
if len(syncRange.Zone) > 0 && !utils.IsInStringArray(localZones[j].Id, syncRange.Zone) {
continue
}
syncZoneStorages(ctx, provider, task, &localZones[j], remoteZones[j], syncRange)
syncZoneHosts(ctx, provider, task, &localZones[j], remoteZones[j], syncRange)
syncZoneStorages(ctx, provider, task, driver, &localZones[j], remoteZones[j], syncRange)
syncZoneHosts(ctx, provider, task, driver, &localZones[j], remoteZones[j], syncRange)
}
}
syncRegionSnapshots(ctx, provider, task, &localRegions[i], remoteRegions[i], syncRange)
@@ -468,7 +468,7 @@ func syncWireNetworks(ctx context.Context, provider *models.SCloudprovider, task
logclient.AddActionLog(provider, getAction(task.GetParams()), notes, task.GetUserCred(), true)
}
func syncZoneStorages(ctx context.Context, provider *models.SCloudprovider, task *CloudProviderSyncInfoTask, localZone *models.SZone, remoteZone cloudprovider.ICloudZone, syncRange *models.SSyncRange) {
func syncZoneStorages(ctx context.Context, provider *models.SCloudprovider, task *CloudProviderSyncInfoTask, driver cloudprovider.ICloudProvider, localZone *models.SZone, remoteZone cloudprovider.ICloudZone, syncRange *models.SSyncRange) {
storages, err := remoteZone.GetIStorages()
if err != nil {
msg := fmt.Sprintf("GetIStorages for zone %s failed %s", remoteZone.GetName(), err)
@@ -489,7 +489,7 @@ func syncZoneStorages(ctx context.Context, provider *models.SCloudprovider, task
for i := 0; i < len(localStorages); i += 1 {
syncStorageCaches(ctx, provider, task, &localStorages[i], remoteStorages[i])
syncStorageDisks(ctx, provider, task, &localStorages[i], remoteStorages[i], syncRange)
syncStorageDisks(ctx, provider, task, driver, &localStorages[i], remoteStorages[i], syncRange)
}
}
@@ -510,7 +510,7 @@ func syncStorageCaches(ctx context.Context, provider *models.SCloudprovider, tas
}
}
func syncStorageDisks(ctx context.Context, provider *models.SCloudprovider, task *CloudProviderSyncInfoTask, localStorage *models.SStorage, remoteStorage cloudprovider.ICloudStorage, syncRange *models.SSyncRange) {
func syncStorageDisks(ctx context.Context, provider *models.SCloudprovider, task *CloudProviderSyncInfoTask, driver cloudprovider.ICloudProvider, localStorage *models.SStorage, remoteStorage cloudprovider.ICloudStorage, syncRange *models.SSyncRange) {
disks, err := remoteStorage.GetIDisks()
if err != nil {
msg := fmt.Sprintf("GetIDisks for storage %s failed %s", remoteStorage.GetName(), err)
@@ -518,7 +518,7 @@ func syncStorageDisks(ctx context.Context, provider *models.SCloudprovider, task
logSyncFailed(provider, task, msg)
return
}
_, _, result := models.DiskManager.SyncDisks(ctx, task.UserCred, localStorage, disks, provider.ProjectId, syncRange.ProjectSync)
_, _, result := models.DiskManager.SyncDisks(ctx, task.UserCred, driver, localStorage, disks, provider.ProjectId, syncRange.ProjectSync)
msg := result.Result()
notes := fmt.Sprintf("SyncDisks for storage %s result: %s", localStorage.Name, msg)
log.Infof(notes)
@@ -530,7 +530,7 @@ func syncStorageDisks(ctx context.Context, provider *models.SCloudprovider, task
logclient.AddActionLog(provider, getAction(task.Params), notes, task.UserCred, true)
}
func syncZoneHosts(ctx context.Context, provider *models.SCloudprovider, task *CloudProviderSyncInfoTask, localZone *models.SZone, remoteZone cloudprovider.ICloudZone, syncRange *models.SSyncRange) {
func syncZoneHosts(ctx context.Context, provider *models.SCloudprovider, task *CloudProviderSyncInfoTask, driver cloudprovider.ICloudProvider, localZone *models.SZone, remoteZone cloudprovider.ICloudZone, syncRange *models.SSyncRange) {
hosts, err := remoteZone.GetIHosts()
if err != nil {
msg := fmt.Sprintf("GetIHosts for zone %s failed %s", remoteZone.GetName(), err)
@@ -554,7 +554,7 @@ func syncZoneHosts(ctx context.Context, provider *models.SCloudprovider, task *C
}
syncHostStorages(ctx, provider, task, &localHosts[i], remoteHosts[i])
syncHostWires(ctx, provider, task, &localHosts[i], remoteHosts[i])
syncHostVMs(ctx, provider, task, &localHosts[i], remoteHosts[i], syncRange)
syncHostVMs(ctx, provider, task, driver, &localHosts[i], remoteHosts[i], syncRange)
}
}
@@ -602,7 +602,7 @@ func syncHostWires(ctx context.Context, provider *models.SCloudprovider, task ta
logclient.AddActionLog(provider, getAction(task.GetParams()), notes, task.GetUserCred(), true)
}
func syncHostVMs(ctx context.Context, provider *models.SCloudprovider, task *CloudProviderSyncInfoTask, localHost *models.SHost, remoteHost cloudprovider.ICloudHost, syncRange *models.SSyncRange) {
func syncHostVMs(ctx context.Context, provider *models.SCloudprovider, task *CloudProviderSyncInfoTask, driver cloudprovider.ICloudProvider, localHost *models.SHost, remoteHost cloudprovider.ICloudHost, syncRange *models.SSyncRange) {
vms, err := remoteHost.GetIVMs()
if err != nil {
msg := fmt.Sprintf("GetIVMs for host %s failed %s", remoteHost.GetName(), err)
@@ -610,7 +610,7 @@ func syncHostVMs(ctx context.Context, provider *models.SCloudprovider, task *Clo
logSyncFailed(provider, task, msg)
return
}
localVMs, remoteVMs, result := localHost.SyncHostVMs(ctx, task.UserCred, vms, provider.ProjectId, syncRange.ProjectSync)
localVMs, remoteVMs, result := localHost.SyncHostVMs(ctx, task.UserCred, driver, vms, provider.ProjectId, syncRange.ProjectSync)
msg := result.Result()
notes := fmt.Sprintf("SyncHostVMs for host %s result: %s", localHost.Name, msg)
log.Infof(notes)
@@ -622,7 +622,7 @@ func syncHostVMs(ctx context.Context, provider *models.SCloudprovider, task *Clo
logclient.AddActionLog(provider, getAction(task.Params), notes, task.UserCred, true)
for i := 0; i < len(localVMs); i += 1 {
syncVMNics(ctx, provider, task, localHost, &localVMs[i], remoteVMs[i])
syncVMDisks(ctx, provider, task, localHost, &localVMs[i], remoteVMs[i], syncRange)
syncVMDisks(ctx, provider, task, driver, localHost, &localVMs[i], remoteVMs[i], syncRange)
syncVMEip(ctx, provider, task, &localVMs[i], remoteVMs[i])
if localVMs[i].Status == models.VM_RUNNING {
@@ -651,7 +651,7 @@ func syncVMNics(ctx context.Context, provider *models.SCloudprovider, task *Clou
logclient.AddActionLog(provider, getAction(task.Params), notes, task.UserCred, true)
}
func syncVMDisks(ctx context.Context, provider *models.SCloudprovider, task *CloudProviderSyncInfoTask, host *models.SHost, localVM *models.SGuest, remoteVM cloudprovider.ICloudVM, syncRange *models.SSyncRange) {
func syncVMDisks(ctx context.Context, provider *models.SCloudprovider, task *CloudProviderSyncInfoTask, driver cloudprovider.ICloudProvider, host *models.SHost, localVM *models.SGuest, remoteVM cloudprovider.ICloudVM, syncRange *models.SSyncRange) {
disks, err := remoteVM.GetIDisks()
if err != nil {
msg := fmt.Sprintf("GetIDisks for VM %s failed %s", remoteVM.GetName(), err)
@@ -659,7 +659,7 @@ func syncVMDisks(ctx context.Context, provider *models.SCloudprovider, task *Clo
logSyncFailed(provider, task, msg)
return
}
result := localVM.SyncVMDisks(ctx, task.UserCred, host, disks, provider.ProjectId, syncRange.ProjectSync)
result := localVM.SyncVMDisks(ctx, task.UserCred, driver, host, disks, provider.ProjectId, syncRange.ProjectSync)
msg := result.Result()
notes := fmt.Sprintf("syncVMDisks for VM %s result: %s", localVM.Name, msg)
log.Infof(notes)
@@ -47,7 +47,7 @@ func syncOnPremiseCloudProviderInfo(ctx context.Context, provider *models.SCloud
}
syncHostStorages(ctx, provider, task, &localHosts[i], remoteHosts[i])
syncHostNics(ctx, provider, task, &localHosts[i], remoteHosts[i])
syncHostVMs(ctx, provider, task, &localHosts[i], remoteHosts[i], syncRange)
syncHostVMs(ctx, provider, task, driver, &localHosts[i], remoteHosts[i], syncRange)
}
}
+4
View File
@@ -141,3 +141,7 @@ func (self *SAliyunProvider) GetBalance() (float64, error) {
func (self *SAliyunProvider) GetOnPremiseIRegion() (cloudprovider.ICloudRegion, error) {
return nil, cloudprovider.ErrNotImplemented
}
func (self *SAliyunProvider) SupportPrepaidResources() bool {
return true
}
+4
View File
@@ -124,3 +124,7 @@ func (self *SAwsProvider) GetBalance() (float64, error) {
func (self *SAwsProvider) GetOnPremiseIRegion() (cloudprovider.ICloudRegion, error) {
return nil, cloudprovider.ErrNotImplemented
}
func (self *SAwsProvider) SupportPrepaidResources() bool {
return true
}
+4
View File
@@ -130,3 +130,7 @@ func (self *SAzureProvider) GetBalance() (float64, error) {
func (self *SAzureProvider) GetOnPremiseIRegion() (cloudprovider.ICloudRegion, error) {
return nil, cloudprovider.ErrNotImplemented
}
func (self *SAzureProvider) SupportPrepaidResources() bool {
return true
}
+4
View File
@@ -154,3 +154,7 @@ func (self *SESXiProvider) GetBalance() (float64, error) {
func (self *SESXiProvider) GetOnPremiseIRegion() (cloudprovider.ICloudRegion, error) {
return self.client, nil
}
func (self *SESXiProvider) SupportPrepaidResources() bool {
return false
}
+4
View File
@@ -125,3 +125,7 @@ func (self *SHuaweiProvider) GetBalance() (float64, error) {
func (self *SHuaweiProvider) GetSubAccounts() ([]cloudprovider.SSubAccount, error) {
return self.client.GetSubAccounts()
}
func (self *SHuaweiProvider) SupportPrepaidResources() bool {
return true
}
+4
View File
@@ -137,3 +137,7 @@ func (self *SOpenStackProvider) GetBalance() (float64, error) {
func (self *SOpenStackProvider) GetOnPremiseIRegion() (cloudprovider.ICloudRegion, error) {
return nil, cloudprovider.ErrNotImplemented
}
func (self *SOpenStackProvider) SupportPrepaidResources() bool {
return false
}
+4
View File
@@ -137,3 +137,7 @@ func (self *SQcloudProvider) GetBalance() (float64, error) {
func (self *SQcloudProvider) GetOnPremiseIRegion() (cloudprovider.ICloudRegion, error) {
return nil, cloudprovider.ErrNotImplemented
}
func (self *SQcloudProvider) SupportPrepaidResources() bool {
return true
}