diff --git a/pkg/apis/compute/cloudaccount.go b/pkg/apis/compute/cloudaccount.go index 343746ceac..05579df1e3 100644 --- a/pkg/apis/compute/cloudaccount.go +++ b/pkg/apis/compute/cloudaccount.go @@ -19,6 +19,7 @@ import ( "yunion.io/x/pkg/utils" "yunion.io/x/onecloud/pkg/apis" + proxyapi "yunion.io/x/onecloud/pkg/apis/cloudcommon/proxy" "yunion.io/x/onecloud/pkg/cloudprovider" "yunion.io/x/onecloud/pkg/httperrors" ) @@ -180,4 +181,6 @@ type CloudaccountDetail struct { // 存储缓存数量 // example: 10 StoragecacheCount int `json:"storagecache_count,allowempty"` + + ProxySetting proxyapi.SProxySetting `json:"proxy_setting"` } diff --git a/pkg/compute/models/cloudaccounts.go b/pkg/compute/models/cloudaccounts.go index 4b70ef3777..4799238dde 100644 --- a/pkg/compute/models/cloudaccounts.go +++ b/pkg/compute/models/cloudaccounts.go @@ -1714,6 +1714,33 @@ func (manager *SCloudaccountManager) FetchCustomizeColumns(ctx context.Context, } } } + proxySettings := make(map[string]proxy.SProxySetting) + { + proxySettingIds := make([]string, len(objs)) + for i := range objs { + proxySettingId := objs[i].(*SCloudaccount).ProxySettingId + if !utils.IsInStringArray(proxySettingId, proxySettingIds) { + proxySettingIds = append(proxySettingIds, proxySettingId) + } + } + q := proxy.ProxySettingManager.Query().In("id", proxySettingIds) + r := []proxy.SProxySetting{} + if err := db.FetchModelObjects(proxy.ProxySettingManager, q, &r); err != nil { + log.Errorf("FetchModelObjects (%s) fail %s", + proxy.ProxySettingManager.KeywordPlural(), err) + return rows + } + for i := range r { + proxySetting := r[i] + proxySettings[proxySetting.Id] = proxySetting + } + } + for i := range rows { + account := objs[i].(*SCloudaccount) + if proxySetting, ok := proxySettings[account.ProxySettingId]; ok { + rows[i].Set("proxy_setting", jsonutils.Marshal(proxySetting)) + } + } return rows }