diff --git a/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/caching/TitusCachingProviderConfig.groovy b/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/caching/TitusCachingProviderConfig.groovy index b28c2440234..48e0495a916 100644 --- a/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/caching/TitusCachingProviderConfig.groovy +++ b/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/caching/TitusCachingProviderConfig.groovy @@ -24,9 +24,10 @@ import com.netflix.spinnaker.cats.agent.CachingAgent import com.netflix.spinnaker.clouddriver.security.AccountCredentialsRepository import com.netflix.spinnaker.clouddriver.titus.TitusClientProvider import com.netflix.spinnaker.clouddriver.titus.TitusCloudProvider +import com.netflix.spinnaker.clouddriver.titus.caching.agents.TitusClusterCachingAgent import com.netflix.spinnaker.clouddriver.titus.caching.utils.AwsLookupUtil import com.netflix.spinnaker.clouddriver.titus.credentials.NetflixTitusCredentials -import com.netflix.spinnaker.clouddriver.titus.caching.agents.TitusClusterCachingAgent +import org.springframework.beans.factory.annotation.Value import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.context.annotation.DependsOn @@ -36,6 +37,12 @@ import javax.inject.Provider @Configuration class TitusCachingProviderConfig { + @Value('${titus.pollIntervalMillis:15000}') // 15 seconds + Long pollIntervalMillis + + @Value('${titus.timeoutMillis:900000}') // 15 minutes + Long timeOutMilis + @Bean @DependsOn('netflixTitusCredentials') TitusCachingProvider titusCachingProvider(TitusCloudProvider titusCloudProvider, @@ -51,7 +58,7 @@ class TitusCachingProviderConfig { } as Collection allAccounts.each { NetflixTitusCredentials account -> account.regions.each { region -> - agents << new TitusClusterCachingAgent(titusCloudProvider, titusClientProvider, account, region.name, objectMapper, registry, awsLookupUtilProvider) + agents << new TitusClusterCachingAgent(titusCloudProvider, titusClientProvider, account, region.name, objectMapper, registry, awsLookupUtilProvider, pollIntervalMillis, timeOutMilis) } } new TitusCachingProvider(agents) diff --git a/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/caching/agents/TitusClusterCachingAgent.groovy b/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/caching/agents/TitusClusterCachingAgent.groovy index 9e698d34d41..48223bdc14e 100644 --- a/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/caching/agents/TitusClusterCachingAgent.groovy +++ b/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/caching/agents/TitusClusterCachingAgent.groovy @@ -31,6 +31,7 @@ import com.netflix.spinnaker.cats.cache.CacheData import com.netflix.spinnaker.cats.cache.DefaultCacheData import com.netflix.spinnaker.cats.cache.RelationshipCacheFilter import com.netflix.spinnaker.cats.provider.ProviderCache +import com.netflix.spinnaker.clouddriver.cache.CustomScheduledAgent import com.netflix.spinnaker.clouddriver.cache.OnDemandAgent import com.netflix.spinnaker.clouddriver.cache.OnDemandMetricsSupport import com.netflix.spinnaker.clouddriver.model.HealthState @@ -59,7 +60,7 @@ import static com.netflix.spinnaker.clouddriver.titus.caching.Keys.Namespace.SER import static com.netflix.spinnaker.cats.agent.AgentDataType.Authority.AUTHORITATIVE import static com.netflix.spinnaker.cats.agent.AgentDataType.Authority.INFORMATIVE -class TitusClusterCachingAgent implements CachingAgent, OnDemandAgent { +class TitusClusterCachingAgent implements CachingAgent, CustomScheduledAgent, OnDemandAgent { private static final Logger log = LoggerFactory.getLogger(TitusClusterCachingAgent) @@ -78,6 +79,8 @@ class TitusClusterCachingAgent implements CachingAgent, OnDemandAgent { private final Registry registry private final OnDemandMetricsSupport metricsSupport private final Provider awsLookupUtil + private final long pollIntervalMillis; + private final long timeoutMillis; TitusClusterCachingAgent(TitusCloudProvider titusCloudProvider, TitusClientProvider titusClientProvider, @@ -85,7 +88,9 @@ class TitusClusterCachingAgent implements CachingAgent, OnDemandAgent { String region, ObjectMapper objectMapper, Registry registry, - Provider awsLookupUtil + Provider awsLookupUtil, + pollIntervalMillis, + timeoutMillis ) { this.titusCloudProvider = titusCloudProvider this.account = account @@ -95,6 +100,8 @@ class TitusClusterCachingAgent implements CachingAgent, OnDemandAgent { this.registry = registry this.metricsSupport = new OnDemandMetricsSupport(registry, this, "${titusCloudProvider.id}:${OnDemandAgent.OnDemandType.ServerGroup}") this.awsLookupUtil = awsLookupUtil + this.pollIntervalMillis = pollIntervalMillis; + this.timeoutMillis = timeoutMillis; } @Override @@ -443,4 +450,14 @@ class TitusClusterCachingAgent implements CachingAgent, OnDemandAgent { [type: 'Titus', healthClass: 'platform', state: healthState.toString()] } + @Override + public long getPollIntervalMillis() { + return pollIntervalMillis; + } + + @Override + public long getTimeoutMillis() { + return timeoutMillis; + } + }