├── .clog.toml ├── .editorconfig ├── .github └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .travis.yml ├── AUTHORS ├── Dockerfile ├── Dockerfile.slim ├── LICENSE.txt ├── OWNERS.md ├── README.md ├── build.gradle ├── cats ├── README.md ├── cats-core │ ├── cats-core.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── netflix │ │ │ └── spinnaker │ │ │ └── cats │ │ │ ├── agent │ │ │ ├── AccountAware.java │ │ │ ├── Agent.java │ │ │ ├── AgentController.java │ │ │ ├── AgentDataType.java │ │ │ ├── AgentExecution.java │ │ │ ├── AgentIntervalAware.java │ │ │ ├── AgentLock.java │ │ │ ├── AgentProvider.java │ │ │ ├── AgentScheduler.java │ │ │ ├── AgentSchedulerAware.java │ │ │ ├── CacheResult.java │ │ │ ├── CachingAgent.java │ │ │ ├── CompositeExecutionInstrumentation.java │ │ │ ├── DefaultAgentScheduler.java │ │ │ ├── DefaultCacheResult.java │ │ │ ├── ExecutionInstrumentation.java │ │ │ ├── NoopExecutionInstrumentation.java │ │ │ └── RunnableAgent.java │ │ │ ├── cache │ │ │ ├── AgentIntrospection.java │ │ │ ├── Cache.java │ │ │ ├── CacheData.java │ │ │ ├── CacheFilter.java │ │ │ ├── CacheIntrospectionStore.java │ │ │ ├── CompositeCache.java │ │ │ ├── DefaultAgentIntrospection.java │ │ │ ├── DefaultCacheData.java │ │ │ ├── NamedCacheFactory.java │ │ │ ├── RelationshipCacheFilter.java │ │ │ ├── UnsupportedCacheMethodException.java │ │ │ └── WriteableCache.java │ │ │ ├── cluster │ │ │ ├── AgentIntervalProvider.java │ │ │ ├── DefaultAgentIntervalProvider.java │ │ │ ├── DefaultNodeIdentity.java │ │ │ ├── DefaultNodeStatusProvider.java │ │ │ ├── NodeIdentity.java │ │ │ └── NodeStatusProvider.java │ │ │ ├── compression │ │ │ ├── CompressionStrategy.java │ │ │ ├── GZipCompression.java │ │ │ └── NoopCompression.java │ │ │ ├── mem │ │ │ ├── InMemoryCache.java │ │ │ └── InMemoryNamedCacheFactory.java │ │ │ ├── module │ │ │ ├── CatsModule.java │ │ │ ├── CatsModuleAware.java │ │ │ └── DefaultCatsModule.java │ │ │ ├── provider │ │ │ ├── DefaultProviderCache.java │ │ │ ├── DefaultProviderRegistry.java │ │ │ ├── Provider.java │ │ │ ├── ProviderCache.java │ │ │ ├── ProviderRegistry.java │ │ │ └── ProviderSynchronizerTypeWrapper.java │ │ │ └── thread │ │ │ └── NamedThreadFactory.java │ │ └── test │ │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── cats │ │ ├── CatsSpec.groovy │ │ ├── agent │ │ ├── AgentControllerSpec.groovy │ │ ├── CacheExecutionSpec.groovy │ │ ├── CompositeExecutionInstrumentationSpec.groovy │ │ └── DefaultAgentSchedulerSpec.groovy │ │ ├── cache │ │ ├── CompositeCacheSpec.groovy │ │ └── DefaultCacheDataSpec.groovy │ │ ├── cluster │ │ └── DefaultNodeIdentitySpec.groovy │ │ ├── compression │ │ └── GZipCompressionStrategySpec.groovy │ │ ├── mem │ │ ├── GlobSpec.groovy │ │ ├── InMemoryCacheSpec.groovy │ │ └── InMemoryNamedCacheFactorySpec.groovy │ │ └── provider │ │ └── DefaultProviderCacheSpec.groovy ├── cats-dynomite │ ├── cats-dynomite.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── netflix │ │ │ └── spinnaker │ │ │ └── cats │ │ │ └── dynomite │ │ │ ├── DynomiteUtils.java │ │ │ ├── ExcessiveDynoFailureRetries.java │ │ │ ├── cache │ │ │ ├── DynomiteCache.java │ │ │ └── DynomiteNamedCacheFactory.java │ │ │ └── cluster │ │ │ ├── DynoClusteredAgentScheduler.java │ │ │ └── DynoClusteredSortAgentScheduler.java │ │ └── test │ │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── cat │ │ └── dynomite │ │ └── cache │ │ └── DynomiteCacheSpec.groovy ├── cats-redis │ ├── cats-redis.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── netflix │ │ │ └── spinnaker │ │ │ └── cats │ │ │ └── redis │ │ │ ├── cache │ │ │ ├── AbstractRedisCache.java │ │ │ ├── RedisCache.java │ │ │ ├── RedisCacheOptions.java │ │ │ └── RedisNamedCacheFactory.java │ │ │ └── cluster │ │ │ ├── ClusteredAgentScheduler.java │ │ │ ├── ClusteredSortAgentLock.java │ │ │ └── ClusteredSortAgentScheduler.java │ │ └── test │ │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── cats │ │ └── redis │ │ ├── cache │ │ ├── RedisCacheSpec.groovy │ │ └── RedisNamedCacheFactorySpec.groovy │ │ └── cluster │ │ └── ClusteredAgentSchedulerSpec.groovy ├── cats-sql │ ├── cats-sql.gradle │ └── src │ │ ├── main │ │ └── kotlin │ │ │ └── com │ │ │ └── netflix │ │ │ └── spinnaker │ │ │ ├── cats │ │ │ └── sql │ │ │ │ ├── SqlProviderCache.kt │ │ │ │ ├── SqlProviderRegistry.kt │ │ │ │ ├── cache │ │ │ │ ├── SpectatorSqlCacheMetrics.kt │ │ │ │ ├── SqlCache.kt │ │ │ │ ├── SqlCacheMetrics.kt │ │ │ │ ├── SqlCleanupStaleOnDemandCachesAgent.kt │ │ │ │ ├── SqlNamedCacheFactory.kt │ │ │ │ ├── SqlSchemaVersion.kt │ │ │ │ └── SqlTableMetricsAgent.kt │ │ │ │ ├── cluster │ │ │ │ └── SqlClusteredAgentScheduler.kt │ │ │ │ └── controllers │ │ │ │ └── CatsSqlAdminController.kt │ │ │ └── config │ │ │ ├── SqlAgentProperties.kt │ │ │ ├── SqlAgentSchedulerConfiguration.kt │ │ │ └── SqlCacheConfiguration.kt │ │ └── test │ │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── cats │ │ └── sql │ │ ├── SqlCacheSpec.groovy │ │ └── SqlProviderCacheSpec.groovy ├── cats-test │ ├── cats-test.gradle │ └── src │ │ └── main │ │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── cats │ │ ├── cache │ │ ├── CacheSpec.groovy │ │ └── WriteableCacheSpec.groovy │ │ ├── provider │ │ └── ProviderCacheSpec.groovy │ │ ├── redis │ │ └── test │ │ │ └── NetworkUnavailableCheck.groovy │ │ └── test │ │ ├── ManualRunnableScheduler.groovy │ │ ├── TestAccountAwareAgent.groovy │ │ ├── TestAgent.groovy │ │ ├── TestAgentSchedulerAwareProvider.groovy │ │ ├── TestProvider.groovy │ │ ├── TestProviderRegistry.groovy │ │ └── TestScheduler.groovy └── cats.gradle ├── cloudbuild-tagged.yaml ├── cloudbuild.yaml ├── clouddriver-appengine ├── clouddriver-appengine.gradle └── src │ ├── main │ ├── groovy │ │ └── com │ │ │ └── netflix │ │ │ └── spinnaker │ │ │ ├── clouddriver │ │ │ └── appengine │ │ │ │ ├── AppengineCloudProvider.groovy │ │ │ │ ├── AppengineJobExecutor.groovy │ │ │ │ ├── AppengineOperation.groovy │ │ │ │ ├── cache │ │ │ │ └── Keys.groovy │ │ │ │ ├── config │ │ │ │ └── AppengineConfigurationProperties.groovy │ │ │ │ ├── deploy │ │ │ │ ├── AppengineMutexRepository.groovy │ │ │ │ ├── AppengineSafeRetry.groovy │ │ │ │ ├── AppengineServerGroupNameResolver.groovy │ │ │ │ ├── AppengineUtils.groovy │ │ │ │ ├── converters │ │ │ │ │ ├── AppengineAtomicOperationConverterHelper.groovy │ │ │ │ │ ├── DeleteAppengineLoadBalancerAtomicOperationConverter.groovy │ │ │ │ │ ├── DeployAppengineAtomicOperationConverter.groovy │ │ │ │ │ ├── DestroyAppengineAtomicOperationConverter.groovy │ │ │ │ │ ├── DisableAppengineAtomicOperationConverter.groovy │ │ │ │ │ ├── EnableAppengineAtomicOperationConverter.groovy │ │ │ │ │ ├── StartAppengineAtomicOperationConverter.groovy │ │ │ │ │ ├── StopAppengineAtomicOperationConverter.groovy │ │ │ │ │ ├── TerminateAppengineInstancesAtomicOperationConverter.groovy │ │ │ │ │ ├── UpsertAppengineAutoscalingPolicyAtomicOperationConverter.groovy │ │ │ │ │ └── UpsertAppengineLoadBalancerAtomicOperationConverter.groovy │ │ │ │ ├── description │ │ │ │ │ ├── AbstractAppengineCredentialsDescription.groovy │ │ │ │ │ ├── DeleteAppengineLoadBalancerDescription.groovy │ │ │ │ │ ├── DeployAppengineDescription.groovy │ │ │ │ │ ├── DestroyAppengineDescription.groovy │ │ │ │ │ ├── EnableDisableAppengineDescription.groovy │ │ │ │ │ ├── StartStopAppengineDescription.groovy │ │ │ │ │ ├── TerminateAppengineInstancesDescription.groovy │ │ │ │ │ ├── UpsertAppengineAutoscalingPolicyDescription.groovy │ │ │ │ │ └── UpsertAppengineLoadBalancerDescription.groovy │ │ │ │ ├── exception │ │ │ │ │ ├── AppengineDescriptionConversionException.groovy │ │ │ │ │ ├── AppengineIllegalArgumentExeception.groovy │ │ │ │ │ ├── AppengineOperationException.groovy │ │ │ │ │ └── AppengineResourceNotFoundException.groovy │ │ │ │ ├── ops │ │ │ │ │ ├── AbstractStartStopAppengineAtomicOperation.groovy │ │ │ │ │ ├── AppengineAtomicOperation.groovy │ │ │ │ │ ├── DeleteAppengineLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── DeployAppengineAtomicOperation.groovy │ │ │ │ │ ├── DestroyAppengineAtomicOperation.groovy │ │ │ │ │ ├── DisableAppengineAtomicOperation.groovy │ │ │ │ │ ├── EnableAppengineAtomicOperation.groovy │ │ │ │ │ ├── StartAppengineAtomicOperation.groovy │ │ │ │ │ ├── StopAppengineAtomicOperation.groovy │ │ │ │ │ ├── TerminateAppengineInstancesAtomicOperation.groovy │ │ │ │ │ ├── UpsertAppengineAutoscalingPolicyAtomicOperation.groovy │ │ │ │ │ └── UpsertAppengineLoadBalancerAtomicOperation.groovy │ │ │ │ └── validators │ │ │ │ │ ├── AbstractStartStopAppengineDescriptionValidator.groovy │ │ │ │ │ ├── DeleteAppengineLoadBalancerDescriptionValidator.groovy │ │ │ │ │ ├── DeployAppengineDescriptionValidator.groovy │ │ │ │ │ ├── DestroyAppengineDescriptionValidator.groovy │ │ │ │ │ ├── DisableAppengineDescriptionValidator.groovy │ │ │ │ │ ├── EnableAppengineDescriptionValidator.groovy │ │ │ │ │ ├── StandardAppengineAttributeValidator.groovy │ │ │ │ │ ├── StartAppengineDescriptionValidator.groovy │ │ │ │ │ ├── StopAppengineDescriptionValidator.groovy │ │ │ │ │ ├── TerminateAppengineInstancesDescriptionValidator.groovy │ │ │ │ │ ├── UpsertAppengineAutoscalingPolicyDescriptionValidator.groovy │ │ │ │ │ └── UpsertAppengineLoadBalancerDescriptionValidator.groovy │ │ │ │ ├── gcsClient │ │ │ │ └── AppengineGcsRepositoryClient.groovy │ │ │ │ ├── gitClient │ │ │ │ ├── AppengineGitCredentialType.groovy │ │ │ │ ├── AppengineGitCredentials.groovy │ │ │ │ └── AppengineGitRepositoryClient.groovy │ │ │ │ ├── health │ │ │ │ └── AppengineHealthIndicator.groovy │ │ │ │ ├── model │ │ │ │ ├── AppengineApplication.groovy │ │ │ │ ├── AppengineCluster.groovy │ │ │ │ ├── AppengineHealth.groovy │ │ │ │ ├── AppengineInstance.groovy │ │ │ │ ├── AppengineLoadBalancer.groovy │ │ │ │ ├── AppengineModelUtil.groovy │ │ │ │ ├── AppenginePlatformApplication.groovy │ │ │ │ ├── AppengineRepositoryClient.groovy │ │ │ │ ├── AppengineScalingPolicy.groovy │ │ │ │ └── AppengineServerGroup.groovy │ │ │ │ ├── provider │ │ │ │ ├── AppengineProvider.groovy │ │ │ │ ├── agent │ │ │ │ │ ├── AbstractAppengineCachingAgent.groovy │ │ │ │ │ ├── AppengineLoadBalancerCachingAgent.groovy │ │ │ │ │ ├── AppenginePlatformApplicationCachingAgent.groovy │ │ │ │ │ └── AppengineServerGroupCachingAgent.groovy │ │ │ │ ├── callbacks │ │ │ │ │ └── AppengineCallback.groovy │ │ │ │ ├── config │ │ │ │ │ └── AppengineProviderConfig.groovy │ │ │ │ └── view │ │ │ │ │ ├── AppengineApplicationProvider.groovy │ │ │ │ │ ├── AppengineClusterProvider.groovy │ │ │ │ │ ├── AppengineInstanceProvider.groovy │ │ │ │ │ ├── AppengineLoadBalancerProvider.groovy │ │ │ │ │ ├── AppenginePlatformApplicationProvider.groovy │ │ │ │ │ ├── AppengineProviderUtils.groovy │ │ │ │ │ └── MutableCacheData.groovy │ │ │ │ └── security │ │ │ │ ├── AppengineCredentials.groovy │ │ │ │ ├── AppengineCredentialsInitializer.groovy │ │ │ │ ├── AppengineJsonCredentials.groovy │ │ │ │ └── AppengineNamedAccountCredentials.groovy │ │ │ └── config │ │ │ └── AppengineConfiguration.groovy │ └── java │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── appengine │ │ │ └── artifacts │ │ │ ├── GcsStorageService.java │ │ │ ├── config │ │ │ └── StorageConfigurationProperties.java │ │ │ └── controllers │ │ │ └── AppengineStorageController.java │ │ └── config │ │ └── AppengineStorageConfiguration.java │ └── test │ └── groovy │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── appengine │ └── deploy │ ├── converters │ ├── DeleteAppengineLoadBalancerAtomicOperationConverterSpec.groovy │ ├── DeployAppengineAtomicOperationConverterSpec.groovy │ ├── DestroyAppengineAtomicOperationConverterSpec.groovy │ ├── DisableAppengineAtomicOperationConverterSpec.groovy │ ├── EnableAppengineAtomicOperationConverterSpec.groovy │ ├── StartAppengineAtomicOperationConverterSpec.groovy │ ├── TerminateAppengineInstancesAtomicOperationConverterSpec.groovy │ ├── UpsertAppengineAutoscalingPolicyAtomicOperationConverterSpec.groovy │ └── UpsertAppengineLoadBalancerAtomicOperationConverterSpec.groovy │ ├── model │ └── AppengineModelUtilSpec.groovy │ ├── ops │ ├── DeleteAppengineLoadBalancerAtomicOperationSpec.groovy │ ├── DestroyAppengineAtomicOperationSpec.groovy │ ├── DisableAppengineAtomicOperationSpec.groovy │ ├── EnableAppengineAtomicOperationSpec.groovy │ ├── StartStopAppengineAtomicOperationSpec.groovy │ ├── TerminateAppengineInstancesAtomicOperationSpec.groovy │ ├── UpsertAppengineAutoscalingPolicyAtomicOperationSpec.groovy │ └── UpsertAppengineLoadBalancerAtomicOperationSpec.groovy │ └── validators │ ├── DeleteAppengineLoadBalancerDescriptionValidatorSpec.groovy │ ├── DeployAppengineDescriptionValidatorSpec.groovy │ ├── DestroyAppengineDescriptionValidatorSpec.groovy │ ├── DisableAppengineDescriptionValidatorSpec.groovy │ ├── EnableAppengineDescriptionValidatorSpec.groovy │ ├── StandardAppengineAttributeValidatorSpec.groovy │ ├── StartAppengineDescriptionValidatorSpec.groovy │ ├── TerminateAppengineInstancesDescriptionValidatorSpec.groovy │ ├── UpsertAppengineAutoscalingPolicyDescriptionValidatorSpec.groovy │ └── UpsertAppengineLoadBalancerDescriptionValidatorSpec.groovy ├── clouddriver-artifacts ├── clouddriver-artifacts.gradle └── src │ ├── main │ └── java │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── artifacts │ │ │ ├── ArtifactCredentialsRepository.java │ │ │ ├── ArtifactDownloader.java │ │ │ ├── ArtifactUtils.java │ │ │ ├── CredentialReader.java │ │ │ ├── bitbucket │ │ │ ├── BitbucketArtifactAccount.java │ │ │ ├── BitbucketArtifactConfiguration.java │ │ │ ├── BitbucketArtifactCredentials.java │ │ │ └── BitbucketArtifactProviderProperties.java │ │ │ ├── config │ │ │ ├── ArtifactAccount.java │ │ │ ├── ArtifactCredentials.java │ │ │ ├── ArtifactProvider.java │ │ │ ├── BaseHttpArtifactCredentials.java │ │ │ ├── BasicAuth.java │ │ │ ├── SimpleHttpArtifactCredentials.java │ │ │ └── TokenAuth.java │ │ │ ├── docker │ │ │ ├── DockerArtifactAccount.java │ │ │ ├── DockerArtifactConfiguration.java │ │ │ └── DockerArtifactCredentials.java │ │ │ ├── embedded │ │ │ ├── EmbeddedArtifactAccount.java │ │ │ ├── EmbeddedArtifactConfiguration.java │ │ │ └── EmbeddedArtifactCredentials.java │ │ │ ├── exceptions │ │ │ └── FailedDownloadException.java │ │ │ ├── front50 │ │ │ ├── Front50ArtifactConfiguration.java │ │ │ └── Front50ArtifactCredentials.java │ │ │ ├── gcs │ │ │ ├── GcsArtifactAccount.java │ │ │ ├── GcsArtifactConfiguration.java │ │ │ ├── GcsArtifactCredentials.java │ │ │ └── GcsArtifactProviderProperties.java │ │ │ ├── github │ │ │ ├── GitHubArtifactAccount.java │ │ │ ├── GitHubArtifactConfiguration.java │ │ │ ├── GitHubArtifactCredentials.java │ │ │ └── GitHubArtifactProviderProperties.java │ │ │ ├── gitlab │ │ │ ├── GitlabArtifactAccount.java │ │ │ ├── GitlabArtifactConfiguration.java │ │ │ ├── GitlabArtifactCredentials.java │ │ │ └── GitlabArtifactProviderProperties.java │ │ │ ├── helm │ │ │ ├── HelmArtifactAccount.java │ │ │ ├── HelmArtifactConfiguration.java │ │ │ ├── HelmArtifactCredentials.java │ │ │ ├── HelmArtifactProviderProperties.java │ │ │ └── IndexParser.java │ │ │ ├── http │ │ │ ├── HttpArtifactAccount.java │ │ │ ├── HttpArtifactConfiguration.java │ │ │ ├── HttpArtifactCredentials.java │ │ │ └── HttpArtifactProviderProperties.java │ │ │ ├── ivy │ │ │ ├── DiskFreeingInputStream.java │ │ │ ├── IvyArtifactAccount.java │ │ │ ├── IvyArtifactConfiguration.java │ │ │ ├── IvyArtifactCredentials.java │ │ │ ├── IvyArtifactProviderProperties.java │ │ │ └── settings │ │ │ │ ├── BintrayResolver.java │ │ │ │ ├── ChainResolver.java │ │ │ │ ├── Credentials.java │ │ │ │ ├── IBiblioResolver.java │ │ │ │ ├── IvySettings.java │ │ │ │ ├── Pattern.java │ │ │ │ ├── Resolver.java │ │ │ │ ├── Resolvers.java │ │ │ │ ├── Settings.java │ │ │ │ ├── SshResolver.java │ │ │ │ └── UrlResolver.java │ │ │ ├── jenkins │ │ │ ├── JenkinsArtifactAccount.java │ │ │ ├── JenkinsArtifactConfiguration.java │ │ │ ├── JenkinsArtifactCredentials.java │ │ │ └── JenkinsProperties.java │ │ │ ├── kubernetes │ │ │ ├── KubernetesArtifactAccount.java │ │ │ ├── KubernetesArtifactConfiguration.java │ │ │ ├── KubernetesArtifactCredentials.java │ │ │ └── KubernetesArtifactType.java │ │ │ ├── maven │ │ │ ├── MavenArtifactAccount.java │ │ │ ├── MavenArtifactConfiguration.java │ │ │ ├── MavenArtifactCredentials.java │ │ │ └── MavenArtifactProviderProperties.java │ │ │ ├── oracle │ │ │ ├── OracleArtifactAccount.java │ │ │ ├── OracleArtifactClient.java │ │ │ ├── OracleArtifactConfiguration.java │ │ │ ├── OracleArtifactCredentials.java │ │ │ └── OracleArtifactProviderProperties.java │ │ │ └── s3 │ │ │ ├── S3ArtifactAccount.java │ │ │ ├── S3ArtifactConfiguration.java │ │ │ ├── S3ArtifactCredentials.java │ │ │ └── S3ArtifactProviderProperties.java │ │ └── config │ │ └── ArtifactConfiguration.java │ └── test │ ├── java │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ └── artifacts │ │ ├── bitbucket │ │ └── BitbucketArtifactCredentialsTest.java │ │ ├── github │ │ └── GithubArtifactCredentialsTest.java │ │ ├── gitlab │ │ └── GitlabArtifactCredentialsTest.java │ │ ├── helm │ │ ├── HelmArtifactCredentialsTest.java │ │ └── IndexParserTest.java │ │ ├── http │ │ └── HttpArtifactCredentialsTest.java │ │ ├── ivy │ │ ├── DiskFreeingInputStreamTest.java │ │ ├── IvyArtifactCredentialsTest.java │ │ ├── IvyArtifactProviderPropertiesTest.java │ │ └── settings │ │ │ ├── ChainResolverTest.java │ │ │ ├── IvySettingsTest.java │ │ │ ├── SshResolverTest.java │ │ │ └── UrlResolverTest.java │ │ └── maven │ │ └── MavenArtifactCredentialsTest.java │ └── resources │ └── logback.xml ├── clouddriver-aws ├── README.md ├── UserData.md ├── clouddriver-aws.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── aws │ │ │ ├── AmazonCloudProvider.groovy │ │ │ ├── AmazonOperation.groovy │ │ │ ├── AwsConfigurationProperties.groovy │ │ │ ├── agent │ │ │ ├── CleanupAlarmsAgent.groovy │ │ │ ├── CleanupDetachedInstancesAgent.groovy │ │ │ └── ReconcileClassicLinkSecurityGroupsAgent.java │ │ │ ├── bastion │ │ │ ├── BastionConfig.groovy │ │ │ ├── BastionCredentialsProvider.groovy │ │ │ └── BastionProperties.groovy │ │ │ ├── cache │ │ │ └── Keys.groovy │ │ │ ├── controllers │ │ │ ├── AmazonClusterController.groovy │ │ │ ├── AmazonNamedImageLookupController.groovy │ │ │ ├── CloudFormationController.java │ │ │ └── RoleController.java │ │ │ ├── data │ │ │ ├── ArnUtils.groovy │ │ │ └── Keys.groovy │ │ │ ├── deploy │ │ │ ├── AWSServerGroupNameResolver.groovy │ │ │ ├── AmiIdResolver.groovy │ │ │ ├── AsgLifecycleHookWorker.groovy │ │ │ ├── AsgReferenceCopier.groovy │ │ │ ├── AutoScalingWorker.groovy │ │ │ ├── BlockDeviceConfig.groovy │ │ │ ├── DefaultLaunchConfigurationBuilder.groovy │ │ │ ├── LaunchConfigurationBuilder.groovy │ │ │ ├── ResolvedAmiResult.groovy │ │ │ ├── converters │ │ │ │ ├── AllowLaunchAtomicOperationConverter.groovy │ │ │ │ ├── AttachClassicLinkVpcAtomicOperationConverter.groovy │ │ │ │ ├── BasicAmazonDeployAtomicOperationConverter.groovy │ │ │ │ ├── CopyLastAsgAtomicOperationConverter.groovy │ │ │ │ ├── CreateNetworkInterfaceAtomicOperationConverter.groovy │ │ │ │ ├── DeleteAlarmDescriptionAtomicOperationConverter.groovy │ │ │ │ ├── DeleteAmazonImageAtomicOperationConverter.java │ │ │ │ ├── DeleteAmazonLoadBalancerAtomicOperationConverter.groovy │ │ │ │ ├── DeleteAmazonSnapshotAtomicOperationConverter.java │ │ │ │ ├── DeleteAsgTagsAtomicOperationConverter.groovy │ │ │ │ ├── DeleteScalingPolicyDescriptionAtomicOperationConverter.groovy │ │ │ │ ├── DeleteSecurityGroupAtomicOperationConverter.groovy │ │ │ │ ├── DeployCloudFormationAtomicOperationConverter.java │ │ │ │ ├── DeregisterInstancesFromLoadBalancerAtomicOperationConverter.java │ │ │ │ ├── DestroyAsgAtomicOperationConverter.groovy │ │ │ │ ├── DetachInstancesAtomicOperationConverter.groovy │ │ │ │ ├── DisableAsgAtomicOperationConverter.groovy │ │ │ │ ├── DisableInstancesInDiscoveryAtomicOperationConverter.groovy │ │ │ │ ├── EnableAsgAtomicOperationConverter.groovy │ │ │ │ ├── EnableInstancesInDiscoveryAtomicOperationConverter.groovy │ │ │ │ ├── ModifyAsgAtomicOperationConverter.groovy │ │ │ │ ├── ModifyAsgLaunchConfigurationOperationConverter.groovy │ │ │ │ ├── RebootInstancesAtomicOperationConverter.groovy │ │ │ │ ├── RegisterInstancesWithLoadBalancerAtomicOperationConverter.java │ │ │ │ ├── ResizeAsgAtomicOperationConverter.groovy │ │ │ │ ├── ResumeAsgProcessesAtomicOperationConverter.groovy │ │ │ │ ├── SuspendAsgProcessesAtomicOperationConverter.groovy │ │ │ │ ├── TerminateInstanceAndDecrementAsgAtomicOperationConverter.groovy │ │ │ │ ├── TerminateInstancesAtomicOperationConverter.groovy │ │ │ │ ├── UpdateInstancesAtomicOperationConverter.groovy │ │ │ │ ├── UpsertAlarmDescriptionAtomicOperationConverter.groovy │ │ │ │ ├── UpsertAmazonDNSAtomicOperationConverter.groovy │ │ │ │ ├── UpsertAmazonLoadBalancerAtomicOperationConverter.java │ │ │ │ ├── UpsertAmiTagsAtomicOperationConverter.groovy │ │ │ │ ├── UpsertAsgLifecycleHookDescriptionAtomicOperationConverter.groovy │ │ │ │ ├── UpsertAsgScheduledActionsAtomicOperationConverter.groovy │ │ │ │ ├── UpsertAsgTagsAtomicOperationConverter.groovy │ │ │ │ ├── UpsertScalingPolicyDescriptionAtomicOperationConverter.groovy │ │ │ │ └── UpsertSecurityGroupAtomicOperationConverter.groovy │ │ │ ├── description │ │ │ │ ├── AbstractAmazonCredentialsDescription.groovy │ │ │ │ ├── AbstractRegionAsgInstanceIdsDescription.groovy │ │ │ │ ├── AllowLaunchDescription.groovy │ │ │ │ ├── AsgDescription.groovy │ │ │ │ ├── AttachClassicLinkVpcDescription.groovy │ │ │ │ ├── BasicAmazonDeployDescription.groovy │ │ │ │ ├── CreateNetworkInterfaceDescription.groovy │ │ │ │ ├── DeleteAlarmDescription.groovy │ │ │ │ ├── DeleteAmazonImageDescription.java │ │ │ │ ├── DeleteAmazonLoadBalancerDescription.groovy │ │ │ │ ├── DeleteAmazonSnapshotDescription.java │ │ │ │ ├── DeleteAsgTagsDescription.groovy │ │ │ │ ├── DeleteScalingPolicyDescription.groovy │ │ │ │ ├── DeleteSecurityGroupDescription.groovy │ │ │ │ ├── DeployCloudFormationDescription.java │ │ │ │ ├── DestroyAsgDescription.groovy │ │ │ │ ├── DetachInstancesDescription.groovy │ │ │ │ ├── EnableDisableAsgDescription.groovy │ │ │ │ ├── EnableDisableInstanceDiscoveryDescription.groovy │ │ │ │ ├── InstanceLoadBalancerRegistrationDescription.groovy │ │ │ │ ├── InstanceTargetGroupRegistrationDescription.groovy │ │ │ │ ├── ModifyAsgDescription.groovy │ │ │ │ ├── ModifyAsgLaunchConfigurationDescription.groovy │ │ │ │ ├── RebootInstancesDescription.groovy │ │ │ │ ├── ResizeAsgDescription.groovy │ │ │ │ ├── ResumeAsgProcessesDescription.groovy │ │ │ │ ├── SuspendAsgProcessesDescription.groovy │ │ │ │ ├── TerminateInstanceAndDecrementAsgDescription.groovy │ │ │ │ ├── TerminateInstancesDescription.groovy │ │ │ │ ├── UpdateInstancesDescription.groovy │ │ │ │ ├── UpsertAlarmDescription.groovy │ │ │ │ ├── UpsertAmazonDNSDescription.groovy │ │ │ │ ├── UpsertAmazonLoadBalancerClassicDescription.java │ │ │ │ ├── UpsertAmazonLoadBalancerDescription.java │ │ │ │ ├── UpsertAmazonLoadBalancerV2Description.java │ │ │ │ ├── UpsertAmiTagsDescription.groovy │ │ │ │ ├── UpsertAsgLifecycleHookDescription.groovy │ │ │ │ ├── UpsertAsgScheduledActionsDescription.groovy │ │ │ │ ├── UpsertAsgTagsDescription.groovy │ │ │ │ ├── UpsertScalingPolicyDescription.groovy │ │ │ │ └── UpsertSecurityGroupDescription.groovy │ │ │ ├── handlers │ │ │ │ ├── BasicAmazonDeployHandler.groovy │ │ │ │ ├── LoadBalancerUpsertHandler.groovy │ │ │ │ └── LoadBalancerV2UpsertHandler.groovy │ │ │ ├── ops │ │ │ │ ├── AbstractEnableDisableAtomicOperation.groovy │ │ │ │ ├── AbstractInstanceLoadBalancerRegistrationAtomicOperation.groovy │ │ │ │ ├── AbstractInstanceTargetGroupRegistrationAtomicOperation.groovy │ │ │ │ ├── AllowLaunchAtomicOperation.groovy │ │ │ │ ├── AttachClassicLinkVpcAtomicOperation.groovy │ │ │ │ ├── CopyLastAsgAtomicOperation.groovy │ │ │ │ ├── CreateNetworkInterfaceAtomicOperation.groovy │ │ │ │ ├── DeleteAlarmAtomicOperation.groovy │ │ │ │ ├── DeleteAmazonImageAtomicOperation.java │ │ │ │ ├── DeleteAmazonSnapshotAtomicOperation.java │ │ │ │ ├── DeleteAsgTagsAtomicOperation.groovy │ │ │ │ ├── DeleteScalingPolicyAtomicOperation.groovy │ │ │ │ ├── DeployCloudFormationAtomicOperation.java │ │ │ │ ├── DeregisterInstancesFromLoadBalancerAtomicOperation.java │ │ │ │ ├── DeregisterInstancesFromTargetGroupAtomicOperation.java │ │ │ │ ├── DestroyAsgAtomicOperation.groovy │ │ │ │ ├── DetachInstancesAtomicOperation.groovy │ │ │ │ ├── DisableAsgAtomicOperation.groovy │ │ │ │ ├── EnableAsgAtomicOperation.groovy │ │ │ │ ├── ModifyAsgAtomicOperation.groovy │ │ │ │ ├── ModifyAsgLaunchConfigurationOperation.groovy │ │ │ │ ├── RebootInstancesAtomicOperation.groovy │ │ │ │ ├── RegisterInstancesWithLoadBalancerAtomicOperation.java │ │ │ │ ├── RegisterInstancesWithTargetGroupAtomicOperation.java │ │ │ │ ├── RegistrationAction.java │ │ │ │ ├── ResizeAsgAtomicOperation.groovy │ │ │ │ ├── ResumeAsgProcessesAtomicOperation.groovy │ │ │ │ ├── SuspendAsgProcessesAtomicOperation.groovy │ │ │ │ ├── TerminateInstanceAndDecrementAsgAtomicOperation.groovy │ │ │ │ ├── TerminateInstancesAtomicOperation.groovy │ │ │ │ ├── UpdateInstancesAtomicOperation.groovy │ │ │ │ ├── UpsertAlarmAtomicOperation.groovy │ │ │ │ ├── UpsertAmiTagsAtomicOperation.groovy │ │ │ │ ├── UpsertAsgLifecycleHookAtomicOperation.groovy │ │ │ │ ├── UpsertAsgScheduledActionsOperation.groovy │ │ │ │ ├── UpsertAsgTagsAtomicOperation.groovy │ │ │ │ ├── UpsertScalingPolicyAtomicOperation.groovy │ │ │ │ ├── UpsertScalingPolicyResult.groovy │ │ │ │ ├── discovery │ │ │ │ │ ├── AbstractEnableDisableInstanceDiscoveryAtomicOperation.groovy │ │ │ │ │ ├── AwsEurekaSupport.groovy │ │ │ │ │ ├── DisableInstancesInDiscoveryAtomicOperation.groovy │ │ │ │ │ └── EnableInstancesInDiscoveryAtomicOperation.groovy │ │ │ │ ├── dns │ │ │ │ │ ├── UpsertAmazonDNSAtomicOperation.groovy │ │ │ │ │ └── UpsertAmazonDNSResult.groovy │ │ │ │ ├── loadbalancer │ │ │ │ │ ├── DeleteAmazonLoadBalancerClassicAtomicOperation.groovy │ │ │ │ │ ├── DeleteAmazonLoadBalancerV2AtomicOperation.groovy │ │ │ │ │ ├── IngressLoadBalancerBuilder.java │ │ │ │ │ ├── LoadBalancerLookupHelper.groovy │ │ │ │ │ ├── TargetGroupLookupHelper.groovy │ │ │ │ │ ├── UpsertAmazonLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── UpsertAmazonLoadBalancerResult.groovy │ │ │ │ │ ├── UpsertAmazonLoadBalancerV2AtomicOperation.groovy │ │ │ │ │ └── UpsertAmazonLoadBalancerV2Result.groovy │ │ │ │ └── securitygroup │ │ │ │ │ ├── DeleteSecurityGroupAtomicOperation.groovy │ │ │ │ │ ├── SecurityGroupIngressConverter.groovy │ │ │ │ │ ├── SecurityGroupLookupFactory.groovy │ │ │ │ │ └── UpsertSecurityGroupAtomicOperation.groovy │ │ │ ├── preprocessors │ │ │ │ ├── LegacyToAsgsDescriptionPreProcessor.groovy │ │ │ │ └── ResizeAsgDescriptionPreProcessor.groovy │ │ │ ├── scalingpolicy │ │ │ │ ├── DefaultScalingPolicyCopier.groovy │ │ │ │ └── ScalingPolicyCopier.groovy │ │ │ ├── userdata │ │ │ │ ├── LocalFileUserDataProperties.groovy │ │ │ │ ├── LocalFileUserDataProvider.groovy │ │ │ │ ├── NullOpUserDataProvider.groovy │ │ │ │ └── UserDataProvider.java │ │ │ └── validators │ │ │ │ ├── AbstractEnableDisableAsgDescriptionValidator.groovy │ │ │ │ ├── AllowLaunchDescriptionValidator.groovy │ │ │ │ ├── AmazonDescriptionValidationSupport.groovy │ │ │ │ ├── AttachClassicLinkVpcDescriptionValidator.groovy │ │ │ │ ├── BasicAmazonDeployDescriptionValidator.groovy │ │ │ │ ├── CreateAmazonLoadBalancerDescriptionValidator.java │ │ │ │ ├── CreateNetworkInterfaceDescriptionValidator.groovy │ │ │ │ ├── DeleteAlarmDescriptionValidator.groovy │ │ │ │ ├── DeleteAmazonLoadBalancerDescriptionValidator.groovy │ │ │ │ ├── DeleteAmazonSnapshotDescriptionValidator.java │ │ │ │ ├── DeleteAsgTagsDescriptionValidator.groovy │ │ │ │ ├── DeleteScalingPolicyDescriptionValidator.groovy │ │ │ │ ├── DeleteSecurityGroupDescriptionValidator.groovy │ │ │ │ ├── DeregisterInstancesFromLoadBalancerDescriptionValidator.groovy │ │ │ │ ├── DestroyAsgDescriptionValidator.groovy │ │ │ │ ├── DetachInstancesDescriptionValidator.groovy │ │ │ │ ├── DisableAsgDescriptionValidator.groovy │ │ │ │ ├── DisableInstancesInDiscoveryDescriptionValidator.groovy │ │ │ │ ├── EnableAsgDescriptionValidator.groovy │ │ │ │ ├── EnableInstancesInDiscoveryDescriptionValidator.groovy │ │ │ │ ├── ModifyAsgLaunchConfigurationDescriptionValidator.groovy │ │ │ │ ├── RebootInstancesDescriptionValidator.groovy │ │ │ │ ├── RegisterInstancesWithLoadBalancerDescriptionValidator.groovy │ │ │ │ ├── ResizeAsgDescriptionValidator.groovy │ │ │ │ ├── ResumeAsgProcessesDescriptionValidator.groovy │ │ │ │ ├── SuspendAsgProcessesDescriptionValidator.groovy │ │ │ │ ├── TerminateInstanceAndDecrementAsgDescriptionValidator.groovy │ │ │ │ ├── TerminateInstancesDescriptionValidator.groovy │ │ │ │ ├── UpdateInstancesDescriptionValidator.groovy │ │ │ │ ├── UpsertAlarmDescriptionValidator.groovy │ │ │ │ ├── UpsertAmazonDNSDescriptionValidator.groovy │ │ │ │ ├── UpsertAsgLifecycleHookDescriptionValidator.groovy │ │ │ │ ├── UpsertAsgTagsDescriptionValidator.groovy │ │ │ │ ├── UpsertScalingPolicyDescriptionValidator.groovy │ │ │ │ └── UpsertSecurityGroupDescriptionValidator.groovy │ │ │ ├── edda │ │ │ ├── EddaApi.groovy │ │ │ ├── EddaApiFactory.groovy │ │ │ └── EddaConfiguration.groovy │ │ │ ├── event │ │ │ ├── AfterResizeEvent.java │ │ │ ├── AfterResizeEventHandler.java │ │ │ └── DefaultAfterResizeEventHandler.java │ │ │ ├── health │ │ │ └── AmazonHealthIndicator.groovy │ │ │ ├── lifecycle │ │ │ ├── ARN.java │ │ │ ├── InstanceTerminationConfigurationProperties.groovy │ │ │ ├── InstanceTerminationLifecycleWorker.java │ │ │ ├── InstanceTerminationLifecycleWorkerProvider.java │ │ │ ├── LaunchFailureConfigurationProperties.groovy │ │ │ ├── LaunchFailureNotificationAgent.java │ │ │ ├── LaunchFailureNotificationAgentProvider.java │ │ │ ├── LaunchFailureNotificationCleanupAgent.java │ │ │ ├── LifecycleMessage.java │ │ │ ├── LifecycleSubscriberConfiguration.java │ │ │ ├── NotificationMessage.java │ │ │ └── NotificationMessageWrapper.java │ │ │ ├── model │ │ │ ├── AmazonApplication.groovy │ │ │ ├── AmazonAsgLifecycleHook.groovy │ │ │ ├── AmazonBlockDevice.groovy │ │ │ ├── AmazonCloudFormationStack.java │ │ │ ├── AmazonCluster.groovy │ │ │ ├── AmazonElasticIp.groovy │ │ │ ├── AmazonImage.java │ │ │ ├── AmazonInstance.groovy │ │ │ ├── AmazonInstanceType.groovy │ │ │ ├── AmazonKeyPair.groovy │ │ │ ├── AmazonLoadBalancer.groovy │ │ │ ├── AmazonLoadBalancerType.java │ │ │ ├── AmazonMetricDatapoint.groovy │ │ │ ├── AmazonMetricDescriptor.groovy │ │ │ ├── AmazonMetricStatistics.groovy │ │ │ ├── AmazonReservationReport.groovy │ │ │ ├── AmazonReservationReportBuilder.groovy │ │ │ ├── AmazonSecurityGroup.groovy │ │ │ ├── AmazonSecurityGroupSummary.groovy │ │ │ ├── AmazonServerCertificate.groovy │ │ │ ├── AmazonServerGroup.groovy │ │ │ ├── AmazonSubnet.groovy │ │ │ ├── AmazonTargetGroup.groovy │ │ │ ├── AmazonVpc.groovy │ │ │ ├── AutoScalingProcessType.groovy │ │ │ ├── AwsNetworkInterface.groovy │ │ │ ├── AwsResultsRetriever.groovy │ │ │ ├── CloudFormationProvider.java │ │ │ ├── CloudFormationStack.java │ │ │ ├── InstanceTargetGroupState.groovy │ │ │ ├── InstanceTargetGroups.groovy │ │ │ ├── ResultByZone.groovy │ │ │ ├── Role.java │ │ │ ├── RoleProvider.java │ │ │ ├── SecurityGroupNotFoundException.groovy │ │ │ ├── SubnetAnalyzer.groovy │ │ │ ├── SubnetData.groovy │ │ │ ├── SubnetTarget.groovy │ │ │ ├── TagsNotCreatedException.groovy │ │ │ ├── TargetGroupServerGroupProvider.java │ │ │ ├── TrustRelationship.java │ │ │ └── edda │ │ │ │ ├── ApplicationLoadBalancerAttributes.java │ │ │ │ ├── ClassicLoadBalancerAttributes.java │ │ │ │ ├── EddaRule.java │ │ │ │ ├── InstanceLoadBalancerState.groovy │ │ │ │ ├── InstanceLoadBalancers.groovy │ │ │ │ ├── LoadBalancerInstance.groovy │ │ │ │ ├── LoadBalancerInstanceState.groovy │ │ │ │ ├── TargetGroupAttributes.java │ │ │ │ └── TargetGroupHealth.java │ │ │ ├── provider │ │ │ ├── AwsCleanupProvider.groovy │ │ │ ├── AwsInfrastructureProvider.groovy │ │ │ ├── AwsProvider.groovy │ │ │ ├── agent │ │ │ │ ├── AbstractAmazonLoadBalancerCachingAgent.groovy │ │ │ │ ├── AmazonApplicationLoadBalancerCachingAgent.groovy │ │ │ │ ├── AmazonCertificateCachingAgent.groovy │ │ │ │ ├── AmazonCloudFormationCachingAgent.java │ │ │ │ ├── AmazonElasticIpCachingAgent.groovy │ │ │ │ ├── AmazonInstanceTypeCachingAgent.java │ │ │ │ ├── AmazonKeyPairCachingAgent.groovy │ │ │ │ ├── AmazonLoadBalancerCachingAgent.groovy │ │ │ │ ├── AmazonLoadBalancerInstanceStateCachingAgent.groovy │ │ │ │ ├── AmazonSecurityGroupCachingAgent.groovy │ │ │ │ ├── AmazonSubnetCachingAgent.groovy │ │ │ │ ├── AmazonVpcCachingAgent.groovy │ │ │ │ ├── CacheHelpers.groovy │ │ │ │ ├── ClusterCachingAgent.groovy │ │ │ │ ├── DriftMetric.java │ │ │ │ ├── EddaLoadBalancerCachingAgent.groovy │ │ │ │ ├── ImageCachingAgent.groovy │ │ │ │ ├── InstanceCachingAgent.groovy │ │ │ │ ├── LaunchConfigCachingAgent.groovy │ │ │ │ ├── ReservationReportCachingAgent.groovy │ │ │ │ └── ReservedInstancesCachingAgent.groovy │ │ │ ├── config │ │ │ │ ├── AwsInfrastructureProviderConfig.groovy │ │ │ │ ├── AwsProviderConfig.groovy │ │ │ │ └── ReservationReportConfigurationProperties.groovy │ │ │ └── view │ │ │ │ ├── AmazonApplicationProvider.groovy │ │ │ │ ├── AmazonCloudFormationProvider.java │ │ │ │ ├── AmazonCloudMetricProvider.groovy │ │ │ │ ├── AmazonClusterProvider.groovy │ │ │ │ ├── AmazonElasticIpProvider.groovy │ │ │ │ ├── AmazonImageProvider.java │ │ │ │ ├── AmazonInstanceProvider.groovy │ │ │ │ ├── AmazonInstanceTypeProvider.groovy │ │ │ │ ├── AmazonInstanceTypeProviderConfiguration.groovy │ │ │ │ ├── AmazonKeyPairProvider.groovy │ │ │ │ ├── AmazonLoadBalancerProvider.groovy │ │ │ │ ├── AmazonReservationReportProvider.groovy │ │ │ │ ├── AmazonS3DataProvider.java │ │ │ │ ├── AmazonS3StaticDataProviderConfiguration.groovy │ │ │ │ ├── AmazonSecurityGroupProvider.groovy │ │ │ │ ├── AmazonServerCertificateProvider.groovy │ │ │ │ ├── AmazonSubnetProvider.groovy │ │ │ │ └── AmazonVpcProvider.groovy │ │ │ ├── security │ │ │ ├── AWSAccountInfoLookup.java │ │ │ ├── AWSProxy.java │ │ │ ├── AddSpinnakerUserToUserAgentRequestHandler.java │ │ │ ├── AmazonClientProvider.java │ │ │ ├── AmazonCredentials.java │ │ │ ├── AmazonCredentialsInitializer.groovy │ │ │ ├── AssumeRoleAmazonCredentials.java │ │ │ ├── DefaultAWSAccountInfoLookup.java │ │ │ ├── DefaultAccountConfigurationProperties.groovy │ │ │ ├── EddaTemplater.java │ │ │ ├── EddaTimeoutConfig.java │ │ │ ├── NetflixAmazonCredentials.java │ │ │ ├── NetflixAssumeRoleAmazonCredentials.java │ │ │ ├── NetflixSTSAssumeRoleSessionCredentialsProvider.java │ │ │ ├── StaticAWSAccountInfoLookup.java │ │ │ ├── config │ │ │ │ ├── CredentialsConfig.java │ │ │ │ └── CredentialsLoader.java │ │ │ └── sdkclient │ │ │ │ ├── AmazonClientInvocationHandler.java │ │ │ │ ├── AwsSdkClientSupplier.java │ │ │ │ ├── LoadingCacheMetrics.java │ │ │ │ ├── ProxyHandlerBuilder.java │ │ │ │ ├── RateLimiterSupplier.java │ │ │ │ ├── RateLimitingRequestHandler.java │ │ │ │ └── SpinnakerAwsRegionProvider.java │ │ │ └── services │ │ │ ├── AsgService.groovy │ │ │ ├── IdGenerator.groovy │ │ │ ├── NetworkInterfaceService.groovy │ │ │ ├── RegionScopedProviderFactory.groovy │ │ │ └── SecurityGroupService.groovy │ │ └── config │ │ └── AwsConfiguration.groovy │ └── test │ ├── groovy │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ └── aws │ │ ├── TestCredential.groovy │ │ ├── agent │ │ ├── CleanupAlarmsAgentSpec.groovy │ │ ├── CleanupDetachedInstancesAgentSpec.groovy │ │ └── ReconcileClassicLinkSecurityGroupsAgentSpec.groovy │ │ ├── cache │ │ └── KeysSpec.groovy │ │ ├── controllers │ │ ├── AmazonClusterControllerSpec.groovy │ │ ├── AmazonNamedImageLookupControllerSpec.groovy │ │ └── CloudFormationControllerSpec.groovy │ │ ├── data │ │ └── KeysSpec.groovy │ │ ├── deploy │ │ ├── AWSServerGroupNameResolverSpec.groovy │ │ ├── AmiIdResolverSpec.groovy │ │ ├── AsgLifecycleHookWorkerSpec.groovy │ │ ├── AsgReferenceCopierSpec.groovy │ │ ├── AutoScalingWorkerUnitSpec.groovy │ │ ├── BlockDeviceConfigSpec.groovy │ │ ├── DefaultLaunchConfigurationBuilderSpec.groovy │ │ ├── SimpleServerGroup.groovy │ │ ├── converters │ │ │ ├── BasicAmazonDeployAtomicOperationConverterUnitSpec.groovy │ │ │ ├── CopyLastAsgAtomicOperationConverterUnitSpec.groovy │ │ │ ├── DeployCloudFormationAtomicOperationConverterSpec.groovy │ │ │ ├── ModifyAsgAtomicOperationConverterUnitSpec.groovy │ │ │ ├── ResizeAsgAtomicOperationConverterUnitSpec.groovy │ │ │ ├── UpsertAmazonDNSAtomicOperationConverterUnitSpec.groovy │ │ │ └── UpsertAmazonLoadBalancerAtomicOperationConverterUnitSpec.groovy │ │ ├── description │ │ │ └── AsgDescriptionSpec.groovy │ │ ├── handlers │ │ │ ├── BasicAmazonDeployHandlerUnitSpec.groovy │ │ │ └── LoadBalancerUpsertHandlerSpec.groovy │ │ ├── ops │ │ │ ├── AbstractEnableDisableAtomicOperationUnitSpec.groovy │ │ │ ├── AllowLaunchAtomicOperationUnitSpec.groovy │ │ │ ├── AttachClassicLinkVpcAtomicOperationUnitSpec.groovy │ │ │ ├── CopyLastAsgAtomicOperationUnitSpec.groovy │ │ │ ├── CreateNetworkInterfaceAtomicOperationUnitSpec.groovy │ │ │ ├── DeleteAlarmOperationUnitSpec.groovy │ │ │ ├── DeleteAmazonImageAtomicOperationSpec.groovy │ │ │ ├── DeleteAmazonSnapshotAtomicOperationSpec.groovy │ │ │ ├── DeleteAsgTagsAtomicOperationUnitSpec.groovy │ │ │ ├── DeleteScalingPolicyAtomicOperationUnitSpec.groovy │ │ │ ├── DeleteSecurityGroupAtomicOperationSpec.groovy │ │ │ ├── DeployCloudFormationAtomicOperationSpec.groovy │ │ │ ├── DeregisterInstancesFromLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ ├── DeregisterInstancesFromTargetGroupsAtomicOperationUnitSpec.groovy │ │ │ ├── DestroyAsgAtomicOperationUnitSpec.groovy │ │ │ ├── DetachInstancesAtomicOperationSpec.groovy │ │ │ ├── DisableAsgAtomicOperationUnitSpec.groovy │ │ │ ├── EnableAsgAtomicOperationUnitSpec.groovy │ │ │ ├── EnableDisableAtomicOperationUnitSpecSupport.groovy │ │ │ ├── InstanceLoadBalancerRegistrationUnitSpecSupport.groovy │ │ │ ├── InstanceTargetGroupRegistrationUnitSpecSupport.groovy │ │ │ ├── ModifyAsgLaunchConfigurationOperationSpec.groovy │ │ │ ├── RebootInstancesAtomicOperationUnitSpec.groovy │ │ │ ├── RegisterInstancesWithLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ ├── RegisterInstancesWithTargetGroupsAtomicOperationUnitSpec.groovy │ │ │ ├── ResizeAsgAtomicOperationUnitSpec.groovy │ │ │ ├── ResumeAsgProcessesAtomicOperationSpec.groovy │ │ │ ├── SuspendAsgProcessesAtomicOperationSpec.groovy │ │ │ ├── TerminateInstanceAndDecrementAsgAtomicOperationUnitSpec.groovy │ │ │ ├── TerminateInstancesAtomicOperationUnitSpec.groovy │ │ │ ├── UpdateInstancesAtomicOperationSpec.groovy │ │ │ ├── UpsertAlarmOperationUnitSpec.groovy │ │ │ ├── UpsertAmiTagsAtomicOperationSpec.groovy │ │ │ ├── UpsertAsgLifecycleHookAtomicOperationUnitSpec.groovy │ │ │ ├── UpsertAsgScheduledActionsAtomicOperationUnitSpec.groovy │ │ │ ├── UpsertAsgTagsAtomicOperationUnitSpec.groovy │ │ │ ├── UpsertScalingPolicyAtomicOperationUnitSpec.groovy │ │ │ ├── discovery │ │ │ │ ├── DiscoverySupportUnitSpec.groovy │ │ │ │ └── EnableDisableInstancesInDiscoveryAtomicOperationUnitSpec.groovy │ │ │ ├── dns │ │ │ │ └── UpsertAmazonDNSAtomicOperationSpec.groovy │ │ │ ├── loadbalancer │ │ │ │ ├── DeleteAmazonLoadBalancerClassicAtomicOperationSpec.groovy │ │ │ │ ├── DeleteAmazonLoadBalancerV2AtomicOperationSpec.groovy │ │ │ │ ├── IngressLoadBalancerBuilderSpec.groovy │ │ │ │ ├── UpsertAmazonLoadBalancerClassicAtomicOperationSpec.groovy │ │ │ │ └── UpsertAmazonLoadBalancerV2AtomicOperationSpec.groovy │ │ │ └── securitygroup │ │ │ │ ├── SecurityGroupLookupSpec.groovy │ │ │ │ └── UpsertSecurityGroupAtomicOperationUnitSpec.groovy │ │ ├── preprocessors │ │ │ ├── LegacyToAsgsDescriptionPreProcessorSpec.groovy │ │ │ └── ResizeAsgDescriptionPreProcessorSpec.groovy │ │ ├── scalingpolicy │ │ │ └── DefaultScalingPolicyCopierSpec.groovy │ │ ├── userdata │ │ │ └── LocalFileUserDataProviderSpec.groovy │ │ └── validators │ │ │ ├── AbstractConfiguredRegionAndInstanceIdsValidatorSpec.groovy │ │ │ ├── AbstractConfiguredRegionsValidatorSpec.groovy │ │ │ ├── AllowLaunchDescriptionValidatorSpec.groovy │ │ │ ├── AttachClassicLinkVpcDescriptionValidatorSpec.groovy │ │ │ ├── BasicAmazonDeployDescriptionValidatorSpec.groovy │ │ │ ├── CreateNetworkInterfaceDescriptionValidatorSpec.groovy │ │ │ ├── DeleteAmazonLoadBalancerDescriptionValidatorSpec.groovy │ │ │ ├── DeleteAsgTagsDescriptionValidatorSpec.groovy │ │ │ ├── DeleteSecurityGroupDescriptionValidatorSpec.groovy │ │ │ ├── DeregisterInstancesFromLoadBalancerDescriptionValidatorSpec.groovy │ │ │ ├── DestroyAsgDescriptionValidatorSpec.groovy │ │ │ ├── DisableInstancesInDiscoveryValidatorSpec.groovy │ │ │ ├── EnableDisableAsgDescriptionValidatorSpec.groovy │ │ │ ├── EnableInstancesInDiscoveryValidatorSpec.groovy │ │ │ ├── RebootInstancesDescriptionValidatorSpec.groovy │ │ │ ├── RegisterInstancesWithLoadBalancerDescriptionValidatorSpec.groovy │ │ │ ├── ResizeAsgDescriptionValidatorSpec.groovy │ │ │ ├── ResumeAsgProcessesDescriptionValidatorSpec.groovy │ │ │ ├── SuspendAsgProcessesDescriptionValidatorSpec.groovy │ │ │ ├── TerminateInstanceAndDecrementAsgDescriptionValidatorSpec.groovy │ │ │ ├── TerminateInstancesDescriptionValidatorSpec.groovy │ │ │ ├── UpsertAmazonDNSDescriptionValidatorSpec.groovy │ │ │ ├── UpsertAmazonLoadBalancerClassicDescriptionValidatorSpec.groovy │ │ │ ├── UpsertAsgTagsDescriptionValidatorSpec.groovy │ │ │ └── UpsertSecurityGroupDescriptionValidatorSpec.groovy │ │ ├── event │ │ └── DefaultAfterResizeEventHandlerSpec.groovy │ │ ├── health │ │ └── AmazonHealthIndicatorSpec.groovy │ │ ├── lifecycle │ │ ├── ARNSpec.groovy │ │ ├── InstanceTerminationLifecycleWorkerSpec.groovy │ │ ├── LaunchFailureNotificationAgentProviderSpec.groovy │ │ ├── LaunchFailureNotificationAgentSpec.groovy │ │ └── LaunchFailureNotificationCleanupAgentSpec.groovy │ │ ├── model │ │ ├── AmazonCloudFormationStackSpec.groovy │ │ ├── AmazonClusterSpec.groovy │ │ ├── AmazonInstanceSpec.groovy │ │ ├── AmazonMetricStatisticsSpec.groovy │ │ ├── AmazonReservationReportBuilderV3Spec.groovy │ │ ├── AmazonReservationReportBuilderV4Spec.groovy │ │ ├── AmazonReservationReportSpec.groovy │ │ ├── AmazonServerGroupSpec.groovy │ │ ├── AwsResultsRetrieverSpec.groovy │ │ ├── SubnetAnalyzerSpec.groovy │ │ └── edda │ │ │ ├── InstanceLoadBalancerStateSpec.groovy │ │ │ └── InstanceLoadBalancersSpec.groovy │ │ ├── provider │ │ ├── AwsProviderSpec.groovy │ │ ├── agent │ │ │ ├── AmazonCloudFormationCachingAgentSpec.groovy │ │ │ ├── AmazonElasticIpCachingAgentSpec.groovy │ │ │ ├── AmazonInstanceTypeCachingAgentSpec.groovy │ │ │ ├── AmazonKeyPairCachingAgentSpec.groovy │ │ │ ├── AmazonSecurityGroupCachingAgentSpec.groovy │ │ │ ├── AmazonSubnetCachingAgentSpec.groovy │ │ │ ├── ClusterCachingAgentSpec.groovy │ │ │ ├── ImageCachingAgentSpec.groovy │ │ │ └── ReservationReportCachingAgentSpec.groovy │ │ └── view │ │ │ ├── AmazonCloudFormationProviderSpec.groovy │ │ │ ├── AmazonCloudMetricProviderSpec.groovy │ │ │ ├── AmazonElasticIpProviderSpec.groovy │ │ │ ├── AmazonImageProviderSpec.groovy │ │ │ ├── AmazonInstanceTypeProviderSpec.groovy │ │ │ ├── AmazonKeyPairProviderSpec.groovy │ │ │ ├── AmazonS3DataProviderSpec.groovy │ │ │ ├── AmazonSecurityGroupProviderSpec.groovy │ │ │ └── AmazonSubnetProviderSpec.groovy │ │ ├── security │ │ ├── AmazonClientProviderSpec.groovy │ │ ├── DefaultAWSAccountInfoLookupSpec.groovy │ │ └── config │ │ │ ├── CredentialsLoaderSpec.groovy │ │ │ └── StringTemplaterSpec.groovy │ │ └── services │ │ ├── AsgServiceSpec.groovy │ │ ├── NetworkInterfaceServiceSpec.groovy │ │ └── SecurityGroupServiceSpec.groovy │ └── resources │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── aws │ └── provider │ └── agent │ └── us-west-2.json ├── clouddriver-azure ├── clouddriver-azure.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── azure │ │ │ ├── AzureCloudProvider.groovy │ │ │ ├── AzureOperation.groovy │ │ │ ├── client │ │ │ ├── AzureBaseClient.groovy │ │ │ ├── AzureComputeClient.groovy │ │ │ ├── AzureNetworkClient.groovy │ │ │ ├── AzureResourceManagerClient.groovy │ │ │ └── AzureStorageClient.groovy │ │ │ ├── common │ │ │ ├── AzureAtomicOperationConverterHelper.groovy │ │ │ ├── AzureUtilities.groovy │ │ │ ├── StandardAzureAttributeValidator.groovy │ │ │ └── cache │ │ │ │ ├── AzureCachingAgent.groovy │ │ │ │ └── MutableCacheData.groovy │ │ │ ├── config │ │ │ ├── AzureConfigurationProperties.groovy │ │ │ ├── ops │ │ │ │ └── AzureOpsConfig.groovy │ │ │ └── view │ │ │ │ └── AzureInfrastructureProviderConfig.groovy │ │ │ ├── health │ │ │ └── AzureHealthIndicator.groovy │ │ │ ├── resources │ │ │ ├── appgateway │ │ │ │ ├── cache │ │ │ │ │ └── AzureAppGatewayCachingAgent.groovy │ │ │ │ ├── model │ │ │ │ │ └── AzureAppGatewayDescription.groovy │ │ │ │ ├── ops │ │ │ │ │ ├── DeleteAzureAppGatewayAtomicOperation.groovy │ │ │ │ │ ├── UpsertAzureAppGatewayAtomicOperation.groovy │ │ │ │ │ ├── converters │ │ │ │ │ │ ├── DeleteAzureAppGatewayAtomicOperationConverter.groovy │ │ │ │ │ │ └── UpsertAzureAppGatewayAtomicOperationConverter.groovy │ │ │ │ │ └── validators │ │ │ │ │ │ ├── DeleteAzureAppGatewayAtomicOperationValidator.groovy │ │ │ │ │ │ └── UpsertAzureAppGatewayAtomicOperationValidator.groovy │ │ │ │ └── view │ │ │ │ │ └── AzureAppGatewayProvider.groovy │ │ │ ├── application │ │ │ │ ├── model │ │ │ │ │ └── AzureApplication.groovy │ │ │ │ └── view │ │ │ │ │ └── AzureApplicationProvider.groovy │ │ │ ├── cluster │ │ │ │ ├── model │ │ │ │ │ └── AzureCluster.groovy │ │ │ │ └── view │ │ │ │ │ └── AzureClusterProvider.groovy │ │ │ ├── common │ │ │ │ ├── AzureResourceOpsDescription.groovy │ │ │ │ ├── cache │ │ │ │ │ ├── Keys.groovy │ │ │ │ │ └── provider │ │ │ │ │ │ └── AzureInfrastructureProvider.groovy │ │ │ │ └── model │ │ │ │ │ ├── AzureDeploymentOperation.groovy │ │ │ │ │ └── KeyVaultSecret.groovy │ │ │ ├── loadbalancer │ │ │ │ ├── cache │ │ │ │ │ └── AzureLoadBalancerCachingAgent.groovy │ │ │ │ ├── model │ │ │ │ │ ├── AzureLoadBalancer.groovy │ │ │ │ │ ├── AzureLoadBalancerDescription.groovy │ │ │ │ │ └── DeleteAzureLoadBalancerDescription.groovy │ │ │ │ ├── ops │ │ │ │ │ ├── DeleteAzureLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── UpsertAzureLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── converters │ │ │ │ │ │ ├── DeleteAzureLoadBalancerAtomicOperationConverter.groovy │ │ │ │ │ │ └── UpsertAzureLoadBalancerAtomicOperationConverter.groovy │ │ │ │ │ └── validators │ │ │ │ │ │ ├── DeleteAzureLoadBalancerDescriptionValidator.groovy │ │ │ │ │ │ └── UpsertAzureLoadBalancerDescriptionValidator.groovy │ │ │ │ └── view │ │ │ │ │ ├── AzureLoadBalancerController.groovy │ │ │ │ │ └── AzureLoadBalancerProvider.groovy │ │ │ ├── network │ │ │ │ ├── cache │ │ │ │ │ └── AzureNetworkCachingAgent.groovy │ │ │ │ ├── model │ │ │ │ │ ├── AzureNetwork.groovy │ │ │ │ │ └── AzureVirtualNetworkDescription.groovy │ │ │ │ └── view │ │ │ │ │ └── AzureNetworkProvider.groovy │ │ │ ├── securitygroup │ │ │ │ ├── cache │ │ │ │ │ └── AzureSecurityGroupCachingAgent.groovy │ │ │ │ ├── model │ │ │ │ │ ├── AzureSecurityGroup.groovy │ │ │ │ │ ├── AzureSecurityGroupDescription.groovy │ │ │ │ │ ├── DeleteAzureSecurityGroupDescription.groovy │ │ │ │ │ └── UpsertAzureSecurityGroupDescription.groovy │ │ │ │ ├── ops │ │ │ │ │ ├── DeleteAzureSecurityGroupAtomicOperation.groovy │ │ │ │ │ ├── UpsertAzureSecurityGroupAtomicOperation.groovy │ │ │ │ │ ├── converters │ │ │ │ │ │ ├── DeleteAzureSecurityGroupAtomicOperationConverter.groovy │ │ │ │ │ │ └── UpsertAzureSecurityGroupAtomicOperationConverter.groovy │ │ │ │ │ └── validators │ │ │ │ │ │ ├── DeleteAzureSecurityGroupDescriptionValidator.groovy │ │ │ │ │ │ └── UpsertAzureSecurityGroupDescriptionValidator.groovy │ │ │ │ └── view │ │ │ │ │ └── AzureSecurityGroupProvider.groovy │ │ │ ├── servergroup │ │ │ │ ├── cache │ │ │ │ │ └── AzureServerGroupCachingAgent.groovy │ │ │ │ ├── model │ │ │ │ │ ├── AzureInstance.groovy │ │ │ │ │ ├── AzureServerGroupDescription.groovy │ │ │ │ │ ├── EnableDisableDestroyAzureServerGroupDescription.groovy │ │ │ │ │ └── ResizeAzureServerGroupDescription.java │ │ │ │ ├── ops │ │ │ │ │ ├── AzureServerGroupNameResolver.groovy │ │ │ │ │ ├── CreateAzureServerGroupAtomicOperation.groovy │ │ │ │ │ ├── DestroyAzureServerGroupAtomicOperation.groovy │ │ │ │ │ ├── DisableAzureServerGroupAtomicOperation.groovy │ │ │ │ │ ├── EnableAzureServerGroupAtomicOperation.groovy │ │ │ │ │ ├── ResizeAzureServerGroupAtomicOperation.java │ │ │ │ │ ├── converters │ │ │ │ │ │ ├── CreateAzureServerGroupAtomicOperationConverter.groovy │ │ │ │ │ │ ├── DestroyAzureServerGroupAtomicOperationConverter.groovy │ │ │ │ │ │ ├── DisableAzureServerGroupAtomicOperationConverter.groovy │ │ │ │ │ │ ├── EnableAzureServerGroupAtomicOperationConverter.groovy │ │ │ │ │ │ └── ResizeAzureServerGroupAtomicOperationConverter.java │ │ │ │ │ ├── preprocessors │ │ │ │ │ │ └── RegionsToRegionDescriptionPreProcessor.groovy │ │ │ │ │ └── validators │ │ │ │ │ │ ├── AzureServerGroupDescriptionValidator.groovy │ │ │ │ │ │ ├── DestroyAzureServerGroupDescriptionValidator.groovy │ │ │ │ │ │ ├── DisableAzureServerGroupDescriptionValidator.groovy │ │ │ │ │ │ └── EnableAzureServerGroupDescriptionValidator.groovy │ │ │ │ └── view │ │ │ │ │ └── AzureInstanceProvider.groovy │ │ │ ├── subnet │ │ │ │ ├── cache │ │ │ │ │ └── AzureSubnetCachingAgent.groovy │ │ │ │ ├── model │ │ │ │ │ ├── AzureSubnet.groovy │ │ │ │ │ └── AzureSubnetDescription.groovy │ │ │ │ └── view │ │ │ │ │ └── AzureSubnetProvider.groovy │ │ │ └── vmimage │ │ │ │ ├── cache │ │ │ │ ├── AzureCustomImageCachingAgent.groovy │ │ │ │ └── AzureVMImageCachingAgent.groovy │ │ │ │ ├── model │ │ │ │ ├── AzureCustomImageStorage.groovy │ │ │ │ ├── AzureCustomVMImage.groovy │ │ │ │ ├── AzureNamedImage.groovy │ │ │ │ └── AzureVMImage.groovy │ │ │ │ └── view │ │ │ │ └── AzureVMImageLookupController.groovy │ │ │ ├── security │ │ │ ├── AzureCredentials.groovy │ │ │ ├── AzureCredentialsInitializer.groovy │ │ │ └── AzureNamedAccountCredentials.groovy │ │ │ └── templates │ │ │ ├── AzureAppGatewayResourceTemplate.groovy │ │ │ ├── AzureLoadBalancerResourceTemplate.groovy │ │ │ ├── AzureSecurityGroupResourceTemplate.groovy │ │ │ ├── AzureServerGroupResourceTemplate.groovy │ │ │ └── Resource.groovy │ │ └── config │ │ └── AzureConfiguration.groovy │ └── test │ └── groovy │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── azure │ ├── cache │ └── KeysSpec.groovy │ ├── common │ ├── AzureUtilitiesSpec.groovy │ └── client │ │ └── AzureStorageClientSpec.groovy │ └── resources │ ├── appgateway │ └── deploy │ │ ├── converters │ │ └── UpsertAzureAppGatewayAtomicOperationConverterSpec.groovy │ │ ├── ops │ │ ├── DeleteAzureAppGatewayAtomicOperationSpec.groovy │ │ └── UpsertAzureAppGatewayAtomicOperationSpec.groovy │ │ └── template │ │ └── AzureAppGatewayResourceTemplateSpec.groovy │ ├── loadbalancer │ └── deploy │ │ ├── converters │ │ └── UpsertAzureLoadBalancerAtomicOperationConverterUnitSpec.groovy │ │ ├── ops │ │ ├── DeleteAzureLoadBalancerAtomicOperationUnitSpec.groovy │ │ └── UpsertAzureLoadBalancerAtomicOperationUnitSpec.groovy │ │ ├── templates │ │ └── AzureLoadBalancerResourceTemplateSpec.groovy │ │ └── validators │ │ └── UpsertAzureLoadBalancerDescriptionValidatorSpec.groovy │ ├── network │ └── model │ │ └── AzureVirtualNetworkDescriptionSpec.groovy │ ├── securitygroup │ └── deploy │ │ └── templates │ │ └── AzureSecurityGroupResourceTemplateSpec.groovy │ ├── servergroup │ ├── model │ │ └── AzureInstanceSpec.groovy │ └── ops │ │ └── preprocessors │ │ └── RegionsToRegionDescriptionPreProcessorSpec.groovy │ └── servergroups │ └── deploy │ ├── AzureServerGroupResourceTemplateSpec.groovy │ ├── ops │ └── DestroyAzureServerGroupAtomicOperationSpec.groovy │ └── templates │ └── description │ └── AzureServerGroupDescriptionUnitSpec.groovy ├── clouddriver-cloudfoundry ├── clouddriver-cloudfoundry.gradle └── src │ ├── main │ └── java │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── cloudfoundry │ │ │ ├── CloudFoundryCloudProvider.java │ │ │ ├── CloudFoundryOperation.java │ │ │ ├── artifacts │ │ │ └── CloudFoundryArtifactCredentials.java │ │ │ ├── cache │ │ │ ├── CacheRepository.java │ │ │ ├── Keys.java │ │ │ └── ResourceCacheData.java │ │ │ ├── client │ │ │ ├── Applications.java │ │ │ ├── CloudFoundryApiException.java │ │ │ ├── CloudFoundryClient.java │ │ │ ├── CloudFoundryClientUtils.java │ │ │ ├── Domains.java │ │ │ ├── HttpCloudFoundryClient.java │ │ │ ├── Organizations.java │ │ │ ├── ResourceNotFoundException.java │ │ │ ├── Routes.java │ │ │ ├── ServiceInstances.java │ │ │ ├── ServiceKeys.java │ │ │ ├── Spaces.java │ │ │ ├── api │ │ │ │ ├── ApplicationService.java │ │ │ │ ├── AuthenticationService.java │ │ │ │ ├── ConfigService.java │ │ │ │ ├── DomainService.java │ │ │ │ ├── OrganizationService.java │ │ │ │ ├── RouteService.java │ │ │ │ ├── ServiceInstanceService.java │ │ │ │ ├── ServiceKeyService.java │ │ │ │ └── SpaceService.java │ │ │ └── model │ │ │ │ ├── ErrorDescription.java │ │ │ │ ├── RouteId.java │ │ │ │ ├── ServiceInstanceResponse.java │ │ │ │ ├── ServiceKeyResponse.java │ │ │ │ ├── Token.java │ │ │ │ ├── v2 │ │ │ │ ├── AbstractCreateServiceInstance.java │ │ │ │ ├── AbstractServiceInstance.java │ │ │ │ ├── Application.java │ │ │ │ ├── ApplicationEnv.java │ │ │ │ ├── ConfigFeatureFlag.java │ │ │ │ ├── CreateServiceBinding.java │ │ │ │ ├── CreateServiceInstance.java │ │ │ │ ├── CreateServiceKey.java │ │ │ │ ├── CreateUserProvidedServiceInstance.java │ │ │ │ ├── Domain.java │ │ │ │ ├── InstanceStatus.java │ │ │ │ ├── LastOperation.java │ │ │ │ ├── MapRoute.java │ │ │ │ ├── Organization.java │ │ │ │ ├── Page.java │ │ │ │ ├── Resource.java │ │ │ │ ├── Route.java │ │ │ │ ├── RouteMapping.java │ │ │ │ ├── Service.java │ │ │ │ ├── ServiceBinding.java │ │ │ │ ├── ServiceCredentials.java │ │ │ │ ├── ServiceInstance.java │ │ │ │ ├── ServiceKey.java │ │ │ │ ├── ServicePlan.java │ │ │ │ ├── SharedTo.java │ │ │ │ ├── Space.java │ │ │ │ ├── SpaceSummary.java │ │ │ │ ├── SummaryServiceInstance.java │ │ │ │ └── UserProvidedServiceInstance.java │ │ │ │ └── v3 │ │ │ │ ├── Application.java │ │ │ │ ├── Build.java │ │ │ │ ├── Buildpack.java │ │ │ │ ├── CreateApplication.java │ │ │ │ ├── CreateBuild.java │ │ │ │ ├── CreatePackage.java │ │ │ │ ├── CreateSharedServiceInstances.java │ │ │ │ ├── Droplet.java │ │ │ │ ├── Link.java │ │ │ │ ├── Package.java │ │ │ │ ├── PackageChecksum.java │ │ │ │ ├── PackageData.java │ │ │ │ ├── Pagination.java │ │ │ │ ├── Process.java │ │ │ │ ├── ProcessResources.java │ │ │ │ ├── ProcessStats.java │ │ │ │ ├── Relationship.java │ │ │ │ ├── ScaleApplication.java │ │ │ │ ├── StartApplication.java │ │ │ │ ├── StopApplication.java │ │ │ │ ├── ToOneRelationship.java │ │ │ │ └── UpdateProcess.java │ │ │ ├── config │ │ │ └── CloudFoundryConfigurationProperties.java │ │ │ ├── controller │ │ │ └── CloudFoundryImageController.java │ │ │ ├── deploy │ │ │ ├── CloudFoundryServerGroupNameResolver.java │ │ │ ├── converters │ │ │ │ ├── AbstractCloudFoundryAtomicOperationConverter.java │ │ │ │ ├── AbstractCloudFoundryServerGroupAtomicOperationConverter.java │ │ │ │ ├── AbstractLoadBalancersAtomicOperationConverter.java │ │ │ │ ├── CloneCloudFoundryServerGroupAtomicOperationConverter.java │ │ │ │ ├── CreateCloudFoundryServiceKeyAtomicOperationConverter.java │ │ │ │ ├── DeleteCloudFoundryLoadBalancerAtomicOperationConverter.java │ │ │ │ ├── DeleteCloudFoundryServiceKeyAtomicOperationConverter.java │ │ │ │ ├── DeployCloudFoundryServerGroupAtomicOperationConverter.java │ │ │ │ ├── DeployCloudFoundryServiceAtomicOperationConverter.java │ │ │ │ ├── DestroyCloudFoundryServerGroupAtomicOperationConverter.java │ │ │ │ ├── DestroyCloudFoundryServiceAtomicOperationConverter.java │ │ │ │ ├── MapLoadBalancersAtomicOperationConverter.java │ │ │ │ ├── ScaleCloudFoundryServerGroupAtomicOperationConverter.java │ │ │ │ ├── ShareCloudFoundryServiceAtomicOperationConverter.java │ │ │ │ ├── StartCloudFoundryServerGroupAtomicOperationConverter.java │ │ │ │ ├── StopCloudFoundryServerGroupAtomicOperationConverter.java │ │ │ │ ├── TerminateCloudFoundryInstancesAtomicOperationConverter.java │ │ │ │ ├── UnmapLoadBalancersAtomicOperationConverter.java │ │ │ │ ├── UnshareCloudFoundryServiceAtomicOperationConverter.java │ │ │ │ └── UpsertCloudFoundryLoadBalancerAtomicOperationConverter.java │ │ │ ├── description │ │ │ │ ├── AbstractCloudFoundryDescription.java │ │ │ │ ├── AbstractCloudFoundryLoadBalancerDescription.java │ │ │ │ ├── AbstractCloudFoundryServerGroupDescription.java │ │ │ │ ├── AbstractCloudFoundryServiceDescription.java │ │ │ │ ├── CreateCloudFoundryServiceKeyDescription.java │ │ │ │ ├── DeleteCloudFoundryLoadBalancerDescription.java │ │ │ │ ├── DeleteCloudFoundryServiceKeyDescription.java │ │ │ │ ├── DeployCloudFoundryServerGroupDescription.java │ │ │ │ ├── DeployCloudFoundryServiceDescription.java │ │ │ │ ├── DestroyCloudFoundryServerGroupDescription.java │ │ │ │ ├── DestroyCloudFoundryServiceDescription.java │ │ │ │ ├── LoadBalancersDescription.java │ │ │ │ ├── ScaleCloudFoundryServerGroupDescription.java │ │ │ │ ├── ShareCloudFoundryServiceDescription.java │ │ │ │ ├── StartCloudFoundryServerGroupDescription.java │ │ │ │ ├── StopCloudFoundryServerGroupDescription.java │ │ │ │ ├── TerminateCloudFoundryInstancesDescription.java │ │ │ │ ├── UnshareCloudFoundryServiceDescription.java │ │ │ │ └── UpsertCloudFoundryLoadBalancerDescription.java │ │ │ └── ops │ │ │ │ ├── AbstractCloudFoundryLoadBalancerMappingOperation.java │ │ │ │ ├── CloudFoundryOperationUtils.java │ │ │ │ ├── CreateCloudFoundryServiceKeyAtomicOperation.java │ │ │ │ ├── DeleteCloudFoundryLoadBalancerAtomicOperation.java │ │ │ │ ├── DeleteCloudFoundryServiceKeyAtomicOperation.java │ │ │ │ ├── DeployCloudFoundryServerGroupAtomicOperation.java │ │ │ │ ├── DeployCloudFoundryServiceAtomicOperation.java │ │ │ │ ├── DestroyCloudFoundryServerGroupAtomicOperation.java │ │ │ │ ├── DestroyCloudFoundryServiceAtomicOperation.java │ │ │ │ ├── MapLoadBalancersAtomicOperation.java │ │ │ │ ├── ScaleCloudFoundryServerGroupAtomicOperation.java │ │ │ │ ├── ShareCloudFoundryServiceAtomicOperation.java │ │ │ │ ├── StartCloudFoundryServerGroupAtomicOperation.java │ │ │ │ ├── StopCloudFoundryServerGroupAtomicOperation.java │ │ │ │ ├── TerminateCloudFoundryInstancesAtomicOperation.java │ │ │ │ ├── UnmapLoadBalancersAtomicOperation.java │ │ │ │ ├── UnshareCloudFoundryServiceAtomicOperation.java │ │ │ │ └── UpsertCloudFoundryLoadBalancerAtomicOperation.java │ │ │ ├── model │ │ │ ├── CloudFoundryApplication.java │ │ │ ├── CloudFoundryBuildpack.java │ │ │ ├── CloudFoundryCluster.java │ │ │ ├── CloudFoundryDomain.java │ │ │ ├── CloudFoundryDroplet.java │ │ │ ├── CloudFoundryImage.java │ │ │ ├── CloudFoundryInstance.java │ │ │ ├── CloudFoundryLoadBalancer.java │ │ │ ├── CloudFoundryModel.java │ │ │ ├── CloudFoundryOrganization.java │ │ │ ├── CloudFoundryPackage.java │ │ │ ├── CloudFoundryServerGroup.java │ │ │ ├── CloudFoundryService.java │ │ │ ├── CloudFoundryServiceInstance.java │ │ │ ├── CloudFoundryServicePlan.java │ │ │ ├── CloudFoundrySpace.java │ │ │ └── Views.java │ │ │ ├── provider │ │ │ ├── CloudFoundryProvider.java │ │ │ ├── agent │ │ │ │ └── CloudFoundryCachingAgent.java │ │ │ ├── config │ │ │ │ └── CloudFoundryProviderConfig.java │ │ │ └── view │ │ │ │ ├── CloudFoundryApplicationProvider.java │ │ │ │ ├── CloudFoundryClusterProvider.java │ │ │ │ ├── CloudFoundryInstanceProvider.java │ │ │ │ ├── CloudFoundryLoadBalancerProvider.java │ │ │ │ └── CloudFoundryServiceProvider.java │ │ │ └── security │ │ │ ├── CloudFoundryCredentials.java │ │ │ └── CloudFoundryCredentialsInitializer.java │ │ └── config │ │ └── CloudFoundryConfiguration.java │ └── test │ └── java │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── cloudfoundry │ ├── artifacts │ └── ArtifactCredentialsFromString.java │ ├── cache │ └── CacheRepositoryTest.java │ ├── client │ ├── ApplicationsTest.java │ ├── CloudFoundryApiExceptionTest.java │ ├── CloudFoundryClientUtilsTest.java │ ├── HttpCloudFoundryClientTest.java │ ├── MockCloudFoundryClient.java │ ├── RoutesTest.java │ ├── ServiceInstancesTest.java │ ├── ServiceKeysTest.java │ ├── SpacesTest.java │ └── model │ │ ├── ErrorCodeTest.java │ │ ├── v2 │ │ └── RouteTest.java │ │ └── v3 │ │ ├── CreateApplicationTest.java │ │ ├── CreateBuildTest.java │ │ └── LinkTest.java │ ├── deploy │ ├── converters │ │ ├── AbstractCloudFoundryAtomicOperationConverterTest.java │ │ ├── AbstractCloudFoundryServerGroupAtomicOperationConverterTest.java │ │ ├── AbstractLoadBalancersAtomicOperationConverterTest.java │ │ ├── CreateCloudFoundryServiceKeyAtomicOperationConverterTest.java │ │ ├── DeleteCloudFoundryServiceKeyAtomicOperationConverterTest.java │ │ ├── DeployCloudFoundryServerGroupAtomicOperationConverterTest.java │ │ ├── DeployCloudFoundryServiceAtomicOperationConverterTest.java │ │ ├── DestroyCloudFoundryServerGroupAtomicOperationConverterTest.java │ │ └── ScaleCloudFoundryServerGroupAtomicOperationConverterTest.java │ └── ops │ │ ├── AbstractCloudFoundryAtomicOperationTest.java │ │ ├── AbstractCloudFoundryLoadBalancerMappingOperationTest.java │ │ ├── CreateCloudFoundryServiceKeyAtomicOperationTest.java │ │ ├── DeleteCloudFoundryLoadBalancerAtomicOperationTest.java │ │ ├── DeleteCloudFoundryServiceKeyAtomicOperationTest.java │ │ ├── DeployCloudFoundryServerGroupAtomicOperationTest.java │ │ ├── DeployCloudFoundryServiceAtomicOperationTest.java │ │ ├── DestroyCloudFoundryServiceAtomicOperationTest.java │ │ ├── PassThroughOperationPoller.java │ │ ├── ScaleCloudFoundryServerGroupAtomicOperationTest.java │ │ ├── ShareCloudFoundryServiceAtomicOperationTest.java │ │ ├── StartCloudFoundryServerGroupAtomicOperationTest.java │ │ ├── StopCloudFoundryServerGroupAtomicOperationTest.java │ │ ├── TerminateCloudFoundryServerGroupAtomicOperationTest.java │ │ ├── UnmapLoadBalancersAtomicOperationTest.java │ │ ├── UnshareCloudFoundryServiceAtomicOperationTest.java │ │ └── UpsertCloudFoundryLoadBalancerAtomicOperationTest.java │ ├── model │ ├── CloudFoundryApplicationTest.java │ ├── CloudFoundryClusterTest.java │ ├── CloudFoundryLoadBalancerTest.java │ └── CloudFoundrySpaceTest.java │ └── utils │ └── TestUtils.java ├── clouddriver-consul ├── clouddriver-consul.gradle └── src │ └── main │ └── groovy │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── consul │ ├── api │ └── v1 │ │ ├── Consul.groovy │ │ ├── ConsulAgent.groovy │ │ ├── ConsulCatalog.groovy │ │ ├── ConsulKeyValueStore.groovy │ │ ├── model │ │ ├── AgentDefinition.groovy │ │ ├── CheckDefinition.groovy │ │ ├── CheckResult.groovy │ │ ├── KeyValuePair.groovy │ │ ├── NodeDefinition.groovy │ │ ├── ServiceDefinition.groovy │ │ └── ServiceResult.groovy │ │ └── services │ │ ├── AgentApi.groovy │ │ ├── CatalogApi.groovy │ │ └── KeyValueApi.groovy │ ├── config │ └── ConsulConfig.groovy │ ├── deploy │ ├── description │ │ └── ConsulLoadBalancerDescription.groovy │ └── ops │ │ ├── EnableDisableConsulInstance.groovy │ │ ├── RegisterConsulInstance.groovy │ │ └── UpsertConsulLoadBalancer.groovy │ ├── model │ ├── ConsulHealth.groovy │ ├── ConsulNode.groovy │ └── ConsulService.groovy │ └── provider │ └── ConsulProviderUtils.groovy ├── clouddriver-core-tck ├── clouddriver-core-tck.gradle └── src │ └── main │ └── java │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── core │ └── test │ └── TaskRepositoryTck.java ├── clouddriver-core ├── clouddriver-core.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ ├── cache │ │ ├── AgentSchedulerConfig.java │ │ ├── CacheConfig.groovy │ │ ├── CatsInMemorySearchProperties.java │ │ ├── CatsOnDemandCacheUpdater.groovy │ │ ├── CatsSearchProvider.groovy │ │ ├── CustomSchedulableAgentIntervalProvider.groovy │ │ ├── CustomScheduledAgent.java │ │ ├── DynomiteCacheConfig.groovy │ │ ├── DynomiteConfigurationProperties.groovy │ │ ├── EurekaStatusNodeStatusProvider.groovy │ │ ├── GZipCompressionStrategyProperties.java │ │ ├── JedisCacheConfig.groovy │ │ ├── KeyParser.java │ │ ├── KeyProcessor.java │ │ ├── LoggingInstrumentation.groovy │ │ ├── MetricInstrumentation.groovy │ │ ├── NoopOnDemandCacheUpdater.groovy │ │ ├── NoopSearchableProvider.java │ │ ├── OnDemandAgent.java │ │ ├── OnDemandCacheUpdater.groovy │ │ ├── OnDemandMetricsSupport.groovy │ │ ├── RedisCacheConfig.groovy │ │ ├── SearchableProvider.java │ │ ├── SpectatorDynomiteCacheMetrics.java │ │ └── SpectatorRedisCacheMetrics.groovy │ │ ├── config │ │ ├── CloudDriverConfig.groovy │ │ ├── DeployConfiguration.groovy │ │ ├── DualTaskRepositoryConfiguration.java │ │ ├── LocalJobConfig.java │ │ ├── ProjectClustersCachingAgentProperties.java │ │ └── RetrofitConfig.groovy │ │ ├── core │ │ ├── AlwaysUpHealthIndicator.java │ │ ├── CloudProvider.groovy │ │ ├── ClouddriverHostname.java │ │ ├── DynomiteConfig.groovy │ │ ├── Front50ConfigurationProperties.groovy │ │ ├── NoopAtomicOperationConverter.groovy │ │ ├── NoopCloudProvider.groovy │ │ ├── ProjectClustersService.java │ │ ├── RedisConfig.groovy │ │ ├── RedisConfigurationProperties.groovy │ │ ├── agent │ │ │ ├── CleanupPendingOnDemandCachesAgent.java │ │ │ └── ProjectClustersCachingAgent.java │ │ ├── limits │ │ │ ├── ImplementationLimits.java │ │ │ ├── ServiceLimitConfiguration.java │ │ │ ├── ServiceLimitConfigurationBuilder.java │ │ │ └── ServiceLimits.java │ │ ├── provider │ │ │ ├── CoreProvider.groovy │ │ │ └── agent │ │ │ │ ├── ExternalHealthProvider.groovy │ │ │ │ ├── HealthProvidingCachingAgent.groovy │ │ │ │ └── Namespace.groovy │ │ └── services │ │ │ └── Front50Service.groovy │ │ ├── data │ │ └── task │ │ │ ├── DefaultTask.groovy │ │ │ ├── DualTaskRepository.java │ │ │ ├── InMemoryTaskRepository.groovy │ │ │ ├── Status.groovy │ │ │ ├── Task.groovy │ │ │ ├── TaskRepository.groovy │ │ │ ├── TaskState.groovy │ │ │ └── jedis │ │ │ ├── JedisTask.groovy │ │ │ └── RedisTaskRepository.java │ │ ├── deploy │ │ ├── DefaultDeployHandlerRegistry.groovy │ │ ├── DeployAtomicOperation.groovy │ │ ├── DeployDescription.java │ │ ├── DeployHandler.java │ │ ├── DeployHandlerNotFoundException.groovy │ │ ├── DeployHandlerRegistry.groovy │ │ ├── DeploymentResult.groovy │ │ ├── DescriptionAuthorizer.java │ │ ├── DescriptionValidationErrors.groovy │ │ ├── DescriptionValidationException.groovy │ │ ├── DescriptionValidator.groovy │ │ ├── NullOpDeployHandler.groovy │ │ └── description │ │ │ └── EnableDisableDescriptionTrait.groovy │ │ ├── documentation │ │ ├── Empty.groovy │ │ └── Nullable.groovy │ │ ├── exceptions │ │ ├── CloudProviderNotFoundException.groovy │ │ └── OperationTimedOutException.groovy │ │ ├── helpers │ │ ├── AbstractServerGroupNameResolver.groovy │ │ ├── EnableDisablePercentageCategorizer.groovy │ │ └── OperationPoller.groovy │ │ ├── jobs │ │ ├── JobExecutor.java │ │ ├── JobRequest.java │ │ ├── JobResult.java │ │ └── local │ │ │ ├── JobExecutorLocal.java │ │ │ └── ReaderConsumer.java │ │ ├── metrics │ │ └── TimedCallable.groovy │ │ ├── model │ │ ├── AddressableRange.groovy │ │ ├── Application.groovy │ │ ├── ApplicationProvider.groovy │ │ ├── ArtifactProvider.java │ │ ├── CachingAgentScheduler.groovy │ │ ├── Certificate.groovy │ │ ├── CertificateProvider.groovy │ │ ├── CloudMetricDatapoint.groovy │ │ ├── CloudMetricDescriptor.groovy │ │ ├── CloudMetricProvider.groovy │ │ ├── CloudMetricStatistics.groovy │ │ ├── Cluster.java │ │ ├── ClusterProvider.java │ │ ├── ContainerLog.java │ │ ├── DataProvider.java │ │ ├── DiscoveryHealth.groovy │ │ ├── ElasticIp.groovy │ │ ├── ElasticIpProvider.groovy │ │ ├── EntityTags.groovy │ │ ├── EntityTagsProvider.java │ │ ├── Function.java │ │ ├── FunctionProvider.java │ │ ├── Health.groovy │ │ ├── HealthState.groovy │ │ ├── Image.java │ │ ├── ImageProvider.java │ │ ├── Instance.java │ │ ├── InstanceProvider.groovy │ │ ├── InstanceType.groovy │ │ ├── InstanceTypeProvider.groovy │ │ ├── JobProvider.groovy │ │ ├── JobState.groovy │ │ ├── JobStatus.groovy │ │ ├── KeyPair.groovy │ │ ├── KeyPairProvider.groovy │ │ ├── LoadBalancer.java │ │ ├── LoadBalancerInstance.java │ │ ├── LoadBalancerProvider.java │ │ ├── LoadBalancerServerGroup.java │ │ ├── Manifest.java │ │ ├── ManifestProvider.java │ │ ├── Network.groovy │ │ ├── NetworkProvider.groovy │ │ ├── NoopApplicationProvider.groovy │ │ ├── NoopCloudMetricProvider.groovy │ │ ├── NoopClusterProvider.groovy │ │ ├── NoopElasticIpProvider.groovy │ │ ├── NoopImageProvider.java │ │ ├── NoopInstanceProvider.groovy │ │ ├── NoopInstanceTypeProvider.groovy │ │ ├── NoopKeyPairProvider.groovy │ │ ├── NoopLoadBalancerProvider.groovy │ │ ├── NoopManifestProvider.java │ │ ├── NoopNetworkProvider.groovy │ │ ├── NoopReservationReportProvider.groovy │ │ ├── NoopSecurityGroupProvider.groovy │ │ ├── NoopServerGroupManagerProvider.java │ │ ├── NoopSubnetProvider.groovy │ │ ├── NullCollectionSerializer.groovy │ │ ├── ReservationReport.groovy │ │ ├── ReservationReportProvider.groovy │ │ ├── SecurityGroup.java │ │ ├── SecurityGroupProvider.groovy │ │ ├── SecurityGroupSummary.java │ │ ├── ServerGroup.java │ │ ├── ServerGroupManager.java │ │ ├── ServerGroupManagerProvider.java │ │ ├── ServerGroupProvider.java │ │ ├── ServerGroupSummary.java │ │ ├── Service.java │ │ ├── ServiceInstance.java │ │ ├── ServicePlan.java │ │ ├── ServiceProvider.java │ │ ├── Subnet.groovy │ │ ├── SubnetProvider.groovy │ │ ├── Summary.groovy │ │ ├── TargetServerGroup.groovy │ │ ├── securitygroups │ │ │ ├── HttpRule.groovy │ │ │ ├── IpRangeRule.groovy │ │ │ ├── Rule.java │ │ │ └── SecurityGroupRule.java │ │ └── view │ │ │ └── ServerGroupViewModelPostProcessor.java │ │ ├── names │ │ ├── NamerRegistry.java │ │ └── NamingStrategy.java │ │ ├── orchestration │ │ ├── AnnotationsBasedAtomicOperationsRegistry.groovy │ │ ├── ApplicationContextAtomicOperationsRegistry.groovy │ │ ├── AtomicOperation.java │ │ ├── AtomicOperationConverter.groovy │ │ ├── AtomicOperationConverterNotFoundException.groovy │ │ ├── AtomicOperationDescriptionPreProcessor.java │ │ ├── AtomicOperationException.groovy │ │ ├── AtomicOperationNotFoundException.groovy │ │ ├── AtomicOperations.java │ │ ├── AtomicOperationsRegistry.groovy │ │ ├── DefaultOrchestrationProcessor.groovy │ │ ├── OrchestrationProcessor.groovy │ │ ├── VersionedCloudProviderOperation.groovy │ │ ├── VersionedOperationHelper.java │ │ └── events │ │ │ ├── CreateServerGroupEvent.java │ │ │ ├── DeleteServerGroupEvent.java │ │ │ ├── OperationEvent.java │ │ │ └── OperationEventHandler.java │ │ ├── search │ │ ├── ApplicationSearchProvider.groovy │ │ ├── NoopSearchProvider.groovy │ │ ├── ProjectSearchProvider.groovy │ │ ├── SearchProvider.java │ │ ├── SearchQueryCommand.java │ │ ├── SearchResultSet.java │ │ └── executor │ │ │ ├── SearchExecutor.java │ │ │ ├── SearchExecutorConfig.java │ │ │ └── SearchExecutorConfigProperties.java │ │ ├── security │ │ └── AbstractAtomicOperationsCredentialsSupport.groovy │ │ └── tags │ │ └── EntityTagger.groovy │ └── test │ ├── groovy │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ ├── cache │ │ └── CatsSearchProviderSpec.groovy │ │ ├── core │ │ ├── ProjectClustersServiceSpec.groovy │ │ ├── agent │ │ │ └── CleanupPendingOnDemandCachesAgentSpec.groovy │ │ └── limits │ │ │ └── ServiceLimitConfigurationSpec.groovy │ │ ├── data │ │ └── task │ │ │ ├── DefaultTaskSpec.groovy │ │ │ ├── DualTaskRepositorySpec.groovy │ │ │ └── jedis │ │ │ ├── JedisTaskSpec.groovy │ │ │ └── RedisTaskRepositorySpec.groovy │ │ ├── deploy │ │ ├── DeployAtomicOperationUnitSpec.groovy │ │ ├── DeploymentResultSpec.groovy │ │ └── DescriptionAuthorizerSpec.groovy │ │ ├── helpers │ │ ├── AbstractServerGroupNameResolverSpec.groovy │ │ ├── EnableDisablePercentageCategorizerSpec.groovy │ │ └── OperationPollerSpec.groovy │ │ └── orchestration │ │ ├── AnnotationsBasedAtomicOperationsRegistrySpec.groovy │ │ ├── DefaultOrchestrationProcessorSpec.groovy │ │ └── TestProviderOperation.groovy │ └── java │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── data │ └── task │ ├── InMemoryTaskRepositoryTest.java │ └── jedis │ └── RedisTaskRepositoryTest.java ├── clouddriver-dcos ├── clouddriver-dcos.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── dcos │ │ │ ├── DcosClientCompositeKey.groovy │ │ │ ├── DcosClientProvider.groovy │ │ │ ├── DcosCloudProvider.groovy │ │ │ ├── DcosConfigurationProperties.groovy │ │ │ ├── DcosOperation.groovy │ │ │ ├── DcosSpectatorHandler.groovy │ │ │ ├── cache │ │ │ └── Keys.groovy │ │ │ ├── deploy │ │ │ ├── DcosServerGroupNameResolver.groovy │ │ │ ├── converters │ │ │ │ ├── DcosAtomicOperationConverterHelper.groovy │ │ │ │ ├── instances │ │ │ │ │ ├── TerminateDcosInstancesAndDecrementAtomicOperationConverter.groovy │ │ │ │ │ └── TerminateDcosInstancesAtomicOperationConverter.groovy │ │ │ │ ├── job │ │ │ │ │ └── RunDcosJobAtomicOperationConverter.groovy │ │ │ │ ├── loadbalancer │ │ │ │ │ ├── DeleteDcosLoadBalancerAtomicOperationConverter.groovy │ │ │ │ │ └── UpsertDcosLoadBalancerAtomicOperationConverter.groovy │ │ │ │ └── servergroup │ │ │ │ │ ├── CloneDcosServerGroupAtomicOperationConverter.groovy │ │ │ │ │ ├── DeployDcosServerGroupAtomicOperationConverter.groovy │ │ │ │ │ ├── DestroyDcosServerGroupAtomicOperationConverter.groovy │ │ │ │ │ ├── DisableDcosServerGroupAtomicOperationConverter.groovy │ │ │ │ │ └── ResizeDcosServerGroupAtomicOperationConverter.groovy │ │ │ ├── description │ │ │ │ ├── AbstractDcosCredentialsDescription.groovy │ │ │ │ ├── instance │ │ │ │ │ ├── TerminateDcosInstancesAndDecrementDescription.groovy │ │ │ │ │ └── TerminateDcosInstancesDescription.groovy │ │ │ │ ├── job │ │ │ │ │ └── RunDcosJobDescription.groovy │ │ │ │ ├── loadbalancer │ │ │ │ │ ├── DeleteDcosLoadBalancerAtomicOperationDescription.groovy │ │ │ │ │ └── UpsertDcosLoadBalancerAtomicOperationDescription.groovy │ │ │ │ └── servergroup │ │ │ │ │ ├── AbstractDcosServerGroupDescription.groovy │ │ │ │ │ ├── CloneDcosServerGroupDescription.groovy │ │ │ │ │ ├── DeployDcosServerGroupDescription.groovy │ │ │ │ │ ├── DestroyDcosServerGroupDescription.groovy │ │ │ │ │ ├── DisableDcosServerGroupDescription.groovy │ │ │ │ │ └── ResizeDcosServerGroupDescription.groovy │ │ │ ├── ops │ │ │ │ ├── instance │ │ │ │ │ ├── TerminateDcosInstancesAndDecrementAtomicOperation.groovy │ │ │ │ │ └── TerminateDcosInstancesAtomicOperation.groovy │ │ │ │ ├── job │ │ │ │ │ └── RunDcosJobAtomicOperation.groovy │ │ │ │ ├── loadbalancer │ │ │ │ │ ├── DeleteDcosLoadBalancerAtomicOperation.groovy │ │ │ │ │ └── UpsertDcosLoadBalancerAtomicOperation.groovy │ │ │ │ └── servergroup │ │ │ │ │ ├── CloneDcosServerGroupAtomicOperation.groovy │ │ │ │ │ ├── DeployDcosServerGroupAtomicOperation.groovy │ │ │ │ │ ├── DestroyDcosServerGroupAtomicOperation.groovy │ │ │ │ │ ├── DisableDcosServerGroupAtomicOperation.groovy │ │ │ │ │ └── ResizeDcosServerGroupAtomicOperation.groovy │ │ │ ├── util │ │ │ │ ├── MarathonVolumeDeserializer.groovy │ │ │ │ ├── id │ │ │ │ │ ├── DcosSpinnakerAppId.groovy │ │ │ │ │ ├── DcosSpinnakerJobId.groovy │ │ │ │ │ ├── DcosSpinnakerLbId.groovy │ │ │ │ │ └── MarathonPathId.groovy │ │ │ │ ├── mapper │ │ │ │ │ ├── AppToDeployDcosServerGroupDescriptionMapper.groovy │ │ │ │ │ └── DeployDcosServerGroupDescriptionToAppMapper.groovy │ │ │ │ └── monitor │ │ │ │ │ ├── DcosDeploymentMonitor.groovy │ │ │ │ │ ├── EventBasedDcosDeploymentMonitor.groovy │ │ │ │ │ └── PollingDcosDeploymentMonitor.groovy │ │ │ └── validators │ │ │ │ ├── AbstractDcosDescriptionValidatorSupport.groovy │ │ │ │ ├── instance │ │ │ │ ├── TerminateDcosInstanceAndDecrementDescriptionValidator.groovy │ │ │ │ └── TerminateDcosInstanceDescriptionValidator.groovy │ │ │ │ ├── job │ │ │ │ └── RunDcosJobDescriptionValidator.groovy │ │ │ │ ├── loadbalancer │ │ │ │ ├── DeleteDcosLoadBalancerAtomicOperationDescriptionValidator.groovy │ │ │ │ └── UpsertDcosLoadBalancerAtomicOperationDescriptionValidator.groovy │ │ │ │ └── servergroup │ │ │ │ ├── AbstractDcosServerGroupValidator.groovy │ │ │ │ ├── DeployDcosServerGroupDescriptionValidator.groovy │ │ │ │ ├── DestroyDcosServerGroupDescriptionValidator.groovy │ │ │ │ ├── DisableDcosServerGroupDescriptionValidator.groovy │ │ │ │ └── ResizeDcosServerGroupDescriptionValidator.groovy │ │ │ ├── exception │ │ │ └── DcosOperationException.groovy │ │ │ ├── health │ │ │ └── DcosHealthIndicator.groovy │ │ │ ├── model │ │ │ ├── DcosApplication.groovy │ │ │ ├── DcosCluster.groovy │ │ │ ├── DcosInstance.groovy │ │ │ ├── DcosJobStatus.groovy │ │ │ ├── DcosLoadBalancer.groovy │ │ │ ├── DcosServerGroup.groovy │ │ │ └── DockerImage.groovy │ │ │ ├── provider │ │ │ ├── DcosProvider.groovy │ │ │ ├── DcosProviderUtils.groovy │ │ │ ├── MutableCacheData.groovy │ │ │ ├── agent │ │ │ │ ├── DcosClusterAware.java │ │ │ │ ├── DcosLoadBalancerCachingAgent.groovy │ │ │ │ ├── DcosSecretsCachingAgent.groovy │ │ │ │ └── DcosServerGroupCachingAgent.groovy │ │ │ ├── config │ │ │ │ └── DcosProviderConfig.groovy │ │ │ └── view │ │ │ │ ├── DcosApplicationProvider.groovy │ │ │ │ ├── DcosClusterProvider.groovy │ │ │ │ ├── DcosInstanceProvider.groovy │ │ │ │ ├── DcosJobProvider.groovy │ │ │ │ └── DcosLoadBalancerProvider.groovy │ │ │ └── security │ │ │ ├── DcosAccountCredentials.groovy │ │ │ ├── DcosClusterCredentials.groovy │ │ │ ├── DcosCredentialMap.groovy │ │ │ └── DcosCredentialsInitializer.groovy │ │ └── config │ │ └── DcosConfiguration.groovy │ └── test │ ├── groovy │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ └── dcos │ │ ├── DcosConfigurationPropertiesSpec.groovy │ │ ├── deploy │ │ ├── BaseSpecification.groovy │ │ ├── converters │ │ │ ├── instance │ │ │ │ ├── TerminateDcosInstancesAndDecrementAtomicOperationConverterSpec.groovy │ │ │ │ └── TerminateDcosInstancesAtomicOperationConverterSpec.groovy │ │ │ ├── job │ │ │ │ └── RunDcosJobAtomicOperationConverterSpec.groovy │ │ │ ├── loadbalancer │ │ │ │ ├── DeleteDcosLoadBalancerAtomicOperationConverterSpec.groovy │ │ │ │ └── UpsertDcosLoadBalancerAtomicOperationConverterSpec.groovy │ │ │ └── servergroup │ │ │ │ ├── DeployDcosServerGroupAtomicOperationConverterSpec.groovy │ │ │ │ ├── DestroyDcosServerGroupAtomicOperationConverterSpec.groovy │ │ │ │ └── ResizeDcosServerGroupAtomicOperationConverterSpec.groovy │ │ ├── ops │ │ │ ├── instance │ │ │ │ ├── TerminateDcosInstancesAndDecrementAtomicOperationSpec.groovy │ │ │ │ └── TerminateDcosInstancesAtomicOperationSpec.groovy │ │ │ ├── job │ │ │ │ └── RunDcosJobAtomicOperationSpec.groovy │ │ │ ├── loadbalancer │ │ │ │ ├── DeleteDcosLoadBalancerAtomicOperationSpec.groovy │ │ │ │ └── UpsertDcosLoadBalancerAtomicOperationSpec.groovy │ │ │ └── servergroup │ │ │ │ ├── DeployDcosServerGroupAtomicOperationSpec.groovy │ │ │ │ ├── DestroyDcosServerGroupAtomicOperationSpec.groovy │ │ │ │ └── ResizeDcosServerGroupAtomicOperationSpec.groovy │ │ ├── util │ │ │ ├── id │ │ │ │ ├── DcosSpinnakerAppIdSpec.groovy │ │ │ │ ├── DcosSpinnakerLbIdSpec.groovy │ │ │ │ └── MarathonPathIdSpec.groovy │ │ │ └── mapper │ │ │ │ ├── AppToDeployDcosServerGroupDescriptionMapperSpec.groovy │ │ │ │ └── DeployDcosServerGroupDescriptionToAppMapperSpec.groovy │ │ └── validators │ │ │ ├── instance │ │ │ ├── TerminateDcosInstanceAndDecrementDescriptionValidatorSpec.groovy │ │ │ └── TerminateDcosInstanceDescriptionValidatorSpec.groovy │ │ │ ├── job │ │ │ └── RunDcosJobValidatorSpec.groovy │ │ │ ├── loadbalancer │ │ │ ├── DeleteDcosLoadBalancerAtomicOperationDescriptionValidatorSpec.groovy │ │ │ └── UpsertDcosLoadBalancerAtomicOperationDescriptionValidatorSpec.groovy │ │ │ └── servergroup │ │ │ ├── DeployDcosServerGroupDescriptionValidatorSpec.groovy │ │ │ ├── DestroyDcosServerGroupDescriptionValidatorSpec.groovy │ │ │ ├── DisableDcosServerGroupDescriptionValidatorSpec.groovy │ │ │ └── ResizeDcosServerGroupDescriptionValidatorSpec.groovy │ │ ├── model │ │ ├── DcosLoadBalancerSpec.groovy │ │ └── DcosServerGroupSpec.groovy │ │ └── provider │ │ └── agent │ │ ├── DcosLoadBalancerCachingAgentSpec.groovy │ │ ├── DcosSecretsCachingAgentSpec.groovy │ │ └── DcosServerGroupCachingAgentSpec.groovy │ └── resources │ ├── badTestKey1 │ ├── badTestKey2 │ └── testKey ├── clouddriver-docker ├── clouddriver-docker.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── docker │ │ │ └── registry │ │ │ ├── DockerRegistryCloudProvider.groovy │ │ │ ├── api │ │ │ └── v2 │ │ │ │ ├── DockerUserAgent.java │ │ │ │ ├── auth │ │ │ │ ├── DockerBearerToken.groovy │ │ │ │ └── DockerBearerTokenService.groovy │ │ │ │ ├── client │ │ │ │ ├── DefaultDockerOkClientProvider.java │ │ │ │ ├── DockerOkClientProvider.java │ │ │ │ ├── DockerRegistryClient.groovy │ │ │ │ └── DockerRegistryResources.groovy │ │ │ │ └── exception │ │ │ │ ├── DockerRegistryAuthenticationException.groovy │ │ │ │ └── DockerRegistryOperationException.groovy │ │ │ ├── cache │ │ │ ├── DefaultCacheDataBuilder.groovy │ │ │ └── Keys.groovy │ │ │ ├── config │ │ │ └── DockerRegistryConfigurationProperties.groovy │ │ │ ├── controllers │ │ │ └── DockerRegistryImageLookupController.groovy │ │ │ ├── exception │ │ │ └── DockerRegistryConfigException.groovy │ │ │ ├── health │ │ │ └── DockerRegistryHealthIndicator.groovy │ │ │ ├── provider │ │ │ ├── DockerRegistryProvider.groovy │ │ │ ├── DockerRegistryProviderUtils.groovy │ │ │ ├── agent │ │ │ │ └── DockerRegistryImageCachingAgent.groovy │ │ │ └── config │ │ │ │ └── DockerRegistryProviderConfig.groovy │ │ │ └── security │ │ │ ├── DockerRegistryCredentials.groovy │ │ │ ├── DockerRegistryCredentialsInitializer.groovy │ │ │ ├── DockerRegistryNamedAccountCredentials.groovy │ │ │ └── TrustAllX509TrustManager.groovy │ │ └── config │ │ └── DockerRegistryConfiguration.groovy │ └── test │ ├── groovy │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ └── docker │ │ └── registry │ │ ├── api │ │ └── v2 │ │ │ ├── auth │ │ │ └── DockerBearerTokenServiceSpec.groovy │ │ │ └── client │ │ │ └── DockerRegistryClientSpec.groovy │ │ └── controllers │ │ └── DockerRegistryImageLookupControllerSpec.groovy │ └── resources │ └── password.txt ├── clouddriver-ecs ├── README.md ├── clouddriver-ecs.gradle └── src │ ├── main │ └── java │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── ecs │ │ │ ├── EcsCloudProvider.java │ │ │ ├── EcsConfigurationProperties.java │ │ │ ├── EcsOperation.java │ │ │ ├── cache │ │ │ ├── Keys.java │ │ │ ├── client │ │ │ │ ├── AbstractCacheClient.java │ │ │ │ ├── ContainerInstanceCacheClient.java │ │ │ │ ├── EcsCloudWatchAlarmCacheClient.java │ │ │ │ ├── EcsClusterCacheClient.java │ │ │ │ ├── EcsInstanceCacheClient.java │ │ │ │ ├── EcsLoadbalancerCacheClient.java │ │ │ │ ├── EcsTargetGroupCacheClient.java │ │ │ │ ├── IamRoleCacheClient.java │ │ │ │ ├── ScalableTargetCacheClient.java │ │ │ │ ├── SecretCacheClient.java │ │ │ │ ├── ServiceCacheClient.java │ │ │ │ ├── TaskCacheClient.java │ │ │ │ ├── TaskDefinitionCacheClient.java │ │ │ │ └── TaskHealthCacheClient.java │ │ │ └── model │ │ │ │ ├── ContainerInstance.java │ │ │ │ ├── EcsCluster.java │ │ │ │ ├── EcsLoadBalancerCache.java │ │ │ │ ├── EcsMetricAlarm.java │ │ │ │ ├── IamRole.java │ │ │ │ ├── Secret.java │ │ │ │ ├── Service.java │ │ │ │ ├── Task.java │ │ │ │ └── TaskHealth.java │ │ │ ├── controllers │ │ │ ├── EcsCloudMetricController.java │ │ │ ├── EcsClusterController.java │ │ │ ├── EcsImagesController.java │ │ │ ├── EcsSecretController.java │ │ │ └── servergroup │ │ │ │ ├── EcsServerGroupController.java │ │ │ │ └── ServerGroupEventStatusConverter.java │ │ │ ├── deploy │ │ │ ├── EcsServerGroupNameResolver.java │ │ │ ├── converters │ │ │ │ ├── CloneServiceAtomicOperationConverter.java │ │ │ │ ├── DeleteScalingPolicyAtomicOperationConverter.java │ │ │ │ ├── DestroyServiceAtomicOperationConverter.java │ │ │ │ ├── DisableServiceAtomicOperationConverter.java │ │ │ │ ├── EcsCreateServerGroupAtomicOperationConverter.java │ │ │ │ ├── EnableServiceAtomicOperationConverter.java │ │ │ │ ├── ResizeServiceAtomicOperationConverter.java │ │ │ │ ├── StartServiceAtomicOperationConverter.java │ │ │ │ ├── StopServiceAtomicOperationConverter.java │ │ │ │ ├── TerminateInstancesAtomicOperationConverter.java │ │ │ │ ├── UpdateServiceAndTaskConfigAtomicOperationConverter.java │ │ │ │ └── UpsertScalingPolicyAtomicOperationConverter.java │ │ │ ├── description │ │ │ │ ├── AbstractECSDescription.java │ │ │ │ ├── BasicEcsDeployDescription.java │ │ │ │ ├── CloneServiceDescription.java │ │ │ │ ├── CreateServerGroupDescription.java │ │ │ │ ├── DeleteScalingPolicyDescription.java │ │ │ │ ├── ModifyServiceDescription.java │ │ │ │ ├── ResizeServiceDescription.java │ │ │ │ ├── StartServiceDescription.java │ │ │ │ ├── StopServiceDescription.java │ │ │ │ ├── TerminateInstancesDescription.java │ │ │ │ ├── UpdateServiceAndTaskConfigDescription.java │ │ │ │ └── UpsertScalingPolicyDescription.java │ │ │ ├── handlers │ │ │ │ └── BasicEcsDeployHandler.java │ │ │ ├── ops │ │ │ │ ├── AbstractEcsAtomicOperation.java │ │ │ │ ├── CloneServiceAtomicOperation.java │ │ │ │ ├── CreateServerGroupAtomicOperation.java │ │ │ │ ├── DeleteScalingPolicyAtomicOperation.java │ │ │ │ ├── DestroyServiceAtomicOperation.java │ │ │ │ ├── DisableServiceAtomicOperation.java │ │ │ │ ├── EnableServiceAtomicOperation.java │ │ │ │ ├── ResizeServiceAtomicOperation.java │ │ │ │ ├── StartServiceAtomicOperation.java │ │ │ │ ├── StopServiceAtomicOperation.java │ │ │ │ ├── TerminateInstancesAtomicOperation.java │ │ │ │ ├── UpdateServiceAndTaskConfigAtomicOperation.java │ │ │ │ └── UpsertScalingPolicyAtomicOperation.java │ │ │ └── validators │ │ │ │ ├── CloneServiceAtomicOperationValidator.java │ │ │ │ ├── CommonValidator.java │ │ │ │ ├── DeleteScalingPolicyAtomicOperationValidator.java │ │ │ │ ├── DestroyServiceAtomicOperationValidator.java │ │ │ │ ├── DisableServiceDescriptionValidator.java │ │ │ │ ├── EcsCreateServerGroupDescriptionValidator.java │ │ │ │ ├── EnableServiceDescriptionValidator.java │ │ │ │ ├── ResizeServiceDescriptionValidator.java │ │ │ │ ├── ServerGroupDescriptionValidator.java │ │ │ │ ├── StartServiceAtomicOperationValidator.java │ │ │ │ ├── StopServiceAtomicOperationValidator.java │ │ │ │ ├── TerminateInstancesDescriptionValidator.java │ │ │ │ ├── UpdateServiceAndTaskConfigAtomicOperationValidator.java │ │ │ │ └── UpsertScalingPolicyAtomicOperationValidator.java │ │ │ ├── model │ │ │ ├── EcsApplication.java │ │ │ ├── EcsDockerImage.java │ │ │ ├── EcsSecurityGroup.java │ │ │ ├── EcsSecurityGroupSummary.java │ │ │ ├── EcsServerCluster.java │ │ │ ├── EcsServerGroup.java │ │ │ ├── EcsServerGroupEvent.java │ │ │ ├── EcsServerGroupEventStatus.java │ │ │ ├── EcsSubnet.java │ │ │ ├── EcsTask.java │ │ │ ├── TaskDefinition.java │ │ │ └── loadbalancer │ │ │ │ ├── EcsLoadBalancerDetail.java │ │ │ │ ├── EcsLoadBalancerSummary.java │ │ │ │ ├── EcsLoadBalancerSummaryByAccount.java │ │ │ │ ├── EcsLoadBalancerSummaryByRegion.java │ │ │ │ └── EcsTargetGroup.java │ │ │ ├── provider │ │ │ ├── EcsProvider.java │ │ │ ├── agent │ │ │ │ ├── AbstractEcsCachingAgent.java │ │ │ │ ├── AbstractEcsOnDemandAgent.java │ │ │ │ ├── ContainerInstanceCachingAgent.java │ │ │ │ ├── EcsCloudMetricAlarmCachingAgent.java │ │ │ │ ├── EcsClusterCachingAgent.java │ │ │ │ ├── IamPolicyReader.java │ │ │ │ ├── IamRoleCachingAgent.java │ │ │ │ ├── IamTrustRelationship.java │ │ │ │ ├── ScalableTargetsCachingAgent.java │ │ │ │ ├── SecretCachingAgent.java │ │ │ │ ├── ServiceCachingAgent.java │ │ │ │ ├── TaskCachingAgent.java │ │ │ │ ├── TaskDefinitionCachingAgent.java │ │ │ │ └── TaskHealthCachingAgent.java │ │ │ ├── config │ │ │ │ └── EcsProviderConfig.java │ │ │ └── view │ │ │ │ ├── AmazonPrimitiveConverter.java │ │ │ │ ├── EcrImageProvider.java │ │ │ │ ├── EcsAccountMapper.java │ │ │ │ ├── EcsCloudMetricProvider.java │ │ │ │ ├── EcsClusterProvider.java │ │ │ │ ├── EcsLoadBalancerProvider.java │ │ │ │ ├── EcsRoleProvider.java │ │ │ │ ├── EcsSecretProvider.java │ │ │ │ ├── EcsSecurityGroupProvider.java │ │ │ │ ├── EcsServerClusterProvider.java │ │ │ │ ├── EcsSubnetProvider.java │ │ │ │ ├── ImageRepositoryProvider.java │ │ │ │ └── UnvalidatedDockerImageProvider.java │ │ │ ├── security │ │ │ ├── ECSCredentialsConfig.java │ │ │ ├── EcsAccountBuilder.java │ │ │ ├── EcsCredentialsInitializer.java │ │ │ ├── NetflixAssumeRoleEcsCredentials.java │ │ │ └── NetflixECSCredentials.java │ │ │ ├── services │ │ │ ├── ContainerInformationService.java │ │ │ ├── EcsCloudMetricService.java │ │ │ ├── SecurityGroupSelector.java │ │ │ └── SubnetSelector.java │ │ │ └── view │ │ │ ├── EcsApplicationProvider.java │ │ │ └── EcsInstanceProvider.java │ │ └── config │ │ └── EcsConfiguration.java │ └── test │ ├── groovy │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ └── ecs │ │ ├── TestCredential.groovy │ │ ├── cache │ │ ├── EcsCloudWatchAlarmCacheClientSpec.groovy │ │ ├── EcsInstanceCacheClientSpec.groovy │ │ ├── EcsLoadbalancerCacheClientSpec.groovy │ │ ├── EcsTargetGroupCacheClientSpec.groovy │ │ ├── KeysSpec.groovy │ │ ├── ScalableTargetCacheClientSpec.groovy │ │ ├── SecretCacheClientSpec.groovy │ │ └── TaskHealthCacheClientSpec.groovy │ │ ├── controllers │ │ ├── EcsCloudMetricControllerSpec.groovy │ │ ├── EcsClusterControllerSpec.groovy │ │ ├── EcsImagesControllerSpec.groovy │ │ ├── EcsSecretControllerSpec.groovy │ │ └── servergroup │ │ │ └── ServerGroupEventStatusConverterSpec.groovy │ │ ├── deploy │ │ ├── EcsServerGroupNameResolverSpec.groovy │ │ ├── converters │ │ │ ├── DestroyServiceAtomicOperationConverterSpec.groovy │ │ │ ├── DisableServiceAtomicOperationConverterSpec.groovy │ │ │ ├── EcsCreateServerGroupAtomicOperationConverterSpec.groovy │ │ │ ├── EnableServiceAtomicOperationConverterSpec.groovy │ │ │ ├── ModifyServiceAtomicOperationConverterSpec.groovy │ │ │ ├── ResizeServiceAtomicOperationConverterSpec.groovy │ │ │ └── TerminateInstanceAtomicOperationConverterSpec.groovy │ │ ├── ops │ │ │ ├── CommonAtomicOperation.groovy │ │ │ ├── CreateServerGroupAtomicOperationSpec.groovy │ │ │ ├── DestroyServiceAtomicOperationSpec.groovy │ │ │ ├── DisableServiceAtomicOperationSpec.groovy │ │ │ ├── EnableServiceAtomicOperationSpec.groovy │ │ │ ├── ResizeServiceAtomicOperationSpec.groovy │ │ │ └── TerminateInstanceAtomicOperationSpec.groovy │ │ └── validators │ │ │ ├── AbstractValidatorSpec.groovy │ │ │ ├── EcsCreateServergroupDescriptionValidatorSpec.groovy │ │ │ ├── ResizeDescriptionValidatorSpec.groovy │ │ │ ├── ServerGroupDescriptionValidatorSpec.groovy │ │ │ └── TerminateInstanceDescriptionValidatorSpec.groovy │ │ ├── provider │ │ ├── agent │ │ │ ├── EcsCloudMetricAlarmCachingAgentSpec.groovy │ │ │ ├── ScalableTargetCachingAgentSpec.groovy │ │ │ ├── SecretCachingAgentSpec.groovy │ │ │ ├── TaskHealthCacheSpec.groovy │ │ │ └── TaskHealthCachingAgentSpec.groovy │ │ └── view │ │ │ ├── EcrImageProviderSpec.groovy │ │ │ ├── EcsAccountMapperSpec.groovy │ │ │ ├── EcsCloudMetricProviderSpec.groovy │ │ │ ├── EcsClusterProviderSpec.groovy │ │ │ ├── EcsLoadBalancerProviderSpec.groovy │ │ │ ├── EcsRoleProviderSpec.groovy │ │ │ ├── EcsSecretProviderSpec.groovy │ │ │ └── EcsServerClusterProviderSpec.groovy │ │ ├── services │ │ ├── ContainerInformationServiceSpec.groovy │ │ ├── EcsCloudMetricServiceSpec.groovy │ │ ├── SecurityGroupSelectorSpec.groovy │ │ └── SubnetSelectorSpec.groovy │ │ └── view │ │ ├── EcrImageProviderSpec.groovy │ │ ├── EcsApplicationProviderSpec.groovy │ │ ├── EcsInstanceProviderSpec.groovy │ │ └── UnvalidatedDockerImageProviderSpec.groovy │ └── java │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── ecs │ ├── cache │ ├── CommonCacheClient.java │ ├── ContainerInstanceCacheClientTest.java │ ├── EcsClusterCacheClientTest.java │ ├── IamRoleCacheClientTest.java │ ├── ServiceCacheClientTest.java │ ├── TaskCacheClientTest.java │ └── TaskDefinitionCacheClientTest.java │ ├── provider │ └── agent │ │ ├── CommonCachingAgent.java │ │ ├── ContainerInstanceCacheTest.java │ │ ├── ContainerInstanceCachingAgentTest.java │ │ ├── EcsClusterCacheTest.java │ │ ├── EcsClusterCachingAgentTest.java │ │ ├── IamRoleCacheTest.java │ │ ├── IamRoleCachingAgentTest.java │ │ ├── ServiceCacheTest.java │ │ ├── ServiceCachingAgentTest.java │ │ ├── TaskCacheTest.java │ │ ├── TaskCachingAgentTest.java │ │ ├── TaskDefinitionCacheTest.java │ │ └── TaskDefinitionCachingAgentTest.java │ └── security │ └── EcsAccountBuilderTest.java ├── clouddriver-elasticsearch-aws ├── clouddriver-elasticsearch-aws.gradle └── src │ └── main │ └── kotlin │ └── com │ └── netflix │ └── spinnaker │ ├── clouddriver │ └── elasticsearch │ │ ├── ElasticSearchClient.kt │ │ ├── aws │ │ ├── ElasticSearchAmazonCachingAgentProvider.kt │ │ ├── ElasticSearchAmazonInstanceCachingAgent.kt │ │ └── ElasticSearchAmazonServerGroupCachingAgent.kt │ │ └── model │ │ └── ElasticSearchModels.kt │ └── config │ └── ElasticSearchAmazonConfig.kt ├── clouddriver-elasticsearch ├── clouddriver-elasticsearch.gradle ├── elasticsearch_index_template.json └── src │ ├── main │ └── java │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── elasticsearch │ │ │ ├── ElasticSearchEntityTagger.java │ │ │ ├── EntityRefIdBuilder.java │ │ │ ├── converters │ │ │ ├── BulkUpsertEntityTagsAtomicOperationConverter.java │ │ │ ├── DeleteEntityTagsAtomicOperationConverter.java │ │ │ └── UpsertEntityTagsAtomicOperationConverter.java │ │ │ ├── descriptions │ │ │ ├── BulkUpsertEntityTagsDescription.java │ │ │ ├── DeleteEntityTagsDescription.java │ │ │ └── UpsertEntityTagsDescription.java │ │ │ ├── events │ │ │ ├── CreateServerGroupEventHandler.java │ │ │ └── DeleteServerGroupEventHandler.java │ │ │ ├── model │ │ │ ├── ElasticSearchEntityTagsProvider.java │ │ │ ├── ElasticSearchEntityTagsReconciler.java │ │ │ └── ElasticSearchException.java │ │ │ ├── ops │ │ │ ├── BulkUpsertEntityTagsAtomicOperation.java │ │ │ ├── BulkUpsertEntityTagsAtomicOperationResult.java │ │ │ ├── DeleteEntityTagsAtomicOperation.java │ │ │ └── UpsertEntityTagsAtomicOperation.java │ │ │ └── validators │ │ │ └── BulkUpsertEntityTagsDescriptionValidator.java │ │ └── config │ │ ├── ElasticSearchConfig.java │ │ └── ElasticSearchConfigProperties.java │ └── test │ └── groovy │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── elasticsearch │ ├── ElasticSearchEntityTaggerSpec.groovy │ ├── EntityRefIdBuilderSpec.groovy │ ├── converters │ └── UpsertEntityTagsAtomicOperationConverterSpec.groovy │ ├── events │ ├── CreateServerGroupEventHandlerSpec.groovy │ └── DeleteServerGroupEventHandlerSpec.groovy │ ├── model │ ├── ElasticSearchEntityTagsProviderSpec.groovy │ └── ElasticSearchEntityTagsReconcilerSpec.groovy │ └── ops │ ├── BulkUpsertEntityTagsAtomicOperationSpec.groovy │ └── DeleteEntityTagsAtomicOperationSpec.groovy ├── clouddriver-eureka ├── README.md ├── clouddriver-eureka.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── eureka │ │ │ ├── api │ │ │ ├── Eureka.groovy │ │ │ ├── EurekaApi.groovy │ │ │ ├── EurekaApiFactory.groovy │ │ │ └── EurekaConfig.groovy │ │ │ ├── deploy │ │ │ └── ops │ │ │ │ ├── AbstractEurekaSupport.groovy │ │ │ │ ├── EurekaSupportConfigurationProperties.groovy │ │ │ │ └── EurekaUtil.groovy │ │ │ ├── model │ │ │ ├── DataCenterInfo.groovy │ │ │ ├── DataCenterMetadata.groovy │ │ │ ├── EurekaApplication.groovy │ │ │ ├── EurekaApplications.groovy │ │ │ ├── EurekaInstance.groovy │ │ │ └── Metadata.groovy │ │ │ └── provider │ │ │ ├── EurekaCachingProvider.groovy │ │ │ ├── agent │ │ │ ├── EurekaAwareProvider.groovy │ │ │ └── EurekaCachingAgent.groovy │ │ │ └── config │ │ │ └── EurekaAccountConfigurationProperties.groovy │ │ └── config │ │ └── EurekaProviderConfiguration.groovy │ └── test │ └── groovy │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── eureka │ └── deploy │ └── ops │ └── AbstractEurekaSupportSpec.groovy ├── clouddriver-google-common ├── clouddriver-google-common.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ └── googlecommon │ │ ├── config │ │ └── GoogleCommonManagedAccount.groovy │ │ ├── deploy │ │ └── GoogleCommonSafeRetry.groovy │ │ └── security │ │ ├── GoogleCommonCredentialUtils.groovy │ │ └── GoogleCommonCredentials.groovy │ └── test │ └── groovy │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── googlecommon │ └── deploy │ └── GoogleCommonSafeRetrySpec.groovy ├── clouddriver-google ├── clouddriver-google.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── google │ │ │ ├── ComputeVersion.groovy │ │ │ ├── GoogleCloudProvider.groovy │ │ │ ├── GoogleExecutor.groovy │ │ │ ├── GoogleExecutorTraits.java │ │ │ ├── GoogleOperation.groovy │ │ │ ├── batch │ │ │ └── GoogleBatchRequest.java │ │ │ ├── cache │ │ │ ├── CacheResultBuilder.groovy │ │ │ └── Keys.groovy │ │ │ ├── config │ │ │ └── GoogleConfigurationProperties.groovy │ │ │ ├── controllers │ │ │ └── GoogleNamedImageLookupController.java │ │ │ ├── deploy │ │ │ ├── GCEServerGroupNameResolver.groovy │ │ │ ├── GCEUtil.groovy │ │ │ ├── GoogleOperationPoller.groovy │ │ │ ├── SafeRetry.groovy │ │ │ ├── converters │ │ │ │ ├── AbandonAndDecrementGoogleServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── BasicGoogleDeployAtomicOperationConverter.groovy │ │ │ │ ├── CopyLastGoogleServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── CreateGoogleInstanceAtomicOperationConverter.groovy │ │ │ │ ├── DeleteGoogleAutoscalingPolicyAtomicOperationConverter.groovy │ │ │ │ ├── DeleteGoogleLoadBalancerAtomicOperationConverter.groovy │ │ │ │ ├── DeleteGoogleSecurityGroupAtomicOperationConverter.groovy │ │ │ │ ├── DeregisterInstancesFromGoogleLoadBalancerAtomicOperationConverter.groovy │ │ │ │ ├── DestroyGoogleServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── DisableGoogleServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── EnableGoogleServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── GoogleAtomicOperationConverterHelper.groovy │ │ │ │ ├── ModifyGoogleServerGroupInstanceTemplateAtomicOperationConverter.groovy │ │ │ │ ├── RebootGoogleInstancesAtomicOperationConverter.groovy │ │ │ │ ├── RegisterInstancesWithGoogleLoadBalancerAtomicOperationConverter.groovy │ │ │ │ ├── ResizeGoogleServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── TerminateAndDecrementGoogleServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── TerminateGoogleInstancesAtomicOperationConverter.groovy │ │ │ │ ├── UpsertGoogleAutoscalingPolicyAtomicOperationConverter.groovy │ │ │ │ ├── UpsertGoogleImageTagsAtomicOperationConverter.groovy │ │ │ │ ├── UpsertGoogleLoadBalancerAtomicOperationConverter.groovy │ │ │ │ ├── UpsertGoogleSecurityGroupAtomicOperationConverter.groovy │ │ │ │ ├── UpsertGoogleServerGroupTagsAtomicOperationConverter.groovy │ │ │ │ ├── discovery │ │ │ │ │ ├── DisableInstancesInDiscoveryConverter.groovy │ │ │ │ │ └── EnableInstancesInDiscoveryConverter.groovy │ │ │ │ └── snapshot │ │ │ │ │ ├── RestoreSnapshotAtomicOperationConverter.groovy │ │ │ │ │ └── SaveSnapshotAtomicOperationConverter.groovy │ │ │ ├── description │ │ │ │ ├── AbandonAndDecrementGoogleServerGroupDescription.groovy │ │ │ │ ├── AbstractGoogleCredentialsDescription.groovy │ │ │ │ ├── BaseGoogleInstanceDescription.groovy │ │ │ │ ├── BasicGoogleDeployDescription.groovy │ │ │ │ ├── CreateGoogleInstanceDescription.groovy │ │ │ │ ├── DeleteGoogleAutoscalingPolicyDescription.groovy │ │ │ │ ├── DeleteGoogleLoadBalancerDescription.groovy │ │ │ │ ├── DeleteGoogleSecurityGroupDescription.groovy │ │ │ │ ├── DeregisterInstancesFromGoogleLoadBalancerDescription.groovy │ │ │ │ ├── DestroyGoogleServerGroupDescription.groovy │ │ │ │ ├── EnableDisableGoogleServerGroupDescription.groovy │ │ │ │ ├── GoogleInstanceListDescription.groovy │ │ │ │ ├── ModifyGoogleServerGroupInstanceTemplateDescription.groovy │ │ │ │ ├── RebootGoogleInstancesDescription.groovy │ │ │ │ ├── RegisterInstancesWithGoogleLoadBalancerDescription.groovy │ │ │ │ ├── ResizeGoogleServerGroupDescription.groovy │ │ │ │ ├── TerminateAndDecrementGoogleServerGroupDescription.groovy │ │ │ │ ├── TerminateGoogleInstancesDescription.groovy │ │ │ │ ├── UpsertGoogleAutoscalingPolicyDescription.groovy │ │ │ │ ├── UpsertGoogleImageTagsDescription.groovy │ │ │ │ ├── UpsertGoogleLoadBalancerDescription.groovy │ │ │ │ ├── UpsertGoogleSecurityGroupDescription.groovy │ │ │ │ ├── UpsertGoogleServerGroupTagsDescription.groovy │ │ │ │ └── snapshot │ │ │ │ │ ├── RestoreSnapshotDescription.groovy │ │ │ │ │ └── SaveSnapshotDescription.groovy │ │ │ ├── exception │ │ │ │ ├── GoogleOperationException.groovy │ │ │ │ ├── GoogleOperationTimedOutException.groovy │ │ │ │ ├── GoogleResourceIllegalStateException.groovy │ │ │ │ └── GoogleResourceNotFoundException.groovy │ │ │ ├── handlers │ │ │ │ └── BasicGoogleDeployHandler.groovy │ │ │ ├── instancegroups │ │ │ │ ├── AbstractGoogleServerGroupManagers.java │ │ │ │ ├── GoogleServerGroupManagers.java │ │ │ │ ├── GoogleServerGroupManagersFactory.java │ │ │ │ ├── GoogleServerGroupOperationPoller.java │ │ │ │ ├── RegionGoogleServerGroupManagers.java │ │ │ │ └── ZoneGoogleServerGroupManagers.java │ │ │ ├── ops │ │ │ │ ├── AbandonAndDecrementGoogleServerGroupAtomicOperation.groovy │ │ │ │ ├── AbstractEnableDisableAtomicOperation.groovy │ │ │ │ ├── CopyLastGoogleServerGroupAtomicOperation.groovy │ │ │ │ ├── CreateGoogleInstanceAtomicOperation.groovy │ │ │ │ ├── DeleteGoogleAutoscalingPolicyAtomicOperation.groovy │ │ │ │ ├── DeleteGoogleSecurityGroupAtomicOperation.groovy │ │ │ │ ├── DeregisterInstancesFromGoogleLoadBalancerAtomicOperation.groovy │ │ │ │ ├── DestroyGoogleServerGroupAtomicOperation.groovy │ │ │ │ ├── DisableGoogleServerGroupAtomicOperation.groovy │ │ │ │ ├── EnableGoogleServerGroupAtomicOperation.groovy │ │ │ │ ├── GoogleAtomicOperation.groovy │ │ │ │ ├── GoogleUserDataProvider.groovy │ │ │ │ ├── ModifyGoogleServerGroupInstanceTemplateAtomicOperation.groovy │ │ │ │ ├── RebootGoogleInstancesAtomicOperation.groovy │ │ │ │ ├── RegisterInstancesWithGoogleLoadBalancerAtomicOperation.groovy │ │ │ │ ├── ResizeGoogleServerGroupAtomicOperation.groovy │ │ │ │ ├── TerminateAndDecrementGoogleServerGroupAtomicOperation.groovy │ │ │ │ ├── TerminateGoogleInstancesAtomicOperation.groovy │ │ │ │ ├── UpsertGoogleAutoscalingPolicyAtomicOperation.groovy │ │ │ │ ├── UpsertGoogleImageTagsAtomicOperation.groovy │ │ │ │ ├── UpsertGoogleSecurityGroupAtomicOperation.groovy │ │ │ │ ├── UpsertGoogleServerGroupTagsAtomicOperation.groovy │ │ │ │ ├── discovery │ │ │ │ │ ├── AbstractEnableDisableInstancesInDiscoveryOperation.groovy │ │ │ │ │ ├── DisableInstancesInDiscoveryOperation.groovy │ │ │ │ │ └── EnableInstancesInDiscoveryOperation.groovy │ │ │ │ ├── loadbalancer │ │ │ │ │ ├── Constants.groovy │ │ │ │ │ ├── DeleteGoogleHttpLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── DeleteGoogleInternalLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── DeleteGoogleLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── DeleteGoogleSslLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── DeleteGoogleTcpLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── UpsertGoogleHttpLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── UpsertGoogleInternalLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── UpsertGoogleLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── UpsertGoogleSslLoadBalancerAtomicOperation.groovy │ │ │ │ │ └── UpsertGoogleTcpLoadBalancerAtomicOperation.groovy │ │ │ │ └── snapshot │ │ │ │ │ ├── RestoreSnapshotAtomicOperation.groovy │ │ │ │ │ └── SaveSnapshotAtomicOperation.groovy │ │ │ ├── preprocessors │ │ │ │ ├── TerminateGoogleInstancesDescriptionPreProcessor.groovy │ │ │ │ └── ZoneToRegionDescriptionPreProcessor.groovy │ │ │ └── validators │ │ │ │ ├── AbandonAndDecrementGoogleServerGroupDescriptionValidator.groovy │ │ │ │ ├── AbstractEnableDisableGoogleServerGroupDescriptionValidator.groovy │ │ │ │ ├── BasicGoogleDeployDescriptionValidator.groovy │ │ │ │ ├── CopyLastGoogleServerGroupDescriptionValidator.groovy │ │ │ │ ├── CreateGoogleInstanceDescriptionValidator.groovy │ │ │ │ ├── DeleteGoogleAutoscalingPolicyDescriptionValidator.groovy │ │ │ │ ├── DeleteGoogleLoadBalancerDescriptionValidator.groovy │ │ │ │ ├── DeleteGoogleSecurityGroupDescriptionValidator.groovy │ │ │ │ ├── DeregisterInstancesFromGoogleLoadBalancerDescriptionValidator.groovy │ │ │ │ ├── DestroyGoogleServerGroupDescriptionValidator.groovy │ │ │ │ ├── DisableGoogleServerGroupDescriptionValidator.groovy │ │ │ │ ├── EnableGoogleServerGroupDescriptionValidator.groovy │ │ │ │ ├── ModifyGoogleServerGroupInstanceTemplateDescriptionValidator.groovy │ │ │ │ ├── RebootGoogleInstancesDescriptionValidator.groovy │ │ │ │ ├── RegisterInstancesWithGoogleLoadBalancerDescriptionValidator.groovy │ │ │ │ ├── ResizeGoogleServerGroupDescriptionValidator.groovy │ │ │ │ ├── StandardGceAttributeValidator.groovy │ │ │ │ ├── TerminateAndDecrementGoogleServerGroupDescriptionValidator.groovy │ │ │ │ ├── TerminateGoogleInstancesDescriptionValidator.groovy │ │ │ │ ├── UpsertGoogleAutoscalingPolicyDescriptionValidator.groovy │ │ │ │ ├── UpsertGoogleImageTagsDescriptionValidator.groovy │ │ │ │ ├── UpsertGoogleLoadBalancerDescriptionValidator.groovy │ │ │ │ ├── UpsertGoogleSecurityGroupDescriptionValidator.groovy │ │ │ │ ├── UpsertGoogleServerGroupTagsDescriptionValidator.groovy │ │ │ │ └── discovery │ │ │ │ ├── AbstractEnableDisableInstancesInDiscoveryDescriptionValidator.groovy │ │ │ │ ├── DisableInstancesInDiscoveryDescriptionValidator.groovy │ │ │ │ └── EnableInstancesInDiscoveryDescriptionValidator.groovy │ │ │ ├── health │ │ │ └── GoogleHealthIndicator.groovy │ │ │ ├── model │ │ │ ├── GoogleApplication.groovy │ │ │ ├── GoogleAutoHealingPolicy.groovy │ │ │ ├── GoogleAutoscalingPolicy.groovy │ │ │ ├── GoogleCluster.groovy │ │ │ ├── GoogleDisk.groovy │ │ │ ├── GoogleDiskType.groovy │ │ │ ├── GoogleDistributionPolicy.java │ │ │ ├── GoogleHealthCheck.groovy │ │ │ ├── GoogleInstance.groovy │ │ │ ├── GoogleInstanceTypeDisk.groovy │ │ │ ├── GoogleLabeledResource.java │ │ │ ├── GoogleNetwork.groovy │ │ │ ├── GoogleSecurityGroup.groovy │ │ │ ├── GoogleSecurityGroupSummary.groovy │ │ │ ├── GoogleServerGroup.groovy │ │ │ ├── GoogleSubnet.groovy │ │ │ ├── callbacks │ │ │ │ └── Utils.groovy │ │ │ ├── health │ │ │ │ ├── GoogleHealth.groovy │ │ │ │ ├── GoogleInstanceHealth.groovy │ │ │ │ └── GoogleLoadBalancerHealth.groovy │ │ │ └── loadbalancing │ │ │ │ ├── GoogleBackendService.groovy │ │ │ │ ├── GoogleHostRule.groovy │ │ │ │ ├── GoogleHttpLoadBalancer.groovy │ │ │ │ ├── GoogleHttpLoadBalancingPolicy.groovy │ │ │ │ ├── GoogleInternalLoadBalancer.groovy │ │ │ │ ├── GoogleLoadBalancedBackend.groovy │ │ │ │ ├── GoogleLoadBalancer.groovy │ │ │ │ ├── GoogleLoadBalancerType.groovy │ │ │ │ ├── GoogleLoadBalancerView.groovy │ │ │ │ ├── GoogleLoadBalancingPolicy.groovy │ │ │ │ ├── GoogleLoadBalancingScheme.groovy │ │ │ │ ├── GoogleNetworkLoadBalancer.groovy │ │ │ │ ├── GooglePathMatcher.groovy │ │ │ │ ├── GooglePathRule.groovy │ │ │ │ ├── GoogleSessionAffinity.groovy │ │ │ │ ├── GoogleSslLoadBalancer.groovy │ │ │ │ ├── GoogleTargetProxyType.groovy │ │ │ │ └── GoogleTcpLoadBalancer.groovy │ │ │ ├── names │ │ │ └── GoogleLabeledResourceNamer.java │ │ │ ├── provider │ │ │ ├── GoogleInfrastructureProvider.groovy │ │ │ ├── agent │ │ │ │ ├── AbstractGoogleCachingAgent.groovy │ │ │ │ ├── AbstractGoogleLoadBalancerCachingAgent.groovy │ │ │ │ ├── FailedSubjectChronicler.groovy │ │ │ │ ├── FailureLogger.groovy │ │ │ │ ├── GoogleBackendServiceCachingAgent.groovy │ │ │ │ ├── GoogleGlobalAddressCachingAgent.groovy │ │ │ │ ├── GoogleHealthCheckCachingAgent.groovy │ │ │ │ ├── GoogleHttpHealthCheckCachingAgent.groovy │ │ │ │ ├── GoogleHttpLoadBalancerCachingAgent.groovy │ │ │ │ ├── GoogleImageCachingAgent.groovy │ │ │ │ ├── GoogleInstanceCachingAgent.groovy │ │ │ │ ├── GoogleInternalLoadBalancerCachingAgent.groovy │ │ │ │ ├── GoogleNetworkCachingAgent.groovy │ │ │ │ ├── GoogleNetworkLoadBalancerCachingAgent.groovy │ │ │ │ ├── GoogleRegionalAddressCachingAgent.groovy │ │ │ │ ├── GoogleRegionalServerGroupCachingAgent.groovy │ │ │ │ ├── GoogleSecurityGroupCachingAgent.groovy │ │ │ │ ├── GoogleSslCertificateCachingAgent.groovy │ │ │ │ ├── GoogleSslLoadBalancerCachingAgent.groovy │ │ │ │ ├── GoogleSubnetCachingAgent.groovy │ │ │ │ ├── GoogleTcpLoadBalancerCachingAgent.groovy │ │ │ │ ├── GoogleZonalServerGroupCachingAgent.groovy │ │ │ │ └── util │ │ │ │ │ ├── GroupHealthRequest.java │ │ │ │ │ ├── LoadBalancerHealthResolution.java │ │ │ │ │ ├── PaginatedCallback.java │ │ │ │ │ ├── PaginatedRequest.java │ │ │ │ │ └── TargetPoolHealthRequest.java │ │ │ ├── config │ │ │ │ └── GoogleInfrastructureProviderConfig.groovy │ │ │ └── view │ │ │ │ ├── GoogleApplicationProvider.groovy │ │ │ │ ├── GoogleClusterProvider.groovy │ │ │ │ ├── GoogleInstanceProvider.groovy │ │ │ │ ├── GoogleLoadBalancerProvider.groovy │ │ │ │ ├── GoogleNetworkProvider.groovy │ │ │ │ ├── GoogleSecurityGroupProvider.groovy │ │ │ │ └── GoogleSubnetProvider.groovy │ │ │ └── security │ │ │ ├── AccountForClient.groovy │ │ │ ├── GoogleCredentials.groovy │ │ │ ├── GoogleCredentialsInitializer.groovy │ │ │ ├── GoogleImpersonatedCredential.groovy │ │ │ ├── GoogleImpersonatedServiceAccountCredentials.groovy │ │ │ ├── GoogleJsonCredentials.groovy │ │ │ └── GoogleNamedAccountCredentials.groovy │ │ └── config │ │ └── GoogleConfiguration.groovy │ └── test │ └── groovy │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── google │ ├── GoogleApiTestUtils.groovy │ ├── GoogleExecutorTraitsSpec.groovy │ ├── cache │ └── CacheResultBuilderSpec.groovy │ ├── controllers │ └── GoogleNamedImageLookupControllerSpec.groovy │ ├── deploy │ ├── GCEUtilSpec.groovy │ ├── GoogleOperationPollerSpec.groovy │ ├── converters │ │ ├── AbandonAndDecrementGoogleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ ├── BasicGoogleDeployAtomicOperationConverterUnitSpec.groovy │ │ ├── CopyLastGoogleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ ├── CreateGoogleInstanceAtomicOperationConverterUnitSpec.groovy │ │ ├── DeleteGoogleAutoscalingPolicyAtomicOperationConverterUnitSpec.groovy │ │ ├── DeleteGoogleLoadBalancerAtomicOperationConverterUnitSpec.groovy │ │ ├── DeleteGoogleSecurityGroupAtomicOperationConverterUnitSpec.groovy │ │ ├── DeregisterInstancesFromGoogleLoadBalancerAtomicOperationConverterUnitSpec.groovy │ │ ├── DestroyGoogleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ ├── DisableGoogleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ ├── EnableGoogleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ ├── ModifyGoogleServerGroupInstanceTemplateAtomicOperationConverterUnitSpec.groovy │ │ ├── RebootGoogleInstancesAtomicOperationConverterUnitSpec.groovy │ │ ├── RegisterInstancesWithGoogleLoadBalancerAtomicOperationConverterUnitSpec.groovy │ │ ├── ResizeGoogleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ ├── SerializeApplicationAtomicOperationConverterUnitSpec.groovy │ │ ├── TerminateAndDecrementGoogleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ ├── TerminateGoogleInstancesAtomicOperationConverterUnitSpec.groovy │ │ ├── UpsertGoogleAutoscalingPolicyAtomicOperationConverterUnitSpec.groovy │ │ ├── UpsertGoogleImageTagsAtomicOperationConverterUnitSpec.groovy │ │ ├── UpsertGoogleLoadBalancerAtomicOperationConverterUnitSpec.groovy │ │ ├── UpsertGoogleSecurityGroupAtomicOperationConverterUnitSpec.groovy │ │ └── UpsertGoogleServerGroupTagsAtomicOperationConverterUnitSpec.groovy │ ├── handlers │ │ └── BasicGoogleDeployHandlerSpec.groovy │ ├── ops │ │ ├── AbandonAndDecrementGoogleServerGroupAtomicOperationUnitSpec.groovy │ │ ├── CopyLastGoogleServerGroupAtomicOperationUnitSpec.groovy │ │ ├── CreateGoogleInstanceAtomicOperationUnitSpec.groovy │ │ ├── DeleteGoogleAutoscalingPolicyAtomicOperationUnitSpec.groovy │ │ ├── DeleteGoogleSecurityGroupAtomicOperationUnitSpec.groovy │ │ ├── DeregisterInstancesFromGoogleLoadBalancerAtomicOperationUnitSpec.groovy │ │ ├── DestroyGoogleServerGroupAtomicOperationUnitSpec.groovy │ │ ├── DisableGoogleServerGroupAtomicOperationUnitSpec.groovy │ │ ├── EnableGoogleServerGroupAtomicOperationUnitSpec.groovy │ │ ├── GoogleUserDataProviderSpec.groovy │ │ ├── ModifyGoogleServerGroupInstanceTemplateAtomicOperationUnitSpec.groovy │ │ ├── RebootGoogleInstancesAtomicOperationUnitSpec.groovy │ │ ├── RegisterInstancesWithGoogleLoadBalancerAtomicOperationUnitSpec.groovy │ │ ├── ResizeGoogleServerGroupAtomicOperationUnitSpec.groovy │ │ ├── SerializeApplicationAtomicOperationUnitSpec.groovy │ │ ├── TerminateAndDecrementGoogleServerGroupAtomicOperationUnitSpec.groovy │ │ ├── TerminateGoogleInstancesAtomicOperationUnitSpec.groovy │ │ ├── UpsertGoogleAutoscalingPolicyAtomicOperationUnitSpec.groovy │ │ ├── UpsertGoogleImageTagsAtomicOperationUnitSpec.groovy │ │ ├── UpsertGoogleSecurityGroupAtomicOperationUnitSpec.groovy │ │ ├── UpsertGoogleServerGroupTagsAtomicOperationUnitSpec.groovy │ │ └── loadbalancer │ │ │ ├── DeleteGoogleHttpLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ ├── DeleteGoogleInternalLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ ├── DeleteGoogleLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ ├── DeleteGoogleSslLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ ├── DeleteGoogleTcpLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ ├── UpsertGoogleHttpLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ ├── UpsertGoogleHttpLoadBalancerTestConstants.groovy │ │ │ ├── UpsertGoogleInternalLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ ├── UpsertGoogleLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ ├── UpsertGoogleSslLoadBalancerAtomicOperationUnitSpec.groovy │ │ │ └── UpsertGoogleTcpLoadBalancerAtomicOperationUnitSpec.groovy │ ├── preprocessors │ │ ├── TerminateGoogleInstancesDescriptionPreProcessorSpec.groovy │ │ └── ZoneToRegionDescriptionPreProcessorSpec.groovy │ └── validators │ │ ├── AbandonAndDecrementGoogleServerGroupDescriptionValidatorSpec.groovy │ │ ├── BasicGoogleDeployDescriptionValidatorSpec.groovy │ │ ├── CopyLastGoogleServerGroupDescriptionValidatorSpec.groovy │ │ ├── CreateGoogleInstanceDescriptionValidatorSpec.groovy │ │ ├── DeleteGoogleAutoscalingPolicyDescriptionValidatorSpec.groovy │ │ ├── DeleteGoogleLoadBalancerDescriptionValidatorSpec.groovy │ │ ├── DeleteGoogleSecurityGroupDescriptionValidatorSpec.groovy │ │ ├── DeregisterInstancesFromGoogleLoadBalancerDescriptionValidatorSpec.groovy │ │ ├── DestroyGoogleServerGroupDescriptionValidatorSpec.groovy │ │ ├── DisableGoogleServerGroupDescriptionValidatorSpec.groovy │ │ ├── EnableDisableGoogleServerGroupDescriptionValidatorSpec.groovy │ │ ├── ModifyGoogleServerGroupInstanceTemplateDescriptionValidatorSpec.groovy │ │ ├── RebootGoogleInstancesDescriptionValidatorSpec.groovy │ │ ├── RegisterInstancesWithGoogleLoadBalancerDescriptionValidatorSpec.groovy │ │ ├── ResizeGoogleServerGroupDescriptionValidatorSpec.groovy │ │ ├── StandardGceAttributeValidatorSpec.groovy │ │ ├── TerminateAndDecrementGoogleServerGroupDescriptionValidatorSpec.groovy │ │ ├── TerminateGoogleInstancesDescriptionValidatorSpec.groovy │ │ ├── UpsertGoogleAutoscalingPolicyDescriptionValidatorSpec.groovy │ │ ├── UpsertGoogleImageTagsDescriptionValidatorSpec.groovy │ │ ├── UpsertGoogleLoadBalancerDescriptionValidatorSpec.groovy │ │ ├── UpsertGoogleSecurityGroupDescriptionValidatorSpec.groovy │ │ └── UpsertGoogleServerGroupTagsDescriptionValidatorSpec.groovy │ ├── model │ └── callbacks │ │ └── UtilsSpec.groovy │ ├── names │ └── GoogleLabeledResourceNamerSpec.groovy │ ├── provider │ ├── agent │ │ ├── GoogleImageCachingAgentSpec.groovy │ │ ├── GoogleSecurityGroupCachingAgentSpec.groovy │ │ └── GoogleServerGroupCachingAgentSpec.groovy │ └── view │ │ ├── GoogleNetworkProviderSpec.groovy │ │ └── GoogleSecurityGroupProviderSpec.groovy │ └── security │ ├── FakeGoogleCredentials.groovy │ ├── GoogleCredentialsInitializerSpec.groovy │ ├── GoogleNamedAccountCredentialsSpec.groovy │ └── TestDefaults.groovy ├── clouddriver-kubernetes ├── clouddriver-kubernetes.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── kubernetes │ │ │ ├── KubernetesCloudProvider.groovy │ │ │ ├── KubernetesOperation.groovy │ │ │ ├── caching │ │ │ ├── KubernetesCachingAgent.java │ │ │ └── KubernetesCachingAgentDispatcher.java │ │ │ ├── config │ │ │ └── KubernetesConfigurationProperties.groovy │ │ │ ├── description │ │ │ └── KubernetesAtomicOperationDescription.java │ │ │ ├── health │ │ │ └── KubernetesHealthIndicator.groovy │ │ │ ├── provider │ │ │ └── KubernetesModelUtil.java │ │ │ ├── security │ │ │ ├── KubernetesApiClientConfig.groovy │ │ │ ├── KubernetesCredentials.java │ │ │ ├── KubernetesNamedAccountCredentials.java │ │ │ └── KubernetesNamedAccountCredentialsInitializer.groovy │ │ │ ├── v1 │ │ │ ├── api │ │ │ │ ├── KubernetesApiAdaptor.groovy │ │ │ │ ├── KubernetesApiConverter.groovy │ │ │ │ ├── KubernetesClientApiAdapter.groovy │ │ │ │ ├── KubernetesClientApiConverter.groovy │ │ │ │ └── SharedMutex.groovy │ │ │ ├── caching │ │ │ │ └── Keys.groovy │ │ │ ├── deploy │ │ │ │ ├── KubernetesJobNameResolver.groovy │ │ │ │ ├── KubernetesServerGroupNameResolver.groovy │ │ │ │ ├── KubernetesUtil.groovy │ │ │ │ ├── converters │ │ │ │ │ ├── KubernetesAtomicOperationConverterHelper.groovy │ │ │ │ │ ├── autoscaler │ │ │ │ │ │ └── UpsertKubernetesAutoscalerAtomicOperationConverter.groovy │ │ │ │ │ ├── instance │ │ │ │ │ │ ├── DeregisterKubernetesAtomicOperationConverter.groovy │ │ │ │ │ │ ├── RegisterKubernetesAtomicOperationConverter.groovy │ │ │ │ │ │ └── TerminateKubernetesInstancesAtomicOperationConverter.groovy │ │ │ │ │ ├── job │ │ │ │ │ │ ├── CloneKubernetesJobAtomicOperationConverter.groovy │ │ │ │ │ │ ├── DestroyKubernetesJobAtomicOperationConverter.groovy │ │ │ │ │ │ └── RunKubernetesJobAtomicOperationConverter.groovy │ │ │ │ │ ├── loadbalancer │ │ │ │ │ │ ├── DeleteKubernetesLoadBalancerAtomicOperationConverter.groovy │ │ │ │ │ │ └── UpsertKubernetesLoadBalancerAtomicOperationConverter.groovy │ │ │ │ │ ├── securitygroup │ │ │ │ │ │ ├── DeleteKubernetesSecurityGroupAtomicOperationConverter.groovy │ │ │ │ │ │ └── UpsertKubernetesSecurityGroupConverter.groovy │ │ │ │ │ └── servergroup │ │ │ │ │ │ ├── CloneKubernetesAtomicOperationConverter.groovy │ │ │ │ │ │ ├── DeployKubernetesAtomicOperationConverter.groovy │ │ │ │ │ │ ├── DestroyKubernetesAtomicOperationConverter.groovy │ │ │ │ │ │ ├── DisableKubernetesAtomicOperationConverter.groovy │ │ │ │ │ │ ├── EnableKubernetesAtomicOperationConverter.groovy │ │ │ │ │ │ └── ResizeKubernetesAtomicOperationConverter.groovy │ │ │ │ ├── description │ │ │ │ │ ├── KubernetesKindAtomicOperationDescription.groovy │ │ │ │ │ ├── autoscaler │ │ │ │ │ │ └── KubernetesAutoscalerDescription.groovy │ │ │ │ │ ├── instance │ │ │ │ │ │ ├── AbstractRegistrationKubernetesAtomicOperationDescription.groovy │ │ │ │ │ │ └── KubernetesInstanceDescription.groovy │ │ │ │ │ ├── job │ │ │ │ │ │ ├── CloneKubernetesJobAtomicOperationDescription.groovy │ │ │ │ │ │ ├── KubernetesJobDescription.groovy │ │ │ │ │ │ └── RunKubernetesJobDescription.groovy │ │ │ │ │ ├── loadbalancer │ │ │ │ │ │ ├── DeleteKubernetesLoadBalancerAtomicOperationDescription.groovy │ │ │ │ │ │ └── KubernetesLoadBalancerDescription.groovy │ │ │ │ │ ├── securitygroup │ │ │ │ │ │ ├── DeleteKubernetesSecurityGroupDescription.groovy │ │ │ │ │ │ └── KubernetesSecurityGroupDescription.groovy │ │ │ │ │ └── servergroup │ │ │ │ │ │ ├── CloneKubernetesAtomicOperationDescription.groovy │ │ │ │ │ │ ├── DeployKubernetesAtomicOperationDescription.groovy │ │ │ │ │ │ ├── EnableDisableKubernetesAtomicOperationDescription.groovy │ │ │ │ │ │ ├── KubernetesServerGroupDescription.groovy │ │ │ │ │ │ └── ResizeKubernetesAtomicOperationDescription.groovy │ │ │ │ ├── exception │ │ │ │ │ ├── KubernetesClientOperationException.groovy │ │ │ │ │ ├── KubernetesIllegalArgumentException.groovy │ │ │ │ │ ├── KubernetesOperationException.groovy │ │ │ │ │ └── KubernetesResourceNotFoundException.groovy │ │ │ │ ├── ops │ │ │ │ │ ├── autoscaler │ │ │ │ │ │ └── UpsertKubernetesAutoscalerAtomicOperation.groovy │ │ │ │ │ ├── instance │ │ │ │ │ │ ├── AbstractRegistrationKubernetesAtomicOperation.groovy │ │ │ │ │ │ ├── DeregisterKubernetesAtomicOperation.groovy │ │ │ │ │ │ ├── RegisterKubernetesAtomicOperation.groovy │ │ │ │ │ │ └── TerminateKubernetesInstancesAtomicOperation.groovy │ │ │ │ │ ├── job │ │ │ │ │ │ ├── CloneKubernetesJobAtomicOperation.groovy │ │ │ │ │ │ ├── DestroyKubernetesJobAtomicOperation.groovy │ │ │ │ │ │ └── RunKubernetesJobAtomicOperation.groovy │ │ │ │ │ ├── loadbalancer │ │ │ │ │ │ ├── DeleteKubernetesLoadBalancerAtomicOperation.groovy │ │ │ │ │ │ └── UpsertKubernetesLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── securitygroup │ │ │ │ │ │ ├── DeleteKubernetesSecurityGroupAtomicOperation.groovy │ │ │ │ │ │ └── UpsertKubernetesSecurityGroupAtomicOperation.groovy │ │ │ │ │ └── servergroup │ │ │ │ │ │ ├── AbstractEnableDisableKubernetesAtomicOperation.groovy │ │ │ │ │ │ ├── CloneKubernetesAtomicOperation.groovy │ │ │ │ │ │ ├── DeployKubernetesAtomicOperation.groovy │ │ │ │ │ │ ├── DestroyKubernetesAtomicOperation.groovy │ │ │ │ │ │ ├── DisableKubernetesAtomicOperation.groovy │ │ │ │ │ │ ├── EnableKubernetesAtomicOperation.groovy │ │ │ │ │ │ └── ResizeKubernetesAtomicOperation.groovy │ │ │ │ └── validators │ │ │ │ │ ├── KubernetesContainerValidator.groovy │ │ │ │ │ ├── KubernetesVolumeSourceValidator.groovy │ │ │ │ │ ├── StandardKubernetesAttributeValidator.groovy │ │ │ │ │ ├── autoscaler │ │ │ │ │ └── UpsertKubernetesAutoscalerDescriptionValidator.groovy │ │ │ │ │ ├── instance │ │ │ │ │ ├── AbstractKubernetesInstancesAtomicOperationValidator.groovy │ │ │ │ │ ├── AbstractRegistrationKubernetesAtomicOperationValidator.groovy │ │ │ │ │ ├── DeregisterKubernetesAtomicOperationValidator.groovy │ │ │ │ │ ├── RegisterKubernetesAtomicOperationValidator.groovy │ │ │ │ │ └── TerminateKubernetesInstancesAtomicOperationValidator.groovy │ │ │ │ │ ├── job │ │ │ │ │ ├── CloneKubernetesJobAtomicOperationValidator.groovy │ │ │ │ │ ├── DestroyKubernetesJobAtomicOperationValidator.groovy │ │ │ │ │ ├── KubernetesJobDescriptionValidator.groovy │ │ │ │ │ └── RunKubernetesJobAtomicOperationValidator.groovy │ │ │ │ │ ├── loadbalancer │ │ │ │ │ ├── DeleteKubernetesLoadBalancerAtomicOperationValidator.groovy │ │ │ │ │ └── UpsertKubernetesLoadBalancerAtomicOperationValidator.groovy │ │ │ │ │ ├── securitygroup │ │ │ │ │ ├── DeleteKubernetesSecurityGroupAtomicOperationValidator.groovy │ │ │ │ │ └── UpsertKubernetesSecurityGroupValidator.groovy │ │ │ │ │ └── servergroup │ │ │ │ │ ├── CloneKubernetesAtomicOperationValidator.groovy │ │ │ │ │ ├── DeployKubernetesAtomicOperationValidator.groovy │ │ │ │ │ ├── DestroyKubernetesAtomicOperationValidator.groovy │ │ │ │ │ ├── DisableKubernetesAtomicOperationValidator.groovy │ │ │ │ │ ├── EnableDisableKubernetesAtomicOperationValidator.groovy │ │ │ │ │ ├── EnableKubernetesAtomicOperationValidator.groovy │ │ │ │ │ ├── KubernetesServerGroupDescriptionValidator.groovy │ │ │ │ │ └── ResizeKubernetesAtomicOperationValidator.groovy │ │ │ ├── model │ │ │ │ ├── KubernetesAutoscalerStatus.groovy │ │ │ │ ├── KubernetesControllerConverter.groovy │ │ │ │ ├── KubernetesDeploymentStatus.groovy │ │ │ │ ├── KubernetesEvent.groovy │ │ │ │ ├── KubernetesImageSummary.groovy │ │ │ │ ├── KubernetesJobStatus.groovy │ │ │ │ ├── KubernetesV1Application.groovy │ │ │ │ ├── KubernetesV1Cluster.groovy │ │ │ │ ├── KubernetesV1Health.groovy │ │ │ │ ├── KubernetesV1Instance.groovy │ │ │ │ ├── KubernetesV1LoadBalancer.groovy │ │ │ │ ├── KubernetesV1SecurityGroup.groovy │ │ │ │ ├── KubernetesV1SecurityGroupSummary.groovy │ │ │ │ └── KubernetesV1ServerGroup.groovy │ │ │ ├── provider │ │ │ │ ├── KubernetesV1Provider.groovy │ │ │ │ ├── KubernetesV1ProviderConfig.groovy │ │ │ │ ├── agent │ │ │ │ │ ├── KubernetesConfigMapCachingAgent.groovy │ │ │ │ │ ├── KubernetesControllersCachingAgent.groovy │ │ │ │ │ ├── KubernetesDeploymentCachingAgent.groovy │ │ │ │ │ ├── KubernetesInstanceCachingAgent.groovy │ │ │ │ │ ├── KubernetesLoadBalancerCachingAgent.groovy │ │ │ │ │ ├── KubernetesSecretCachingAgent.groovy │ │ │ │ │ ├── KubernetesSecurityGroupCachingAgent.groovy │ │ │ │ │ ├── KubernetesServerGroupCachingAgent.groovy │ │ │ │ │ ├── KubernetesServiceAccountCachingAgent.groovy │ │ │ │ │ ├── KubernetesV1CachingAgent.java │ │ │ │ │ └── KubernetesV1CachingAgentDispatcher.groovy │ │ │ │ └── view │ │ │ │ │ ├── KubernetesJobProvider.groovy │ │ │ │ │ ├── KubernetesProviderUtils.groovy │ │ │ │ │ ├── KubernetesV1ApplicationProvider.groovy │ │ │ │ │ ├── KubernetesV1ClusterProvider.groovy │ │ │ │ │ ├── KubernetesV1InstanceProvider.groovy │ │ │ │ │ ├── KubernetesV1LoadBalancerProvider.groovy │ │ │ │ │ ├── KubernetesV1SecurityGroupProvider.groovy │ │ │ │ │ └── MutableCacheData.groovy │ │ │ └── security │ │ │ │ ├── KubernetesConfigParser.groovy │ │ │ │ └── KubernetesV1Credentials.java │ │ │ └── v2 │ │ │ ├── README.md │ │ │ ├── artifact │ │ │ ├── ArtifactReplacer.java │ │ │ ├── ArtifactReplacerFactory.java │ │ │ ├── KubernetesArtifactConverter.java │ │ │ ├── KubernetesUnversionedArtifactConverter.java │ │ │ └── KubernetesVersionedArtifactConverter.java │ │ │ ├── caching │ │ │ ├── Keys.java │ │ │ ├── KubernetesV2Provider.java │ │ │ ├── KubernetesV2ProviderConfig.java │ │ │ ├── KubernetesV2SearchProvider.java │ │ │ ├── agent │ │ │ │ ├── CustomKubernetesCachingAgentFactory.java │ │ │ │ ├── KubernetesCacheDataConverter.java │ │ │ │ ├── KubernetesCoreCachingAgent.java │ │ │ │ ├── KubernetesMetricCachingAgent.java │ │ │ │ ├── KubernetesNamespaceCachingAgent.java │ │ │ │ ├── KubernetesUnregisteredCustomResourceCachingAgent.java │ │ │ │ ├── KubernetesV2CachingAgent.java │ │ │ │ ├── KubernetesV2CachingAgentDispatcher.java │ │ │ │ └── KubernetesV2OnDemandCachingAgent.java │ │ │ └── view │ │ │ │ ├── model │ │ │ │ ├── KubernetesV2Application.java │ │ │ │ ├── KubernetesV2Cluster.java │ │ │ │ ├── KubernetesV2Health.java │ │ │ │ ├── KubernetesV2Instance.java │ │ │ │ ├── KubernetesV2LoadBalancer.java │ │ │ │ ├── KubernetesV2Manifest.java │ │ │ │ ├── KubernetesV2SecurityGroup.java │ │ │ │ ├── KubernetesV2ServerGroup.java │ │ │ │ ├── KubernetesV2ServerGroupManager.java │ │ │ │ ├── KubernetesV2ServerGroupSummary.java │ │ │ │ └── ManifestBasedModel.java │ │ │ │ └── provider │ │ │ │ ├── KubernetesCacheUtils.java │ │ │ │ ├── KubernetesV2AbstractManifestProvider.java │ │ │ │ ├── KubernetesV2ApplicationProvider.java │ │ │ │ ├── KubernetesV2ArtifactProvider.java │ │ │ │ ├── KubernetesV2ClusterProvider.java │ │ │ │ ├── KubernetesV2InstanceProvider.java │ │ │ │ ├── KubernetesV2LiveManifestProvider.java │ │ │ │ ├── KubernetesV2LoadBalancerProvider.java │ │ │ │ ├── KubernetesV2ManifestProvider.java │ │ │ │ ├── KubernetesV2SecurityGroupProvider.java │ │ │ │ ├── KubernetesV2ServerGroupManagerProvider.java │ │ │ │ └── data │ │ │ │ ├── KubernetesV2CacheData.java │ │ │ │ ├── KubernetesV2ServerGroupCacheData.java │ │ │ │ └── KubernetesV2ServerGroupManagerCacheData.java │ │ │ ├── converter │ │ │ ├── artifact │ │ │ │ └── KubernetesCleanupArtifactsConverter.java │ │ │ ├── job │ │ │ │ └── KubernetesRunJobOperationConverter.java │ │ │ ├── manifest │ │ │ │ ├── KubernetesDeleteManifestConverter.java │ │ │ │ ├── KubernetesDeployManifestConverter.java │ │ │ │ ├── KubernetesDisableManifestConverter.java │ │ │ │ ├── KubernetesEnableManifestConverter.java │ │ │ │ ├── KubernetesPatchManifestConverter.java │ │ │ │ ├── KubernetesPauseRolloutManifestConverter.java │ │ │ │ ├── KubernetesResumeRolloutManifestConverter.java │ │ │ │ ├── KubernetesScaleManifestConverter.java │ │ │ │ └── KubernetesUndoRolloutManifestConverter.java │ │ │ └── servergroup │ │ │ │ └── KubernetesResizeServerGroupConverter.java │ │ │ ├── description │ │ │ ├── JsonPatch.java │ │ │ ├── KubernetesCoordinates.java │ │ │ ├── KubernetesPatchOptions.java │ │ │ ├── KubernetesPodMetric.java │ │ │ ├── KubernetesResourceProperties.java │ │ │ ├── KubernetesResourcePropertyRegistry.java │ │ │ ├── KubernetesSpinnakerKindMap.java │ │ │ ├── RegistryUtils.java │ │ │ ├── artifact │ │ │ │ └── KubernetesCleanupArtifactsDescription.java │ │ │ ├── job │ │ │ │ └── KubernetesRunJobOperationDescription.java │ │ │ ├── manifest │ │ │ │ ├── KubernetesApiGroup.java │ │ │ │ ├── KubernetesApiVersion.java │ │ │ │ ├── KubernetesApplicationProperties.java │ │ │ │ ├── KubernetesCachingProperties.java │ │ │ │ ├── KubernetesDeleteManifestDescription.java │ │ │ │ ├── KubernetesDeployManifestDescription.java │ │ │ │ ├── KubernetesEnableDisableManifestDescription.java │ │ │ │ ├── KubernetesKind.java │ │ │ │ ├── KubernetesManifest.java │ │ │ │ ├── KubernetesManifestAnnotater.java │ │ │ │ ├── KubernetesManifestLabeler.java │ │ │ │ ├── KubernetesManifestList.java │ │ │ │ ├── KubernetesManifestMetadata.java │ │ │ │ ├── KubernetesManifestOperationDescription.java │ │ │ │ ├── KubernetesManifestSelector.java │ │ │ │ ├── KubernetesManifestStrategy.java │ │ │ │ ├── KubernetesManifestTraffic.java │ │ │ │ ├── KubernetesMultiManifestOperationDescription.java │ │ │ │ ├── KubernetesPatchManifestDescription.java │ │ │ │ ├── KubernetesPauseRolloutManifestDescription.java │ │ │ │ ├── KubernetesResumeRolloutManifestDescription.java │ │ │ │ ├── KubernetesScaleManifestDescription.java │ │ │ │ ├── KubernetesSourceCapacity.java │ │ │ │ ├── KubernetesUndoRolloutManifestDescription.java │ │ │ │ └── MalformedManifestException.java │ │ │ └── servergroup │ │ │ │ ├── KubernetesResizeServerGroupDescription.java │ │ │ │ └── KubernetesServerGroupOperationDescription.java │ │ │ ├── model │ │ │ └── KubernetesV2JobStatus.java │ │ │ ├── names │ │ │ └── KubernetesManifestNamer.java │ │ │ ├── op │ │ │ ├── OperationResult.java │ │ │ ├── artifact │ │ │ │ └── KubernetesCleanupArtifactsOperation.java │ │ │ ├── handler │ │ │ │ ├── CanDelete.java │ │ │ │ ├── CanDeploy.java │ │ │ │ ├── CanLoadBalance.java │ │ │ │ ├── CanPatch.java │ │ │ │ ├── CanPauseRollout.java │ │ │ │ ├── CanResize.java │ │ │ │ ├── CanResumeRollout.java │ │ │ │ ├── CanRollout.java │ │ │ │ ├── CanScale.java │ │ │ │ ├── CanUndoRollout.java │ │ │ │ ├── CustomKubernetesHandlerFactory.java │ │ │ │ ├── HasPods.java │ │ │ │ ├── KubernetesAPIServiceHandler.java │ │ │ │ ├── KubernetesClusterRoleBindingHandler.java │ │ │ │ ├── KubernetesClusterRoleHandler.java │ │ │ │ ├── KubernetesConfigMapHandler.java │ │ │ │ ├── KubernetesControllerRevisionHandler.java │ │ │ │ ├── KubernetesCronJobHandler.java │ │ │ │ ├── KubernetesCustomResourceDefinitionHandler.java │ │ │ │ ├── KubernetesDaemonSetHandler.java │ │ │ │ ├── KubernetesDeploymentHandler.java │ │ │ │ ├── KubernetesEventHandler.java │ │ │ │ ├── KubernetesHandler.java │ │ │ │ ├── KubernetesHorizontalPodAutoscalerHandler.java │ │ │ │ ├── KubernetesIngressHandler.java │ │ │ │ ├── KubernetesJobHandler.java │ │ │ │ ├── KubernetesMutatingWebhookConfigurationHandler.java │ │ │ │ ├── KubernetesNamespaceHandler.java │ │ │ │ ├── KubernetesNetworkPolicyHandler.java │ │ │ │ ├── KubernetesPersistentVolumeClaimHandler.java │ │ │ │ ├── KubernetesPersistentVolumeHandler.java │ │ │ │ ├── KubernetesPodDisruptionBudgetHandler.java │ │ │ │ ├── KubernetesPodHandler.java │ │ │ │ ├── KubernetesPodPresetHandler.java │ │ │ │ ├── KubernetesPodSecurityPolicyHandler.java │ │ │ │ ├── KubernetesReplicaSetHandler.java │ │ │ │ ├── KubernetesRoleBindingHandler.java │ │ │ │ ├── KubernetesRoleHandler.java │ │ │ │ ├── KubernetesSecretHandler.java │ │ │ │ ├── KubernetesServiceAccountHandler.java │ │ │ │ ├── KubernetesServiceHandler.java │ │ │ │ ├── KubernetesStatefulSetHandler.java │ │ │ │ ├── KubernetesStorageClassHandler.java │ │ │ │ ├── KubernetesUnregisteredCustomResourceHandler.java │ │ │ │ ├── KubernetesValidatingWebhookConfigurationHandler.java │ │ │ │ ├── ModelHandler.java │ │ │ │ ├── ServerGroupHandler.java │ │ │ │ ├── ServerGroupManagerHandler.java │ │ │ │ └── UnsupportedVersionException.java │ │ │ ├── job │ │ │ │ ├── KubectlJobExecutor.java │ │ │ │ └── KubernetesRunJobOperation.java │ │ │ ├── manifest │ │ │ │ ├── AbstractKubernetesEnableDisableManifestOperation.java │ │ │ │ ├── KubernetesDeleteManifestOperation.java │ │ │ │ ├── KubernetesDeployManifestOperation.java │ │ │ │ ├── KubernetesDisableManifestOperation.java │ │ │ │ ├── KubernetesEnableManifestOperation.java │ │ │ │ ├── KubernetesPatchManifestOperation.java │ │ │ │ ├── KubernetesPauseRolloutManifestOperation.java │ │ │ │ ├── KubernetesResumeRolloutManifestOperation.java │ │ │ │ ├── KubernetesScaleManifestOperation.java │ │ │ │ └── KubernetesUndoRolloutManifestOperation.java │ │ │ └── servergroup │ │ │ │ └── KubernetesResizeServerGroupOperation.java │ │ │ ├── provider │ │ │ └── view │ │ │ │ └── KubernetesV2JobProvider.java │ │ │ ├── security │ │ │ ├── KubernetesApiException.java │ │ │ ├── KubernetesSelector.java │ │ │ ├── KubernetesSelectorList.java │ │ │ ├── KubernetesV2Credentials.java │ │ │ └── MatchExpression.java │ │ │ └── validator │ │ │ ├── KubernetesValidationUtil.java │ │ │ ├── artifact │ │ │ └── KubernetesArtifactCleanupValidator.java │ │ │ ├── manifest │ │ │ ├── KubernetesDeleteManifestValidator.java │ │ │ ├── KubernetesDeployManifestValidator.java │ │ │ ├── KubernetesDisableManifestValidator.java │ │ │ ├── KubernetesEnableManifestValidator.java │ │ │ ├── KubernetesPatchManifestValidator.java │ │ │ ├── KubernetesPauseRolloutManifestValidator.java │ │ │ ├── KubernetesResumeRolloutManifestValidator.java │ │ │ ├── KubernetesScaleManifestValidator.java │ │ │ └── KubernetesUndoRolloutManifestValidator.java │ │ │ └── servergroup │ │ │ └── KubernetesResizeServerGroupValidator.java │ │ └── config │ │ └── KubernetesConfiguration.groovy │ └── test │ ├── groovy │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ └── kubernetes │ │ ├── v1 │ │ ├── deploy │ │ │ ├── converters │ │ │ │ ├── loadbalancer │ │ │ │ │ └── UpsertKubernetesLoadBalancerAtomicOperationConverterSpec.groovy │ │ │ │ └── servergroup │ │ │ │ │ ├── CloneKubernetesAtomicOperationConverterSpec.groovy │ │ │ │ │ └── DeployKubernetesAtomicOperationConverterSpec.groovy │ │ │ ├── ops │ │ │ │ ├── KubernetesUtilSpec.groovy │ │ │ │ ├── loadbalancer │ │ │ │ │ └── UpsertKubernetesLoadBalancerAtomicOperationSpec.groovy │ │ │ │ ├── securitygroup │ │ │ │ │ └── UpsertKubernetesV1SecurityGroupAtomicOperationSpec.groovy │ │ │ │ └── servergroup │ │ │ │ │ ├── CloneKubernetesAtomicOperationSpec.groovy │ │ │ │ │ └── DeployKubernetesAtomicOperationSpec.groovy │ │ │ └── validators │ │ │ │ ├── StandardKubernetesAttributeValidatorSpec.groovy │ │ │ │ ├── loadbalancer │ │ │ │ └── UpsertKubernetesLoadBalancerAtomicOperationValidatorSpec.groovy │ │ │ │ └── servergroup │ │ │ │ ├── CloneKubernetesAtomicOperationValidatorSpec.groovy │ │ │ │ └── DeployKubernetesAtomicOperationValidatorSpec.groovy │ │ ├── model │ │ │ ├── KubernetesInstanceSpec.groovy │ │ │ └── KubernetesServerGroupSpec.groovy │ │ ├── provider │ │ │ └── agent │ │ │ │ ├── KubernetesInstanceCachingAgentSpec.groovy │ │ │ │ ├── KubernetesLoadBalancerCachingAgentSpec.groovy │ │ │ │ ├── KubernetesServerGroupCachingAgentSpec.groovy │ │ │ │ └── KubernetesV1SecurityGroupCachingAgentSpec.groovy │ │ └── security │ │ │ ├── KubernetesConfigParserSpec.groovy │ │ │ └── KubernetesV1CredentialsSpec.groovy │ │ └── v2 │ │ ├── artifact │ │ ├── ArtifactReplacerSpec.groovy │ │ ├── KubernetesUnversionedArtifactConverterSpec.groovy │ │ └── KubernetesVersionedArtifactConverterSpec.groovy │ │ ├── caching │ │ ├── KeysSpec.groovy │ │ └── agent │ │ │ ├── KubernetesCacheDataConvertSpec.groovy │ │ │ └── KubernetesReplicaSetCachingAgentSpec.groovy │ │ ├── description │ │ ├── KubernetesManifestAnnotatorSpec.groovy │ │ ├── KubernetesManifestSpec.groovy │ │ └── manifest │ │ │ └── KubernetesManifestLabelerSpec.groovy │ │ ├── op │ │ ├── KubernetesDeployManifestOperationSpec.groovy │ │ └── handler │ │ │ ├── HandlerPrioritySpec.groovy │ │ │ ├── KubernetesDeploymentHandlerSpec.groovy │ │ │ ├── KubernetesHorizontalPodAutoscalerHandlerSpec.groovy │ │ │ └── KubernetesStatefulSetHandlerSpec.groovy │ │ ├── security │ │ ├── KubernetesSelectorListSpec.groovy │ │ ├── KubernetesSelectorSpec.groovy │ │ └── KubernetesV2CredentialsSpec.groovy │ │ └── validator │ │ └── KubernetesValidationUtilSpec.groovy │ └── resources │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── kubernetes │ └── v2 │ ├── description │ └── manifest │ │ └── manifest.json │ └── op │ └── handler │ ├── statefulsetbase.json │ └── statefulsetpartitionbase.json ├── clouddriver-lambda ├── README.md ├── clouddriver-lambda.gradle └── src │ └── main │ └── java │ └── com │ └── netflix │ └── spinnaker │ ├── clouddriver │ └── lambda │ │ ├── cache │ │ ├── Keys.java │ │ ├── client │ │ │ ├── AbstractCacheClient.java │ │ │ └── LambdaCacheClient.java │ │ └── model │ │ │ ├── IamRole.java │ │ │ └── LambdaFunction.java │ │ ├── deploy │ │ ├── converters │ │ │ ├── CreateLambdaFunctionAtomicOperationConverter.java │ │ │ ├── DeleteLambdaFunctionAtomicOperationConverter.java │ │ │ ├── DeleteLambdaFunctionEventMappingAtomicOperationConverter.java │ │ │ ├── InvokeLambdaFunctionAtomicOperationConverter.java │ │ │ ├── UpdateLambdaFunctionCodeAtomicOperationConverter.java │ │ │ ├── UpdateLambdaFunctionConfigurationAtomicOperationConverter.java │ │ │ ├── UpsertLambdaFunctionAliasAtomicOperationConverter.java │ │ │ └── UpsertLambdaFunctionEventMappingAtomicOperationConverter.java │ │ ├── description │ │ │ ├── AbstractLambdaFunctionDescription.java │ │ │ ├── CreateLambdaFunctionConfigurationDescription.java │ │ │ ├── CreateLambdaFunctionDescription.java │ │ │ ├── DeleteLambdaFunctionDescription.java │ │ │ ├── InvokeLambdaFunctionDescription.java │ │ │ ├── UpdateLambdaFunctionCodeDescription.java │ │ │ ├── UpsertLambdaFunctionAliasDescription.java │ │ │ └── UpsertLambdaFunctionEventMappingDescription.java │ │ └── ops │ │ │ ├── AbstractLambdaAtomicOperation.java │ │ │ ├── CreateLambdaAtomicOperation.java │ │ │ ├── DeleteLambdaAtomicOperation.java │ │ │ ├── DeleteLambdaEventSourceAtomicOperation.java │ │ │ ├── InvokeLambdaAtomicOperation.java │ │ │ ├── UpdateLambdaCodeAtomicOperation.java │ │ │ ├── UpdateLambdaConfigurationAtomicOperation.java │ │ │ ├── UpsertLambdaAliasAtomicOperation.java │ │ │ └── UpsertLambdaEventSourceAtomicOperation.java │ │ └── provider │ │ ├── agent │ │ ├── IamRoleCachingAgent.java │ │ ├── IamTrustRelationship.java │ │ ├── LambdaAgentProvider.java │ │ └── LambdaCachingAgent.java │ │ └── view │ │ └── LambdaFunctionProvider.java │ └── config │ └── LambdaConfiguration.java ├── clouddriver-oracle ├── clouddriver-oracle.gradle ├── oracle-source-header └── src │ ├── main │ ├── groovy │ │ └── com │ │ │ └── netflix │ │ │ └── spinnaker │ │ │ ├── clouddriver │ │ │ └── oracle │ │ │ │ ├── OracleCloudProvider.groovy │ │ │ │ ├── OracleOperation.groovy │ │ │ │ ├── cache │ │ │ │ └── Keys.groovy │ │ │ │ ├── config │ │ │ │ └── OracleConfigurationProperties.groovy │ │ │ │ ├── controller │ │ │ │ └── OracleImageLookupController.groovy │ │ │ │ ├── deploy │ │ │ │ ├── OracleServerGroupNameResolver.groovy │ │ │ │ ├── OracleWorkRequestPoller.groovy │ │ │ │ ├── converter │ │ │ │ │ ├── BasicOracleDeployAtomicOperationConverter.groovy │ │ │ │ │ ├── DeleteOracleLoadBalancerAtomicOperationConverter.java │ │ │ │ │ ├── DestroyOracleServerGroupAtomicOperationConverter.groovy │ │ │ │ │ ├── DisableOracleServerGroupAtomicOperationConverter.groovy │ │ │ │ │ ├── EnableOracleServerGroupAtomicOperationConverter.groovy │ │ │ │ │ ├── NoOpOracleAtomicOperationConverter.groovy │ │ │ │ │ ├── OracleAtomicOperationConverterHelper.groovy │ │ │ │ │ ├── ResizeOracleServerGroupAtomicOperationConverter.groovy │ │ │ │ │ └── UpsertOracleLoadBalancerAtomicOperationConverter.groovy │ │ │ │ ├── description │ │ │ │ │ ├── AbstractOracleCredentialsDescription.groovy │ │ │ │ │ ├── BaseOracleInstanceDescription.groovy │ │ │ │ │ ├── BasicOracleDeployDescription.groovy │ │ │ │ │ ├── DeleteLoadBalancerDescription.java │ │ │ │ │ ├── DestroyOracleServerGroupDescription.groovy │ │ │ │ │ ├── EnableDisableOracleServerGroupDescription.groovy │ │ │ │ │ ├── ResizeOracleServerGroupDescription.groovy │ │ │ │ │ └── UpsertLoadBalancerDescription.groovy │ │ │ │ ├── handler │ │ │ │ │ └── BasicOracleDeployHandler.groovy │ │ │ │ ├── op │ │ │ │ │ ├── AbstractEnableDisableAtomicOperation.groovy │ │ │ │ │ ├── DeleteOracleLoadBalancerAtomicOperation.groovy │ │ │ │ │ ├── DestroyOracleServerGroupAtomicOperation.groovy │ │ │ │ │ ├── DisableOracleServerGroupAtomicOperation.groovy │ │ │ │ │ ├── EnableOracleServerGroupAtomicOperation.groovy │ │ │ │ │ ├── ResizeOracleServerGroupAtomicOperation.groovy │ │ │ │ │ └── UpsertOracleLoadBalancerAtomicOperation.java │ │ │ │ └── validator │ │ │ │ │ ├── BasicOracleDeployDescriptionValidator.groovy │ │ │ │ │ ├── DestroyOracleServerGroupDescriptionValidator.groovy │ │ │ │ │ ├── EnableDisableOracleServerGroupDescriptionValidator.groovy │ │ │ │ │ ├── ResizeOracleServerGroupDescriptionValidator.groovy │ │ │ │ │ ├── StandardOracleAttributeValidator.groovy │ │ │ │ │ └── UpsertLoadBalancerDescriptionValidator.java │ │ │ │ ├── health │ │ │ │ └── OracleHealthIndicator.groovy │ │ │ │ ├── model │ │ │ │ ├── OracleCluster.groovy │ │ │ │ ├── OracleImage.groovy │ │ │ │ ├── OracleInstance.groovy │ │ │ │ ├── OracleNetwork.groovy │ │ │ │ ├── OracleSecurityGroup.groovy │ │ │ │ ├── OracleSecurityGroupSummary.groovy │ │ │ │ ├── OracleServerGroup.groovy │ │ │ │ └── OracleSubnet.groovy │ │ │ │ ├── provider │ │ │ │ ├── OracleInfrastructureProvider.groovy │ │ │ │ ├── agent │ │ │ │ │ ├── AbstractOracleCachingAgent.groovy │ │ │ │ │ ├── OracleImageCachingAgent.groovy │ │ │ │ │ ├── OracleInstanceCachingAgent.groovy │ │ │ │ │ ├── OracleLoadBalancerCachingAgent.groovy │ │ │ │ │ ├── OracleNetworkCachingAgent.groovy │ │ │ │ │ ├── OracleSecurityGroupCachingAgent.groovy │ │ │ │ │ ├── OracleServerGroupCachingAgent.groovy │ │ │ │ │ └── OracleSubnetCachingAgent.groovy │ │ │ │ ├── config │ │ │ │ │ └── OracleInfrastructureProviderConfig.groovy │ │ │ │ └── view │ │ │ │ │ ├── OracleClusterProvider.groovy │ │ │ │ │ ├── OracleImageProvider.groovy │ │ │ │ │ ├── OracleInstanceProvider.groovy │ │ │ │ │ ├── OracleLoadBalancerProvider.groovy │ │ │ │ │ ├── OracleNetworkProvider.groovy │ │ │ │ │ ├── OracleSecurityGroupProvider.groovy │ │ │ │ │ └── OracleSubnetProvider.groovy │ │ │ │ ├── security │ │ │ │ ├── OracleCredentialsInitializer.groovy │ │ │ │ └── OracleNamedAccountCredentials.groovy │ │ │ │ └── service │ │ │ │ └── servergroup │ │ │ │ ├── DefaultOracleServerGroupService.groovy │ │ │ │ ├── OraclePersistenceContext.groovy │ │ │ │ ├── OracleServerGroupPersistence.groovy │ │ │ │ └── OracleServerGroupService.groovy │ │ │ └── config │ │ │ └── OracleConfiguration.groovy │ └── java │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ └── oracle │ │ └── model │ │ └── Details.java │ └── test │ ├── groovy │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ └── oracle │ │ ├── OracleProviderSpec.groovy │ │ ├── controller │ │ └── OracleImageLookupControllerSpec.groovy │ │ ├── deploy │ │ ├── converter │ │ │ ├── BasicOracleDeployAtomicOperationConverterUnitSpec.groovy │ │ │ ├── DestroyOracleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ │ ├── DisableOracleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ │ ├── EnableOracleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ │ ├── ResizeOracleServerGroupAtomicOperationConverterUnitSpec.groovy │ │ │ └── UpsertOracleLoadBalancerAtomicOperationConverterUnitSpec.groovy │ │ ├── handler │ │ │ └── BasicOracleDeployHandlerSpec.groovy │ │ ├── op │ │ │ ├── DestroyOracleServerGroupAtomicOperationSpec.groovy │ │ │ ├── DisableOracleServerGroupAtomicOperationSpec.groovy │ │ │ ├── EnableOracleServerGroupAtomicOperationSpec.groovy │ │ │ ├── ResizeOracleServerGroupAtomicOperationSpec.groovy │ │ │ └── UpsertOracleLoadBalancerAtomicOperationSpec.groovy │ │ └── validator │ │ │ ├── BasicOracleDeployDescriptionValidatorSpec.groovy │ │ │ ├── DestroyOracleServerGroupDescriptionValidatorSpec.groovy │ │ │ ├── EnableDisableOracleServerGroupDescriptionValidatorSpec.groovy │ │ │ ├── ResizeOracleServerGroupDescriptionValidatorSpec.groovy │ │ │ ├── StandardOracleAttributeValidatorSpec.groovy │ │ │ └── UpsertLoadBalancerDescriptionValidatorSpec.groovy │ │ ├── provider │ │ ├── agent │ │ │ ├── OracleImageCachingAgentSpec.groovy │ │ │ ├── OracleInstanceCachingAgentSpec.groovy │ │ │ ├── OracleNetworkCachingAgentSpec.groovy │ │ │ ├── OracleSecurityGroupCachingAgentSpec.groovy │ │ │ ├── OracleServerGroupCachingAgentSpec.groovy │ │ │ └── OracleSubnetCachingAgentSpec.groovy │ │ └── view │ │ │ ├── OracleClusterProviderSpec.groovy │ │ │ ├── OracleImageProviderSpec.groovy │ │ │ ├── OracleInstanceProviderSpec.groovy │ │ │ ├── OracleNetworkProviderSpec.groovy │ │ │ ├── OracleSecurityGroupProviderSpec.groovy │ │ │ └── OracleSubnetProviderSpec.groovy │ │ └── service │ │ └── servergroup │ │ ├── DefaultOracleServerGroupServiceSpec.groovy │ │ └── OracleServerGroupPersistenceSpec.groovy │ └── resources │ └── desc │ ├── createLoadBalancer1.json │ ├── createLoadBalancer2.json │ ├── createLoadBalancer_invalidBackendSet.json │ ├── createLoadBalancer_invalidCert.json │ ├── createLoadBalancer_invalidListener.json │ ├── updateLoadBalancerBackendSets.json │ ├── updateLoadBalancerCerts.json │ └── updateLoadBalancerListeners.json ├── clouddriver-scattergather ├── clouddriver-scattergather.gradle └── src │ ├── main │ └── kotlin │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ ├── config │ │ └── ScatterGatherConfiguration.kt │ │ └── scattergather │ │ ├── ReducedResponse.kt │ │ ├── ResponseReducer.kt │ │ ├── ScatterGather.kt │ │ ├── ServletScatterGatherRequest.kt │ │ ├── client │ │ └── ScatteredOkHttpCallFactory.kt │ │ ├── naive │ │ └── NaiveScatterGather.kt │ │ └── reducer │ │ └── DeepMergeResponseReducer.kt │ └── test │ └── kotlin │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── scattergather │ ├── ReducedResponseSpec.kt │ ├── client │ └── ScatteredOkHttpCallFactorySpec.kt │ └── reducer │ └── DeepMergeResponseReducerSpec.kt ├── clouddriver-security ├── clouddriver-security.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ └── clouddriver │ │ └── security │ │ ├── AccountCredentials.java │ │ ├── AccountCredentialsProvider.java │ │ ├── AccountCredentialsRepository.java │ │ ├── AllowedAccountsValidator.groovy │ │ ├── CredentialsInitializerSynchronizable.java │ │ ├── DefaultAccountCredentialsProvider.java │ │ ├── DefaultAllowedAccountsValidator.groovy │ │ ├── MapBackedAccountCredentialsRepository.groovy │ │ ├── NoopCredentialsInitializerSynchronizable.groovy │ │ ├── ProviderUtils.groovy │ │ ├── ProviderVersion.java │ │ ├── config │ │ └── SecurityConfig.groovy │ │ └── resources │ │ ├── AccountNameable.java │ │ ├── ApplicationNameable.java │ │ ├── CredentialsNameable.java │ │ ├── MissingSecurityCheck.groovy │ │ ├── NonCredentialed.java │ │ ├── ResourcesNameable.java │ │ ├── ServerGroupNameable.java │ │ └── ServerGroupsNameable.java │ └── test │ └── groovy │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── security │ ├── DefaultAccountCredentialsProviderSpec.groovy │ ├── DefaultAllowedAccountsValidatorSpec.groovy │ └── ProviderUtilsSpec.groovy ├── clouddriver-sql-mysql └── clouddriver-sql-mysql.gradle ├── clouddriver-sql ├── clouddriver-sql.gradle └── src │ ├── main │ ├── kotlin │ │ └── com │ │ │ └── netflix │ │ │ └── spinnaker │ │ │ ├── clouddriver │ │ │ └── sql │ │ │ │ ├── SqlProvider.kt │ │ │ │ ├── SqlTask.kt │ │ │ │ ├── SqlTaskCleanupAgent.kt │ │ │ │ ├── SqlTaskRepository.kt │ │ │ │ ├── TaskMapper.kt │ │ │ │ ├── TaskResultObjectMapper.kt │ │ │ │ ├── TaskStatusMapper.kt │ │ │ │ └── sql.kt │ │ │ └── config │ │ │ ├── ConnectionPools.kt │ │ │ ├── SqlConfiguration.kt │ │ │ └── SqlTaskCleanupAgentProperties.kt │ └── resources │ │ └── db │ │ ├── changelog-master.yml │ │ └── changelog │ │ ├── 20180919-initial-schema.yml │ │ ├── 20181120-cats.yml │ │ └── 20181205-agent-scheduler.yml │ └── test │ └── java │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── sql │ └── SqlTaskRepositoryTest.java ├── clouddriver-titus ├── README.md ├── clouddriver-titus.gradle └── src │ ├── main │ └── groovy │ │ └── com │ │ └── netflix │ │ └── spinnaker │ │ ├── clouddriver │ │ └── titus │ │ │ ├── TitusClientProvider.groovy │ │ │ ├── TitusCloudProvider.groovy │ │ │ ├── TitusException.java │ │ │ ├── TitusOperation.groovy │ │ │ ├── caching │ │ │ ├── Keys.groovy │ │ │ ├── TitusCachingProvider.groovy │ │ │ ├── TitusCachingProviderConfig.groovy │ │ │ ├── agents │ │ │ │ ├── TitusInstanceCachingAgent.java │ │ │ │ ├── TitusStreamingUpdateAgent.java │ │ │ │ └── TitusV2ClusterCachingAgent.java │ │ │ ├── providers │ │ │ │ ├── TitusApplicationProvider.groovy │ │ │ │ ├── TitusClusterProvider.groovy │ │ │ │ ├── TitusInstanceProvider.groovy │ │ │ │ ├── TitusJobProvider.groovy │ │ │ │ └── TitusTargetGroupServerGroupProvider.java │ │ │ └── utils │ │ │ │ ├── AwsLookupUtil.groovy │ │ │ │ ├── CachingSchema.java │ │ │ │ └── CachingSchemaUtil.groovy │ │ │ ├── client │ │ │ ├── EndpointValidator.java │ │ │ ├── RegionScopedTitusAutoscalingClient.java │ │ │ ├── RegionScopedTitusClient.java │ │ │ ├── RegionScopedTitusLoadBalancerClient.java │ │ │ ├── SimpleGrpcChannelFactory.groovy │ │ │ ├── TitusAutoscalingClient.java │ │ │ ├── TitusClient.java │ │ │ ├── TitusClientAuthenticationUtil.java │ │ │ ├── TitusClientCompressionUtil.java │ │ │ ├── TitusClientObjectMapper.java │ │ │ ├── TitusFaultDomain.java │ │ │ ├── TitusJobCustomizer.java │ │ │ ├── TitusLoadBalancerClient.java │ │ │ ├── TitusRegion.java │ │ │ ├── model │ │ │ │ ├── AbstractJobRequest.java │ │ │ │ ├── ActivateJobRequest.java │ │ │ │ ├── DisruptionBudget.java │ │ │ │ ├── Efs.java │ │ │ │ ├── GrpcChannelFactory.java │ │ │ │ ├── HealthStatus.java │ │ │ │ ├── Job.java │ │ │ │ ├── JobDescription.java │ │ │ │ ├── MigrationPolicy.java │ │ │ │ ├── ResizeJobRequest.java │ │ │ │ ├── SubmitJobRequest.java │ │ │ │ ├── SubmitJobResponse.java │ │ │ │ ├── Task.java │ │ │ │ ├── TaskState.java │ │ │ │ ├── TerminateJobRequest.java │ │ │ │ ├── TerminateTasksAndShrinkJobRequest.java │ │ │ │ ├── TitusHealth.java │ │ │ │ └── disruption │ │ │ │ │ ├── AvailabilityPercentageLimit.java │ │ │ │ │ ├── ContainerHealthProvider.java │ │ │ │ │ ├── HourlyTimeWindow.java │ │ │ │ │ ├── RatePerInterval.java │ │ │ │ │ ├── RatePercentagePerHour.java │ │ │ │ │ ├── RatePercentagePerInterval.java │ │ │ │ │ ├── RateUnlimited.java │ │ │ │ │ ├── RelocationLimit.java │ │ │ │ │ ├── SelfManaged.java │ │ │ │ │ ├── TimeWindow.java │ │ │ │ │ └── UnhealthyTasksLimit.java │ │ │ └── security │ │ │ │ └── TitusCredentials.java │ │ │ ├── credentials │ │ │ └── NetflixTitusCredentials.groovy │ │ │ ├── deploy │ │ │ ├── TitusServerGroupNameResolver.groovy │ │ │ ├── converters │ │ │ │ ├── CloneTitusServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── DeleteTitusScalingPolicyAtomicOperationConverter.groovy │ │ │ │ ├── DeregisterTitusInstanceFromLoadBalancerAtomicOperationConverter.groovy │ │ │ │ ├── DestroyTitusServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── DetachTitusInstancesAtomicOperationConverter.groovy │ │ │ │ ├── DisableTitusInstancesInDiscoveryAtomicOperationConverter.groovy │ │ │ │ ├── DisableTitusServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── EnableTitusInstancesInDiscoveryAtomicOperationConverter.groovy │ │ │ │ ├── EnableTitusServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── ModifyTitusAsgLaunchConfigurationAtomicOperationConverter.groovy │ │ │ │ ├── ResizeTitusServerGroupAtomicOperationConverter.groovy │ │ │ │ ├── RunTitusJobAtomicOperationConverter.groovy │ │ │ │ ├── TerminateTitusInstancesAtomicOperationConverter.groovy │ │ │ │ ├── TitusDeployAtomicOperationConverter.groovy │ │ │ │ └── UpsertTitusScalingPolicyAtomicOperationConverter.groovy │ │ │ ├── description │ │ │ │ ├── AbstractRegionAsgInstanceIdsDescription.groovy │ │ │ │ ├── AbstractTitusCredentialsDescription.groovy │ │ │ │ ├── DeleteTitusScalingPolicyDescription.groovy │ │ │ │ ├── DeregisterTitusInstanceFromLoadBalancerDescription.groovy │ │ │ │ ├── DestroyTitusServerGroupDescription.groovy │ │ │ │ ├── DetachTitusInstancesDescription.groovy │ │ │ │ ├── DisableTitusServerGroupDescription.groovy │ │ │ │ ├── EnableDisableInstanceDiscoveryDescription.groovy │ │ │ │ ├── EnableDisableServerGroupDescription.groovy │ │ │ │ ├── ModifyTitusAsgLaunchConfigurationDescription.groovy │ │ │ │ ├── ResizeTitusServerGroupDescription.groovy │ │ │ │ ├── TerminateTitusInstancesDescription.groovy │ │ │ │ ├── TitusDeployDescription.groovy │ │ │ │ └── UpsertTitusScalingPolicyDescription.groovy │ │ │ ├── handlers │ │ │ │ ├── TitusDeployHandler.groovy │ │ │ │ └── TitusDeploymentResult.groovy │ │ │ ├── ops │ │ │ │ ├── AbstractEnableDisableAtomicOperation.groovy │ │ │ │ ├── CloneTitusServerGroupAtomicOperation.groovy │ │ │ │ ├── DeleteTitusScalingPolicyAtomicOperation.groovy │ │ │ │ ├── DeregisterTitusInstanceFromLoadBalancerAtomicOperation.groovy │ │ │ │ ├── DestroyTitusServerGroupAtomicOperation.groovy │ │ │ │ ├── DetachTitusInstancesAtomicOperation.groovy │ │ │ │ ├── DisableTitusServerGroupAtomicOperation.groovy │ │ │ │ ├── EnableTitusServerGroupAtomicOperation.groovy │ │ │ │ ├── ModifyTitusAsgLaunchConfigurationOperation.groovy │ │ │ │ ├── ResizeTitusServerGroupAtomicOperation.groovy │ │ │ │ ├── RunTitusJobAtomicOperation.groovy │ │ │ │ ├── TerminateTitusInstancesAtomicOperation.groovy │ │ │ │ ├── UpsertTitusScalingPolicyAtomicOperation.groovy │ │ │ │ └── discovery │ │ │ │ │ ├── AbstractEnableDisableTitusInstanceDiscoveryAtomicOperation.groovy │ │ │ │ │ ├── DisableTitusInstancesInDiscoveryAtomicOperation.groovy │ │ │ │ │ ├── EnableTitusInstancesInDiscoveryAtomicOperation.groovy │ │ │ │ │ └── TitusEurekaSupport.groovy │ │ │ └── validators │ │ │ │ ├── AbstractTitusDescriptionValidatorSupport.groovy │ │ │ │ ├── DestroyTitusServerGroupDescriptionValidator.groovy │ │ │ │ ├── DisableTitusInstancesInDiscoveryDescriptionValidator.groovy │ │ │ │ ├── DisableTitusServerGroupDescriptionValidator.groovy │ │ │ │ ├── EnableTitusInstancesInDiscoveryDescriptionValidator.groovy │ │ │ │ ├── ResizeTitusServerGroupDescriptionValidator.groovy │ │ │ │ ├── TerminateTitusInstancesDescriptionValidator.groovy │ │ │ │ └── TitusDeployDescriptionValidator.groovy │ │ │ └── model │ │ │ ├── DockerImage.groovy │ │ │ ├── Placement.groovy │ │ │ ├── Resources.groovy │ │ │ ├── TitusApplication.groovy │ │ │ ├── TitusCluster.groovy │ │ │ ├── TitusError.java │ │ │ ├── TitusInstance.groovy │ │ │ ├── TitusInstancePlacement.groovy │ │ │ ├── TitusInstanceResources.groovy │ │ │ ├── TitusJobStatus.groovy │ │ │ ├── TitusSecurityGroup.groovy │ │ │ ├── TitusServerGroup.groovy │ │ │ ├── TitusServerGroupPlacement.groovy │ │ │ └── TitusServerGroupResources.groovy │ │ └── config │ │ └── TitusConfiguration.groovy │ └── test │ └── groovy │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ └── titus │ ├── client │ └── RegionScopedTitusClientSpec.groovy │ ├── deploy │ ├── converters │ │ └── TitusDeployAtomicOperationConverterSpec.groovy │ ├── handlers │ │ └── TitusDeployHandlerSpec.groovy │ └── ops │ │ └── DestroyTitusServerGroupAtomicOperationSpec.groovy │ └── model │ ├── TitusInstanceSpec.groovy │ ├── TitusJobStatusSpec.groovy │ └── TitusServerGroupSpec.groovy ├── clouddriver-web ├── clouddriver-web.gradle ├── config │ └── clouddriver.yml ├── etc │ ├── init │ │ └── clouddriver.conf │ └── logrotate.d │ │ └── clouddriver ├── lib │ └── systemd │ │ └── system │ │ └── clouddriver.service ├── pkg_scripts │ ├── postInstall.sh │ └── postUninstall.sh └── src │ ├── main │ ├── groovy │ │ └── com │ │ │ └── netflix │ │ │ └── spinnaker │ │ │ ├── clouddriver │ │ │ ├── Main.groovy │ │ │ ├── WebConfig.groovy │ │ │ ├── configuration │ │ │ │ └── CredentialsConfiguration.groovy │ │ │ ├── controllers │ │ │ │ ├── ApplicationsController.groovy │ │ │ │ ├── ArtifactController.java │ │ │ │ ├── AuthorizationSupport.groovy │ │ │ │ ├── CacheController.groovy │ │ │ │ ├── CertificateController.groovy │ │ │ │ ├── CloudMetricController.groovy │ │ │ │ ├── ClusterController.groovy │ │ │ │ ├── ConfigRefreshController.groovy │ │ │ │ ├── CredentialsController.groovy │ │ │ │ ├── DataController.groovy │ │ │ │ ├── ElasticIpController.groovy │ │ │ │ ├── EntityTagsController.java │ │ │ │ ├── FeaturesController.groovy │ │ │ │ ├── FunctionController.java │ │ │ │ ├── ImageController.java │ │ │ │ ├── InstanceController.groovy │ │ │ │ ├── InstanceTypeController.groovy │ │ │ │ ├── JobController.groovy │ │ │ │ ├── KeyPairController.groovy │ │ │ │ ├── LoadBalancerController.groovy │ │ │ │ ├── ManifestController.java │ │ │ │ ├── NetworkController.groovy │ │ │ │ ├── OperationsController.groovy │ │ │ │ ├── ProjectController.groovy │ │ │ │ ├── ReservationReportController.groovy │ │ │ │ ├── SearchController.groovy │ │ │ │ ├── SecurityGroupController.groovy │ │ │ │ ├── ServerGroupController.groovy │ │ │ │ ├── ServerGroupManagerController.java │ │ │ │ ├── ServiceBrokerController.java │ │ │ │ ├── SubnetController.groovy │ │ │ │ ├── TaskController.groovy │ │ │ │ ├── VpcController.groovy │ │ │ │ └── admin │ │ │ │ │ └── EntityTagsAdminController.java │ │ │ ├── events │ │ │ │ └── ConfigRefreshedEvent.groovy │ │ │ ├── listeners │ │ │ │ ├── CredentialsRefreshListener.groovy │ │ │ │ └── OperationsTypeChecker.groovy │ │ │ ├── model │ │ │ │ └── view │ │ │ │ │ ├── ApplicationClusterViewModel.groovy │ │ │ │ │ └── ApplicationViewModel.groovy │ │ │ └── requestqueue │ │ │ │ ├── QueuedRequestException.java │ │ │ │ ├── RequestQueue.java │ │ │ │ ├── RequestQueueConfiguration.java │ │ │ │ └── pooled │ │ │ │ ├── PollCoordinator.java │ │ │ │ ├── PooledRequest.java │ │ │ │ ├── PooledRequestQueue.java │ │ │ │ ├── Promise.java │ │ │ │ ├── PromiseNotStartedException.java │ │ │ │ ├── PromiseTimeoutException.java │ │ │ │ └── RequestDistributor.java │ │ │ └── config │ │ │ └── LoggingHandlerExceptionResolver.groovy │ └── resources │ │ ├── banner.txt │ │ └── logback-defaults.xml │ └── test │ └── groovy │ └── com │ └── netflix │ └── spinnaker │ └── clouddriver │ ├── MainSpec.groovy │ ├── controllers │ ├── ApplicationControllerSpec.groovy │ ├── AuthorizationSupportSpec.groovy │ ├── CloudMetricControllerSpec.groovy │ ├── ClusterControllerSpec.groovy │ ├── CredentialsControllerSpec.groovy │ ├── DataControllerSpec.groovy │ ├── FeaturesControllerSpec.groovy │ ├── OperationsControllerSpec.groovy │ └── SearchControllerSpec.groovy │ └── requestqueue │ └── pooled │ ├── PooledRequestQueueSpec.groovy │ └── RequestDistributorSpec.groovy ├── gradle.properties ├── gradle ├── buildViaTravis.sh ├── init-publish.gradle ├── installViaTravis.sh ├── kotlin.gradle ├── prepCaches.sh ├── spek.gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── halconfig ├── clouddriver-bootstrap.yml ├── clouddriver-caching.yml ├── clouddriver-ro-deck.yml ├── clouddriver-ro.yml ├── clouddriver-rw.yml └── clouddriver.yml ├── lombok.config └── settings.gradle /.clog.toml: -------------------------------------------------------------------------------- 1 | [clog] 2 | 3 | [sections] 4 | "Configuration Changes" = ["config", "conf"] 5 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | trim_trailing_whitespace = true 8 | indent_style = space 9 | indent_size = 2 10 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | We prefer small, well tested pull requests. 2 | 3 | Please refer to [Contributing to Spinnaker](https://spinnaker.io/community/contributing/). 4 | 5 | When filling out a pull request, please consider the following: 6 | 7 | * Follow the commit message conventions [found here](http://www.spinnaker.io/v1.0/docs/how-to-submit-a-patch). 8 | * Provide a descriptive summary for your changes. 9 | * If it fixes a bug or resolves a feature request, be sure to link to that issue. 10 | * Add inline code comments to changes that might not be obvious. 11 | * Squash your commits as you keep adding changes. 12 | * Add a comment to @spinnaker/reviewers for review if your issue has been outstanding for more than 3 days. 13 | 14 | Note that we are unlikely to accept pull requests that add features without prior discussion. The best way to propose a feature is to open an issue first and discuss your ideas there before implementing them. 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | out/ 3 | .gradle/ 4 | build/ 5 | *.iml 6 | *.ipr 7 | *.iws 8 | TestScript.groovy 9 | .idea/ 10 | .classpath 11 | .project 12 | .settings/ 13 | bin/ 14 | application.yml 15 | *.hprof 16 | README.html 17 | *~ 18 | es-tmp/ 19 | clouddriver-oracle-bmcs/bmcs-sdk 20 | gatling.conf 21 | .DS_Store 22 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | # Names should be added to this file with this pattern: 2 | # 3 | # For individuals: 4 | # Name 5 | # 6 | # For organizations: 7 | # Organization 8 | 9 | Netflix, Inc <*@netflix.com> 10 | Google, Inc <*@google.com> 11 | Pivotal, Inc <*@pivotal.io> 12 | Microsoft, Inc <*@microsoft.com> 13 | Veritas Technologies, LLC <*@veritas.com> 14 | Target, Inc <*@target.com> 15 | Oracle America, Inc <*@oracle.com> 16 | Cerner Corporation <*@cerner.com> 17 | -------------------------------------------------------------------------------- /OWNERS.md: -------------------------------------------------------------------------------- 1 | ajordens 2 | asher 3 | cfieber 4 | robzienert 5 | -------------------------------------------------------------------------------- /cats/cats-core/cats-core.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile spinnaker.dependency('slf4jApi') 3 | compile spinnaker.dependency('jacksonAnnotations') 4 | compileOnly spinnaker.dependency("lombok") 5 | 6 | testCompile project(":cats:cats-test") 7 | } 8 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/agent/AgentExecution.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.agent; 18 | 19 | public interface AgentExecution { 20 | void executeAgent(Agent agent); 21 | } 22 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/agent/AgentLock.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.agent; 18 | 19 | public class AgentLock { 20 | private final Agent agent; 21 | 22 | public AgentLock(Agent agent) { 23 | this.agent = agent; 24 | } 25 | 26 | public Agent getAgent() { 27 | return agent; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/agent/AgentProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.agent; 18 | 19 | import java.util.Collection; 20 | 21 | public interface AgentProvider { 22 | boolean supports(String providerName); 23 | Collection agents(); 24 | } 25 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/agent/ExecutionInstrumentation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.agent; 18 | 19 | public interface ExecutionInstrumentation { 20 | void executionStarted(Agent agent); 21 | 22 | void executionCompleted(Agent agent, long elapsedMs); 23 | 24 | void executionFailed(Agent agent, Throwable cause); 25 | } 26 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/cache/CacheFilter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.cache; 18 | 19 | import java.util.Collection; 20 | 21 | public interface CacheFilter { 22 | enum Type { 23 | RELATIONSHIP 24 | } 25 | 26 | Collection filter(Type type, Collection identifiers); 27 | } 28 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/cache/NamedCacheFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.cache; 18 | 19 | /** 20 | * Produces writeable caches by name. 21 | */ 22 | public interface NamedCacheFactory { 23 | WriteableCache getCache(String name); 24 | } 25 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/cache/UnsupportedCacheMethodException.java: -------------------------------------------------------------------------------- 1 | package com.netflix.spinnaker.cats.cache; 2 | 3 | public class UnsupportedCacheMethodException extends RuntimeException { 4 | public UnsupportedCacheMethodException(String message) { 5 | super(message); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/cluster/DefaultNodeStatusProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.cluster; 18 | 19 | public class DefaultNodeStatusProvider implements NodeStatusProvider { 20 | @Override 21 | public boolean isNodeEnabled() { 22 | return true; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/cluster/NodeIdentity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.cluster; 18 | 19 | public interface NodeIdentity { 20 | String getNodeIdentity(); 21 | } 22 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/cluster/NodeStatusProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.cluster; 18 | 19 | public interface NodeStatusProvider { 20 | boolean isNodeEnabled(); 21 | } 22 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/compression/CompressionStrategy.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.netflix.spinnaker.cats.compression; 17 | 18 | public interface CompressionStrategy { 19 | String compress(final String str); 20 | String decompress(final String compressed); 21 | } 22 | -------------------------------------------------------------------------------- /cats/cats-core/src/main/java/com/netflix/spinnaker/cats/compression/NoopCompression.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.netflix.spinnaker.cats.compression; 17 | 18 | public class NoopCompression implements CompressionStrategy { 19 | 20 | @Override 21 | public String compress(String str) { 22 | return str; 23 | } 24 | 25 | @Override 26 | public String decompress(String compressed) { 27 | return compressed; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /cats/cats-core/src/test/groovy/com/netflix/spinnaker/cats/mem/InMemoryCacheSpec.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.mem 18 | 19 | import com.netflix.spinnaker.cats.cache.WriteableCacheSpec 20 | 21 | class InMemoryCacheSpec extends WriteableCacheSpec { 22 | 23 | @Override 24 | InMemoryCache getSubject() { 25 | new InMemoryCache() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /cats/cats-core/src/test/groovy/com/netflix/spinnaker/cats/provider/DefaultProviderCacheSpec.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.provider 18 | 19 | class DefaultProvierCacheSpec extends ProviderCacheSpec { 20 | } 21 | -------------------------------------------------------------------------------- /cats/cats-dynomite/cats-dynomite.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(':cats:cats-redis') 3 | compile("com.netflix.spinnaker.kork:kork-dynomite:${spinnaker.version("kork")}") 4 | compile('net.jodah:failsafe:1.0.4') 5 | 6 | testCompile project(':cats:cats-test') 7 | testCompile spinnaker.dependency('korkJedisTest') 8 | } 9 | -------------------------------------------------------------------------------- /cats/cats-dynomite/src/main/java/com/netflix/spinnaker/cats/dynomite/ExcessiveDynoFailureRetries.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.netflix.spinnaker.cats.dynomite; 17 | 18 | public class ExcessiveDynoFailureRetries extends RuntimeException { 19 | public ExcessiveDynoFailureRetries(String message, Throwable cause) { 20 | super(message, cause); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /cats/cats-redis/cats-redis.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(':cats:cats-core') 3 | compile spinnaker.dependency('eurekaClient') 4 | compile spinnaker.dependency('guava') 5 | compile "com.netflix.spinnaker.kork:kork-jedis:${spinnaker.version("kork")}" 6 | compile "com.fasterxml.jackson.core:jackson-databind:${spinnaker.version('jackson')}" 7 | testCompile project(':cats:cats-test') 8 | testCompile spinnaker.dependency('korkJedisTest') 9 | } 10 | -------------------------------------------------------------------------------- /cats/cats-sql/src/main/kotlin/com/netflix/spinnaker/cats/sql/cache/SqlSchemaVersion.kt: -------------------------------------------------------------------------------- 1 | package com.netflix.spinnaker.cats.sql.cache 2 | 3 | enum class SqlSchemaVersion(val version: Int) { 4 | V1(1); 5 | 6 | companion object { 7 | fun current(): Int = V1.version 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /cats/cats-test/cats-test.gradle: -------------------------------------------------------------------------------- 1 | tasks.compileGroovy.enabled = true 2 | 3 | dependencies { 4 | compile project(":cats:cats-core") 5 | compile spinnaker.dependency('groovy') 6 | compile spinnaker.dependency('spock') 7 | } 8 | -------------------------------------------------------------------------------- /cats/cats-test/src/main/groovy/com/netflix/spinnaker/cats/test/TestAccountAwareAgent.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.cats.test 18 | 19 | import com.netflix.spinnaker.cats.agent.AccountAware 20 | 21 | class TestAccountAwareAgent extends TestAgent implements AccountAware { 22 | String accountName 23 | } 24 | -------------------------------------------------------------------------------- /cats/cats.gradle: -------------------------------------------------------------------------------- 1 | tasks.findByName('bintrayUpload')?.enabled = false 2 | 3 | subprojects { 4 | apply plugin: 'findbugs' 5 | apply plugin: 'pmd' 6 | 7 | dependencies { 8 | compileOnly 'com.google.code.findbugs:findbugs-annotations:3.0.1' 9 | testCompile 'org.spockframework:spock-core:1.0-groovy-2.3' 10 | testCompile 'cglib:cglib-nodep:3.2.0' 11 | testCompile 'org.objenesis:objenesis:2.1' 12 | pmd 'net.sourceforge.pmd:pmd:5.1.3' 13 | } 14 | 15 | tasks.compileGroovy.enabled = false 16 | tasks.findbugsTest.enabled = false 17 | tasks.pmdTest.enabled = false 18 | 19 | findbugs { 20 | ignoreFailures = true 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /cloudbuild-tagged.yaml: -------------------------------------------------------------------------------- 1 | steps: 2 | - name: 'spinnakerrelease/gradle_cache' 3 | env: ["GRADLE_USER_HOME=/gradle_cache/.gradle"] 4 | entrypoint: "bash" 5 | args: [ "-c", "./gradlew clouddriver-web:installDist -x test -Prelease.version=$TAG_NAME"] 6 | - name: 'gcr.io/cloud-builders/docker' 7 | args: ["build", 8 | "-t", "gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA", 9 | "-t", "gcr.io/$PROJECT_ID/$REPO_NAME:$TAG_NAME", 10 | "-f", "Dockerfile.slim", 11 | "."] 12 | images: 13 | - 'gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA' 14 | - 'gcr.io/$PROJECT_ID/$REPO_NAME:$TAG_NAME' 15 | -------------------------------------------------------------------------------- /cloudbuild.yaml: -------------------------------------------------------------------------------- 1 | steps: 2 | - name: 'spinnakerrelease/gradle_cache' 3 | env: ["GRADLE_USER_HOME=/gradle_cache/.gradle"] 4 | entrypoint: "bash" 5 | args: [ "-c", "./gradlew clouddriver-web:installDist -x test"] 6 | - name: 'gcr.io/cloud-builders/docker' 7 | args: ["build", "-t", "gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA", "-t", "gcr.io/$PROJECT_ID/$REPO_NAME:latest", "-f", "Dockerfile.slim", "."] 8 | images: 9 | - 'gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA' 10 | - 'gcr.io/$PROJECT_ID/$REPO_NAME:latest' 11 | timeout: 15m 12 | -------------------------------------------------------------------------------- /clouddriver-appengine/clouddriver-appengine.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-artifacts") 3 | compile project(":clouddriver-core") 4 | compile project(":clouddriver-google-common") 5 | compile spinnaker.dependency("frigga") 6 | compile spinnaker.dependency("bootActuator") 7 | compile spinnaker.dependency("bootWeb") 8 | compile spinnaker.dependency("korkArtifacts") 9 | 10 | // TODO(dpeach): move to spinnaker/spinnaker-dependencies. 11 | compile "com.google.apis:google-api-services-appengine:v1-rev92-1.25.0" 12 | compile "org.eclipse.jgit:org.eclipse.jgit:5.2.1.201812262042-r" 13 | 14 | compile spinnaker.dependency("googleStorage") 15 | } 16 | -------------------------------------------------------------------------------- /clouddriver-appengine/src/main/groovy/com/netflix/spinnaker/clouddriver/appengine/deploy/description/DeleteAppengineLoadBalancerDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.appengine.deploy.description 18 | 19 | class DeleteAppengineLoadBalancerDescription extends AbstractAppengineCredentialsDescription { 20 | String accountName 21 | String loadBalancerName 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-appengine/src/main/groovy/com/netflix/spinnaker/clouddriver/appengine/deploy/description/DestroyAppengineDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.appengine.deploy.description 18 | 19 | class DestroyAppengineDescription extends AbstractAppengineCredentialsDescription { 20 | String accountName 21 | String serverGroupName 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-appengine/src/main/groovy/com/netflix/spinnaker/clouddriver/appengine/deploy/description/StartStopAppengineDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.appengine.deploy.description 18 | 19 | class StartStopAppengineDescription extends AbstractAppengineCredentialsDescription { 20 | String accountName 21 | String serverGroupName 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-appengine/src/main/groovy/com/netflix/spinnaker/clouddriver/appengine/deploy/description/TerminateAppengineInstancesDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.appengine.deploy.description 18 | 19 | class TerminateAppengineInstancesDescription extends AbstractAppengineCredentialsDescription { 20 | String accountName 21 | List instanceIds 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-appengine/src/main/groovy/com/netflix/spinnaker/clouddriver/appengine/deploy/exception/AppengineDescriptionConversionException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.appengine.deploy.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class AppengineDescriptionConversionException extends RuntimeException { } 23 | -------------------------------------------------------------------------------- /clouddriver-appengine/src/main/groovy/com/netflix/spinnaker/clouddriver/appengine/deploy/exception/AppengineIllegalArgumentExeception.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.appengine.deploy.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class AppengineIllegalArgumentExeception extends AppengineOperationException { } 23 | -------------------------------------------------------------------------------- /clouddriver-appengine/src/main/groovy/com/netflix/spinnaker/clouddriver/appengine/deploy/exception/AppengineOperationException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.appengine.deploy.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class AppengineOperationException extends RuntimeException { } 23 | -------------------------------------------------------------------------------- /clouddriver-appengine/src/main/groovy/com/netflix/spinnaker/clouddriver/appengine/deploy/exception/AppengineResourceNotFoundException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.appengine.deploy.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class AppengineResourceNotFoundException extends AppengineOperationException { } 23 | -------------------------------------------------------------------------------- /clouddriver-appengine/src/main/groovy/com/netflix/spinnaker/clouddriver/appengine/gitClient/AppengineGitCredentialType.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.appengine.gitClient 18 | 19 | enum AppengineGitCredentialType { 20 | NONE, 21 | HTTPS_USERNAME_PASSWORD, 22 | HTTPS_GITHUB_OAUTH_TOKEN, 23 | SSH, 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-appengine/src/main/groovy/com/netflix/spinnaker/clouddriver/appengine/model/AppengineRepositoryClient.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.appengine.model 18 | 19 | interface AppengineRepositoryClient { 20 | void initializeLocalDirectory() 21 | void updateLocalDirectoryWithVersion(String version) 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-artifacts/src/main/java/com/netflix/spinnaker/clouddriver/artifacts/config/ArtifactAccount.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.artifacts.config; 19 | 20 | public interface ArtifactAccount { 21 | String getName(); 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-artifacts/src/main/java/com/netflix/spinnaker/clouddriver/artifacts/config/ArtifactProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.artifacts.config; 19 | 20 | import java.util.List; 21 | 22 | public interface ArtifactProvider { 23 | boolean isEnabled(); 24 | List getAccounts(); 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-artifacts/src/main/java/com/netflix/spinnaker/clouddriver/artifacts/ivy/settings/Pattern.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.artifacts.ivy.settings; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class Pattern { 23 | private String pattern; 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-artifacts/src/main/java/com/netflix/spinnaker/clouddriver/artifacts/oracle/OracleArtifactAccount.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017, 2018, Oracle America, Inc. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | 10 | package com.netflix.spinnaker.clouddriver.artifacts.oracle; 11 | 12 | import com.netflix.spinnaker.clouddriver.artifacts.config.ArtifactAccount; 13 | import lombok.Data; 14 | 15 | @Data 16 | public class OracleArtifactAccount implements ArtifactAccount { 17 | private String name; 18 | 19 | private String namespace; 20 | private String region; 21 | private String userId; 22 | private String fingerprint; 23 | private String sshPrivateKeyFilePath; 24 | private String privateKeyPassphrase; 25 | private String tenancyId; 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-aws/clouddriver-aws.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-core") 3 | compile project(":clouddriver-eureka") 4 | 5 | spinnaker.group('amazon') 6 | spinnaker.group('retrofitDefault') 7 | 8 | compile spinnaker.dependency('kork') 9 | compile spinnaker.dependency('korkExceptions') 10 | compile spinnaker.dependency('bootActuator') 11 | compile spinnaker.dependency('bootWeb') 12 | compile spinnaker.dependency('frigga') 13 | compile spinnaker.dependency('rxJava') 14 | compile spinnaker.dependency('httpclient') 15 | compile spinnaker.dependency('guava') 16 | 17 | compile 'com.aestasit.infrastructure.sshoogr:sshoogr:0.9.25' 18 | compile 'com.jcraft:jsch.agentproxy.jsch:0.0.9' 19 | compile 'com.jcraft:jsch.agentproxy.connector-factory:0.0.9' 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/deploy/description/AttachClassicLinkVpcDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.deploy.description 18 | 19 | class AttachClassicLinkVpcDescription extends AbstractAmazonCredentialsDescription { 20 | String region 21 | String instanceId 22 | String vpcId 23 | List securityGroupIds 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/deploy/description/EnableDisableInstanceDiscoveryDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.deploy.description 18 | 19 | class EnableDisableInstanceDiscoveryDescription extends AbstractRegionAsgInstanceIdsDescription { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/deploy/description/UpsertAmazonDNSDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.deploy.description 18 | 19 | class UpsertAmazonDNSDescription extends AbstractAmazonCredentialsDescription { 20 | String type 21 | String name 22 | String target 23 | String hostedZoneName 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/deploy/ops/UpsertScalingPolicyResult.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.deploy.ops 18 | 19 | import groovy.transform.Immutable 20 | 21 | @Immutable 22 | class UpsertScalingPolicyResult { 23 | String policyName 24 | String policyArn 25 | String alarmName 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/deploy/ops/dns/UpsertAmazonDNSResult.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.deploy.ops.dns 18 | 19 | import groovy.transform.Immutable 20 | 21 | @Immutable 22 | class UpsertAmazonDNSResult { 23 | String dnsName 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/deploy/userdata/NullOpUserDataProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.deploy.userdata 18 | 19 | class NullOpUserDataProvider implements UserDataProvider { 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/deploy/validators/DisableAsgDescriptionValidator.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.deploy.validators 18 | 19 | import org.springframework.stereotype.Component 20 | 21 | @Component("disableAsgDescriptionValidator") 22 | class DisableAsgDescriptionValidator extends AbstractEnableDisableAsgDescriptionValidator { 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/deploy/validators/EnableAsgDescriptionValidator.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.deploy.validators 18 | 19 | import org.springframework.stereotype.Component 20 | 21 | @Component("enableAsgDescriptionValidator") 22 | class EnableAsgDescriptionValidator extends AbstractEnableDisableAsgDescriptionValidator { 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/model/AmazonServerCertificate.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.model 18 | 19 | import com.netflix.spinnaker.clouddriver.model.Certificate 20 | import groovy.transform.Canonical 21 | 22 | @Canonical 23 | class AmazonCertificate extends Certificate { 24 | String arn 25 | Date uploadDate 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/model/AmazonVpc.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | 18 | package com.netflix.spinnaker.clouddriver.aws.model 19 | 20 | import com.netflix.spinnaker.clouddriver.model.Network 21 | 22 | class AmazonVpc implements Network { 23 | String cloudProvider 24 | String id 25 | String name 26 | String account 27 | String region 28 | 29 | boolean deprecated 30 | } 31 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/model/Role.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Lookout, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.model; 18 | 19 | import java.util.Collection; 20 | 21 | public interface Role { 22 | 23 | String getName(); 24 | String getId(); 25 | Collection getTrustRelationships(); 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/model/RoleProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Lookout, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.model; 18 | 19 | import java.util.Collection; 20 | 21 | public interface RoleProvider { 22 | 23 | String getCloudProvider(); 24 | 25 | Collection getAll(); 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/model/edda/LoadBalancerInstance.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.model.edda 18 | 19 | import groovy.transform.Canonical 20 | 21 | @Canonical 22 | class LoadBalancerInstance { 23 | String instanceId 24 | String state 25 | String reasonCode 26 | String description 27 | } 28 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/model/edda/LoadBalancerInstanceState.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.aws.model.edda 18 | 19 | import groovy.transform.Canonical 20 | 21 | @Canonical 22 | class LoadBalancerInstanceState { 23 | String name 24 | String loadBalancerType = 'classic' 25 | List instances 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-aws/src/main/groovy/com/netflix/spinnaker/clouddriver/aws/services/IdGenerator.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.netflix.spinnaker.clouddriver.aws.services 17 | 18 | import org.springframework.stereotype.Component 19 | 20 | @Component 21 | class IdGenerator { 22 | String nextId() { 23 | UUID.randomUUID().toString() 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-azure/clouddriver-azure.gradle: -------------------------------------------------------------------------------- 1 | repositories { 2 | maven { url "https://adxsnapshots.azurewebsites.net" } 3 | } 4 | 5 | dependencies { 6 | compile project(":clouddriver-core") 7 | compile spinnaker.dependency('frigga') 8 | compile spinnaker.dependency('bootActuator') 9 | compile spinnaker.dependency('bootWeb') 10 | compile 'com.microsoft.azure:adal4j:1.6.3' 11 | compile 'com.microsoft.azure:azure:1.19.0' 12 | } 13 | -------------------------------------------------------------------------------- /clouddriver-azure/src/main/groovy/com/netflix/spinnaker/clouddriver/azure/resources/securitygroup/model/UpsertAzureSecurityGroupDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The original authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.azure.resources.securitygroup.model 18 | 19 | class UpsertAzureSecurityGroupDescription extends AzureSecurityGroupDescription { 20 | // TODO Remove references to this and eventually this class 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-azure/src/main/groovy/com/netflix/spinnaker/clouddriver/azure/resources/vmimage/model/AzureCustomImageStorage.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The original authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.azure.resources.vmimage.model 18 | 19 | class AzureCustomImageStorage{ 20 | String scs 21 | String blobDir 22 | String osType 23 | String region 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-azure/src/main/groovy/com/netflix/spinnaker/clouddriver/azure/resources/vmimage/model/AzureCustomVMImage.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The original authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.azure.resources.vmimage.model 18 | 19 | class AzureCustomVMImage{ 20 | String name 21 | String uri 22 | String osType 23 | String region 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-azure/src/main/groovy/com/netflix/spinnaker/clouddriver/azure/resources/vmimage/model/AzureVMImage.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The original authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.azure.resources.vmimage.model 18 | 19 | class AzureVMImage { 20 | String publisher 21 | String offer 22 | String sku 23 | String version 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/ResourceNotFoundException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client; 18 | 19 | class ResourceNotFoundException extends RuntimeException { 20 | ResourceNotFoundException(String message) { 21 | super(message); 22 | } 23 | 24 | ResourceNotFoundException() { 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/Application.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class Application { 23 | private String name; 24 | private String spaceGuid; 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/Domain.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class Domain { 23 | private String name; 24 | private String owningOrganizationGuid; 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/MapRoute.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | public class MapRoute { 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/Organization.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class Organization { 23 | private String name; 24 | private String status; 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/RouteMapping.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class RouteMapping { 23 | private String appGuid; 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/Service.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | import javax.annotation.Nullable; 22 | 23 | @Data 24 | public class Service { 25 | private String label; 26 | 27 | @Nullable 28 | private String extra; 29 | } 30 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/ServiceBinding.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class ServiceBinding { 23 | private String appGuid; 24 | private String serviceInstanceGuid; 25 | private String name; 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/ServiceCredentials.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | import java.util.Map; 22 | 23 | @Data 24 | public class ServiceCredentials { 25 | Map credentials; 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/ServicePlan.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class ServicePlan { 23 | private String id; 24 | private String name; 25 | private String serviceGuid; 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/SharedTo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | import java.util.Map; 22 | import java.util.Set; 23 | 24 | @Data 25 | public class SharedTo { 26 | private Set> data; 27 | } 28 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/Space.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class Space { 23 | private String name; 24 | private String organizationGuid; 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/SpaceSummary.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | import java.util.Set; 22 | 23 | @Data 24 | public class SpaceSummary { 25 | private Set services; 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v2/SummaryServiceInstance.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v2; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class SummaryServiceInstance { 23 | String name; 24 | String guid; 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/Buildpack.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v3; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class Buildpack { 23 | private String name; 24 | private String detectOutput; 25 | private String version; 26 | private String buildpackName; 27 | } 28 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/PackageChecksum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v3; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class PackageChecksum { 23 | private String type; 24 | private String value; 25 | } -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/PackageData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v3; 18 | 19 | import lombok.Data; 20 | 21 | import javax.annotation.Nullable; 22 | 23 | @Data 24 | public class PackageData { 25 | @Nullable 26 | private PackageChecksum checksum; 27 | } 28 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/ProcessResources.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v3; 18 | 19 | import lombok.Data; 20 | 21 | import java.util.List; 22 | 23 | @Data 24 | public class ProcessResources { 25 | private List resources; 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/ProcessStats.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v3; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class ProcessStats { 23 | private State state; 24 | 25 | public enum State { 26 | RUNNING, CRASHED, STARTING, DOWN 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/StartApplication.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v3; 18 | 19 | public class StartApplication { 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/client/model/v3/StopApplication.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.client.model.v3; 18 | 19 | public class StopApplication { 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/deploy/description/DestroyCloudFoundryServerGroupDescription.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.deploy.description; 18 | 19 | public class DestroyCloudFoundryServerGroupDescription extends AbstractCloudFoundryServerGroupDescription { 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/deploy/description/StartCloudFoundryServerGroupDescription.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.deploy.description; 18 | 19 | public class StartCloudFoundryServerGroupDescription extends AbstractCloudFoundryServerGroupDescription { 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/deploy/description/StopCloudFoundryServerGroupDescription.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.deploy.description; 18 | 19 | public class StopCloudFoundryServerGroupDescription extends AbstractCloudFoundryServerGroupDescription { 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-cloudfoundry/src/main/java/com/netflix/spinnaker/clouddriver/cloudfoundry/model/CloudFoundryModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.cloudfoundry.model; 18 | 19 | import com.netflix.spinnaker.clouddriver.cloudfoundry.CloudFoundryCloudProvider; 20 | 21 | abstract class CloudFoundryModel { 22 | public String getCloudProvider() { 23 | return CloudFoundryCloudProvider.ID; 24 | } 25 | } -------------------------------------------------------------------------------- /clouddriver-consul/clouddriver-consul.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-core") 3 | } 4 | -------------------------------------------------------------------------------- /clouddriver-core-tck/clouddriver-core-tck.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-core") 3 | compile spinnaker.dependency("junit") 4 | compile spinnaker.dependency("assertj") 5 | } 6 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/core/NoopCloudProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.core 18 | 19 | import java.lang.annotation.Annotation 20 | 21 | class NoopCloudProvider implements CloudProvider { 22 | final String id = "noop" 23 | final String displayName = "noop" 24 | final Class operationAnnotationType = null 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/core/provider/agent/ExternalHealthProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.core.provider.agent 18 | 19 | import com.netflix.spinnaker.cats.provider.Provider 20 | 21 | interface ExternalHealthProvider extends Provider { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/data/task/TaskState.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.data.task 18 | 19 | enum TaskState { 20 | STARTED, 21 | COMPLETED, 22 | FAILED 23 | 24 | boolean isCompleted() { 25 | this != STARTED 26 | } 27 | 28 | boolean isFailed() { 29 | this == FAILED 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/deploy/DeployHandlerNotFoundException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.deploy 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class DeployHandlerNotFoundException extends RuntimeException {} 23 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/exceptions/OperationTimedOutException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.exceptions 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class OperationTimedOutException extends RuntimeException { 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/ArtifactProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.model; 19 | 20 | import com.netflix.spinnaker.kork.artifacts.model.Artifact; 21 | 22 | import java.util.List; 23 | 24 | public interface ArtifactProvider { 25 | List getArtifacts(String type, String name, String location); 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/CachingAgentScheduler.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | interface CachingAgentScheduler { 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/Certificate.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | import groovy.transform.Canonical 20 | 21 | @Canonical 22 | class Certificate { 23 | Date expiration 24 | String path 25 | String serverCertificateId 26 | String serverCertificateName 27 | } 28 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/CertificateProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | interface CertificateProvider { 20 | String getCloudProvider() 21 | Set getAll() 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/CloudMetricDatapoint.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | interface CloudMetricDatapoint { 20 | 21 | 22 | } -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/ContainerLog.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Data; 21 | import lombok.NoArgsConstructor; 22 | 23 | @AllArgsConstructor 24 | @Data 25 | @NoArgsConstructor 26 | public class ContainerLog { 27 | private String name; 28 | private String output; 29 | } 30 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/DiscoveryHealth.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | abstract class DiscoveryHealth implements Health { 20 | public String getType() { 21 | return "Discovery" 22 | } 23 | 24 | abstract public String getDiscoveryType() 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/ElasticIpProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | interface ElasticIpProvider { 20 | Set getAllByAccount(String account) 21 | Set getAllByAccountAndRegion(String account, String region) 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/Function.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model; 18 | 19 | public interface Function { 20 | String getCloudProvider(); 21 | String getAccount(); 22 | String getRegion(); 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/FunctionProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model; 18 | 19 | import java.util.Collection; 20 | 21 | public interface FunctionProvider { 22 | Collection getAllFunctions(); 23 | Function getFunction(String account, String region, String functionName); 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/HealthState.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | enum HealthState { 20 | Up, Down, Unknown, Starting, OutOfService, Succeeded, Failed 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/ImageProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Schibsted ASA. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model; 18 | 19 | import java.util.Optional; 20 | 21 | public interface ImageProvider { 22 | Optional getImageById(String imageId); 23 | 24 | String getCloudProvider(); 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/InstanceType.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | /** 20 | * A representation of an instance type 21 | */ 22 | interface InstanceType { 23 | 24 | String getName() 25 | 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/InstanceTypeProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | interface InstanceTypeProvider { 20 | Set getAll() 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/JobState.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | /** 20 | * A JobState defines the set of possible states a job can be in. 21 | */ 22 | enum JobState { 23 | Starting, Running, Failed, Succeeded, Unknown 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/KeyPairProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | interface KeyPairProvider { 20 | Set getAll() 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/NetworkProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | public interface NetworkProvider { 20 | String getCloudProvider() 21 | Set getAll() 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/NoopInstanceTypeProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | class NoopInstanceTypeProvider implements InstanceTypeProvider { 20 | @Override 21 | Set getAll() { 22 | Collections.emptySet() 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/NoopKeyPairProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | class NoopKeyPairProvider implements KeyPairProvider { 20 | @Override 21 | Set getAll() { 22 | Collections.emptySet() 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/NoopNetworkProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | class NoopNetworkProvider implements NetworkProvider { 20 | @Override 21 | String getCloudProvider() { 22 | 'noop' 23 | } 24 | 25 | @Override 26 | Set getAll() { 27 | Collections.emptySet() 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/NoopReservationReportProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | class NoopReservationReportProvider implements ReservationReportProvider { 20 | @Override 21 | ReservationReport getReservationReport(String name, Map filters) { 22 | return null 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/NoopSubnetProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | class NoopSubnetProvider implements SubnetProvider { 20 | @Override 21 | String getCloudProvider() { 22 | return null 23 | } 24 | 25 | @Override 26 | Set getAll() { 27 | Collections.emptySet() 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/ReservationReport.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | interface ReservationReport {} 20 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/ReservationReportProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | interface ReservationReportProvider { 20 | T getReservationReport(String name, Map filters) 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/ServerGroupManagerProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.model; 19 | 20 | import java.util.Set; 21 | 22 | public interface ServerGroupManagerProvider { 23 | Set getServerGroupManagersByApplication(String application); 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/ServerGroupSummary.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.model; 19 | 20 | import com.netflix.spinnaker.moniker.Moniker; 21 | 22 | public interface ServerGroupSummary { 23 | String getName(); 24 | String getRegion(); 25 | String getAccount(); 26 | Moniker getMoniker(); 27 | } 28 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/Service.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model; 18 | 19 | import java.util.Collection; 20 | 21 | public interface Service { 22 | String getName(); 23 | 24 | Collection getServicePlans(); 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/ServiceInstance.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model; 18 | 19 | public interface ServiceInstance { 20 | String getServiceInstanceName(); 21 | String getStatus(); 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/ServicePlan.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Pivotal, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model; 18 | 19 | public interface ServicePlan { 20 | String getName(); 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/model/SubnetProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model 18 | 19 | interface SubnetProvider { 20 | String getCloudProvider() 21 | Set getAll() 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/names/NamingStrategy.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.names; 18 | 19 | import com.netflix.spinnaker.moniker.Namer; 20 | 21 | public interface NamingStrategy extends Namer { 22 | String getName(); 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-core/src/main/groovy/com/netflix/spinnaker/clouddriver/orchestration/events/OperationEventHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.orchestration.events; 18 | 19 | public interface OperationEventHandler { 20 | void handle(OperationEvent operationEvent); 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-dcos/clouddriver-dcos.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-core") 3 | compile spinnaker.dependency('bootActuator') 4 | compile spinnaker.dependency('bootWeb') 5 | compile 'com.cerner.marathon:marathon-client:0.6.3' 6 | } 7 | -------------------------------------------------------------------------------- /clouddriver-dcos/src/main/groovy/com/netflix/spinnaker/clouddriver/dcos/deploy/description/servergroup/DestroyDcosServerGroupDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Cerner Corporation 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.dcos.deploy.description.servergroup 19 | 20 | class DestroyDcosServerGroupDescription extends AbstractDcosServerGroupDescription { 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-dcos/src/main/groovy/com/netflix/spinnaker/clouddriver/dcos/deploy/description/servergroup/DisableDcosServerGroupDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Cerner Corporation 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.dcos.deploy.description.servergroup 19 | 20 | class DisableDcosServerGroupDescription extends AbstractDcosServerGroupDescription { 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-dcos/src/main/groovy/com/netflix/spinnaker/clouddriver/dcos/deploy/description/servergroup/ResizeDcosServerGroupDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Cerner Corporation 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.dcos.deploy.description.servergroup 19 | 20 | class ResizeDcosServerGroupDescription extends AbstractDcosServerGroupDescription { 21 | Integer targetSize 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-dcos/src/main/groovy/com/netflix/spinnaker/clouddriver/dcos/deploy/util/monitor/EventBasedDcosDeploymentMonitor.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Cerner Corporation 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.dcos.deploy.util.monitor 19 | 20 | class EventBasedDcosDeploymentMonitor { 21 | // TODO implement if needed 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-dcos/src/main/groovy/com/netflix/spinnaker/clouddriver/dcos/exception/DcosOperationException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Cerner Corporation 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.dcos.exception 19 | 20 | import groovy.transform.InheritConstructors 21 | 22 | @InheritConstructors 23 | class DcosOperationException extends RuntimeException { 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-dcos/src/test/resources/badTestKey1: -------------------------------------------------------------------------------- 1 | asdfasdf -------------------------------------------------------------------------------- /clouddriver-dcos/src/test/resources/badTestKey2: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | asdfasdf 3 | -----END PRIVATE KEY----- -------------------------------------------------------------------------------- /clouddriver-docker/clouddriver-docker.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-core") 3 | compile spinnaker.dependency('bootActuator') 4 | compile spinnaker.dependency('bootWeb') 5 | } 6 | -------------------------------------------------------------------------------- /clouddriver-docker/src/main/groovy/com/netflix/spinnaker/clouddriver/docker/registry/api/v2/exception/DockerRegistryAuthenticationException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.docker.registry.api.v2.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class DockerRegistryAuthenticationException extends RuntimeException {} 23 | -------------------------------------------------------------------------------- /clouddriver-docker/src/main/groovy/com/netflix/spinnaker/clouddriver/docker/registry/api/v2/exception/DockerRegistryOperationException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.docker.registry.api.v2.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class DockerRegistryOperationException extends RuntimeException {} 23 | -------------------------------------------------------------------------------- /clouddriver-docker/src/main/groovy/com/netflix/spinnaker/clouddriver/docker/registry/exception/DockerRegistryConfigException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.docker.registry.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class DockerRegistryConfigException extends RuntimeException {} 23 | -------------------------------------------------------------------------------- /clouddriver-docker/src/test/resources/password.txt: -------------------------------------------------------------------------------- 1 | hunter2 2 | -------------------------------------------------------------------------------- /clouddriver-ecs/clouddriver-ecs.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-aws") 3 | compile spinnaker.dependency('lombok') 4 | 5 | spinnaker.group('amazon') 6 | spinnaker.group('retrofitDefault') 7 | } 8 | -------------------------------------------------------------------------------- /clouddriver-ecs/src/main/java/com/netflix/spinnaker/clouddriver/ecs/EcsConfigurationProperties.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Lookout, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.ecs; 18 | 19 | import org.springframework.boot.context.properties.ConfigurationProperties; 20 | 21 | @ConfigurationProperties("ecs") 22 | class EcsConfigurationProperties { 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-ecs/src/main/java/com/netflix/spinnaker/clouddriver/ecs/cache/model/ContainerInstance.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Lookout, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.ecs.cache.model; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class ContainerInstance { 23 | String arn; 24 | String ec2InstanceId; 25 | String availabilityZone; 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-ecs/src/main/java/com/netflix/spinnaker/clouddriver/ecs/cache/model/EcsCluster.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Lookout, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.ecs.cache.model; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class EcsCluster { 23 | String account; 24 | String region; 25 | String name; 26 | String arn; 27 | } 28 | -------------------------------------------------------------------------------- /clouddriver-ecs/src/main/java/com/netflix/spinnaker/clouddriver/ecs/cache/model/Secret.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"). 5 | * You may not use this file except in compliance with the License. 6 | * A copy of the License is located at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * or in the "license" file accompanying this file. This file is distributed 11 | * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 12 | * express or implied. See the License for the specific language governing 13 | * permissions and limitations under the License. 14 | */ 15 | 16 | package com.netflix.spinnaker.clouddriver.ecs.cache.model; 17 | 18 | import lombok.Data; 19 | 20 | @Data 21 | public class Secret { 22 | String account; 23 | String region; 24 | String name; 25 | String arn; 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-ecs/src/main/java/com/netflix/spinnaker/clouddriver/ecs/cache/model/TaskHealth.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Lookout, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.ecs.cache.model; 18 | 19 | import lombok.Data; 20 | 21 | @Data 22 | public class TaskHealth { 23 | String state; 24 | String type; 25 | String serviceName; 26 | String taskArn; 27 | String instanceId; 28 | String taskId; 29 | } 30 | -------------------------------------------------------------------------------- /clouddriver-ecs/src/main/java/com/netflix/spinnaker/clouddriver/ecs/model/EcsServerGroupEventStatus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Lookout, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.ecs.model; 18 | 19 | public enum EcsServerGroupEventStatus { 20 | 21 | Success, 22 | Failure, 23 | Transition 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-elasticsearch-aws/clouddriver-elasticsearch-aws.gradle: -------------------------------------------------------------------------------- 1 | apply from: "$rootDir/gradle/kotlin.gradle" 2 | 3 | repositories { 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | compile project(":clouddriver-aws") 9 | compile project(":clouddriver-elasticsearch") 10 | } 11 | -------------------------------------------------------------------------------- /clouddriver-elasticsearch/clouddriver-elasticsearch.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-core") 3 | 4 | compile 'org.elasticsearch:elasticsearch:2.4.1' 5 | compile 'io.searchbox:jest:2.0.3' 6 | } 7 | -------------------------------------------------------------------------------- /clouddriver-eureka/clouddriver-eureka.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-core") 3 | } 4 | -------------------------------------------------------------------------------- /clouddriver-eureka/src/main/groovy/com/netflix/spinnaker/clouddriver/eureka/model/DataCenterInfo.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.eureka.model 18 | 19 | import groovy.transform.EqualsAndHashCode 20 | 21 | @EqualsAndHashCode 22 | class DataCenterInfo { 23 | String name 24 | DataCenterMetadata metadata 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-eureka/src/main/groovy/com/netflix/spinnaker/clouddriver/eureka/model/Metadata.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.eureka.model 18 | 19 | import com.fasterxml.jackson.annotation.JsonProperty 20 | 21 | class Metadata { 22 | 23 | @JsonProperty('titusTaskId') 24 | String titusTaskId 25 | 26 | @JsonProperty('titusStack') 27 | String titusStack 28 | 29 | } 30 | -------------------------------------------------------------------------------- /clouddriver-google-common/clouddriver-google-common.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | spinnaker.group('fiat') 3 | 4 | compile spinnaker.dependency('googleApiClient') 5 | compile spinnaker.dependency('lombok') 6 | compile spinnaker.dependency('spectatorApi') 7 | } 8 | -------------------------------------------------------------------------------- /clouddriver-google/clouddriver-google.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-artifacts") 3 | compile project(":clouddriver-core") 4 | compile project(":clouddriver-consul") 5 | compile project(":clouddriver-google-common") 6 | 7 | compile spinnaker.dependency('bootActuator') 8 | compile spinnaker.dependency('bootWeb') 9 | compile spinnaker.dependency('frigga') 10 | compile spinnaker.dependency('googleCompute') 11 | 12 | // Move this to spinnaker-dependencies when we can confirm we'll use this feature. 13 | compile "com.google.apis:google-api-services-iam:v1-rev267-1.25.0" 14 | } 15 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/deploy/description/DeleteGoogleSecurityGroupDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.deploy.description 18 | 19 | class DeleteGoogleSecurityGroupDescription extends AbstractGoogleCredentialsDescription { 20 | String securityGroupName 21 | String accountName 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/deploy/description/UpsertGoogleImageTagsDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.deploy.description 18 | 19 | class UpsertGoogleImageTagsDescription extends AbstractGoogleCredentialsDescription { 20 | String imageName 21 | Map tags 22 | String accountName 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/deploy/exception/GoogleOperationException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.deploy.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class GoogleOperationException extends RuntimeException {} 23 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/deploy/exception/GoogleOperationTimedOutException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.deploy.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class GoogleOperationTimedOutException extends GoogleOperationException {} 23 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/deploy/exception/GoogleResourceIllegalStateException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.deploy.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | 23 | class GoogleResourceIllegalStateException extends GoogleOperationException {} 24 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/deploy/exception/GoogleResourceNotFoundException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.deploy.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class GoogleResourceNotFoundException extends GoogleOperationException {} 23 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/deploy/instancegroups/GoogleServerGroupManagers.java: -------------------------------------------------------------------------------- 1 | package com.netflix.spinnaker.clouddriver.google.deploy.instancegroups; 2 | 3 | import com.google.api.services.compute.Compute.InstanceGroupManagers; 4 | import com.google.api.services.compute.Compute.RegionInstanceGroupManagers; 5 | import com.google.api.services.compute.model.Operation; 6 | import com.netflix.spinnaker.clouddriver.google.model.GoogleServerGroup; 7 | import java.io.IOException; 8 | import java.util.List; 9 | 10 | /** 11 | * A wrapper around {@link InstanceGroupManagers} and {@link RegionInstanceGroupManagers} that 12 | * performs operations on a specific {@link GoogleServerGroup}. 13 | */ 14 | public interface GoogleServerGroupManagers { 15 | 16 | Operation abandonInstances(List instances) throws IOException; 17 | 18 | Operation delete() throws IOException; 19 | 20 | GoogleServerGroupOperationPoller getOperationPoller(); 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/deploy/instancegroups/GoogleServerGroupOperationPoller.java: -------------------------------------------------------------------------------- 1 | package com.netflix.spinnaker.clouddriver.google.deploy.instancegroups; 2 | 3 | import com.google.api.services.compute.model.Operation; 4 | import com.netflix.spinnaker.clouddriver.data.task.Task; 5 | import com.netflix.spinnaker.clouddriver.google.deploy.GoogleOperationPoller; 6 | 7 | public abstract class GoogleServerGroupOperationPoller { 8 | 9 | private final GoogleOperationPoller poller; 10 | 11 | GoogleServerGroupOperationPoller(GoogleOperationPoller poller) { 12 | this.poller = poller; 13 | } 14 | 15 | public abstract void waitForOperation(Operation operation, Long timeout, Task task, String phase); 16 | 17 | GoogleOperationPoller getPoller() { 18 | return poller; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/model/GoogleInstanceTypeDisk.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.model 18 | 19 | import groovy.transform.ToString 20 | 21 | @ToString(includeNames = true) 22 | class GoogleInstanceTypeDisk { 23 | String instanceType 24 | boolean supportsLocalSSD = true 25 | List disks 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/model/GoogleLabeledResource.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Schibsted ASA. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.google.model; 19 | 20 | import java.util.Map; 21 | 22 | public interface GoogleLabeledResource { 23 | default String getName() { 24 | return null; 25 | } 26 | Map getLabels(); 27 | } 28 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/model/loadbalancing/GoogleLoadBalancerType.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.model.loadbalancing 18 | 19 | enum GoogleLoadBalancerType { 20 | HTTP, 21 | INTERNAL, 22 | NETWORK, 23 | SSL, 24 | TCP 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/model/loadbalancing/GoogleLoadBalancingPolicy.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.model.loadbalancing 18 | 19 | class GoogleLoadBalancingPolicy { 20 | 21 | BalancingMode balancingMode 22 | 23 | public static enum BalancingMode { 24 | CONNECTION, 25 | RATE, 26 | UTILIZATION, 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/model/loadbalancing/GoogleLoadBalancingScheme.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.netflix.spinnaker.clouddriver.google.model.loadbalancing 17 | 18 | enum GoogleLoadBalancingScheme { 19 | EXTERNAL, 20 | INTERNAL, 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/model/loadbalancing/GoogleSessionAffinity.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.model.loadbalancing 18 | 19 | enum GoogleSessionAffinity { 20 | NONE, 21 | CLIENT_IP, 22 | CLIENT_IP_PORT_PROTO, 23 | CLIENT_IP_PROTO, 24 | GENERATED_COOKIE, 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-google/src/main/groovy/com/netflix/spinnaker/clouddriver/google/model/loadbalancing/GoogleTargetProxyType.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.google.model.loadbalancing 18 | 19 | enum GoogleTargetProxyType { 20 | HTTP, 21 | HTTPS, 22 | SSL, 23 | TCP 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-kubernetes/clouddriver-kubernetes.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | spinnaker.group('kubernetes') 3 | compile project(":clouddriver-artifacts") 4 | compile project(":clouddriver-core") 5 | compile project(":clouddriver-docker") 6 | compile spinnaker.dependency('bootActuator') 7 | compile spinnaker.dependency('bootWeb') 8 | compile spinnaker.dependency('frigga') 9 | compile spinnaker.dependency('korkArtifacts') 10 | compile spinnaker.dependency('lombok') 11 | 12 | // TODO(lwander) move to spinnaker-dependencies when library stabilizes 13 | compile 'io.kubernetes:client-java:1.0.0-beta1' 14 | compile 'com.github.fge:json-patch:1.9' 15 | compile 'com.netflix.spinnaker.moniker:moniker:0.2.0' 16 | compile 'com.jayway.jsonpath:json-path:2.3.0' 17 | } 18 | -------------------------------------------------------------------------------- /clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/security/KubernetesCredentials.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.kubernetes.security; 19 | 20 | import java.util.List; 21 | 22 | public interface KubernetesCredentials { 23 | List getDeclaredNamespaces(); 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v1/deploy/description/servergroup/ResizeKubernetesAtomicOperationDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.kubernetes.v1.deploy.description.servergroup 18 | 19 | class ResizeKubernetesAtomicOperationDescription extends KubernetesServerGroupDescription { 20 | Capacity capacity 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v1/deploy/exception/KubernetesIllegalArgumentException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.kubernetes.v1.deploy.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class KubernetesIllegalArgumentException extends IllegalArgumentException {} 23 | 24 | -------------------------------------------------------------------------------- /clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v1/deploy/exception/KubernetesResourceNotFoundException.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.kubernetes.v1.deploy.exception 18 | 19 | import groovy.transform.InheritConstructors 20 | 21 | @InheritConstructors 22 | class KubernetesResourceNotFoundException extends KubernetesOperationException {} 23 | -------------------------------------------------------------------------------- /clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v1/model/KubernetesV1SecurityGroupSummary.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.kubernetes.v1.model 18 | 19 | import com.netflix.spinnaker.clouddriver.model.SecurityGroupSummary 20 | 21 | class KubernetesV1SecurityGroupSummary implements SecurityGroupSummary, Serializable { 22 | String name 23 | String id 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/README.md: -------------------------------------------------------------------------------- 1 | # Running the provider... 2 | 3 | For any account, add `providerVersion: v2` as a sibling to `name` and other account-level fields. e.g. 4 | 5 | ```yaml 6 | kubernetes: 7 | enabled: true 8 | accounts: 9 | - name: k8s-v2 10 | context: my_context_in_the_kubeconfig 11 | providerVersion: v2 12 | ``` 13 | -------------------------------------------------------------------------------- /clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/view/provider/data/KubernetesV2CacheData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.kubernetes.v2.caching.view.provider.data; 19 | 20 | import com.netflix.spinnaker.cats.cache.CacheData; 21 | 22 | public interface KubernetesV2CacheData { 23 | CacheData primaryData(); 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/description/manifest/KubernetesManifestList.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.kubernetes.v2.description.manifest; 19 | 20 | import lombok.Data; 21 | 22 | import java.util.List; 23 | 24 | @Data 25 | public class KubernetesManifestList { 26 | private List items; 27 | } 28 | -------------------------------------------------------------------------------- /clouddriver-lambda/clouddriver-lambda.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(":clouddriver-aws") 3 | compile spinnaker.dependency('lombok') 4 | 5 | spinnaker.group('amazon') 6 | spinnaker.group('retrofitDefault') 7 | } 8 | -------------------------------------------------------------------------------- /clouddriver-oracle/oracle-source-header: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 Oracle America, Inc. 2 | 3 | The contents of this file are subject to the Apache License Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | If a copy of the Apache License Version 2.0 was not distributed with this file, 6 | You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 7 | -------------------------------------------------------------------------------- /clouddriver-oracle/src/main/groovy/com/netflix/spinnaker/clouddriver/oracle/OracleCloudProvider.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Oracle America, Inc. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | package com.netflix.spinnaker.clouddriver.oracle 10 | 11 | import com.netflix.spinnaker.clouddriver.core.CloudProvider 12 | import org.springframework.stereotype.Component 13 | 14 | import java.lang.annotation.Annotation 15 | 16 | /** 17 | * Oracle declaration as a {@link CloudProvider}. 18 | */ 19 | @Component 20 | class OracleCloudProvider implements CloudProvider { 21 | 22 | static final String ID = "oracle" 23 | final String id = ID 24 | final String displayName = ID 25 | final Class operationAnnotationType = OracleOperation 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-oracle/src/main/groovy/com/netflix/spinnaker/clouddriver/oracle/OracleOperation.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Oracle America, Inc. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | package com.netflix.spinnaker.clouddriver.oracle 10 | 11 | import java.lang.annotation.ElementType 12 | import java.lang.annotation.Retention 13 | import java.lang.annotation.RetentionPolicy 14 | import java.lang.annotation.Target 15 | 16 | /** 17 | * {@code OracleOperation}s specify implementation classes of Spinnaker AtomicOperations for Oracle. 18 | */ 19 | @Target(ElementType.TYPE) 20 | @Retention(RetentionPolicy.RUNTIME) 21 | @interface OracleOperation { 22 | 23 | String value() 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-oracle/src/main/groovy/com/netflix/spinnaker/clouddriver/oracle/deploy/description/AbstractOracleCredentialsDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Oracle America, Inc. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | package com.netflix.spinnaker.clouddriver.oracle.deploy.description 10 | 11 | import com.netflix.spinnaker.clouddriver.oracle.security.OracleNamedAccountCredentials 12 | import com.netflix.spinnaker.clouddriver.security.resources.CredentialsNameable 13 | 14 | abstract class AbstractOracleCredentialsDescription implements CredentialsNameable { 15 | 16 | OracleNamedAccountCredentials credentials 17 | } 18 | -------------------------------------------------------------------------------- /clouddriver-oracle/src/main/groovy/com/netflix/spinnaker/clouddriver/oracle/deploy/description/DestroyOracleServerGroupDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Oracle America, Inc. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | package com.netflix.spinnaker.clouddriver.oracle.deploy.description 10 | 11 | import groovy.transform.ToString 12 | 13 | @ToString(includeNames = true) 14 | class DestroyOracleServerGroupDescription extends AbstractOracleCredentialsDescription { 15 | 16 | String accountName 17 | String region 18 | String serverGroupName 19 | } 20 | -------------------------------------------------------------------------------- /clouddriver-oracle/src/main/groovy/com/netflix/spinnaker/clouddriver/oracle/model/OracleImage.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017, 2018, Oracle Corporation and/or its affiliates. All rights reserved. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | 10 | package com.netflix.spinnaker.clouddriver.oracle.model 11 | 12 | import com.netflix.spinnaker.clouddriver.model.Image 13 | 14 | class OracleImage implements Image { 15 | String cloudProvider 16 | String id 17 | String name 18 | String account 19 | String region 20 | List compatibleShapes 21 | Map freeformTags 22 | String timeCreated 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-oracle/src/main/groovy/com/netflix/spinnaker/clouddriver/oracle/model/OracleNetwork.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Oracle America, Inc. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | package com.netflix.spinnaker.clouddriver.oracle.model 10 | 11 | import com.netflix.spinnaker.clouddriver.model.Network 12 | 13 | class OracleNetwork implements Network { 14 | String cloudProvider 15 | String id 16 | String name 17 | String account 18 | String region 19 | } 20 | -------------------------------------------------------------------------------- /clouddriver-oracle/src/main/groovy/com/netflix/spinnaker/clouddriver/oracle/model/OracleSecurityGroupSummary.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Oracle America, Inc. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | package com.netflix.spinnaker.clouddriver.oracle.model 10 | 11 | import com.netflix.spinnaker.clouddriver.model.SecurityGroupSummary 12 | import groovy.transform.EqualsAndHashCode 13 | import groovy.transform.Immutable 14 | 15 | @Immutable 16 | @EqualsAndHashCode(includes = ['id', 'network'], cache = true) 17 | class OracleSecurityGroupSummary implements SecurityGroupSummary { 18 | String name 19 | String id 20 | String network 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-oracle/src/main/groovy/com/netflix/spinnaker/clouddriver/oracle/model/OracleSubnet.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Oracle America, Inc. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | package com.netflix.spinnaker.clouddriver.oracle.model 10 | 11 | import com.netflix.spinnaker.clouddriver.model.Subnet 12 | 13 | class OracleSubnet implements Subnet { 14 | String type 15 | String id 16 | String name 17 | String account 18 | String region 19 | String purpose = "n/a" 20 | String vcnId 21 | String availabilityDomain 22 | List securityListIds 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-oracle/src/main/groovy/com/netflix/spinnaker/clouddriver/oracle/service/servergroup/OraclePersistenceContext.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Oracle America, Inc. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | package com.netflix.spinnaker.clouddriver.oracle.service.servergroup 10 | 11 | import com.netflix.spinnaker.clouddriver.oracle.security.OracleNamedAccountCredentials 12 | 13 | class OraclePersistenceContext { 14 | 15 | OracleNamedAccountCredentials creds 16 | String namespace 17 | boolean bucketChecked 18 | 19 | OraclePersistenceContext(OracleNamedAccountCredentials creds) { 20 | this.creds = creds 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-oracle/src/test/groovy/com/netflix/spinnaker/clouddriver/oracle/OracleProviderSpec.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Oracle America, Inc. 3 | * 4 | * The contents of this file are subject to the Apache License Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * If a copy of the Apache License Version 2.0 was not distributed with this file, 7 | * You can obtain one at https://www.apache.org/licenses/LICENSE-2.0.html 8 | */ 9 | 10 | package com.netflix.spinnaker.clouddriver.oracle 11 | 12 | import spock.lang.Specification 13 | 14 | 15 | class OracleProviderSpec extends Specification { 16 | 17 | def oracleProvider 18 | 19 | def setup() { 20 | oracleProvider = new OracleCloudProvider() 21 | } 22 | 23 | def "Testing default values of OracleCloudProvider"() { 24 | expect: 25 | oracleProvider.id == "oracle" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /clouddriver-scattergather/clouddriver-scattergather.gradle: -------------------------------------------------------------------------------- 1 | apply from: "$rootDir/gradle/kotlin.gradle" 2 | apply from: "$rootDir/gradle/spek.gradle" 3 | 4 | repositories { 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | compile spinnaker.dependency("kork") 10 | compile spinnaker.dependency('korkWeb') 11 | compile spinnaker.dependency("okHttp3") 12 | // compile "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.30.2" 13 | // compile "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:0.30.2" 14 | } 15 | -------------------------------------------------------------------------------- /clouddriver-security/clouddriver-security.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | spinnaker.group('jackson') 3 | 4 | compile spinnaker.dependency('kork') 5 | compile spinnaker.dependency('slf4j') 6 | compile project(':cats:cats-core') 7 | 8 | compile spinnaker.dependency('fiat') 9 | compile spinnaker.dependency('frigga') 10 | 11 | testCompile project(':cats:cats-test') 12 | } 13 | -------------------------------------------------------------------------------- /clouddriver-security/src/main/groovy/com/netflix/spinnaker/clouddriver/security/NoopCredentialsInitializerSynchronizable.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.security 18 | 19 | class NoopCredentialsInitializerSynchronizable implements CredentialsInitializerSynchronizable { 20 | String credentialsSynchronizationBeanName = null 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-security/src/main/groovy/com/netflix/spinnaker/clouddriver/security/ProviderVersion.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | package com.netflix.spinnaker.clouddriver.security; 19 | 20 | public enum ProviderVersion { 21 | v1, 22 | v2 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-security/src/main/groovy/com/netflix/spinnaker/clouddriver/security/resources/MissingSecurityCheck.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.security.resources; 18 | 19 | import groovy.transform.InheritConstructors; 20 | 21 | @InheritConstructors 22 | public class MissingSecurityCheck extends RuntimeException { 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-security/src/main/groovy/com/netflix/spinnaker/clouddriver/security/resources/NonCredentialed.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.security.resources; 18 | 19 | /** 20 | * Marker interface indicating that a description does not have account-level credentials specified. 21 | */ 22 | public interface NonCredentialed { 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-sql-mysql/clouddriver-sql-mysql.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(':cats:cats-sql') 3 | compile project(':clouddriver-sql') 4 | 5 | compile "mysql:mysql-connector-java:8.0.12" 6 | } 7 | -------------------------------------------------------------------------------- /clouddriver-sql/src/main/kotlin/com/netflix/spinnaker/config/ConnectionPools.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.netflix.spinnaker.config 17 | 18 | enum class ConnectionPools( 19 | val value: String 20 | ) { 21 | TASKS("tasks"), 22 | CACHE_WRITER("cacheWriter"), 23 | CACHE_READER("cacheReader") 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-sql/src/main/resources/db/changelog-master.yml: -------------------------------------------------------------------------------- 1 | databaseChangeLog: 2 | - include: 3 | file: changelog/20180919-initial-schema.yml 4 | relativeToChangelogFile: true 5 | - include: 6 | file: changelog/20181120-cats.yml 7 | relativeToChangelogFile: true 8 | - include: 9 | file: changelog/20181205-agent-scheduler.yml 10 | relativeToChangelogFile: true 11 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/caching/utils/CachingSchema.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.caching.utils; 18 | 19 | public enum CachingSchema { 20 | V1, 21 | V2; 22 | 23 | String toLowerCase() { 24 | return name().toLowerCase(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/client/TitusJobCustomizer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.client; 18 | 19 | import com.netflix.spinnaker.clouddriver.titus.client.model.JobDescription; 20 | 21 | public interface TitusJobCustomizer { 22 | void customize(JobDescription jobDescription); 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/client/model/HealthStatus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.client.model; 18 | 19 | public enum HealthStatus { 20 | HEALTHY, UNHEALTHY 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/client/model/MigrationPolicy.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.client.model; 18 | 19 | public class MigrationPolicy { 20 | public String getType() { 21 | return type; 22 | } 23 | 24 | public void setType(String type) { 25 | this.type = type; 26 | } 27 | 28 | private String type; 29 | } 30 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/client/model/TerminateJobRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.client.model; 18 | 19 | public class TerminateJobRequest extends AbstractJobRequest { 20 | 21 | public TerminateJobRequest() { 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/client/model/disruption/RateUnlimited.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.client.model.disruption; 18 | 19 | public class RateUnlimited { 20 | } 21 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/client/model/disruption/RelocationLimit.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.client.model.disruption; 18 | 19 | public class RelocationLimit { 20 | int limit; 21 | 22 | public int getLimit() { 23 | return limit; 24 | } 25 | 26 | public void setLimit(int limit) { 27 | this.limit = limit; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/client/security/TitusCredentials.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.client.security; 18 | 19 | /** 20 | * Marker interface (for now) for titus credentials 21 | */ 22 | public interface TitusCredentials { 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/deploy/description/EnableDisableInstanceDiscoveryDescription.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.deploy.description 18 | 19 | class EnableDisableInstanceDiscoveryDescription extends AbstractRegionAsgInstanceIdsDescription { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/deploy/handlers/TitusDeploymentResult.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.deploy.handlers 18 | 19 | import com.netflix.spinnaker.clouddriver.deploy.DeploymentResult 20 | 21 | class TitusDeploymentResult extends DeploymentResult { 22 | String jobUri 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/model/Placement.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.model 18 | 19 | class Placement { 20 | String account 21 | String region 22 | String subnetId 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/model/Resources.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.model 18 | 19 | class Resources { 20 | int cpu 21 | int memory 22 | int disk 23 | int gpu 24 | int networkMbps 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/model/TitusError.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.model; 18 | 19 | public class TitusError { 20 | 21 | public String getMessage() { 22 | return message; 23 | } 24 | 25 | public void setMessage(String message) { 26 | this.message = message; 27 | } 28 | 29 | private String message; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/model/TitusInstancePlacement.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.model 18 | 19 | class TitusInstancePlacement extends Placement { 20 | String zone 21 | String host 22 | String containerIp 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/model/TitusInstanceResources.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.model 18 | 19 | class TitusInstanceResources extends Resources { 20 | Map ports 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/model/TitusSecurityGroup.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License") 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.model 18 | 19 | class TitusSecurityGroup implements Serializable { 20 | String groupId 21 | String groupName 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/model/TitusServerGroupPlacement.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.model 18 | 19 | class TitusServerGroupPlacement extends Placement { 20 | List zones = [] 21 | } 22 | -------------------------------------------------------------------------------- /clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/model/TitusServerGroupResources.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.titus.model 18 | 19 | class TitusServerGroupResources extends Resources { 20 | List ports 21 | boolean allocateIpAddress 22 | } 23 | -------------------------------------------------------------------------------- /clouddriver-web/etc/init/clouddriver.conf: -------------------------------------------------------------------------------- 1 | description "clouddriver" 2 | 3 | start on filesystem or runlevel [2345] 4 | 5 | expect fork 6 | 7 | stop on stopping spinnaker 8 | 9 | exec sudo -u spinnaker -g spinnaker /opt/clouddriver/bin/clouddriver 2>&1 >> /var/log/spinnaker/clouddriver/clouddriver.log & 10 | -------------------------------------------------------------------------------- /clouddriver-web/etc/logrotate.d/clouddriver: -------------------------------------------------------------------------------- 1 | /var/log/spinnaker/clouddriver/clouddriver.log { 2 | copytruncate 3 | daily 4 | rotate 10 5 | compress 6 | missingok 7 | create 0644 spinnaker spinnaker 8 | } -------------------------------------------------------------------------------- /clouddriver-web/lib/systemd/system/clouddriver.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Spinnaker Clouddriver 3 | PartOf=spinnaker.service 4 | 5 | [Service] 6 | ExecStart=/opt/clouddriver/bin/clouddriver 7 | WorkingDirectory=/opt/clouddriver/bin 8 | SuccessExitStatus=143 9 | User=spinnaker 10 | Group=spinnaker 11 | Type=simple 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /clouddriver-web/pkg_scripts/postInstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # ubuntu 4 | # check that owner group exists 5 | if [ -z `getent group spinnaker` ]; then 6 | groupadd spinnaker 7 | fi 8 | 9 | # check that user exists 10 | if [ -z `getent passwd spinnaker` ]; then 11 | useradd --gid spinnaker spinnaker -m --home-dir /home/spinnaker 12 | fi 13 | 14 | install_kubectl() { 15 | if [ -z `which kubectl` ]; then 16 | wget https://storage.googleapis.com/kubernetes-release/release/stable.txt && wget https://storage.googleapis.com/kubernetes-release/release/$(cat stable.txt)/bin/linux/amd64/kubectl 17 | rm stable.txt 18 | chmod +x kubectl 19 | mv ./kubectl /usr/local/bin/kubectl 20 | fi 21 | } 22 | 23 | install_kubectl 24 | 25 | install --mode=755 --owner=spinnaker --group=spinnaker --directory /var/log/spinnaker/clouddriver 26 | -------------------------------------------------------------------------------- /clouddriver-web/pkg_scripts/postUninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | rm -rf /var/log/spinnaker/clouddriver 4 | -------------------------------------------------------------------------------- /clouddriver-web/src/main/groovy/com/netflix/spinnaker/clouddriver/events/ConfigRefreshedEvent.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.events 18 | 19 | import org.springframework.context.ApplicationEvent 20 | 21 | class ConfigRefreshedEvent extends ApplicationEvent { 22 | public ConfigRefreshedEvent(Object source) { 23 | super(source) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /clouddriver-web/src/main/groovy/com/netflix/spinnaker/clouddriver/model/view/ApplicationClusterViewModel.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model.view 18 | 19 | class ApplicationClusterViewModel { 20 | String name 21 | TreeSet loadBalancers 22 | TreeSet serverGroups 23 | String provider 24 | } 25 | -------------------------------------------------------------------------------- /clouddriver-web/src/main/groovy/com/netflix/spinnaker/clouddriver/model/view/ApplicationViewModel.groovy: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Netflix, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.netflix.spinnaker.clouddriver.model.view 18 | 19 | class ApplicationViewModel { 20 | String name 21 | TreeMap attributes 22 | TreeMap> clusters 23 | } 24 | -------------------------------------------------------------------------------- /clouddriver-web/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ___ __ 2 | /\_ \ /\ \ 3 | ___\//\ \ ___ __ __ \_\ \ 4 | /'___\\ \ \ / __`\/\ \/\ \ /'_` \ 5 | /\ \__/ \_\ \_/\ \L\ \ \ \_\ \/\ \L\ \ 6 | \ \____\/\____\ \____/\ \____/\ \___,_\ 7 | \/____/\/____/\/___/ \/___/ \/__,_ / 8 | 9 | __ 10 | /\ \ __ 11 | \_\ \ _ __ /\_\ __ __ __ _ __ 12 | /'_` \/\`'__\/\ \/\ \/\ \ /'__`\/\`'__\ 13 | /\ \L\ \ \ \/ \ \ \ \ \_/ |/\ __/\ \ \/ 14 | \ \___,_\ \_\ \ \_\ \___/ \ \____\\ \_\ 15 | \/__,_ /\/_/ \/_/\/__/ \/____/ \/_/ 16 | 17 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.parallel=true 2 | 3 | jackson.version=2.9.2 4 | 5 | includeCloudProviders=all 6 | -------------------------------------------------------------------------------- /gradle/init-publish.gradle: -------------------------------------------------------------------------------- 1 | initscript { 2 | repositories { 3 | jcenter() 4 | maven { url 'https://dl.bintray.com/spinnaker/gradle/' } 5 | maven { url "https://plugins.gradle.org/m2/" } 6 | } 7 | dependencies { 8 | classpath 'com.netflix.spinnaker.gradle:spinnaker-gradle-project:5.2.1' 9 | } 10 | } 11 | 12 | // Can't use the plugin ID (spinnaker.project) on init scripts for some reason. 13 | apply plugin: com.netflix.spinnaker.gradle.project.SpinnakerProjectPlugin 14 | 15 | -------------------------------------------------------------------------------- /gradle/installViaTravis.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This script will build the project. 3 | 4 | GRADLE="./gradlew -I gradle/init-publish.gradle --no-daemon --max-workers=1" 5 | export GRADLE_OPTS="-Xmx1g -Xms1g" 6 | 7 | if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then 8 | echo -e "Assemble Pull Request #$TRAVIS_PULL_REQUEST => Branch [$TRAVIS_BRANCH]" 9 | $GRADLE assemble 10 | elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_TAG" == "" ]; then 11 | echo -e 'Assemble Branch with Snapshot => Branch ['$TRAVIS_BRANCH']' 12 | $GRADLE -Prelease.travisci=true -x test assemble 13 | elif [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_TAG" != "" ]; then 14 | echo -e 'Assemble Branch for Release => Branch ['$TRAVIS_BRANCH'] Tag ['$TRAVIS_TAG']' 15 | $GRADLE -Prelease.travisci=true -Prelease.useLastTag=true -x test assemble 16 | else 17 | echo -e 'WARN: Should not be here => Branch ['$TRAVIS_BRANCH'] Tag ['$TRAVIS_TAG'] Pull Request ['$TRAVIS_PULL_REQUEST']' 18 | $GRADLE assemble 19 | fi 20 | 21 | -------------------------------------------------------------------------------- /gradle/prepCaches.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -f $HOME/.gradle/caches/modules-2/modules-2.lock 4 | 5 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliyun/clouddriver/17773f38456814b99bebc6091f5ba2ee7ea8a855/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /halconfig/clouddriver-bootstrap.yml: -------------------------------------------------------------------------------- 1 | # halconfig 2 | 3 | server: 4 | port: ${services.clouddriverBootstrap.port:7002} 5 | address: ${services.clouddriverBootstrap.host:localhost} 6 | 7 | redis: 8 | connection: ${services.redisBootstrap.baseUrl:redis://localhost:6379} 9 | 10 | caching: 11 | redis: 12 | hashingEnabled: true 13 | -------------------------------------------------------------------------------- /halconfig/clouddriver-caching.yml: -------------------------------------------------------------------------------- 1 | # halconfig 2 | 3 | server: 4 | port: ${services.clouddriverCaching.port:7002} 5 | address: ${services.clouddriverCaching.host:localhost} 6 | 7 | caching: 8 | redis: 9 | hashingEnabled: true 10 | writeEnabled: true 11 | -------------------------------------------------------------------------------- /halconfig/clouddriver-ro-deck.yml: -------------------------------------------------------------------------------- 1 | # halconfig 2 | 3 | server: 4 | port: ${services.clouddriverRoDeck.port:7002} 5 | address: ${services.clouddriverRoDeck.host:localhost} 6 | 7 | caching: 8 | redis: 9 | hashingEnabled: false 10 | writeEnabled: false 11 | -------------------------------------------------------------------------------- /halconfig/clouddriver-ro.yml: -------------------------------------------------------------------------------- 1 | # halconfig 2 | 3 | server: 4 | port: ${services.clouddriverRo.port:7002} 5 | address: ${services.clouddriverRo.host:localhost} 6 | 7 | caching: 8 | redis: 9 | hashingEnabled: false 10 | writeEnabled: false 11 | -------------------------------------------------------------------------------- /halconfig/clouddriver-rw.yml: -------------------------------------------------------------------------------- 1 | # halconfig 2 | 3 | server: 4 | port: ${services.clouddriverRw.port:7002} 5 | address: ${services.clouddriverRw.host:localhost} 6 | 7 | caching: 8 | redis: 9 | hashingEnabled: false 10 | writeEnabled: false 11 | -------------------------------------------------------------------------------- /halconfig/clouddriver.yml: -------------------------------------------------------------------------------- 1 | # halconfig 2 | 3 | admin.tasks.shutdownWaitSeconds: 600 # 10 minutes 4 | 5 | server: 6 | port: ${services.clouddriver.port:7002} 7 | address: ${services.clouddriver.host:localhost} 8 | 9 | redis: 10 | connection: ${services.redis.baseUrl:redis://localhost:6379} 11 | 12 | caching: 13 | redis: 14 | hashingEnabled: true 15 | -------------------------------------------------------------------------------- /lombok.config: -------------------------------------------------------------------------------- 1 | lombok.nonNull.exceptionType = IllegalArgumentException 2 | lombok.accessors.chain = true 3 | --------------------------------------------------------------------------------