From 58db9ddf0f32737f9300856701d1fbe0db02ec4c Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Thu, 9 Apr 2020 15:38:42 +0800 Subject: [PATCH] proxysetting: add class level test action --- pkg/apis/cloudcommon/proxy/proxy.go | 5 +++++ pkg/cloudcommon/db/proxy/proxysetting.go | 28 ++++++++++++++++-------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/pkg/apis/cloudcommon/proxy/proxy.go b/pkg/apis/cloudcommon/proxy/proxy.go index 49d3119f86..2419361316 100644 --- a/pkg/apis/cloudcommon/proxy/proxy.go +++ b/pkg/apis/cloudcommon/proxy/proxy.go @@ -39,3 +39,8 @@ func (ps *SProxySetting) IsZero() bool { } return false } + +type ProxySettingTestInput struct { + HttpProxy string + HttpsProxy string +} diff --git a/pkg/cloudcommon/db/proxy/proxysetting.go b/pkg/cloudcommon/db/proxy/proxysetting.go index d2e246ac38..2dc2195741 100644 --- a/pkg/cloudcommon/db/proxy/proxysetting.go +++ b/pkg/cloudcommon/db/proxy/proxysetting.go @@ -106,19 +106,13 @@ func (ps *SProxySetting) AllowPerformTest(ctx context.Context, userCred mcclient return db.IsAdminAllowPerform(userCred, ps, "test") } -func (ps *SProxySetting) PerformTest(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { +func (man *SProxySettingManager) test(ctx context.Context, urls map[string]string) (jsonutils.JSONObject, error) { type TestURLResult struct { Ok bool `json:"ok"` Reason string `json:"reason"` } - var ( - r = map[string]TestURLResult{} - m = map[string]string{ - "http_proxy": ps.HTTPProxy, - "https_proxy": ps.HTTPSProxy, - } - ) - for k, v := range m { + r := map[string]TestURLResult{} + for k, v := range urls { if v == "" { r[k] = TestURLResult{Ok: true} continue @@ -165,6 +159,22 @@ func (ps *SProxySetting) PerformTest(ctx context.Context, userCred mcclient.Toke return jsonutils.Marshal(r), nil } +func (ps *SProxySetting) PerformTest(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { + urls := map[string]string{ + "http_proxy": ps.HTTPProxy, + "https_proxy": ps.HTTPSProxy, + } + return ProxySettingManager.test(ctx, urls) +} + +func (man *SProxySettingManager) PerformTest(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data proxyapi.ProxySettingTestInput) (jsonutils.JSONObject, error) { + urls := map[string]string{ + "http_proxy": data.HttpProxy, + "https_proxy": data.HttpsProxy, + } + return man.test(ctx, urls) +} + func (man *SProxySettingManager) InitializeData() error { _, err := man.FetchById(proxyapi.ProxySettingId_DIRECT) if err == nil {