Skip to content
Snippets Groups Projects
Unverified Commit e32de618 authored by Noah Moss's avatar Noah Moss Committed by GitHub
Browse files

Move `is-hosted?` check out of memoized function for cloud gateway IP setting (#19576)

parent e39d86ca
No related branches found
No related tags found
No related merge requests found
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
[metabase.models.database :refer [Database]] [metabase.models.database :refer [Database]]
[metabase.models.field :refer [Field]] [metabase.models.field :refer [Field]]
[metabase.models.table :refer [Table]] [metabase.models.table :refer [Table]]
[metabase.public-settings.premium-features :as premium-features]
[metabase.query-processor :as qp] [metabase.query-processor :as qp]
[metabase.query-processor-test :as qp.test] [metabase.query-processor-test :as qp.test]
[metabase.query-processor-test.order-by-test :as qp-test.order-by-test] ; used for one SSL connectivity test [metabase.query-processor-test.order-by-test :as qp-test.order-by-test] ; used for one SSL connectivity test
...@@ -88,63 +89,63 @@ ...@@ -88,63 +89,63 @@
(deftest connection-properties-test (deftest connection-properties-test
(testing "Connection properties should be returned properly (including transformation of secret types)" (testing "Connection properties should be returned properly (including transformation of secret types)"
(let [expected [{:name "host"} (with-redefs [premium-features/is-hosted? (constantly false)]
{:name "port"} (let [expected [{:name "host"}
{:name "sid"} {:name "port"}
{:name "service-name"} {:name "sid"}
{:name "user"} {:name "service-name"}
{:name "password"} {:name "user"}
{:name "cloud-ip-address-info"} {:name "password"}
{:name "ssl"} {:name "ssl"}
{:name "ssl-use-keystore"} {:name "ssl-use-keystore"}
{:name "ssl-keystore-options" {:name "ssl-keystore-options"
:type "select" :type "select"
:options [{:name "Local file path" :options [{:name "Local file path"
:value "local"} :value "local"}
{:name "Uploaded file path" {:name "Uploaded file path"
:value "uploaded"}] :value "uploaded"}]
:visible-if {:ssl-use-keystore true}} :visible-if {:ssl-use-keystore true}}
{:name "ssl-keystore-value" {:name "ssl-keystore-value"
:type "textFile" :type "textFile"
:visible-if {:ssl-keystore-options "uploaded"}} :visible-if {:ssl-keystore-options "uploaded"}}
{:name "ssl-keystore-path" {:name "ssl-keystore-path"
:type "string" :type "string"
:visible-if {:ssl-keystore-options "local"}} :visible-if {:ssl-keystore-options "local"}}
{:name "ssl-keystore-password-value" {:name "ssl-keystore-password-value"
:type "password"} :type "password"}
{:name "ssl-use-truststore"} {:name "ssl-use-truststore"}
{:name "ssl-truststore-options" {:name "ssl-truststore-options"
:type "select" :type "select"
:options [{:name "Local file path" :options [{:name "Local file path"
:value "local"} :value "local"}
{:name "Uploaded file path" {:name "Uploaded file path"
:value "uploaded"}] :value "uploaded"}]
:visible-if {:ssl-use-truststore true}} :visible-if {:ssl-use-truststore true}}
{:name "ssl-truststore-value" {:name "ssl-truststore-value"
:type "textFile" :type "textFile"
:visible-if {:ssl-truststore-options "uploaded"}} :visible-if {:ssl-truststore-options "uploaded"}}
{:name "ssl-truststore-path" {:name "ssl-truststore-path"
:type "string" :type "string"
:visible-if {:ssl-truststore-options "local"}} :visible-if {:ssl-truststore-options "local"}}
{:name "ssl-truststore-password-value" {:name "ssl-truststore-password-value"
:type "password"} :type "password"}
{:name "tunnel-enabled"} {:name "tunnel-enabled"}
{:name "tunnel-host"} {:name "tunnel-host"}
{:name "tunnel-port"} {:name "tunnel-port"}
{:name "tunnel-user"} {:name "tunnel-user"}
{:name "tunnel-auth-option"} {:name "tunnel-auth-option"}
{:name "tunnel-pass"} {:name "tunnel-pass"}
{:name "tunnel-private-key"} {:name "tunnel-private-key"}
{:name "tunnel-private-key-passphrase"} {:name "tunnel-private-key-passphrase"}
{:name "advanced-options"} {:name "advanced-options"}
{:name "auto_run_queries"} {:name "auto_run_queries"}
{:name "let-user-control-scheduling"} {:name "let-user-control-scheduling"}
{:name "schedules.metadata_sync"} {:name "schedules.metadata_sync"}
{:name "schedules.cache_field_values"} {:name "schedules.cache_field_values"}
{:name "refingerprint"}] {:name "refingerprint"}]
actual (->> (driver/connection-properties :oracle) actual (->> (driver/connection-properties :oracle)
(driver.u/connection-props-server->client :oracle))] (driver.u/connection-props-server->client :oracle))]
(is (= expected (mt/select-keys-sequentially expected actual)))))) (is (= expected (mt/select-keys-sequentially expected actual)))))))
(deftest test-ssh-connection (deftest test-ssh-connection
(testing "Gets an error when it can't connect to oracle via ssh tunnel" (testing "Gets an error when it can't connect to oracle via ssh tunnel"
......
...@@ -454,14 +454,13 @@ ...@@ -454,14 +454,13 @@
(def ^:private fetch-cloud-gateway-ips-fn (def ^:private fetch-cloud-gateway-ips-fn
(memoize/ttl (memoize/ttl
(fn [] (fn []
(when (premium-features/is-hosted?) (try
(try (-> (http/get (cloud-gateway-ips-url))
(-> (http/get (cloud-gateway-ips-url)) :body
:body (json/parse-string keyword)
(json/parse-string keyword) :ip_addresses)
:ip_addresses) (catch Exception e
(catch Exception e (log/error e (trs "Error fetching Metabase Cloud gateway IP addresses:")))))
(log/error e (trs "Error fetching Metabase Cloud gateway IP addresses:"))))))
:ttl/threshold (* 1000 60 60 24))) :ttl/threshold (* 1000 60 60 24)))
(defsetting cloud-gateway-ips (defsetting cloud-gateway-ips
...@@ -469,7 +468,9 @@ ...@@ -469,7 +468,9 @@
:visibility :public :visibility :public
:type :json :type :json
:setter :none :setter :none
:getter fetch-cloud-gateway-ips-fn) :getter (fn []
(when (premium-features/is-hosted?)
(fetch-cloud-gateway-ips-fn))))
(defsetting show-database-syncing-modal (defsetting show-database-syncing-modal
(str (deferred-tru "Whether an introductory modal should be shown after the next database connection is added.") (str (deferred-tru "Whether an introductory modal should be shown after the next database connection is added.")
......
...@@ -206,8 +206,9 @@ ...@@ -206,8 +206,9 @@
(is (= nil (public-settings/cloud-gateway-ips)))))) (is (= nil (public-settings/cloud-gateway-ips))))))
(testing "Setting returns nil in self-hosted environments" (testing "Setting returns nil in self-hosted environments"
(memoize/memo-clear! @#'public-settings/fetch-cloud-gateway-ips-fn) (with-redefs [premium-features/is-hosted? (constantly false)]
(http-fake/with-fake-routes-in-isolation (memoize/memo-clear! @#'public-settings/fetch-cloud-gateway-ips-fn)
{{:address (public-settings/cloud-gateway-ips-url)} (http-fake/with-fake-routes-in-isolation
(constantly {:status 200 :body "{\"ip_addresses\": [\"127.0.0.1\"]}"})} {{:address (public-settings/cloud-gateway-ips-url)}
(is (= nil (public-settings/cloud-gateway-ips)))))) (constantly {:status 200 :body "{\"ip_addresses\": [\"127.0.0.1\"]}"})}
(is (= nil (public-settings/cloud-gateway-ips)))))))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment