From e792f44642cba906889cc2c7beffe0285870cd27 Mon Sep 17 00:00:00 2001 From: Sairam Rekapalli Date: Mon, 25 May 2020 13:24:31 -0700 Subject: [PATCH] fix(misc): Move to client provider impl for spinnaker internal services (#3699) Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .../src/test/resources/orca-test-app.yml | 5 +++++ .../config/CloudDriverConfiguration.groovy | 18 +++++++++--------- .../clouddriver/KatoRestServiceSpec.groovy | 15 ++++++++++++++- .../orca/echo/config/EchoConfiguration.groovy | 8 +++++--- .../front50/config/Front50Configuration.groovy | 8 +++++--- .../orca/igor/config/IgorConfiguration.groovy | 7 +++++-- .../spinnaker/orca/config/KeelConfiguration.kt | 8 +++++--- .../src/test/resources/orca-plugins-test.yml | 5 +++++ orca-retrofit/orca-retrofit.gradle | 3 ++- orca-web/src/test/resources/orca-test.yml | 5 +++++ 10 files changed, 60 insertions(+), 22 deletions(-) diff --git a/orca-api-tck/src/test/resources/orca-test-app.yml b/orca-api-tck/src/test/resources/orca-test-app.yml index 1a46cccbdf..f9c5e848a2 100644 --- a/orca-api-tck/src/test/resources/orca-test-app.yml +++ b/orca-api-tck/src/test/resources/orca-test-app.yml @@ -33,3 +33,8 @@ spring: services: fiat: baseUrl: https://fiat.net + +clouddriver: + baseUrl: https://clouddriver.net + readOnly: + baseUrl: https://clouddriver-readonly.net diff --git a/orca-clouddriver/src/main/groovy/com/netflix/spinnaker/orca/clouddriver/config/CloudDriverConfiguration.groovy b/orca-clouddriver/src/main/groovy/com/netflix/spinnaker/orca/clouddriver/config/CloudDriverConfiguration.groovy index 8d4affc151..22209fae72 100644 --- a/orca-clouddriver/src/main/groovy/com/netflix/spinnaker/orca/clouddriver/config/CloudDriverConfiguration.groovy +++ b/orca-clouddriver/src/main/groovy/com/netflix/spinnaker/orca/clouddriver/config/CloudDriverConfiguration.groovy @@ -17,6 +17,9 @@ package com.netflix.spinnaker.orca.clouddriver.config import com.fasterxml.jackson.databind.ObjectMapper +import com.jakewharton.retrofit.Ok3Client +import com.netflix.spinnaker.config.DefaultServiceEndpoint +import com.netflix.spinnaker.config.okhttp3.OkHttpClientProvider import com.netflix.spinnaker.kork.web.selector.DefaultServiceSelector import com.netflix.spinnaker.kork.web.selector.SelectableService import com.netflix.spinnaker.kork.web.selector.ServiceSelector @@ -35,11 +38,8 @@ import org.springframework.context.annotation.Configuration import org.springframework.context.annotation.Import import retrofit.RequestInterceptor import retrofit.RestAdapter -import retrofit.client.Client import retrofit.converter.JacksonConverter -import java.util.regex.Pattern - import static retrofit.Endpoints.newFixedEndpoint @Configuration @@ -65,28 +65,28 @@ class CloudDriverConfiguration { @Bean ClouddriverRetrofitBuilder clouddriverRetrofitBuilder(ObjectMapper objectMapper, - Client retrofitClient, + OkHttpClientProvider clientProvider, RestAdapter.LogLevel retrofitLogLevel, RequestInterceptor spinnakerRequestInterceptor, CloudDriverConfigurationProperties cloudDriverConfigurationProperties) { - return new ClouddriverRetrofitBuilder(objectMapper, retrofitClient, retrofitLogLevel, spinnakerRequestInterceptor, cloudDriverConfigurationProperties) + return new ClouddriverRetrofitBuilder(objectMapper, clientProvider, retrofitLogLevel, spinnakerRequestInterceptor, cloudDriverConfigurationProperties) } static class ClouddriverRetrofitBuilder { ObjectMapper objectMapper - Client retrofitClient + OkHttpClientProvider clientProvider RestAdapter.LogLevel retrofitLogLevel RequestInterceptor spinnakerRequestInterceptor CloudDriverConfigurationProperties cloudDriverConfigurationProperties ClouddriverRetrofitBuilder(ObjectMapper objectMapper, - Client retrofitClient, + OkHttpClientProvider clientProvider, RestAdapter.LogLevel retrofitLogLevel, RequestInterceptor spinnakerRequestInterceptor, CloudDriverConfigurationProperties cloudDriverConfigurationProperties) { this.objectMapper = objectMapper - this.retrofitClient = retrofitClient + this.clientProvider = clientProvider this.retrofitLogLevel = retrofitLogLevel this.spinnakerRequestInterceptor = spinnakerRequestInterceptor this.cloudDriverConfigurationProperties = cloudDriverConfigurationProperties @@ -100,7 +100,7 @@ class CloudDriverConfiguration { new RestAdapter.Builder() .setRequestInterceptor(spinnakerRequestInterceptor) .setEndpoint(newFixedEndpoint(url)) - .setClient(retrofitClient) + .setClient(new Ok3Client(clientProvider.getClient(new DefaultServiceEndpoint("clouddriver", url)))) .setLogLevel(retrofitLogLevel) .setLog(new RetrofitSlf4jLog(type)) .setConverter(new JacksonConverter(objectMapper)) diff --git a/orca-clouddriver/src/test/groovy/com/netflix/spinnaker/orca/clouddriver/KatoRestServiceSpec.groovy b/orca-clouddriver/src/test/groovy/com/netflix/spinnaker/orca/clouddriver/KatoRestServiceSpec.groovy index a76d447740..d325e59f46 100644 --- a/orca-clouddriver/src/test/groovy/com/netflix/spinnaker/orca/clouddriver/KatoRestServiceSpec.groovy +++ b/orca-clouddriver/src/test/groovy/com/netflix/spinnaker/orca/clouddriver/KatoRestServiceSpec.groovy @@ -17,9 +17,13 @@ package com.netflix.spinnaker.orca.clouddriver import com.github.tomakehurst.wiremock.junit.WireMockRule +import com.netflix.spinnaker.config.ServiceEndpoint +import com.netflix.spinnaker.config.okhttp3.OkHttpClientBuilderProvider +import com.netflix.spinnaker.config.okhttp3.OkHttpClientProvider import com.netflix.spinnaker.orca.clouddriver.config.CloudDriverConfiguration import com.netflix.spinnaker.orca.clouddriver.config.CloudDriverConfigurationProperties import com.netflix.spinnaker.orca.jackson.OrcaObjectMapper +import okhttp3.OkHttpClient import org.junit.Rule import retrofit.RequestInterceptor import retrofit.client.OkClient @@ -57,7 +61,16 @@ class KatoRestServiceSpec extends Specification { def cfg = new CloudDriverConfiguration() def builder = cfg.clouddriverRetrofitBuilder( mapper, - new OkClient(), + new OkHttpClientProvider([new OkHttpClientBuilderProvider() { + @Override + Boolean supports(ServiceEndpoint service) { + return true + } + @Override + OkHttpClient.Builder get(ServiceEndpoint service) { + return new OkHttpClient().newBuilder() + } + }]), FULL, noopInterceptor, new CloudDriverConfigurationProperties(clouddriver: new CloudDriverConfigurationProperties.CloudDriver(baseUrl: wireMockRule.url("/")))) diff --git a/orca-echo/src/main/groovy/com/netflix/spinnaker/orca/echo/config/EchoConfiguration.groovy b/orca-echo/src/main/groovy/com/netflix/spinnaker/orca/echo/config/EchoConfiguration.groovy index fefa9fa1c8..e22327c625 100644 --- a/orca-echo/src/main/groovy/com/netflix/spinnaker/orca/echo/config/EchoConfiguration.groovy +++ b/orca-echo/src/main/groovy/com/netflix/spinnaker/orca/echo/config/EchoConfiguration.groovy @@ -17,6 +17,9 @@ package com.netflix.spinnaker.orca.echo.config import com.fasterxml.jackson.databind.ObjectMapper +import com.jakewharton.retrofit.Ok3Client +import com.netflix.spinnaker.config.DefaultServiceEndpoint +import com.netflix.spinnaker.config.okhttp3.OkHttpClientProvider import com.netflix.spinnaker.orca.echo.EchoService import com.netflix.spinnaker.orca.echo.spring.EchoNotifyingExecutionListener import com.netflix.spinnaker.orca.echo.spring.EchoNotifyingStageListener @@ -39,7 +42,6 @@ import org.springframework.context.annotation.Configuration import org.springframework.context.annotation.Import import retrofit.Endpoint import retrofit.RestAdapter -import retrofit.client.Client as RetrofitClient import retrofit.converter.JacksonConverter import static retrofit.Endpoints.newFixedEndpoint @@ -50,7 +52,7 @@ import static retrofit.Endpoints.newFixedEndpoint @CompileStatic class EchoConfiguration { - @Autowired RetrofitClient retrofitClient + @Autowired OkHttpClientProvider clientProvider @Autowired RestAdapter.LogLevel retrofitLogLevel @Autowired ObjectMapper objectMapper @@ -64,7 +66,7 @@ class EchoConfiguration { EchoService echoService(Endpoint echoEndpoint) { new RestAdapter.Builder() .setEndpoint(echoEndpoint) - .setClient(retrofitClient) + .setClient(new Ok3Client(clientProvider.getClient(new DefaultServiceEndpoint("echo", echoEndpoint.url)))) .setLogLevel(retrofitLogLevel) .setLog(new RetrofitSlf4jLog(EchoService)) .setConverter(new JacksonConverter()) diff --git a/orca-front50/src/main/groovy/com/netflix/spinnaker/orca/front50/config/Front50Configuration.groovy b/orca-front50/src/main/groovy/com/netflix/spinnaker/orca/front50/config/Front50Configuration.groovy index 3cba3b048a..c7b4ebb706 100644 --- a/orca-front50/src/main/groovy/com/netflix/spinnaker/orca/front50/config/Front50Configuration.groovy +++ b/orca-front50/src/main/groovy/com/netflix/spinnaker/orca/front50/config/Front50Configuration.groovy @@ -17,6 +17,9 @@ package com.netflix.spinnaker.orca.front50.config import com.fasterxml.jackson.databind.ObjectMapper +import com.jakewharton.retrofit.Ok3Client +import com.netflix.spinnaker.config.DefaultServiceEndpoint +import com.netflix.spinnaker.config.okhttp3.OkHttpClientProvider import com.netflix.spinnaker.orca.events.ExecutionEvent import com.netflix.spinnaker.orca.events.ExecutionListenerAdapter import com.netflix.spinnaker.orca.front50.Front50Service @@ -36,7 +39,6 @@ import org.springframework.context.annotation.Import import retrofit.Endpoint import retrofit.RequestInterceptor import retrofit.RestAdapter -import retrofit.client.Client import retrofit.converter.JacksonConverter import static retrofit.Endpoints.newFixedEndpoint @@ -53,7 +55,7 @@ import static retrofit.Endpoints.newFixedEndpoint class Front50Configuration { @Autowired - Client retrofitClient + OkHttpClientProvider clientProvider @Autowired RestAdapter.LogLevel retrofitLogLevel @@ -72,7 +74,7 @@ class Front50Configuration { new RestAdapter.Builder() .setRequestInterceptor(spinnakerRequestInterceptor) .setEndpoint(front50Endpoint) - .setClient(retrofitClient) + .setClient(new Ok3Client(clientProvider.getClient(new DefaultServiceEndpoint("front50", front50Endpoint.getUrl())))) .setLogLevel(retrofitLogLevel) .setLog(new RetrofitSlf4jLog(Front50Service)) .setConverter(new JacksonConverter(mapper)) diff --git a/orca-igor/src/main/groovy/com/netflix/spinnaker/orca/igor/config/IgorConfiguration.groovy b/orca-igor/src/main/groovy/com/netflix/spinnaker/orca/igor/config/IgorConfiguration.groovy index 8983fcedce..5a896f94d3 100644 --- a/orca-igor/src/main/groovy/com/netflix/spinnaker/orca/igor/config/IgorConfiguration.groovy +++ b/orca-igor/src/main/groovy/com/netflix/spinnaker/orca/igor/config/IgorConfiguration.groovy @@ -17,6 +17,9 @@ package com.netflix.spinnaker.orca.igor.config import com.fasterxml.jackson.databind.ObjectMapper +import com.jakewharton.retrofit.Ok3Client +import com.netflix.spinnaker.config.DefaultServiceEndpoint +import com.netflix.spinnaker.config.okhttp3.OkHttpClientProvider import com.netflix.spinnaker.orca.igor.IgorService import com.netflix.spinnaker.orca.retrofit.RetrofitConfiguration import com.netflix.spinnaker.orca.retrofit.logging.RetrofitSlf4jLog @@ -42,7 +45,7 @@ import static retrofit.Endpoints.newFixedEndpoint @ComponentScan("com.netflix.spinnaker.orca.igor") class IgorConfiguration { - @Autowired Client retrofitClient + @Autowired OkHttpClientProvider clientProvider @Autowired RestAdapter.LogLevel retrofitLogLevel @Autowired ObjectMapper objectMapper @@ -56,7 +59,7 @@ class IgorConfiguration { IgorService igorService(Endpoint igorEndpoint, ObjectMapper mapper, RequestInterceptor spinnakerRequestInterceptor) { new RestAdapter.Builder() .setEndpoint(igorEndpoint) - .setClient(retrofitClient) + .setClient(new Ok3Client(clientProvider.getClient(new DefaultServiceEndpoint("keel", igorEndpoint.url)))) .setLogLevel(retrofitLogLevel) .setRequestInterceptor(spinnakerRequestInterceptor) .setLog(new RetrofitSlf4jLog(IgorService)) diff --git a/orca-keel/src/main/kotlin/com/netflix/spinnaker/orca/config/KeelConfiguration.kt b/orca-keel/src/main/kotlin/com/netflix/spinnaker/orca/config/KeelConfiguration.kt index 908ba9da40..ea33fe8ff1 100644 --- a/orca-keel/src/main/kotlin/com/netflix/spinnaker/orca/config/KeelConfiguration.kt +++ b/orca-keel/src/main/kotlin/com/netflix/spinnaker/orca/config/KeelConfiguration.kt @@ -19,6 +19,9 @@ package com.netflix.spinnaker.orca.config import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.KotlinModule +import com.jakewharton.retrofit.Ok3Client +import com.netflix.spinnaker.config.DefaultServiceEndpoint +import com.netflix.spinnaker.config.okhttp3.OkHttpClientProvider import com.netflix.spinnaker.orca.KeelService import com.netflix.spinnaker.orca.jackson.OrcaObjectMapper import org.springframework.beans.factory.annotation.Value @@ -29,7 +32,6 @@ import org.springframework.context.annotation.Configuration import retrofit.Endpoint import retrofit.Endpoints import retrofit.RestAdapter -import retrofit.client.Client import retrofit.converter.JacksonConverter @Configuration @@ -48,12 +50,12 @@ class KeelConfiguration { @Bean fun keelService( keelEndpoint: Endpoint, keelObjectMapper: ObjectMapper, - retrofitClient: Client, + clientProvider: OkHttpClientProvider, retrofitLogLevel: RestAdapter.LogLevel ) = RestAdapter.Builder() .setEndpoint(keelEndpoint) - .setClient(retrofitClient) + .setClient(Ok3Client(clientProvider.getClient(DefaultServiceEndpoint("keel", keelEndpoint.url)))) .setLogLevel(retrofitLogLevel) .setConverter(JacksonConverter(keelObjectMapper)) .build() diff --git a/orca-plugins-test/src/test/resources/orca-plugins-test.yml b/orca-plugins-test/src/test/resources/orca-plugins-test.yml index 77994f936c..d1c7b4fe26 100644 --- a/orca-plugins-test/src/test/resources/orca-plugins-test.yml +++ b/orca-plugins-test/src/test/resources/orca-plugins-test.yml @@ -36,3 +36,8 @@ spinnaker: services: fiat: baseUrl: https://fiat.net + +clouddriver: + baseUrl: https://clouddriver.net + readOnly: + baseUrl: https://clouddriver-readonly.net diff --git a/orca-retrofit/orca-retrofit.gradle b/orca-retrofit/orca-retrofit.gradle index a5106dd82e..d54eb959e4 100644 --- a/orca-retrofit/orca-retrofit.gradle +++ b/orca-retrofit/orca-retrofit.gradle @@ -20,12 +20,13 @@ dependencies { api("com.squareup.retrofit:retrofit") api("com.squareup.retrofit:converter-jackson") api("org.codehaus.groovy:groovy") + api("com.netflix.spinnaker.kork:kork-web") + api("com.jakewharton.retrofit:retrofit1-okhttp3-client") implementation(project(":orca-core")) implementation("com.squareup.okhttp:okhttp") implementation("com.squareup.okhttp:okhttp-urlconnection") implementation("com.squareup.okhttp:okhttp-apache") - implementation("com.netflix.spinnaker.kork:kork-web") implementation("io.reactivex:rxjava") implementation("com.jakewharton.retrofit:retrofit1-okhttp3-client:1.1.0") diff --git a/orca-web/src/test/resources/orca-test.yml b/orca-web/src/test/resources/orca-test.yml index a72c653abf..0c99c8d2c4 100644 --- a/orca-web/src/test/resources/orca-test.yml +++ b/orca-web/src/test/resources/orca-test.yml @@ -25,3 +25,8 @@ spring: services: fiat: baseUrl: https://fiat.net + +clouddriver: + baseUrl: https://clouddriver.net + readOnly: + baseUrl: https://clouddriver-readonly.net