mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
fix: get region nil pointer error
This commit is contained in:
@@ -198,7 +198,7 @@ func (self *SAwsClient) fetchRegions() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
if describeRegionResult == nil || time.Now().After(describeRegionResultCacheAt.Add(time.Second*3600*describeRegionExpireHours)) {
|
||||
if describeRegionResult == nil || describeRegionResultCacheAt.IsZero() || time.Now().After(describeRegionResultCacheAt.Add(time.Hour*describeRegionExpireHours)) {
|
||||
s, err := self.getDefaultSession()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "getDefaultSession")
|
||||
@@ -397,6 +397,12 @@ func (client *SAwsClient) fetchBuckets() error {
|
||||
|
||||
// 只是使用fetchRegions初始化好的self.iregions. 本身并不从云服务器厂商拉取region信息
|
||||
func (self *SAwsClient) GetRegions() []SRegion {
|
||||
err := self.fetchRegions()
|
||||
if err != nil {
|
||||
log.Errorf("fetchRegions fail %s", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
regions := make([]SRegion, len(self.iregions))
|
||||
for i := 0; i < len(regions); i += 1 {
|
||||
region := self.iregions[i].(*SRegion)
|
||||
@@ -410,6 +416,12 @@ func (self *SAwsClient) GetIRegions() []cloudprovider.ICloudRegion {
|
||||
}
|
||||
|
||||
func (self *SAwsClient) GetRegion(regionId string) *SRegion {
|
||||
err := self.fetchRegions()
|
||||
if err != nil {
|
||||
log.Errorf("fetchRegions fail %s", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
if len(regionId) == 0 {
|
||||
regionId = AWS_INTERNATIONAL_DEFAULT_REGION
|
||||
switch self.accessUrl {
|
||||
|
||||
@@ -78,12 +78,11 @@ func (r *SRegion) ListAccounts() ([]SAccount, error) {
|
||||
}
|
||||
|
||||
func (self *SAwsClient) GetSubAccounts() ([]cloudprovider.SSubAccount, error) {
|
||||
// todo: implement me
|
||||
err := self.fetchRegions()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "fetchRegions")
|
||||
defRegion := self.getDefaultRegion()
|
||||
if defRegion == nil {
|
||||
return nil, errors.Wrap(errors.ErrInvalidStatus, "no valid default region")
|
||||
}
|
||||
accounts, err := self.getDefaultRegion().ListAccounts()
|
||||
accounts, err := defRegion.ListAccounts()
|
||||
if err != nil {
|
||||
// find errors
|
||||
if strings.Contains(err.Error(), "AWSOrganizationsNotInUseException") || strings.Contains(err.Error(), "AccessDeniedException") {
|
||||
|
||||
Reference in New Issue
Block a user