From 5bdcefedff2b738f2dc4c8e9e57900f911f16b01 Mon Sep 17 00:00:00 2001 From: Guilherme Cassolato Date: Thu, 7 May 2020 19:13:29 +0200 Subject: [PATCH 1/2] Use new entry data attributes `base_url` and `admin_base_url` returned by 3scale API to create the provider routes on Kubernetes/Openshift. --- app/services/integration/kubernetes_service.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/services/integration/kubernetes_service.rb b/app/services/integration/kubernetes_service.rb index d581f0d0..1af90568 100644 --- a/app/services/integration/kubernetes_service.rb +++ b/app/services/integration/kubernetes_service.rb @@ -181,17 +181,18 @@ def build_routes(name, specs = [], owner: get_owner, **metadata) def build_provider_routes(entry) data = entry.data - domain, admin_domain = data.values_at('domain', 'admin_domain') + domain = data.fetch('base_url', data.fetch('domain')) + admin_domain = data.fetch('admin_base_url', data.fetch('admin_domain')) metadata = { labels: labels_for_provider(entry), annotations: annotations_for(entry) } if admin_domain == domain # master account build_routes('zync-3scale-master-', [ - RouteSpec.new(data.fetch('domain'), 'system-master', 'http') + RouteSpec.new(domain, 'system-master', 'http') ], **metadata) else build_routes('zync-3scale-provider-', [ - RouteSpec.new(data.fetch('domain'), 'system-developer', 'http'), - RouteSpec.new(data.fetch('admin_domain'), 'system-provider', 'http') + RouteSpec.new(domain, 'system-developer', 'http'), + RouteSpec.new(admin_domain, 'system-provider', 'http') ], **metadata) end end From 568fee9027bea8da84e7c01912bf644567064ce4 Mon Sep 17 00:00:00 2001 From: Guilherme Cassolato Date: Thu, 7 May 2020 19:14:35 +0200 Subject: [PATCH 2/2] Makes Kubernetes routes created by Zync to default to http when the scheme is missing Reverts a recent commit that made https to the default scheme. This is possible due to the new attributes `base_url` and `admin_base_url` returned by the 3scale API. --- app/services/integration/kubernetes_service.rb | 2 +- test/services/kubernetes_service_test.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/services/integration/kubernetes_service.rb b/app/services/integration/kubernetes_service.rb index 1af90568..0ab9e5c9 100644 --- a/app/services/integration/kubernetes_service.rb +++ b/app/services/integration/kubernetes_service.rb @@ -138,7 +138,7 @@ def initialize(url, service, port) tls_options = { insecureEdgeTerminationPolicy: 'Redirect', termination: 'edge' - } if uri.class == URI::HTTPS || uri.scheme.blank? + } if uri.class == URI::HTTPS super({ host: uri.host || uri.path, diff --git a/test/services/kubernetes_service_test.rb b/test/services/kubernetes_service_test.rb index 42478ed5..f174c92d 100644 --- a/test/services/kubernetes_service_test.rb +++ b/test/services/kubernetes_service_test.rb @@ -94,7 +94,7 @@ class RouteSpec < ActiveSupport::TestCase assert_equal json, spec.to_hash end - test 'defaults to https when scheme is missing' do + test 'defaults to http when scheme is missing' do url = 'my-api.example.com' service_name = 'My API' port = 7443 @@ -103,7 +103,7 @@ class RouteSpec < ActiveSupport::TestCase host: "my-api.example.com", port: {targetPort: 7443}, to: {kind: "Service", name: "My API"}, - tls: {insecureEdgeTerminationPolicy: "Redirect", termination: "edge"} + tls: nil } assert_equal json, spec.to_hash end