Skip to content

Commit

Permalink
fix(dependencies): make spring-cloud-config-server a runtimeOnly depe…
Browse files Browse the repository at this point in the history
…ndency (#4941)

This extracts the configuration that sets up and uses spring-cloud-config-server
into a separate module which then comes in as a runtimeOnly dependency in
clouddriver-web.

This makes config server an excludable dependency when
you have some other way of getting dynamic configuration.

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
  • Loading branch information
cfieber and mergify[bot] committed Sep 25, 2020
1 parent 48eac93 commit 856c11e
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 16 deletions.
16 changes: 16 additions & 0 deletions clouddriver-configserver/clouddriver-configserver.gradle
@@ -0,0 +1,16 @@
apply plugin: 'java-library'

tasks.compileGroovy.enabled=false

dependencies {
compileOnly "org.projectlombok:lombok"
annotationProcessor "org.projectlombok:lombok"

implementation "com.google.guava:guava"
implementation "com.netflix.spinnaker.kork:kork-annotations"
implementation "com.netflix.spinnaker.kork:kork-config"
implementation "com.netflix.spinnaker.kork:kork-cloud-config-server"
implementation "org.apache.commons:commons-lang3"
implementation "org.springframework.cloud:spring-cloud-context"
implementation "org.springframework.cloud:spring-cloud-config-server"
}
Expand Up @@ -17,12 +17,18 @@
package com.netflix.spinnaker.clouddriver.cache;

import com.netflix.spinnaker.clouddriver.config.CloudConfigRefreshProperties;
import com.netflix.spinnaker.clouddriver.config.ModifiableFilePropertySources;
import com.netflix.spinnaker.clouddriver.refresh.CloudConfigRefreshScheduler;
import com.netflix.spinnaker.kork.configserver.autoconfig.RemoteConfigSourceConfigured;
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.context.refresh.ContextRefresher;
import org.springframework.cloud.context.scope.refresh.RefreshScope;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.*;

/**
Expand Down Expand Up @@ -50,4 +56,13 @@ public CloudConfigRefreshScheduler cloudConfigIntervalRefreshScheduler(
contextRefresher, cloudConfigProperties.getRefreshIntervalSeconds());
}
}

@Bean
@ConditionalOnExpression("${dynamic-config.enabled:false}")
ModifiableFilePropertySources modifiableFilePropertySources(
ConfigurableApplicationContext applicationContext,
RefreshScope refreshScope,
@Value("${dynamic-config.files}") List<String> dynamicFiles) {
return new ModifiableFilePropertySources(applicationContext, refreshScope, dynamicFiles);
}
}
4 changes: 0 additions & 4 deletions clouddriver-core/clouddriver-core.gradle
Expand Up @@ -25,8 +25,6 @@ dependencies {
implementation "com.netflix.spinnaker.fiat:fiat-core:$fiatVersion"
implementation "com.netflix.spinnaker.kork:kork-artifacts"
implementation "com.netflix.spinnaker.kork:kork-credentials"
implementation "com.netflix.spinnaker.kork:kork-config"
implementation "com.netflix.spinnaker.kork:kork-cloud-config-server"
implementation "com.netflix.spinnaker.kork:kork-core"
implementation "com.netflix.spinnaker.kork:kork-jedis"
implementation "com.netflix.spinnaker.kork:kork-web"
Expand All @@ -43,8 +41,6 @@ dependencies {
implementation "org.apache.commons:commons-exec"
implementation "org.codehaus.groovy:groovy-all"
implementation "org.springframework.boot:spring-boot-actuator"
implementation "org.springframework.cloud:spring-cloud-context"
implementation "org.springframework.cloud:spring-cloud-config-server"
implementation "redis.clients:jedis"
implementation "org.jooq:jooq"

Expand Down
Expand Up @@ -98,15 +98,12 @@ import com.netflix.spinnaker.kork.core.RetrySupport
import com.netflix.spinnaker.kork.dynamicconfig.DynamicConfigService
import com.netflix.spinnaker.kork.jackson.ObjectMapperSubtypeConfigurer
import com.netflix.spinnaker.kork.jedis.RedisClientDelegate
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.cloud.context.scope.refresh.RefreshScope
import org.springframework.context.ApplicationContext
import org.springframework.context.ConfigurableApplicationContext
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Import
Expand Down Expand Up @@ -385,12 +382,5 @@ class CloudDriverConfig {
return new ExceptionClassifier(properties, dynamicConfigService)
}

@Bean
@ConditionalOnExpression("\${dynamic-config.enabled:false}")
ModifiableFilePropertySources modifiableFilePropertySources(
ConfigurableApplicationContext applicationContext,
RefreshScope refreshScope,
@Value("\${dynamic-config.files}") List<String> dynamicFiles) {
return new ModifiableFilePropertySources(applicationContext, refreshScope, dynamicFiles)
}

}
2 changes: 1 addition & 1 deletion clouddriver-web/clouddriver-web.gradle
Expand Up @@ -51,9 +51,9 @@ dependencies {
implementation "org.springframework.boot:spring-boot-starter-json"
implementation "org.springframework.boot:spring-boot-starter-web"
implementation "org.springframework.cloud:spring-cloud-context"
runtimeOnly "org.springframework.cloud:spring-cloud-config-server"

runtimeOnly "com.netflix.spinnaker.kork:kork-runtime"
runtimeOnly project(":clouddriver-configserver")

testImplementation project(":clouddriver-elasticsearch")

Expand Down
1 change: 1 addition & 0 deletions settings.gradle
Expand Up @@ -58,6 +58,7 @@ include 'cats:cats-core',
'clouddriver-api-tck',
'clouddriver-artifacts',
'clouddriver-bom',
'clouddriver-configserver',
'clouddriver-core',
'clouddriver-core-tck',
'clouddriver-elasticsearch',
Expand Down

0 comments on commit 856c11e

Please sign in to comment.