From 80f2fb3f99dfd49e098e1ffed9509a78d6b74844 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 bad60b436c..f145821d1b 100644 --- a/pkg/apis/cloudcommon/proxy/proxy.go +++ b/pkg/apis/cloudcommon/proxy/proxy.go @@ -55,3 +55,8 @@ type ProxySettingResourceInput struct { // 代理配置 ProxySettingId string `json:"proxy_setting_id"` } + +type ProxySettingTestInput struct { + HttpProxy string + HttpsProxy string +} diff --git a/pkg/cloudcommon/db/proxy/proxysetting.go b/pkg/cloudcommon/db/proxy/proxysetting.go index f09c033a73..ccd5893e67 100644 --- a/pkg/cloudcommon/db/proxy/proxysetting.go +++ b/pkg/cloudcommon/db/proxy/proxysetting.go @@ -129,19 +129,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 @@ -188,6 +182,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 {