Skip to content

Commit

Permalink
feat(titus): allow customizing titus poll interval
Browse files Browse the repository at this point in the history
  • Loading branch information
tomaslin committed Mar 8, 2017
1 parent fde1339 commit 3f32f78
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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,
Expand All @@ -51,7 +58,7 @@ class TitusCachingProviderConfig {
} as Collection<NetflixTitusCredentials>
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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)

Expand All @@ -78,14 +79,18 @@ class TitusClusterCachingAgent implements CachingAgent, OnDemandAgent {
private final Registry registry
private final OnDemandMetricsSupport metricsSupport
private final Provider<AwsLookupUtil> awsLookupUtil
private final long pollIntervalMillis;
private final long timeoutMillis;

TitusClusterCachingAgent(TitusCloudProvider titusCloudProvider,
TitusClientProvider titusClientProvider,
NetflixTitusCredentials account,
String region,
ObjectMapper objectMapper,
Registry registry,
Provider<AwsLookupUtil> awsLookupUtil
Provider<AwsLookupUtil> awsLookupUtil,
pollIntervalMillis,
timeoutMillis
) {
this.titusCloudProvider = titusCloudProvider
this.account = account
Expand All @@ -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
Expand Down Expand Up @@ -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;
}

}

0 comments on commit 3f32f78

Please sign in to comment.