fix(esxi): Add two account with same account name

This commit is contained in:
Rain
2020-03-09 17:51:24 +08:00
parent f0481b747c
commit 396f997cf4
2 changed files with 30 additions and 1 deletions
+29
View File
@@ -1082,6 +1082,35 @@ func (manager *SCloudaccountManager) InitializeData() error {
if err != nil {
return err
}
// init accountid
q = manager.Query().Equals("provider", api.CLOUD_PROVIDER_VMWARE)
cloudaccounts := make([]SCloudaccount, 0)
err = db.FetchModelObjects(manager, q, &cloudaccounts)
if err != nil {
return errors.Wrap(err, "fetch vmware cloudaccount fail")
}
for i := range cloudaccounts {
account := cloudaccounts[i]
if len(account.AccountId) != 0 && account.Account != account.AccountId {
continue
}
url, err := url.Parse(account.AccessUrl)
if err != nil {
return errors.Wrapf(err, "parse vmware account's accessurl %s", account.AccessUrl)
}
hostPort := url.Host
if i := strings.IndexByte(hostPort, ':'); i < 0 {
hostPort = fmt.Sprintf("%s:%d", hostPort, 443)
}
_, err = db.Update(&account, func() error {
account.AccountId = fmt.Sprintf("%s@%s", account.Account, hostPort)
return nil
})
if err != nil {
return errors.Wrap(err, "db.Update for account")
}
}
return nil
}
+1 -1
View File
@@ -187,7 +187,7 @@ func (cli *SESXiClient) GetSubAccounts() ([]cloudprovider.SSubAccount, error) {
}
func (cli *SESXiClient) GetAccountId() string {
return cli.account
return fmt.Sprintf("%s@%s:%d", cli.account, cli.host, cli.port)
}
func (cli *SESXiClient) GetVersion() string {