Showing preview only (2,511K chars total). Download the full file or copy to clipboard to get everything.
Repository: spring-cloud/spring-cloud-deployer
Branch: main
Commit: 63e5946b4adb
Files: 332
Total size: 136.8 MB
Directory structure:
gitextract_rlk86ief/
├── .editorconfig
├── .github/
│ ├── actions/
│ │ └── trivy-scan/
│ │ └── action.yml
│ ├── dco.yml
│ ├── settings.xml
│ └── workflows/
│ ├── build-snapshot-worker.yml
│ ├── ci-it.yml
│ ├── ci-pr.yml
│ ├── ci.yml
│ ├── common-ci.yml
│ ├── issue-handler.yml
│ ├── k8s-versions.json
│ ├── milestone-worker.yml
│ ├── next-dev-version-worker.yml
│ └── release-worker.yml
├── .gitignore
├── .mvn/
│ ├── jvm.config
│ ├── maven.config
│ └── wrapper/
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── .settings.xml
├── .trivyignore
├── CONTRIBUTING.adoc
├── LICENSE
├── NOTICE
├── README.adoc
├── SECURITY.md
├── mvnw
├── mvnw.cmd
├── pom.xml
├── spring-cloud-deployer-autoconfigure/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── springframework/
│ │ │ └── cloud/
│ │ │ └── deployer/
│ │ │ └── autoconfigure/
│ │ │ ├── DelegatingResourceLoaderBuilder.java
│ │ │ ├── DelegatingResourceLoaderBuilderCustomizer.java
│ │ │ ├── MavenConfigurationProperties.java
│ │ │ └── ResourceLoadingAutoConfiguration.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── spring.factories
│ └── test/
│ └── java/
│ └── org/
│ └── springframework/
│ └── cloud/
│ └── deployer/
│ └── autoconfigure/
│ └── ResourceLoadingAutoConfigurationTests.java
├── spring-cloud-deployer-cloudfoundry/
│ ├── README.adoc
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── springframework/
│ │ │ └── cloud/
│ │ │ └── deployer/
│ │ │ └── spi/
│ │ │ ├── cloudfoundry/
│ │ │ │ ├── AbstractCloudFoundryDeployer.java
│ │ │ │ ├── AbstractCloudFoundryTaskLauncher.java
│ │ │ │ ├── AppNameGenerator.java
│ │ │ │ ├── ApplicationLogAccessor.java
│ │ │ │ ├── CfEnvAwareAppDeploymentRequest.java
│ │ │ │ ├── CfEnvAwareResource.java
│ │ │ │ ├── CfEnvConfigurer.java
│ │ │ │ ├── CloudFoundryActuatorTemplate.java
│ │ │ │ ├── CloudFoundryAppDeployer.java
│ │ │ │ ├── CloudFoundryAppInstanceStatus.java
│ │ │ │ ├── CloudFoundryAppNameGenerator.java
│ │ │ │ ├── CloudFoundryConnectionProperties.java
│ │ │ │ ├── CloudFoundryDeployerAutoConfiguration.java
│ │ │ │ ├── CloudFoundryDeploymentProperties.java
│ │ │ │ ├── CloudFoundryPlatformSpecificInfo.java
│ │ │ │ ├── CloudFoundryTaskLauncher.java
│ │ │ │ ├── DurationConverter.java
│ │ │ │ ├── ServiceParser.java
│ │ │ │ └── UnsupportedVersionTaskLauncher.java
│ │ │ └── scheduler/
│ │ │ └── cloudfoundry/
│ │ │ ├── CloudFoundryAppScheduler.java
│ │ │ ├── CloudFoundryScheduleSSLException.java
│ │ │ ├── CloudFoundrySchedulerProperties.java
│ │ │ └── expression/
│ │ │ └── QuartzCronExpression.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── additional-spring-configuration-metadata.json
│ │ ├── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── spring.factories
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ ├── cloudfoundry/
│ │ │ ├── AbstractAppDeployerTestSupport.java
│ │ │ ├── ApplicationLogAccessorTests.java
│ │ │ ├── CfEnvAwareResourceTests.java
│ │ │ ├── CfEnvConfigurerTests.java
│ │ │ ├── CloudFoundryActuatorTemplateTests.java
│ │ │ ├── CloudFoundryAppDeployerIntegrationIT.java
│ │ │ ├── CloudFoundryAppDeployerTests.java
│ │ │ ├── CloudFoundryAppNameGeneratorTest.java
│ │ │ ├── CloudFoundryConnectionPropertiesTests.java
│ │ │ ├── CloudFoundryDeployerTests.java
│ │ │ ├── CloudFoundryTaskLauncherCachingTests.java
│ │ │ ├── CloudFoundryTaskLauncherIntegrationIT.java
│ │ │ ├── CloudFoundryTaskLauncherTests.java
│ │ │ └── ServiceParserTests.java
│ │ └── scheduler/
│ │ └── cloudfoundry/
│ │ ├── CloudFoundryAppSchedulerTests.java
│ │ ├── CloudFoundryScheduleSSLExceptionTests.java
│ │ ├── CloudFoundrySchedulerPropertiesTest.java
│ │ ├── SpringCloudSchedulerIntegrationIT.java
│ │ └── expression/
│ │ └── QuartzCronExpressionTests.java
│ └── resources/
│ ├── batch-job-1.0.0.BUILD-SNAPSHOT.jar
│ ├── demo-0.0.1-SNAPSHOT.jar
│ ├── http-source-rabbit-2.1.5.RELEASE.jar
│ ├── log-sink-rabbit-3.0.0.BUILD-SNAPSHOT.jar
│ ├── logback-test.xml
│ ├── long-running-task-1.0.0.BUILD-SNAPSHOT.jar
│ ├── timestamp-task-1.0.0.BUILD-SNAPSHOT-exec-2.jar
│ ├── timestamp-task-1.0.0.BUILD-SNAPSHOT-exec-3.jar
│ ├── timestamp-task-1.0.0.BUILD-SNAPSHOT-exec.jar
│ └── timestamp-task-3.1.2-SNAPSHOT.jar
├── spring-cloud-deployer-dependencies/
│ └── pom.xml
├── spring-cloud-deployer-kubernetes/
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── springframework/
│ │ │ └── cloud/
│ │ │ └── deployer/
│ │ │ └── spi/
│ │ │ └── kubernetes/
│ │ │ ├── AbstractKubernetesDeployer.java
│ │ │ ├── CommandProbeCreator.java
│ │ │ ├── CompositeDeploymentStateResolver.java
│ │ │ ├── ContainerConfiguration.java
│ │ │ ├── ContainerFactory.java
│ │ │ ├── DefaultContainerFactory.java
│ │ │ ├── DefaultRunningPhaseDeploymentStateResolver.java
│ │ │ ├── DeploymentPropertiesResolver.java
│ │ │ ├── EntryPointStyle.java
│ │ │ ├── HttpProbeCreator.java
│ │ │ ├── ImagePullPolicy.java
│ │ │ ├── KubernetesActuatorTemplate.java
│ │ │ ├── KubernetesAppDeployer.java
│ │ │ ├── KubernetesAppInstanceStatus.java
│ │ │ ├── KubernetesAutoConfiguration.java
│ │ │ ├── KubernetesClientFactory.java
│ │ │ ├── KubernetesDeployerProperties.java
│ │ │ ├── KubernetesScheduler.java
│ │ │ ├── KubernetesSchedulerProperties.java
│ │ │ ├── KubernetesTaskLauncher.java
│ │ │ ├── KubernetesTaskLauncherProperties.java
│ │ │ ├── LivenessCommandProbeCreator.java
│ │ │ ├── LivenessHttpProbeCreator.java
│ │ │ ├── LivenessTcpProbeCreator.java
│ │ │ ├── PredicateRunningPhaseDeploymentStateResolver.java
│ │ │ ├── ProbeAuthenticationType.java
│ │ │ ├── ProbeCreator.java
│ │ │ ├── ProbeCreatorFactory.java
│ │ │ ├── ProbeType.java
│ │ │ ├── ReadinessCommandProbeCreator.java
│ │ │ ├── ReadinessHttpProbeCreator.java
│ │ │ ├── ReadinessTcpProbeCreator.java
│ │ │ ├── RestartPolicy.java
│ │ │ ├── RunningPhaseDeploymentStateResolver.java
│ │ │ ├── StartupCommandProbeCreator.java
│ │ │ ├── StartupHttpProbeCreator.java
│ │ │ ├── StartupTcpProbeCreator.java
│ │ │ ├── TcpProbeCreator.java
│ │ │ └── support/
│ │ │ ├── ArgumentSanitizer.java
│ │ │ ├── PropertyParserUtils.java
│ │ │ └── RelaxedNames.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── spring.factories
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ └── kubernetes/
│ │ ├── AbstractKubernetesTaskLauncherIntegrationTests.java
│ │ ├── DefaultContainerFactoryTests.java
│ │ ├── DeploymentPropertiesResolverTests.java
│ │ ├── EntryPointStyleTests.java
│ │ ├── ImagePullPolicyTests.java
│ │ ├── KubernetesActuatorTemplateTests.java
│ │ ├── KubernetesAppDeployerIntegrationIT.java
│ │ ├── KubernetesAppDeployerTests.java
│ │ ├── KubernetesConfigurationPropertiesTests.java
│ │ ├── KubernetesDeployerPropertiesTests.java
│ │ ├── KubernetesSchedulerIT.java
│ │ ├── KubernetesSchedulerPropertiesTests.java
│ │ ├── KubernetesTaskLauncherIntegrationIT.java
│ │ ├── KubernetesTaskLauncherMaximumConcurrentTasksTests.java
│ │ ├── KubernetesTaskLauncherWithJobIntegrationIT.java
│ │ ├── PropertyParserUtilsTests.java
│ │ └── RunAbstractKubernetesDeployerTests.java
│ └── resources/
│ ├── dataflow-server-configMapKeyRef.yml
│ ├── dataflow-server-containerSecurityContext.yml
│ ├── dataflow-server-nodeAffinity.yml
│ ├── dataflow-server-podAffinity.yml
│ ├── dataflow-server-podAntiAffinity.yml
│ ├── dataflow-server-podsecuritycontext.yml
│ ├── dataflow-server-secretKeyRef.yml
│ ├── dataflow-server-tolerations.yml
│ └── dataflow-server.yml
├── spring-cloud-deployer-local/
│ ├── README.adoc
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── springframework/
│ │ │ └── cloud/
│ │ │ └── deployer/
│ │ │ └── spi/
│ │ │ └── local/
│ │ │ ├── AbstractLocalDeployerSupport.java
│ │ │ ├── CommandBuilder.java
│ │ │ ├── DebugAddress.java
│ │ │ ├── DeployerSocketUtils.java
│ │ │ ├── DockerCommandBuilder.java
│ │ │ ├── HttpProbeExecutor.java
│ │ │ ├── JavaCommandBuilder.java
│ │ │ ├── LocalActuatorTemplate.java
│ │ │ ├── LocalAppDeployer.java
│ │ │ ├── LocalDeployerAutoConfiguration.java
│ │ │ ├── LocalDeployerProperties.java
│ │ │ ├── LocalDeployerUtils.java
│ │ │ └── LocalTaskLauncher.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ └── local/
│ │ ├── DebugAddressTests.java
│ │ ├── DeployerSocketUtilsTests.java
│ │ ├── DockerCommandBuilderTests.java
│ │ ├── JavaExecutionCommandBuilderTests.java
│ │ ├── LocalAppDeployerEnvironmentIntegrationTests.java
│ │ ├── LocalAppDeployerIntegrationTests.java
│ │ ├── LocalDeployerPropertiesTests.java
│ │ ├── LocalDeployerSupportTests.java
│ │ ├── LocalTaskLauncherIntegrationTests.java
│ │ ├── RandomPortRangeContextTests.java
│ │ ├── RandomPortRangeTests.java
│ │ └── RandomPortTests.java
│ └── resources/
│ └── testResource.txt
├── spring-cloud-deployer-resource-docker/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── resource/
│ │ └── docker/
│ │ ├── DockerResource.java
│ │ └── DockerResourceLoader.java
│ └── test/
│ └── java/
│ └── org/
│ └── springframework/
│ └── cloud/
│ └── deployer/
│ └── resource/
│ └── docker/
│ ├── DockerResourceLoaderTests.java
│ └── DockerResourceTests.java
├── spring-cloud-deployer-resource-maven/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── resource/
│ │ └── maven/
│ │ ├── LoggingRepositoryListener.java
│ │ ├── MavenArtifactResolver.java
│ │ ├── MavenProperties.java
│ │ ├── MavenResource.java
│ │ ├── MavenResourceLoader.java
│ │ ├── StaticWagonConfigurator.java
│ │ └── StaticWagonProvider.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── resource/
│ │ └── maven/
│ │ ├── MavenArtifactResolverTests.java
│ │ ├── MavenExtension.java
│ │ ├── MavenPropertiesTests.java
│ │ ├── MavenResourceLoaderTests.java
│ │ ├── MavenResourceTests.java
│ │ └── WagonHttpTests.java
│ └── resources/
│ └── application.properties
├── spring-cloud-deployer-resource-support/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── resource/
│ │ ├── registry/
│ │ │ ├── InMemoryUriRegistry.java
│ │ │ ├── UriRegistry.java
│ │ │ └── UriRegistryPopulator.java
│ │ └── support/
│ │ ├── DelegatingResourceLoader.java
│ │ ├── DownloadingUrlResource.java
│ │ ├── DownloadingUrlResourceLoader.java
│ │ ├── ResourceNotResolvedException.java
│ │ └── ShaUtils.java
│ └── test/
│ └── java/
│ └── org/
│ └── springframework/
│ └── cloud/
│ └── deployer/
│ └── resource/
│ ├── StubResourceLoader.java
│ ├── registry/
│ │ └── UriRegistryPopulatorTests.java
│ └── support/
│ ├── DelegatingResourceLoaderIntegrationTests.java
│ ├── DelegatingResourceLoaderTests.java
│ ├── DownloadingUrlResourceTests.java
│ └── ShaUtilsTests.java
├── spring-cloud-deployer-spi/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ ├── app/
│ │ │ ├── AbstractActuatorTemplate.java
│ │ │ ├── ActuatorOperations.java
│ │ │ ├── AppAdmin.java
│ │ │ ├── AppDeployer.java
│ │ │ ├── AppInstanceStatus.java
│ │ │ ├── AppScaleRequest.java
│ │ │ ├── AppStatus.java
│ │ │ ├── DeploymentState.java
│ │ │ └── MultiStateAppDeployer.java
│ │ ├── core/
│ │ │ ├── AppDefinition.java
│ │ │ ├── AppDeploymentRequest.java
│ │ │ └── RuntimeEnvironmentInfo.java
│ │ ├── scheduler/
│ │ │ ├── CreateScheduleException.java
│ │ │ ├── ScheduleInfo.java
│ │ │ ├── ScheduleRequest.java
│ │ │ ├── Scheduler.java
│ │ │ ├── SchedulerException.java
│ │ │ ├── SchedulerPropertyKeys.java
│ │ │ └── UnScheduleException.java
│ │ ├── task/
│ │ │ ├── LaunchState.java
│ │ │ ├── TaskLauncher.java
│ │ │ └── TaskStatus.java
│ │ └── util/
│ │ ├── ByteSizeUtils.java
│ │ ├── CommandLineTokenizer.java
│ │ └── RuntimeVersionUtils.java
│ └── test/
│ └── java/
│ └── org/
│ └── springframework/
│ └── cloud/
│ └── deployer/
│ └── spi/
│ ├── app/
│ │ ├── AppDeployerTests.java
│ │ └── RuntimeEnvironmentInfoBuilderTests.java
│ ├── task/
│ │ └── TaskLauncherTests.java
│ └── util/
│ ├── ByteSizeUtilsTests.java
│ └── CommandLineTokenizerTests.java
├── spring-cloud-deployer-spi-scheduler-test-app/
│ ├── Dockerfile
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ └── scheduler/
│ │ └── test/
│ │ └── app/
│ │ ├── SchedulerIntegrationTest.java
│ │ ├── SchedulerIntegrationTestApplication.java
│ │ └── SchedulerIntegrationTestProperties.java
│ └── resources/
│ └── application.properties
├── spring-cloud-deployer-spi-test/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ ├── scheduler/
│ │ │ └── test/
│ │ │ └── AbstractSchedulerIntegrationJUnit5Tests.java
│ │ └── test/
│ │ ├── AbstractAppDeployerIntegrationJUnit5Tests.java
│ │ ├── AbstractIntegrationJUnit5Tests.java
│ │ ├── AbstractTaskLauncherIntegrationJUnit5Tests.java
│ │ └── Timeout.java
│ └── resources/
│ └── integration-test-app.properties
├── spring-cloud-deployer-spi-test-app/
│ ├── Dockerfile
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ └── test/
│ │ └── app/
│ │ ├── DeployerIntegrationTest.java
│ │ ├── DeployerIntegrationTestApplication.java
│ │ └── DeployerIntegrationTestProperties.java
│ └── resources/
│ └── application.properties
└── src/
├── main/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ ├── kubernetes/
│ │ │ ├── DefaultContainerFactory.java
│ │ │ ├── HttpProbeCreator.java
│ │ │ ├── KubernetesAppDeployer.java
│ │ │ ├── KubernetesAppInstanceStatus.java
│ │ │ ├── KubernetesDeployerProperties.java
│ │ │ ├── LivenessCommandProbeCreator.java
│ │ │ ├── LivenessHttpProbeCreator.java
│ │ │ ├── LivenessTcpProbeCreator.java
│ │ │ ├── ProbeCreator.java
│ │ │ ├── ProbeCreatorFactory.java
│ │ │ ├── ReadinessCommandProbeCreator.java
│ │ │ ├── ReadinessHttpProbeCreator.java
│ │ │ └── ReadinessTcpProbeCreator.java
│ │ └── local/
│ │ ├── AbstractLocalDeployerSupport.java
│ │ ├── CommandBuilder.java
│ │ ├── DebugAddress.java
│ │ ├── DeployerSocketUtils.java
│ │ ├── DockerCommandBuilder.java
│ │ ├── HttpProbeExecutor.java
│ │ ├── JavaCommandBuilder.java
│ │ ├── LocalActuatorTemplate.java
│ │ ├── LocalAppDeployer.java
│ │ ├── LocalDeployerAutoConfiguration.java
│ │ ├── LocalDeployerProperties.java
│ │ ├── LocalDeployerUtils.java
│ │ └── LocalTaskLauncher.java
│ └── resources/
│ └── META-INF/
│ ├── additional-spring-configuration-metadata.json
│ ├── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── spring.factories
├── scripts/
│ ├── next-minor-parent-snapshot-version
│ ├── next-minor-snapshot-version
│ ├── next-parent-snapshot-version
│ └── next-snapshot-version
└── test/
├── java/
│ └── org/
│ └── springframework/
│ └── cloud/
│ └── deployer/
│ └── spi/
│ ├── kubernetes/
│ │ ├── DefaultContainerFactoryTests.java
│ │ ├── KubernetesAppDeployerIntegrationIT.java
│ │ ├── KubernetesAppDeployerTests.java
│ │ ├── KubernetesTaskLauncherIntegrationIT.java
│ │ └── KubernetesTaskLauncherWithJobIntegrationIT.java
│ └── local/
│ ├── DebugAddressTests.java
│ ├── DeployerSocketUtilsTests.java
│ ├── DockerCommandBuilderTests.java
│ ├── JavaExecutionCommandBuilderTests.java
│ ├── LocalAppDeployerEnvironmentIntegrationTests.java
│ ├── LocalAppDeployerIntegrationTests.java
│ ├── LocalDeployerPropertiesTests.java
│ ├── LocalDeployerSupportTests.java
│ ├── LocalTaskLauncherIntegrationTests.java
│ ├── RandomPortRangeContextTests.java
│ ├── RandomPortRangeTests.java
│ └── RandomPortTests.java
└── resources/
├── dataflow-server-podsecuritycontext.yml
└── testResource.txt
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*.java]
indent_style = tab
indent_size = 4
[*.adoc]
indent_style = tab
indent_size = 4
[*.groovy]
indent_style = tab
indent_size = 4
[*.xml]
indent_style = tab
indent_size = 4
[*.yml]
indent_style = space
indent_size = 2
[*.yaml]
indent_style = space
indent_size = 2
[*.sh]
indent_style = space
indent_size = 4
end_of_line = lf
================================================
FILE: .github/actions/trivy-scan/action.yml
================================================
name: 'Trivy Scan'
description: 'Run Trivy Scan on repository'
runs:
using: "composite"
steps:
- uses: actions/checkout@v4
- name: Run Trivy vulnerability scanner in repo mode
env:
TRIVY_DB_REPOSITORY: public.ecr.aws/aquasecurity/trivy-db,aquasec/trivy-db,ghcr.io/aquasecurity/trivy-db
TRIVY_JAVA_DB_REPOSITORY: public.ecr.aws/aquasecurity/trivy-java-db,aquasec/trivy-java-db,ghcr.io/aquasecurity/trivy-java-db
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
scanners: 'vuln'
ignore-unfixed: true
severity: 'CRITICAL,HIGH'
exit-code: 1
trivyignores: .trivyignore
================================================
FILE: .github/dco.yml
================================================
require:
members: false
================================================
FILE: .github/settings.xml
================================================
<settings>
<profiles>
<profile>
<id>stagingmilestone</id>
<repositories>
<repository>
<id>maven-central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-staging</id>
<name>Spring Staging</name>
<url>https://repo.spring.io/libs-staging</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-staging</id>
<name>Spring Staging</name>
<url>https://repo.spring.io/libs-staging</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>stagingrelease</id>
<repositories>
<repository>
<id>maven-central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-staging</id>
<name>Spring Staging</name>
<url>https://repo.spring.io/libs-staging</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-staging</id>
<name>Spring Staging</name>
<url>https://repo.spring.io/libs-staging</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</settings>
================================================
FILE: .github/workflows/build-snapshot-worker.yml
================================================
# Worker which is dispatched from build-snapshot-controller workflow.
name: Build Snapshot Worker
on:
workflow_dispatch:
inputs:
build-zoo-handler:
description: 'Build Zoo Handler Payload'
required: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'liberica'
- uses: jfrog/setup-jfrog-cli@v3
env:
JF_URL: 'https://repo.spring.io'
JF_ENV_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
# cache maven .m2
- uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-m2-
# target deploy repos
- name: Configure JFrog Cli
run: |
jfrog rt mvnc --use-wrapper \
--server-id-resolve=${{ vars.JF_SERVER_ID }} \
--server-id-deploy=${{ vars.JF_SERVER_ID }} \
--repo-resolve-releases=libs-milestone \
--repo-resolve-snapshots=libs-snapshot \
--repo-deploy-releases=libs-release-local \
--repo-deploy-snapshots=libs-snapshot-local
echo JFROG_CLI_BUILD_NAME=spring-cloud-deployer-main >> $GITHUB_ENV
echo JFROG_CLI_BUILD_NUMBER=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
# zoo extract and ensure
- name: Extract Zoo Context Properties
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-extract-context-properties: true
# build and publish to configured target
- name: Build and Publish
run: |
jfrog rt mvn -U -B clean install -T 0.5C
jfrog rt build-publish
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_version=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout) >> $GITHUB_ENV
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_buildname=spring-cloud-deployer-main >> $GITHUB_ENV
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_buildnumber=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
- name: Test Report
uses: dorny/test-reporter@v1
if: ${{ success() || failure() }}
with:
name: Unit Test - Report
path: '**/surefire-reports/*.xml'
reporter: java-junit
list-tests: 'failed'
# zoo success
- name: Notify Build Success Zoo Handler Controller
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-token: ${{ secrets.SCDF_ACCESS_TOKEN }}
dispatch-handler-client-payload-data: >
{
"event": "build-succeed"
}
# zoo failure
- name: Notify Build Failure Zoo Handler Controller
if: ${{ failure() }}
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-token: ${{ secrets.SCDF_ACCESS_TOKEN }}
dispatch-handler-client-payload-data: >
{
"event": "build-failed",
"message": "spring-cloud-deployer failed"
}
# clean m2 cache
- name: Clean cache
run: |
find ~/.m2/repository -type d -name '*SNAPSHOT' | xargs rm -fr
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Trivy vulnerability scanner in repo mode
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
ignore-unfixed: true
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: 'trivy-results.sarif'
- name: 'Scanned'
shell: bash
run: echo "::info ::Scanned"
done:
runs-on: ubuntu-latest
needs: [ scan, build ]
steps:
- name: 'Done'
shell: bash
run: echo "::info ::Done"
================================================
FILE: .github/workflows/ci-it.yml
================================================
name: CI IT
on:
workflow_dispatch:
jobs:
prepare:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 'Load Matrix'
id: matrix
shell: bash
run: |
MATRIX=$(jq -c . .github/workflows/k8s-versions.json)
echo "MATRIX=$MATRIX" >> $GITHUB_OUTPUT
outputs:
matrix: ${{ steps.matrix.outputs.MATRIX }}
k8s-it:
runs-on: ubuntu-latest
needs: [ prepare ]
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-m2it-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-m2-
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'liberica'
- name: 'Install minikube ${{ matrix.patch && matrix.patch || matrix.k8s_version }}'
shell: bash
run: |
MINIKUBE_VERSION="v1.34.0"
curl -LO "https://storage.googleapis.com/minikube/releases/$MINIKUBE_VERSION/minikube-linux-amd64"
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start "--kubernetes-version=${{ matrix.patch && matrix.patch || matrix.k8s_version }}"
# build
- name: Build
run: |
./mvnw -B -Pfailsafe verify -pl spring-cloud-deployer-kubernetes
- name: Test Report
uses: dorny/test-reporter@v1
if: ${{ success() || failure() }}
with:
name: "Integration Test - Report for ${{ matrix.k8s_version }}"
path: '**/failsafe-reports/*IT.xml'
reporter: java-junit
list-tests: 'failed'
# clean m2 cache
- name: Clean cache
run: |
find ~/.m2/repository -type d -name '*SNAPSHOT' | xargs rm -fr
================================================
FILE: .github/workflows/ci-pr.yml
================================================
name: CI PRs
on:
workflow_dispatch:
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'liberica'
- name: Build
run: |
./mvnw -U -B -s .settings.xml -Pspring clean install -T 0.5C
- name: Scan
uses: ./.github/actions/trivy-scan
if: always()
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
workflow_dispatch:
push:
branches:
- 'main'
- '2.9.x'
- '2.8.x'
- '2.7.x'
paths-ignore:
- '.github/**'
jobs:
build:
uses: ./.github/workflows/common-ci.yml
with:
artifactoryServerId: ${{ vars.JF_SERVER_ID }}
secrets: inherit
================================================
FILE: .github/workflows/common-ci.yml
================================================
name: common-ci
on:
workflow_call:
inputs:
artifactoryServerId:
type: string
required: true
description: 'Artifactory Server Id (typically from vars.JF_SERVER_ID)'
secrets:
JF_ARTIFACTORY_SPRING:
env:
ARTIFACTORY_KEY: ${{ secrets.JF_ARTIFACTORY_SPRING }}
ARTIFACTORY_SERVER_ID: ${{ inputs.artifactoryServerId }}
jobs:
build_publish_scan:
name: Build / Publish / Scan
if: github.repository_owner == 'spring-cloud'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'liberica'
- uses: jfrog/setup-jfrog-cli@v4
env:
JF_URL: 'https://repo.spring.io'
JF_ENV_SPRING: ${{ env.ARTIFACTORY_KEY }}
# setup frog cli
- name: Configure JFrog Cli
run: |
jfrog mvnc --use-wrapper \
--server-id-deploy=${{ env.ARTIFACTORY_SERVER_ID }} \
--repo-deploy-releases=libs-release-local \
--repo-deploy-snapshots=libs-snapshot-local
echo JFROG_CLI_BUILD_NAME=spring-cloud-deployer-main >> $GITHUB_ENV
echo JFROG_CLI_BUILD_NUMBER=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
- name: Build and Publish
run: |
jfrog mvn -U -B -s .settings.xml clean install -T 0.5C
jfrog rt build-publish
- name: Scan
uses: ./.github/actions/trivy-scan
if: always()
================================================
FILE: .github/workflows/issue-handler.yml
================================================
name: Issue Handler
on:
workflow_dispatch:
issues:
types: [opened, labeled, unlabeled]
issue_comment:
types: [created]
jobs:
labeler:
runs-on: ubuntu-latest
steps:
- name: Handle Issues
uses: jvalkeal/issue-handler@v0.0.4
with:
token: ${{ secrets.GITHUB_TOKEN }}
config: >
{
"data": {
"team": [
"jvalkeal",
"oodamien",
"ilayaperumalg",
"sabbyanandan",
"tzolov",
"chrisjs",
"cppwfs",
"mminella",
"dturanski",
"onobc",
"claudiahub",
"sobychacko",
"corneil"
]
},
"recipes": [
{
"name": "Mark new issue to get triaged",
"type": "ifThen",
"if": "isAction('opened') && !dataInArray('team', actor)",
"then": "labelIssue(['status/need-triage'])"
},
{
"name": "Switch to team if user comments",
"type": "ifThen",
"if": "isEvent('issue_comment') && isAction('created') && actor == context.payload.issue.user.login && labelsContainsAny('status/need-feedback')",
"then": "[labelIssue('for/team-attention'), removeLabel('status/need-feedback')]"
},
{
"name": "Switch to user if team comments",
"type": "ifThen",
"if": "isEvent('issue_comment') && isAction('created') && dataInArray('team', actor) && labelsContainsAny('for/team-attention') ",
"then": "[labelIssue('status/need-feedback', removeLabel('for/team-attention'))]"
},
{
"name": "Manage backport issues",
"type": "manageBackportIssues",
"whenLabeled": "labeledStartsWith(['branch/'])",
"whenUnlabeled": "labeledStartsWith(['branch/'])",
"whenLabels": "labelsContainsAny(['for/backport'])",
"fromLabels": "labeledStartsWith(['branch/'])",
"additionalLabels": "'type/backport'",
"body": "'Backport #' + number"
}
]
}
================================================
FILE: .github/workflows/k8s-versions.json
================================================
[
{
"k8s_version": "v1.23",
"patch": null
},
{
"k8s_version": "v1.24",
"patch": null
},
{
"k8s_version": "v1.25",
"patch": null
},
{
"k8s_version": "v1.26",
"patch": null
},
{
"k8s_version": "v1.27",
"patch": null
},
{
"k8s_version": "v1.28",
"patch": null
},
{
"k8s_version": "v1.29",
"patch": null
},
{
"k8s_version": "v1.30",
"patch": null
}
]
================================================
FILE: .github/workflows/milestone-worker.yml
================================================
name: Milestone Worker
on:
workflow_dispatch:
inputs:
build-zoo-handler:
description: 'Build Zoo Handler Payload'
required: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'liberica'
- uses: jfrog/setup-jfrog-cli@v3
env:
JF_URL: 'https://repo.spring.io'
JF_ENV_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
- uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-m2-
# target deploy repos
- name: Configure JFrog Cli
run: |
jfrog rt mvnc --use-wrapper \
--server-id-resolve=${{ vars.JF_SERVER_ID }} \
--server-id-deploy=${{ vars.JF_SERVER_ID }} \
--repo-resolve-releases=libs-milestone \
--repo-resolve-snapshots=libs-snapshot \
--repo-deploy-releases=libs-milestone-local \
--repo-deploy-snapshots=libs-snapshot-local
echo JFROG_CLI_BUILD_NAME=spring-cloud-deployer-main-milestone >> $GITHUB_ENV
echo JFROG_CLI_BUILD_NUMBER=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
# zoo extract and ensure
- name: Extract Zoo Context Properties
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-extract-context-properties: true
ensure-env: |
BUILD_ZOO_HANDLER_milestone_version
# build and publish to configured target
- name: Build and Publish
run: |
jfrog rt mvn build-helper:parse-version versions:set \
-gs .github/settings.xml \
-Pstagingmilestone \
-DprocessAllModules=true \
-DgenerateBackupPoms=false \
-Dartifactory.publish.artifacts=false \
-DnewVersion='${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-'${BUILD_ZOO_HANDLER_milestone_version} \
-B
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_version=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout) >> $GITHUB_ENV
jfrog rt build-clean
jfrog rt mvn clean install \
-gs .github/settings.xml \
-P-spring,stagingmilestone \
-DskipTests -U -B -T 0.5C
jfrog rt build-publish
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_buildname=spring-cloud-deployer-main-milestone >> $GITHUB_ENV
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_buildnumber=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
# zoo tag
- name: Tag Release
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
tag-release-branch: ${{ env.BUILD_ZOO_HANDLER_spring_cloud_deployer_version }}
tag-release-tag: ${{ env.BUILD_ZOO_HANDLER_spring_cloud_deployer_version }}
tag-release-tag-prefix: v
# zoo success
- name: Notify Build Success Zoo Handler Controller
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-token: ${{ secrets.SCDF_ACCESS_TOKEN }}
dispatch-handler-client-payload-data: >
{
"event": "build-succeed"
}
# zoo failure
- name: Notify Build Failure Zoo Handler Controller
if: ${{ failure() }}
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-token: ${{ secrets.SCDF_ACCESS_TOKEN }}
dispatch-handler-client-payload-data: >
{
"event": "build-failed",
"message": "spring-cloud-deployer failed"
}
# clean m2 cache
- name: Clean cache
run: |
find ~/.m2/repository -type d -name '*SNAPSHOT' | xargs rm -fr
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Trivy vulnerability scanner in repo mode
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
ignore-unfixed: true
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: 'trivy-results.sarif'
- name: 'Scanned'
shell: bash
run: echo "::info ::Scanned"
done:
runs-on: ubuntu-latest
needs: [ scan, build ]
steps:
- name: 'Done'
shell: bash
run: echo "::info ::Done"
================================================
FILE: .github/workflows/next-dev-version-worker.yml
================================================
name: Next Dev Version Worker
on:
workflow_dispatch:
inputs:
build-zoo-handler:
description: 'Build Zoo Handler Payload'
required: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'liberica'
- uses: jfrog/setup-jfrog-cli@v3
env:
JF_URL: 'https://repo.spring.io'
JF_ENV_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
# cache maven .m2
- uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-m2-
# target deploy repos
- name: Configure JFrog Cli
run: |
jfrog rt mvnc --use-wrapper \
--server-id-resolve=${{ vars.JF_SERVER_ID }} \
--server-id-deploy=${{ vars.JF_SERVER_ID }} \
--repo-resolve-releases=libs-milestone \
--repo-resolve-snapshots=libs-snapshot \
--repo-deploy-releases=libs-release-local \
--repo-deploy-snapshots=libs-snapshot-local
echo JFROG_CLI_BUILD_NAME=spring-cloud-deployer-main-ndv >> $GITHUB_ENV
echo JFROG_CLI_BUILD_NUMBER=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
# zoo extract and ensure
- name: Extract Zoo Context Properties
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-extract-context-properties: true
# build and publish to configured target
- name: Build and Publish
run: |
jfrog rt mvn build-helper:parse-version versions:set \
-DprocessAllModules=true \
-DgenerateBackupPoms=false \
-Dartifactory.publish.artifacts=false \
-DnewVersion='${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion}-SNAPSHOT' \
-B
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_version=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout) >> $GITHUB_ENV
jfrog rt build-clean
jfrog rt mvn clean install -DskipTests -B -T 0.5C
jfrog rt build-publish
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_buildname=spring-cloud-deployer-main-ndv >> $GITHUB_ENV
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_buildnumber=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
# zoo commit
- name: Commit Next Dev Changes
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
commit-changes-branch: main
commit-changes-message: Next development version
# zoo success
- name: Notify Build Success Zoo Handler Controller
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-token: ${{ secrets.SCDF_ACCESS_TOKEN }}
dispatch-handler-client-payload-data: >
{
"event": "next-dev-version-succeed"
}
# zoo failure
- name: Notify Build Failure Zoo Handler Controller
if: ${{ failure() }}
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-token: ${{ secrets.SCDF_ACCESS_TOKEN }}
dispatch-handler-client-payload-data: >
{
"event": "next-dev-version-failed",
"message": "spring-cloud-dataflow-build next version failed"
}
# clean m2 cache
- name: Clean cache
run: |
find ~/.m2/repository -type d -name '*SNAPSHOT' | xargs rm -fr
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Trivy vulnerability scanner in repo mode
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
ignore-unfixed: true
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: 'trivy-results.sarif'
- name: 'Scanned'
shell: bash
run: echo "::info ::Scanned"
done:
runs-on: ubuntu-latest
needs: [ scan, build ]
steps:
- name: 'Done'
shell: bash
run: echo "::info ::Done"
================================================
FILE: .github/workflows/release-worker.yml
================================================
name: Release Worker
on:
workflow_dispatch:
inputs:
build-zoo-handler:
description: 'Build Zoo Handler Payload'
required: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'liberica'
- uses: jfrog/setup-jfrog-cli@v3
env:
JF_URL: 'https://repo.spring.io'
JF_ENV_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
- uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-m2-
# target deploy repos
- name: Configure JFrog Cli
run: |
jfrog rt mvnc --use-wrapper \
--server-id-resolve=${{ vars.JF_SERVER_ID }} \
--server-id-deploy=${{ vars.JF_SERVER_ID }} \
--repo-resolve-releases=libs-release-staging \
--repo-resolve-snapshots=libs-snapshot \
--repo-deploy-releases=libs-staging-local \
--repo-deploy-snapshots=libs-snapshot-local
echo JFROG_CLI_BUILD_NAME=spring-cloud-deployer-main-release >> $GITHUB_ENV
echo JFROG_CLI_BUILD_NUMBER=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
# zoo extract and ensure
- name: Extract Zoo Context Properties
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-extract-context-properties: true
# build and publish to configured target
- name: Build and Publish
run: |
jfrog rt mvn build-helper:parse-version versions:set \
-gs .github/settings.xml \
-Pstagingrelease \
-DprocessAllModules=true \
-DgenerateBackupPoms=false \
-Dartifactory.publish.artifacts=false \
-DnewVersion='${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}' \
-B
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_version=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout) >> $GITHUB_ENV
jfrog rt build-clean
jfrog rt mvn clean install \
-gs .github/settings.xml \
-P-spring,stagingrelease \
-DskipTests -U -B -T 0.5C
jfrog rt build-publish
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_buildname=spring-cloud-deployer-main-release >> $GITHUB_ENV
echo BUILD_ZOO_HANDLER_spring_cloud_deployer_buildnumber=$GITHUB_RUN_NUMBER >> $GITHUB_ENV
# zoo tag
- name: Tag Release
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
tag-release-branch: ${{ env.BUILD_ZOO_HANDLER_spring_cloud_deployer_version }}
tag-release-tag: ${{ env.BUILD_ZOO_HANDLER_spring_cloud_deployer_version }}
tag-release-tag-prefix: v
# zoo success
- name: Notify Build Success Zoo Handler Controller
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-token: ${{ secrets.SCDF_ACCESS_TOKEN }}
dispatch-handler-client-payload-data: >
{
"event": "build-succeed"
}
# zoo failure
- name: Notify Build Failure Zoo Handler Controller
if: ${{ failure() }}
uses: jvalkeal/build-zoo-handler@v0.0.4
with:
dispatch-handler-token: ${{ secrets.SCDF_ACCESS_TOKEN }}
dispatch-handler-client-payload-data: >
{
"event": "build-failed",
"message": "spring-cloud-deployer failed"
}
# clean m2 cache
- name: Clean cache
run: |
find ~/.m2/repository -type d -name '*SNAPSHOT' | xargs rm -fr
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Trivy vulnerability scanner in repo mode
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
ignore-unfixed: true
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: 'trivy-results.sarif'
- name: 'Scanned'
shell: bash
run: echo "::info ::Scanned"
done:
runs-on: ubuntu-latest
needs: [ scan, build ]
steps:
- name: 'Done'
shell: bash
run: echo "::info ::Done"
================================================
FILE: .gitignore
================================================
*~
.#*
*#
*.sw*
_site/
.factorypath
.gradletasknamecache
.DS_Store
.checkstyle
/application.yml
/application.properties
asciidoctor.css
atlassian-ide-plugin.xml
bin/
build/
dump.rdb
out
spring-shell.log
target/
test-output
.jfrog/
# Eclipse artifacts, including WTP generated manifests
.classpath
.project
.settings/
.springBeans
spring-*/src/main/java/META-INF/MANIFEST.MF
# IDEA artifacts and output dirs
*.iml
*.ipr
*.iws
.idea/
rebel.xml
# Visual Studio Code
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
================================================
FILE: .mvn/jvm.config
================================================
-Xmx1024m -XX:CICompilerCount=1 -XX:TieredStopAtLevel=1 -Djava.security.egd=file:/dev/./urandom
================================================
FILE: .mvn/maven.config
================================================
-DaltSnapshotDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-snapshot-local -P spring
================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.8/apache-maven-3.8.8-bin.zip
================================================
FILE: .settings.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<servers>
<server>
<id>repo.spring.io</id>
<username>${env.CI_DEPLOY_USERNAME}</username>
<password>${env.CI_DEPLOY_PASSWORD}</password>
</server>
</servers>
<profiles>
<profile>
<id>spring</id>
<activation><activeByDefault>true</activeByDefault></activation>
<repositories>
<repository>
<id>maven-central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/libs-snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/libs-snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</settings>
================================================
FILE: .trivyignore
================================================
CVE-2022-1471
CVE-2016-1000027
================================================
FILE: CONTRIBUTING.adoc
================================================
= Contributing to Spring Cloud Deployer
:github: https://github.com/spring-cloud/spring-cloud-deployer
Spring Cloud Deployer is released under the Apache 2.0 license. If you would like to contribute something, or want to hack on the code this document should help you get started.
== Using GitHub Issues
We use GitHub issues to track bugs and enhancements.
If you have a general usage question please ask on https://stackoverflow.com[Stack Overflow].
The Spring Cloud Deployer team and the broader community monitor the https://stackoverflow.com/tags/spring-cloud-deployer[`spring-cloud-deployer`] tag.
If you are reporting a bug, please help to speed up problem diagnosis by providing as much information as possible.
Ideally, that would include a small sample project that reproduces the problem.
== Reporting Security Vulnerabilities
If you think you have found a security vulnerability in Spring Cloud Deployer please *DO NOT* disclose it publicly until we've had a chance to fix it.
Please don't report security vulnerabilities using GitHub issues, instead head over to https://spring.io/security-policy and learn how to disclose them responsibly.
== Developer Certificate of Origin
All commits must include a **Signed-off-by** trailer at the end of each commit message to indicate that the contributor agrees to the Developer Certificate of Origin.
For additional details, please refer to the blog post https://spring.io/blog/2025/01/06/hello-dco-goodbye-cla-simplifying-contributions-to-spring[Hello DCO, Goodbye CLA: Simplifying Contributions to Spring].
=== Code Conventions and Housekeeping
None of the following guidelines is essential for a pull request, but they all help your fellow developers understand and work with your code.
They can also be added after the original pull request but before a merge.
* Use the Spring Framework code format conventions. If you use Eclipse, you can import formatter settings by using the `eclipse-code-formatter.xml` file from the https://github.com/spring-cloud/spring-cloud-build/blob/master/spring-cloud-dependencies-parent/eclipse-code-formatter.xml[Spring Cloud Build] project.
If you use IntelliJ, you can use the https://plugins.jetbrains.com/plugin/6546[Eclipse Code Formatter Plugin] to import the same file.
* Make sure all new `.java` files have a simple Javadoc class comment with at least an `@author` tag identifying you, and preferably at least a paragraph describing the class's purpose.
* Add the ASF license header comment to all new `.java` files (to do so, copy it from existing files in the project).
* Add yourself as an `@author` to the .java files that you modify substantially (more than cosmetic changes).
* Add some Javadocs and, if you change the namespace, some XSD doc elements.
* A few unit tests would help a lot as well. Someone has to do it, and your fellow developers appreciate the effort.
* If no one else uses your branch, rebase it against the current master (or other target branch in the main project).
* When writing a commit message, follow https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html[these conventions].
If you fix an existing issue, add `Fixes gh-XXXX` (where XXXX is the issue number) at the end of the commit message.
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
https://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: NOTICE
================================================
spring-cloud-deployer
Copyright (c) 2016-Present Pivotal Software, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.adoc
================================================
# Spring Cloud Data Flow is no longer maintained as an open-source project by Broadcom, Inc.
## For information about extended support or enterprise options for Spring Cloud Data Flow, please read the official blog post [here](https://spring.io/blog/2025/04/21/spring-cloud-data-flow-commercial).
== Spring Cloud Deployer
[frame=none, grid=none, caption=, width="75%", cols="^2,^2"]
.Build Status by Branches
|===
| *Main* | *2.9.x*
|===
The Spring Cloud Deployer project defines a Service Provider Interface (SPI) for deploying long lived applications and short lived tasks.
== Components
The https://github.com/spring-cloud/spring-cloud-deployer/tree/master/spring-cloud-deployer-spi[SPI] project
defines the core interfaces, including https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-spi/src/main/java/org/springframework/cloud/deployer/spi/app/AppDeployer.java[AppDeployer]
and https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-spi/src/main/java/org/springframework/cloud/deployer/spi/task/TaskLauncher.java[TaskLauncher]
as well as the core domain model.
The https://github.com/spring-cloud/spring-cloud-deployer/tree/master/spring-cloud-deployer-spi-test[SPI Test] project provides
the basic test framework that any SPI implementation should use to verify its functionality.
The https://github.com/spring-cloud/spring-cloud-deployer/tree/master/spring-cloud-deployer-resource-maven[spring-cloud-deployer-resource-maven]
project provides support for referencing Maven artifacts via Spring's `Resource` abstraction.
The https://github.com/spring-cloud/spring-cloud-deployer/tree/master/spring-cloud-deployer-resource-docker[spring-cloud-deployer-resource-docker]
project provides support for referencing Docker artifacts via Spring's `Resource` abstraction.
The https://github.com/spring-cloud/spring-cloud-deployer/tree/master/spring-cloud-deployer-resource-support[spring-cloud-deployer-resource-support]
project provides various common support classes for working with `Resources`, such as the
https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-resource-support/src/main/java/org/springframework/cloud/deployer/resource/registry/UriRegistry.java[UriRegistry]
for maintaining the locations of app artifacts, and the
https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-resource-support/src/main/java/org/springframework/cloud/deployer/resource/support/DelegatingResourceLoader.java[DelegatingResourceLoader]
for working with multiple `ResourceLoader` implementations in a map with URI schemes as keys.
There is also an implementation of the SPI for running apps locally. That link is provided below along with other SPI implementations.
== Implementations
This deployer SPI has been implemented for several runtime environments. Here are the github locations:
* https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-local[Local]
* https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-cloudfoundry[Cloud Foundry]
* https://github.com/spring-cloud/spring-cloud-deployer/blob/master/spring-cloud-deployer-kubernetes[Kubernetes]
=== Building
Clone the repo and type
----
$ ./mvnw clean install
----
## Contributing
We welcome contributions! See the link:./CONTRIBUTING.adoc[CONTRIBUTING] guide for details.
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Reporting a Vulnerability
If you think you have found a security vulnerability, please **DO NOT** disclose it publicly until we’ve had a chance to fix it.
Please don’t report security vulnerabilities using GitHub issues, instead head over to https://spring.io/security-policy and learn how to disclose them responsibly.
================================================
FILE: mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
#
# Look for the Apple JDKs first to preserve the existing behaviour, and then look
# for the new JDKs provided by Oracle.
#
if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then
#
# Apple JDKs
#
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
fi
if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then
#
# Apple JDKs
#
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
fi
if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then
#
# Oracle JDKs
#
export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
fi
if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then
#
# Apple JDKs
#
export JAVA_HOME=`/usr/libexec/java_home`
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
if [ -z "$M2_HOME" ] ; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
saveddir=`pwd`
M2_HOME=`dirname "$PRG"`/..
# make it fully qualified
M2_HOME=`cd "$M2_HOME" && pwd`
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --unix "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Migwn, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
# TODO classpath?
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="`which javac`"
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=`which readlink`
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
if $darwin ; then
javaHome="`dirname \"$javaExecutable\"`"
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
else
javaExecutable="`readlink -f \"$javaExecutable\"`"
fi
javaHome="`dirname \"$javaExecutable\"`"
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="`which java`"
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --path --windows "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
fi
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
local basedir=$(pwd)
local wdir=$(pwd)
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
wdir=$(cd "$wdir/.."; pwd)
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' < "$1")"
fi
}
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)}
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} "$@"
================================================
FILE: mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
set MAVEN_CMD_LINE_ARGS=%*
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar""
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%
================================================
FILE: pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-cloud-deployer-parent</artifactId>
<version>3.0.0-SNAPSHOT</version>
<groupId>org.springframework.cloud</groupId>
<packaging>pom</packaging>
<name>Spring Cloud Deployer</name>
<description>Spring Cloud Deployer</description>
<organization>
<name>Pivotal Software, Inc.</name>
<url>https://www.spring.io</url>
</organization>
<url>https://github.com/spring-cloud/spring-cloud-deployer</url>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0</url>
<comments>
Copyright 2014-2021 the original author or authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
</comments>
</license>
</licenses>
<scm>
<url>https://github.com/spring-cloud/spring-cloud-deployer</url>
<connection>scm:git:git://github.com/spring-cloud/spring-cloud-deployer.git</connection>
<developerConnection>scm:git:ssh://git@github.com/spring-cloud/spring-cloud-deployer.git</developerConnection>
<tag>HEAD</tag>
</scm>
<developers>
<developer>
<id>scdf-team</id>
<name>Data Flow Team</name>
<organizationUrl>https://github.com/spring-cloud/spring-cloud-deployer/graphs/contributors</organizationUrl>
</developer>
</developers>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>17</java.version>
<!-- ==================== -->
<!-- Dependency Versions -->
<!-- ==================== -->
<spring-boot.version>3.4.5</spring-boot.version>
<commons-compress.version>1.26.2</commons-compress.version>
<commons-io.version>2.16.1</commons-io.version>
<!-- Kubernetes Deployer -->
<kubernetes-fabric8-client.version>6.13.5</kubernetes-fabric8-client.version>
<hashids.version>1.0.1</hashids.version>
<!-- Cloudfoundry Deployer -->
<!-- @TODO boot3 updates need for jakarta ee -->
<cloudfoundry-java-lib.version>5.12.1.RELEASE</cloudfoundry-java-lib.version>
<pivotal-cf-client-reactor.version>2.2.0.RELEASE</pivotal-cf-client-reactor.version>
<!-- ==================== -->
<!-- Plugin Versions -->
<!-- ==================== -->
<!-- @TODO boot3 waiting for 4.x to support jakarta ee -->
<maven.version>3.9.6</maven.version>
<!-- @TODO boot3 waiting for 4.x to support jakarta ee -->
<maven-resolver.version>1.9.18</maven-resolver.version>
<maven-wagon.version>3.5.3</maven-wagon.version>
</properties>
<modules>
<module>spring-cloud-deployer-spi</module>
<module>spring-cloud-deployer-resource-docker</module>
<module>spring-cloud-deployer-resource-maven</module>
<module>spring-cloud-deployer-spi-test</module>
<module>spring-cloud-deployer-resource-support</module>
<module>spring-cloud-deployer-spi-test-app</module>
<module>spring-cloud-deployer-spi-scheduler-test-app</module>
<module>spring-cloud-deployer-autoconfigure</module>
<module>spring-cloud-deployer-dependencies</module>
<module>spring-cloud-deployer-local</module>
<module>spring-cloud-deployer-kubernetes</module>
<module>spring-cloud-deployer-cloudfoundry</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client-bom</artifactId>
<version>${kubernetes-fabric8-client.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>${commons-compress.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-dependencies</artifactId>
<version>${project.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-http</artifactId>
<version>${maven-wagon.version}</version>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-client-reactor</artifactId>
<version>${cloudfoundry-java-lib.version}</version>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-operations</artifactId>
<version>${cloudfoundry-java-lib.version}</version>
</dependency>
<dependency>
<groupId>io.pivotal</groupId>
<artifactId>pivotal-cloudfoundry-client-reactor</artifactId>
<version>${pivotal-cf-client-reactor.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<profiles>
<profile>
<id>spring</id>
<activation><activeByDefault>true</activeByDefault></activation>
<repositories>
<repository>
<id>maven-central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/libs-snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/libs-snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>coverage</id>
<activation>
<property>
<name>env.TRAVIS</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.2.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<id>javadoc</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>source</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
================================================
FILE: spring-cloud-deployer-autoconfigure/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-cloud-deployer-autoconfigure</artifactId>
<packaging>jar</packaging>
<name>Spring Cloud Deployer Autoconfigure</name>
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-parent</artifactId>
<version>3.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-resource-maven</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-resource-support</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>META-INF/spring.factories</include>
<include>META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports</include>
</includes>
</resource>
</resources>
</build>
</project>
================================================
FILE: spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/DelegatingResourceLoaderBuilder.java
================================================
/*
* Copyright 2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.autoconfigure;
import java.util.HashMap;
import java.util.Map;
import org.springframework.cloud.deployer.resource.support.DelegatingResourceLoader;
import org.springframework.core.io.ResourceLoader;
/**
* Builder implementation for a {@link DelegatingResourceLoader} which allows to
* register resource loaders with schemes before actual instance of a
* {@link DelegatingResourceLoader} is created.
*
* @author Janne Valkealahti
*
*/
public class DelegatingResourceLoaderBuilder {
private final Map<String, ResourceLoader> loaders = new HashMap<>();
/**
* Register a map of resource loaders.
*
* @param loaders the resource loaders to register
* @return builder instance for chaining
*/
public DelegatingResourceLoaderBuilder loaders(Map<String, ResourceLoader> loaders) {
this.loaders.putAll(loaders);
return this;
}
/**
* register a loader with a scheme.
*
* @param scheme the scheme
* @param loader the resource loader
* @return builder instance for chaining
*/
public DelegatingResourceLoaderBuilder loader(String scheme, ResourceLoader loader) {
this.loaders.put(scheme, loader);
return this;
}
/**
* Builds a {@link DelegatingResourceLoader}.
*
* @return the built delegating resource loader
*/
public DelegatingResourceLoader build() {
return new DelegatingResourceLoader(this.loaders);
}
}
================================================
FILE: spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/DelegatingResourceLoaderBuilderCustomizer.java
================================================
/*
* Copyright 2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.autoconfigure;
import org.springframework.cloud.deployer.resource.support.DelegatingResourceLoader;
/**
* Callback interface that can be used to customize resource loaders for a
* {@link DelegatingResourceLoader}.
*
* @author Janne Valkealahti
*
*/
@FunctionalInterface
public interface DelegatingResourceLoaderBuilderCustomizer {
/**
* Callback to customize a {@link DelegatingResourceLoaderBuilder} instance.
*
* @param builder the loader builder
*/
void customize(DelegatingResourceLoaderBuilder builder);
}
================================================
FILE: spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/MavenConfigurationProperties.java
================================================
/*
* Copyright 2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.autoconfigure;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.deployer.resource.maven.MavenProperties;
/**
* Configuration properties for a {@link MavenProperties}.
*
* @author Janne Valkealahti
*
*/
@ConfigurationProperties(prefix = "maven")
public class MavenConfigurationProperties extends MavenProperties {
}
================================================
FILE: spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/ResourceLoadingAutoConfiguration.java
================================================
/*
* Copyright 2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.autoconfigure;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.deployer.resource.maven.MavenProperties;
import org.springframework.cloud.deployer.resource.maven.MavenResourceLoader;
import org.springframework.cloud.deployer.resource.support.DelegatingResourceLoader;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.core.io.ResourceLoader;
/**
* Autoconfiguration of a file or Maven based {@link ResourceLoader}.
*
* @author Michael Minella
* @author Janne Valkealahti
*/
@Configuration
public class ResourceLoadingAutoConfiguration {
@Configuration
@ConditionalOnClass(MavenResourceLoader.class)
@EnableConfigurationProperties(MavenConfigurationProperties.class)
public static class MavenResourceLoaderConfig {
@Bean
@Order(0)
public DelegatingResourceLoaderBuilderCustomizer mavenDelegatingResourceLoaderBuilderCustomizer(MavenProperties mavenProperties) {
return customizer -> customizer.loader("maven", new MavenResourceLoader(mavenProperties));
}
}
@Configuration
@ConditionalOnMissingBean(DelegatingResourceLoader.class)
public static class DelegatingResourceLoaderConfig {
private final ObjectProvider<DelegatingResourceLoaderBuilderCustomizer> loaderBuilderCustomizers;
public DelegatingResourceLoaderConfig(
ObjectProvider<DelegatingResourceLoaderBuilderCustomizer> loaderBuilderCustomizers) {
this.loaderBuilderCustomizers = loaderBuilderCustomizers;
}
@Bean
public DelegatingResourceLoader delegatingResourceLoader() {
DelegatingResourceLoaderBuilder builder = new DelegatingResourceLoaderBuilder();
this.loaderBuilderCustomizers.orderedStream().forEach(customizer -> customizer.customize(builder));
return builder.build();
}
}
}
================================================
FILE: spring-cloud-deployer-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
================================================
org.springframework.cloud.deployer.autoconfigure.ResourceLoadingAutoConfiguration
================================================
FILE: spring-cloud-deployer-autoconfigure/src/main/resources/META-INF/spring.factories
================================================
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.cloud.deployer.autoconfigure.ResourceLoadingAutoConfiguration
================================================
FILE: spring-cloud-deployer-autoconfigure/src/test/java/org/springframework/cloud/deployer/autoconfigure/ResourceLoadingAutoConfigurationTests.java
================================================
/*
* Copyright 2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.autoconfigure;
import org.assertj.core.api.Condition;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.cloud.deployer.resource.maven.MavenProperties;
import org.springframework.cloud.deployer.resource.support.DelegatingResourceLoader;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests for {@link ResourceLoadingAutoConfiguration}.
*
* @author Janne Valkealahti
*
*/
public class ResourceLoadingAutoConfigurationTests {
private final static ResourceLoader mockResourceLoader = new ResourceLoader() {
@Override
public Resource getResource(String location) {
return null;
}
@Override
public ClassLoader getClassLoader() {
return null;
}
};
private final static Condition<DelegatingResourceLoader> mavenCondition = new Condition<>(
l -> l.getLoaders().containsKey("maven"), "maven loader");
private final static Condition<DelegatingResourceLoader> mavenReplacedCondition = new Condition<>(
l -> l.getLoaders().get("maven").equals(mockResourceLoader), "maven loader replaced");
private final static Condition<DelegatingResourceLoader> foobarCondition = new Condition<>(
l -> l.getLoaders().containsKey("foobar"), "foobar mock loader");
private final static Condition<MavenProperties> offlineCondition = new Condition<>(
p -> p.isOffline(), "offline");
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(ResourceLoadingAutoConfiguration.class));
@Test
public void testAutoConfigNoProperties() {
this.contextRunner
.run((context) -> {
assertThat(context).hasSingleBean(DelegatingResourceLoader.class);
assertThat(context).getBean(DelegatingResourceLoader.class).has(mavenCondition);
});
}
@Test
public void testMavenProperties() {
this.contextRunner
.withPropertyValues("maven.offline=true")
.run((context) ->
assertThat(context).getBean(MavenProperties.class).has(offlineCondition));
}
@Test
public void testBuilderRegistration() {
this.contextRunner
.withUserConfiguration(CustomBuilderCustomizerConfig.class)
.run((context) ->
assertThat(context).getBean(DelegatingResourceLoader.class).has(foobarCondition));
}
@Test
public void testBuilderOrderRegistration() {
this.contextRunner
.withUserConfiguration(MavenReplacingBuilderCustomizerConfig.class)
.run((context) ->
assertThat(context).getBean(DelegatingResourceLoader.class).has(mavenReplacedCondition));
}
@Configuration
static class CustomBuilderCustomizerConfig {
@Bean
public DelegatingResourceLoaderBuilderCustomizer foobarDelegatingResourceLoaderBuilderCustomizer() {
return customizer -> customizer.loader("foobar", mockResourceLoader);
}
}
@Configuration
static class MavenReplacingBuilderCustomizerConfig {
@Bean
@Order(Ordered.LOWEST_PRECEDENCE)
public DelegatingResourceLoaderBuilderCustomizer foobarDelegatingResourceLoaderBuilderCustomizer() {
return customizer -> customizer.loader("maven", mockResourceLoader);
}
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/README.adoc
================================================
= Spring Cloud Deployer for Cloud Foundry
This project provides a common means to deploy applications to Cloud Foundry based on the Spring Cloud Deployer SPI.
== Building
Clone the repo and type
----
$ ./mvnw clean install
----
The project includes a set of integration tests that can be run against a Cloud Foundry installation, provided that
connection information is correctly set. If credentials are not set correctly, those tests will be silently skipped.
Below is a short list of common Spring Boot `@ConfigurationProperties` (in environment variable format) that you will
need to set in order to deploy applications to Cloud Foundry:
----
# url of the CF API (used when using cf login -a for example)
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_URL
# name of the space into which modules will be deployed
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SPACE
# name of the organization that owns the space above
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_ORG
# the root domain to use when mapping routes
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_DOMAIN
# Comma separated set of service instance names to bind to the deployed app
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SERVICES
# username and password of the user to use to create apps
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_USERNAME
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_PASSWORD
# the identity provider to be used when accessing the Cloud Foundry API (optional)
# the passed string has to be a URL-Encoded JSON Object, containing the field origin with value as origin_key of an identity provider.
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_LOGIN_HINT
# whether to allow self-signed certificates during SSL validation
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SKIP_SSL_VALIDATION
----
Refer to `CloudFoundryDeploymentProperties.java` and `CloudFoundryConnectionProperties.java` for a complete listing.
== Services, Disk and Memory Settings for Applications
The deployer also supports setting the properties `spring.cloud.deployer.cloudfoundry.services`,
`spring.cloud.deployer.cloudfoundry.memory`, and `spring.cloud.deployer.cloudfoundry.disk` as part of an individual
deployment request.
== Application Name Settings and Deployments
To help avoid clashes with routes across spaces on Cloud Foundry, a naming strategy to provide a random prefix to a
deployed application is available and is enabled by default. There are two configuration properties,
`enableRandomAppNamePrefix` and `appNamePrefix`. The `appNamePrefix` property defaults to `spring.application.name`
if present, otherwise defaults to an empty string.
An application can have four possible "name" combinations. For instance, the `time` application can have name
combinations as shown in the table below. The name of the deployed application is defined via deployer's high level API,
in this case it is 'time'.
.Application Name
|===
|appNamePrefix | enableRandomAppNamePrefix | application name
|server
|true
|server-u7r9fhm-time
|<empty string>
|true
|u7r9fhm-time
|server
|false
|server-time
|<emtpy string>
|false
|time
|===
== Disable Push Task Applications
If an application does not exist when the `TaskLauncher` `launch` method is invoked, the TaskLauncher by default pushes a task application using the `AppDeploymentRequest` `resource` property.
The default behavior is disabled by setting `spring.cloud.deployer.cloudfoundry.push-task-apps-enabled` to `false`.
In this case, the application must have already been pushed to CloudFoundry via an external process and the TaskLauncher simply starts it, providing any command line arguments defined in the deployment request.
This is useful in cases in which the Cloud Foundry foundation is isolated from external code repositories.
== Set Additional Environment Variables
By default, the deployer adds global and application configuration properties to a single `SPRING_APPLICATION_JSON` environment variable entry in the application manifest.
You can configure additional top-level environment variables in the manifest by setting `spring.cloud.deployer.cloudfoundry.env.<key>=<value>`.
This is useful for adding https://github.com/cloudfoundry/java-buildpack[Java build pack configuration properties] to the application manifest since the Java build pack does not recognize `SPRING_APPLICATION_JSON`.
================================================
FILE: spring-cloud-deployer-cloudfoundry/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-cloud-deployer-cloudfoundry</artifactId>
<version>3.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Spring Cloud Deployer CloudFoundry</name>
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-parent</artifactId>
<version>3.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-spi</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-loader-classic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-client-reactor</artifactId>
<!-- @TODO boot3 remove when updated -->
<exclusions>
<exclusion>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-operations</artifactId>
</dependency>
<dependency>
<groupId>io.pivotal</groupId>
<artifactId>pivotal-cloudfoundry-client-reactor</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
<dependency>
<groupId>io.projectreactor.addons</groupId>
<artifactId>reactor-extra</artifactId>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-spi-test</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-resource-docker</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-resource-support</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-autoconfigure</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>spring</id>
<activation><activeByDefault>true</activeByDefault></activation>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>maven-central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>maven-central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</project>
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/AbstractCloudFoundryDeployer.java
================================================
/*
* Copyright 2016-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.time.Duration;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.cloudfoundry.AbstractCloudFoundryException;
import org.cloudfoundry.UnknownCloudFoundryException;
import org.cloudfoundry.operations.services.BindServiceInstanceRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import reactor.core.Exceptions;
import reactor.core.publisher.Mono;
import reactor.retry.Retry;
import org.springframework.cloud.deployer.spi.app.AppDeployer;
import org.springframework.cloud.deployer.spi.app.AppScaleRequest;
import org.springframework.cloud.deployer.spi.core.AppDeploymentRequest;
import org.springframework.cloud.deployer.spi.core.RuntimeEnvironmentInfo;
import org.springframework.cloud.deployer.spi.util.ByteSizeUtils;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpStatus;
import org.springframework.util.FileSystemUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
/**
* Base class dealing with configuration overrides on a per-deployment basis, as well as common code for apps and tasks.
*
* @author Eric Bottard
* @author Ilayaperumal Gopinathan
* @author David Turanski
*/
class AbstractCloudFoundryDeployer {
protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
protected final RuntimeEnvironmentInfo runtimeEnvironmentInfo;
final CloudFoundryDeploymentProperties deploymentProperties;
private final Logger logger = LoggerFactory.getLogger(AbstractCloudFoundryDeployer.class);
AbstractCloudFoundryDeployer(CloudFoundryDeploymentProperties deploymentProperties, RuntimeEnvironmentInfo runtimeEnvironmentInfo) {
this.deploymentProperties = deploymentProperties;
this.runtimeEnvironmentInfo = runtimeEnvironmentInfo;
}
int memory(AppDeploymentRequest request) {
String withUnit = request.getDeploymentProperties()
.getOrDefault(AppDeployer.MEMORY_PROPERTY_KEY, this.deploymentProperties.getMemory());
return (int) ByteSizeUtils.parseToMebibytes(withUnit);
}
int memory(AppScaleRequest request) {
if (request.getProperties().isPresent() && request.getProperties().get() != null) {
return (int) ByteSizeUtils.parseToMebibytes(request.getProperties().get().getOrDefault(AppDeployer.MEMORY_PROPERTY_KEY,
this.deploymentProperties.getMemory()));
}
return (int) ByteSizeUtils.parseToMebibytes(this.deploymentProperties.getMemory());
}
int diskQuota(AppScaleRequest request) {
if (request.getProperties().isPresent() && request.getProperties().get() != null) {
return (int) ByteSizeUtils.parseToMebibytes(request.getProperties().get().getOrDefault(AppDeployer.DISK_PROPERTY_KEY,
this.deploymentProperties.getDisk()));
}
return (int) ByteSizeUtils.parseToMebibytes(this.deploymentProperties.getDisk());
}
Set<String> servicesToBind(AppDeploymentRequest request) {
Set<String> services = this.deploymentProperties.getServices().stream().filter(s->!ServiceParser
.getServiceParameters(s).isPresent())
.collect(Collectors.toSet());
Set<String> requestServices = ServiceParser.splitServiceProperties(request.getDeploymentProperties().get
(CloudFoundryDeploymentProperties.SERVICES_PROPERTY_KEY))
.stream()
.filter(s-> !ServiceParser.getServiceParameters(s).isPresent())
.collect(Collectors.toSet());
services.addAll(requestServices);
return services;
}
boolean includesServiceParameters(AppDeploymentRequest request) {
return this.deploymentProperties.getServices().stream()
.anyMatch(s -> ServiceParser.getServiceParameters(s).isPresent())
|| ServiceParser
.splitServiceProperties(request.getDeploymentProperties()
.get(CloudFoundryDeploymentProperties.SERVICES_PROPERTY_KEY))
.stream().anyMatch(s -> ServiceParser.getServiceParameters(s).isPresent());
}
Stream<BindServiceInstanceRequest> bindParameterizedServiceInstanceRequests(AppDeploymentRequest request,
String deploymentId) {
return ServiceParser.splitServiceProperties(request.getDeploymentProperties().get
(CloudFoundryDeploymentProperties.SERVICES_PROPERTY_KEY)).stream()
.filter(s-> ServiceParser.getServiceParameters(s).isPresent())
.map(s->
BindServiceInstanceRequest.builder()
.applicationName(deploymentId)
.serviceInstanceName(ServiceParser.getServiceInstanceName(s))
.parameters(ServiceParser.getServiceParameters(s).get())
.build()
);
}
int diskQuota(AppDeploymentRequest request) {
String withUnit = request.getDeploymentProperties()
.getOrDefault(AppDeployer.DISK_PROPERTY_KEY, this.deploymentProperties.getDisk());
return (int) ByteSizeUtils.parseToMebibytes(withUnit);
}
Set<String> buildpacks(AppDeploymentRequest request) {
// TODO: When 'buildpack' setting gets removed due to deprecation,
// change this logic not ot fallback to it if 'buildpacks'
// is used.
String buidpacksValue = request.getDeploymentProperties()
.get(CloudFoundryDeploymentProperties.BUILDPACKS_PROPERTY_KEY);
String buidpackValue = request.getDeploymentProperties()
.get(CloudFoundryDeploymentProperties.BUILDPACK_PROPERTY_KEY);
if (buidpacksValue != null) {
return StringUtils.commaDelimitedListToSet(buidpacksValue);
}
else if (buidpackValue != null) {
return new HashSet<>(Arrays.asList(buidpackValue));
}
else if (!ObjectUtils.isEmpty((this.deploymentProperties.getBuildpacks()))) {
return this.deploymentProperties.getBuildpacks();
}
else {
return new HashSet<>(Arrays.asList(this.deploymentProperties.getBuildpack()));
}
}
String javaOpts(AppDeploymentRequest request) {
return Optional
.ofNullable(
request.getDeploymentProperties().get(CloudFoundryDeploymentProperties.JAVA_OPTS_PROPERTY_KEY))
.orElse(this.deploymentProperties.getJavaOpts());
}
Predicate<Throwable> isNotFoundError() {
return t -> t instanceof AbstractCloudFoundryException && ((AbstractCloudFoundryException) t).getStatusCode() == HttpStatus.NOT_FOUND.value();
}
/**
* Return a Docker image identifier if the application Resource is for a Docker image, or {@literal null} otherwise.
*
* @see #getApplication(AppDeploymentRequest)
*/
String getDockerImage(AppDeploymentRequest request) {
try {
String uri = request.getResource().getURI().toString();
if (uri.startsWith("docker:")) {
return uri.substring("docker:".length());
} else {
return null;
}
} catch (IOException e) {
throw Exceptions.propagate(e);
}
}
/**
* Return a Path to the application Resource or {@literal null} if the request is for a Docker image.
*
* @see #getDockerImage(AppDeploymentRequest)
*/
Path getApplication(AppDeploymentRequest request) {
try {
logger.info(
"Preparing to push an application from {}" +
". This may take some time if the artifact must be downloaded from a remote host.",
request.getResource());
if (!request.getResource().getURI().toString().startsWith("docker:")) {
return request.getResource().getFile().toPath();
} else {
return null;
}
} catch (IOException e) {
throw Exceptions.propagate(e);
}
}
/**
* Return a function usable in {@literal doOnError} constructs that will unwrap unrecognized Cloud Foundry Exceptions
* and log the text payload.
*/
protected Consumer<Throwable> logError(String msg) {
return e -> {
if (e instanceof UnknownCloudFoundryException) {
logger.error(msg + "\nUnknownCloudFoundryException encountered, whose payload follows:\n" + ((UnknownCloudFoundryException)e).getPayload(), e);
} else {
logger.error(msg, e);
}
};
}
/**
* To be used in order to retry the status operation for an application or task.
* @param id The application id or the task id
* @param <T> The type of status object being queried for, usually AppStatus or TaskStatus
* @return The function that executes the retry logic around for determining App or Task Status
*/
<T> Function<Mono<T>, Mono<T>> statusRetry(String id) {
long statusTimeout = this.deploymentProperties.getStatusTimeout();
long requestTimeout = Math.round(statusTimeout * 0.40); // wait 500ms with default status timeout of 2000ms
long initialRetryDelay = Math.round(statusTimeout * 0.10); // wait 200ms with status timeout of 2000ms
if (requestTimeout < 500L) {
logger.info("Computed statusRetry Request timeout = {} ms is below 500ms minimum value. Setting to 500ms", requestTimeout);
requestTimeout = 500L;
}
final long requestTimeoutToUse = requestTimeout;
return m -> m.timeout(Duration.ofMillis(requestTimeoutToUse))
.doOnError(e -> {
// show real exception if it wasn't timeout
if (e instanceof TimeoutException) {
logger.warn("Error getting status for {} within {}ms, Retrying operation.", id, requestTimeoutToUse);
}
else if (e instanceof UnknownCloudFoundryException) {
logger.warn("Received UnknownCloudFoundryException from cf with payload={}",
((UnknownCloudFoundryException) e).getPayload());
}
else {
logger.warn("Received error from cf", e);
}
})
// let all other than timeout exception to propagate back to caller
.retryWhen(reactor.util.retry.Retry.withThrowable(Retry.onlyIf(c -> {
logger.debug("RetryContext for id {} iteration {} backoff {}", id, c.iteration(), c.backoff());
if (c.iteration() > 5) {
logger.info("Stopping retry for id {} after {} iterations", id, c.iteration());
return false;
}
if (c.exception().getClass().getName().contains("org.cloudfoundry.client")) {
// most likely real error which is not worth to retry
return false;
}
// might be some netty error for not connected client, etc, retry
return true;
})
.exponentialBackoff(Duration.ofMillis(initialRetryDelay), Duration.ofMillis(statusTimeout))
.doOnRetry(c -> logger.debug("Retrying cf call for {}", id))))
.doOnError(TimeoutException.class, e -> {
logger.error("Retry operation on getStatus failed for {}. Max retry time {}ms", id, statusTimeout);
});
}
/**
* Always delete downloaded files for static http resources. Conditionally delete maven resources.
* @param appDeploymentRequest
*/
protected void deleteLocalApplicationResourceFile(AppDeploymentRequest appDeploymentRequest) {
try {
Optional<File> fileToDelete = fileToDelete(appDeploymentRequest.getResource());
if (fileToDelete.isPresent()) {
File applicationFile = fileToDelete.get();
logger.info("Free Disk Space = {} bytes, Total Disk Space = {} bytes",
applicationFile.getFreeSpace(),
applicationFile.getTotalSpace());
boolean deleted = deleteFileOrDirectory(applicationFile);
logger.info((deleted) ? "Successfully deleted the application resource: " + applicationFile.getCanonicalPath() :
"Could not delete the application resource: " + applicationFile.getCanonicalPath());
}
} catch(IOException e){
logger.warn("Exception deleting the application resource after successful CF push request."
+ " This could cause increase in disk space usage. Exception message: " + e.getMessage());
}
}
/*
* Always delete files downloaded from http/s url.
* Delete maven resources if property is set.
*/
private Optional<File> fileToDelete(Resource resource) throws IOException {
String scheme = resource.getURI().getScheme().toLowerCase(Locale.ROOT);
if (scheme.startsWith("http")) {
return Optional.of(resource.getFile());
}
if (scheme.equals("maven") && deploymentProperties.isAutoDeleteMavenArtifacts()) {
return Optional.of(resource.getFile().getParentFile());
}
return Optional.empty();
}
private boolean deleteFileOrDirectory(File fileToDelete) {
boolean deleted;
if (fileToDelete.isDirectory())
deleted = FileSystemUtils.deleteRecursively(fileToDelete);
else {
deleted = fileToDelete.delete();
}
return deleted;
}
/*
* Merge environment variables from global DeploymentProperties, application properties, and
* environment variables declared in ApplicationDeploymentRequest
*/
protected Map<String, String> mergeEnvironmentVariables(String deploymentId, AppDeploymentRequest request) {
Map<String, String> envVariables = new HashMap<>(deploymentProperties.getEnv());
envVariables.putAll(getApplicationProperties(deploymentId, request));
envVariables.putAll(getDeclaredEnvironmentVariables(request));
String javaOpts = javaOpts(request);
if (StringUtils.hasText(javaOpts)) {
envVariables.put("JAVA_OPTS", javaOpts(request));
}
if (hasCfEnv(request.getResource())) {
Map<String, String> env =
CfEnvConfigurer.disableJavaBuildPackAutoReconfiguration(envVariables);
//Only append to existing spring profiles active
env.putAll(CfEnvConfigurer.activateCloudProfile(env, null));
envVariables.putAll(env);
}
return envVariables;
}
private Map<? extends String,? extends String> getDeclaredEnvironmentVariables(AppDeploymentRequest request) {
Map<String, String> env = new LinkedHashMap<>();
request.getDeploymentProperties().entrySet().stream()
.filter(e -> e.getKey().startsWith(CloudFoundryDeploymentProperties.ENV_KEY + "."))
.forEach(e -> env.put(e.getKey().substring(CloudFoundryDeploymentProperties.ENV_KEY.length() + 1),
e.getValue()));
return env;
}
protected boolean hasCfEnv(Resource resource) {
if (resource instanceof CfEnvAwareResource) {
return ((CfEnvAwareResource)resource).hasCfEnv();
}
return CfEnvAwareResource.of(resource).hasCfEnv();
}
private Map<String, String> getApplicationProperties(String deploymentId, AppDeploymentRequest request) {
Map<String, String> applicationProperties = getSanitizedApplicationProperties(deploymentId, request);
if (!useSpringApplicationJson(request)) {
return applicationProperties;
}
try {
return Collections.singletonMap("SPRING_APPLICATION_JSON", OBJECT_MAPPER.writeValueAsString(applicationProperties));
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
private Map<String, String> getSanitizedApplicationProperties(String deploymentId, AppDeploymentRequest request) {
Map<String, String> applicationProperties = new HashMap<>(request.getDefinition().getProperties());
// Remove server.port as CF assigns a port for us, and we don't want to override that
Optional.ofNullable(applicationProperties.remove("server.port"))
.ifPresent(port -> logger.warn("Ignoring 'server.port={}' for app {}, as Cloud Foundry will assign a local dynamic port. Route to the app will use port 80.", port, deploymentId));
// Update active Spring Profiles given in application properties. Create a new entry with the given key if necessary
if (hasCfEnv(request.getResource())) {
applicationProperties = CfEnvConfigurer
.activateCloudProfile(applicationProperties, CfEnvConfigurer.SPRING_PROFILES_ACTIVE_FQN);
}
return applicationProperties;
}
private boolean useSpringApplicationJson(AppDeploymentRequest request) {
return Optional
.ofNullable(request.getDeploymentProperties()
.get(CloudFoundryDeploymentProperties.USE_SPRING_APPLICATION_JSON_KEY))
.map(Boolean::valueOf).orElse(this.deploymentProperties.isUseSpringApplicationJson());
}
public RuntimeEnvironmentInfo environmentInfo() {
return runtimeEnvironmentInfo;
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/AbstractCloudFoundryTaskLauncher.java
================================================
/*
* Copyright 2016-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
import io.jsonwebtoken.lang.Assert;
import org.cloudfoundry.client.CloudFoundryClient;
import org.cloudfoundry.client.v2.organizations.ListOrganizationsRequest;
import org.cloudfoundry.client.v2.spaces.ListSpacesRequest;
import org.cloudfoundry.client.v3.tasks.CancelTaskRequest;
import org.cloudfoundry.client.v3.tasks.CancelTaskResponse;
import org.cloudfoundry.client.v3.tasks.GetTaskRequest;
import org.cloudfoundry.client.v3.tasks.GetTaskResponse;
import org.cloudfoundry.client.v3.tasks.ListTasksRequest;
import org.cloudfoundry.client.v3.tasks.TaskState;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import reactor.core.publisher.Mono;
import reactor.util.function.Tuple2;
import org.springframework.cloud.deployer.spi.core.AppDeploymentRequest;
import org.springframework.cloud.deployer.spi.core.RuntimeEnvironmentInfo;
import org.springframework.cloud.deployer.spi.task.LaunchState;
import org.springframework.cloud.deployer.spi.task.TaskLauncher;
import org.springframework.cloud.deployer.spi.task.TaskStatus;
/**
* Abstract class to provide base functionality for launching Tasks on Cloud Foundry. This
* class provides the base SPI for the {@link CloudFoundryTaskLauncher}.
*
* Does not override the default no-op implementation for
* {@link TaskLauncher#cleanup(String)} and {@link TaskLauncher#destroy(String)}.
*/
abstract class AbstractCloudFoundryTaskLauncher extends AbstractCloudFoundryDeployer implements TaskLauncher {
private static final Logger logger = LoggerFactory.getLogger(AbstractCloudFoundryTaskLauncher.class);
private final CloudFoundryClient client;
private final Mono<String> organizationId;
private final Mono<String> spaceId;
AbstractCloudFoundryTaskLauncher(CloudFoundryClient client,
CloudFoundryDeploymentProperties deploymentProperties,
RuntimeEnvironmentInfo runtimeEnvironmentInfo) {
super(deploymentProperties, runtimeEnvironmentInfo);
this.client = client;
organizationId = organizationId();
spaceId = spaceId();
}
/**
* Setup a reactor flow to cancel a running task. This implementation opts to be
* asynchronous.
*
* @param id the task's id to be canceled as returned from the
* {@link TaskLauncher#launch(AppDeploymentRequest)}
*/
@Override
public void cancel(String id) {
requestCancelTask(id)
.timeout(Duration.ofSeconds(this.deploymentProperties.getApiTimeout()))
.doOnSuccess(r -> logger.info("Task {} cancellation successful", id))
.doOnError(logError(String.format("Task %s cancellation failed", id)))
.subscribe();
}
/**
* Lookup the current status based on task id.
*
* @param id taskId as returned from the {@link TaskLauncher#launch(AppDeploymentRequest)}
* @return the current task status
*/
@Override
public TaskStatus status(String id) {
try {
return getStatus(id)
.doOnSuccess(v -> logger.info("Successfully computed status [{}] for id={}", v, id))
.doOnError(logError(String.format("Failed to compute status for %s", id)))
.block(Duration.ofMillis(this.deploymentProperties.getStatusTimeout()));
}
catch (Exception timeoutDueToBlock) {
logger.error("Caught exception while querying for status of id={}", id, timeoutDueToBlock);
return createErrorTaskStatus(id);
}
}
@Override
public int getRunningTaskExecutionCount() {
Mono<Tuple2<String,String>> orgAndSpace = Mono.zip(organizationId, spaceId);
Mono<ListTasksRequest> listTasksRequest = orgAndSpace.map(tuple->
ListTasksRequest.builder()
.state(TaskState.RUNNING)
.organizationId(tuple.getT1())
.spaceId(tuple.getT2())
.build());
return listTasksRequest.flatMap(request-> this.client.tasks().list(request))
.map(listTasksResponse -> listTasksResponse.getPagination().getTotalResults())
.doOnError(logError("Failed to list running tasks"))
.doOnSuccess(count -> logger.info(String.format("There are %d running tasks", count)))
.block(Duration.ofMillis(this.deploymentProperties.getStatusTimeout()));
}
@Override
public int getMaximumConcurrentTasks() {
return this.deploymentProperties.getMaximumConcurrentTasks();
}
protected boolean maxConcurrentExecutionsReached() {
return this.getRunningTaskExecutionCount() >= this.getMaximumConcurrentTasks();
}
private Mono<TaskStatus> getStatus(String id) {
return requestGetTask(id)
.map(this::toTaskStatus)
.onErrorResume(isNotFoundError(), t -> {
logger.debug("Task for id={} does not exist", id);
return Mono.just(new TaskStatus(id, LaunchState.unknown, null));
})
.transform(statusRetry(id))
.onErrorReturn(createErrorTaskStatus(id));
}
private TaskStatus createErrorTaskStatus(String id) {
return new TaskStatus(id, LaunchState.error, null);
}
protected TaskStatus toTaskStatus(GetTaskResponse response) {
Map<String, String> attributes = new HashMap<>();
//retrieve CF-GUID for retrieving logs
Assert.notNull(response.getTaskRelationships(), "response must contain task relationships.");
Assert.notNull(response.getTaskRelationships().getApp(), "app in the taskRelationships of the response must not be null");
Assert.notNull(response.getTaskRelationships().getApp().getData(), "data in the app of the task relationships within the response must not be null");
attributes.put("app-cf-guid", response.getTaskRelationships().getApp().getData().getId());
switch (response.getState()) {
case SUCCEEDED:
return new TaskStatus(response.getId(), LaunchState.complete, attributes);
case RUNNING:
return new TaskStatus(response.getId(), LaunchState.running, attributes);
case PENDING:
return new TaskStatus(response.getId(), LaunchState.launching, attributes);
case CANCELING:
return new TaskStatus(response.getId(), LaunchState.cancelled, attributes);
case FAILED:
return new TaskStatus(response.getId(), LaunchState.failed, attributes);
default:
throw new IllegalStateException(String.format("Unsupported CF task state %s", response.getState()));
}
}
private Mono<CancelTaskResponse> requestCancelTask(String taskId) {
return this.client.tasks()
.cancel(CancelTaskRequest.builder()
.taskId(taskId)
.build());
}
private Mono<GetTaskResponse> requestGetTask(String taskId) {
return this.client.tasks()
.get(GetTaskRequest.builder()
.taskId(taskId)
.build());
}
private Mono<String> organizationId() {
String org = this.runtimeEnvironmentInfo.getPlatformSpecificInfo().get(CloudFoundryPlatformSpecificInfo.ORG);
Assert.hasText(org,"Missing runtimeEnvironmentInfo : 'org' required.");
ListOrganizationsRequest listOrganizationsRequest = ListOrganizationsRequest.builder()
.name(org).build();
return this.client.organizations().list(listOrganizationsRequest)
.doOnError(logError("Failed to list organizations"))
.map(listOrganizationsResponse -> listOrganizationsResponse.getResources().get(0).getMetadata().getId())
.cache(aValue -> Duration.ofMillis(Long.MAX_VALUE), aValue -> Duration.ZERO, () -> Duration.ZERO);
}
private Mono<String> spaceId() {
String space = this.runtimeEnvironmentInfo.getPlatformSpecificInfo().get(CloudFoundryPlatformSpecificInfo.SPACE);
Assert.hasText(space,"Missing runtimeEnvironmentInfo : 'space' required.");
ListSpacesRequest listSpacesRequest = ListSpacesRequest.builder()
.name(space).build();
return this.client.spaces().list(listSpacesRequest)
.doOnError(logError("Failed to list spaces"))
.map(listSpacesResponse -> listSpacesResponse.getResources().get(0).getMetadata().getId())
.cache(aValue -> Duration.ofMillis(Long.MAX_VALUE), aValue -> Duration.ZERO, () -> Duration.ZERO);
}
@Override
public void cleanup(String id) {
}
@Override
public void destroy(String appName) {
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/AppNameGenerator.java
================================================
/*
* Copyright 2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
/**
* Strategy interface for generating the names of deployed applications. *
*
* @author Soby Chacko
*/
public interface AppNameGenerator {
/**
* Generate an application name given a base name as the starting point.
*
* @param appName base application name
* @return the generated app name
*/
String generateAppName(String appName);
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/ApplicationLogAccessor.java
================================================
/*
* Copyright 2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import org.cloudfoundry.logcache.v1.Envelope;
import org.cloudfoundry.logcache.v1.Log;
import org.cloudfoundry.logcache.v1.LogCacheClient;
import org.cloudfoundry.logcache.v1.ReadRequest;
import org.cloudfoundry.logcache.v1.ReadResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
import reactor.core.publisher.Flux;
import java.time.Duration;
import java.util.List;
/**
* Provide api access to retrieve logs for applications.
*
* @author Glenn Renfro
* @author Chris Bono
*
* @since 2.9.3
*/
public class ApplicationLogAccessor {
private final static int MAX_LOG_LIMIT = 1000;
private final static Logger logger = LoggerFactory.getLogger(ApplicationLogAccessor.class);
private final LogCacheClient logCacheClient;
public ApplicationLogAccessor(LogCacheClient logCacheClient) {
Assert.notNull(logCacheClient, "logCacheClient must not be null");
this.logCacheClient = logCacheClient;
}
/**
* Retrieve logs for specified deployment id.
* @param deploymentId the deployment id of the application.
* @param apiTimeout specify duration of the timeout for the api.
* @return String containing the log information or empty string if no entries are available.
*/
public String getLog(String deploymentId, Duration apiTimeout) {
logger.debug("Retrieving log for deploymentId:{} with apiTimeout:{}", deploymentId, apiTimeout);
Assert.hasText(deploymentId, "id must have text and not null");
Assert.notNull(apiTimeout, "apiTimeout must not be null");
StringBuilder stringBuilder = new StringBuilder();
ReadRequest request = ReadRequest.builder().sourceId(deploymentId).limit(MAX_LOG_LIMIT).descending(true).build();
List<Log> logs = this.logCacheClient
.read(request)
.flatMapMany(this::responseToEnvelope)
.collectList()
.block(apiTimeout);
// if no log exists the result set is null.
if(logs == null) {
return "";
}
logs.forEach((log) -> {
stringBuilder.append(log.getPayloadAsText());
stringBuilder.append(System.lineSeparator());
});
String [] lines = stringBuilder.toString().split("\n");
StringBuilder stringBuilderReconstruct = new StringBuilder();
for(int i = lines.length -1 ; i >= 0 ; i--) {
stringBuilderReconstruct.append(lines[i]);
if ( i > 0 ) {
stringBuilderReconstruct.append("\n");
}
}
return stringBuilderReconstruct.toString();
}
private Flux<Log> responseToEnvelope(ReadResponse response) {
return Flux.fromIterable(response.getEnvelopes().getBatch())
.filter(envelope -> envelope.getLog() != null)
.map(Envelope::getLog);
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvAwareAppDeploymentRequest.java
================================================
/*
* Copyright 2020-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import org.springframework.cloud.deployer.spi.core.AppDeploymentRequest;
/**
* Copies an {@link AppDeploymentRequest} using a {@link CfEnvAwareResource}.
*
* @author David Turanski
* @since 2.4
*/
class CfEnvAwareAppDeploymentRequest extends AppDeploymentRequest {
static CfEnvAwareAppDeploymentRequest of(AppDeploymentRequest appDeploymentRequest) {
return new CfEnvAwareAppDeploymentRequest(appDeploymentRequest);
}
private CfEnvAwareAppDeploymentRequest(AppDeploymentRequest appDeploymentRequest) {
super(appDeploymentRequest.getDefinition(),
CfEnvAwareResource.of(appDeploymentRequest.getResource()),
appDeploymentRequest.getDeploymentProperties(),
appDeploymentRequest.getCommandlineArguments());
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvAwareResource.java
================================================
/*
* Copyright 2020-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.boot.loader.archive.JarFileArchive;
import org.springframework.core.io.Resource;
/**
* A {@link Resource} implementation that delegates to a resource and keeps the state of a CfEnv dependency
* as an {@link Optional} which may be empty, true, or false.
*
* @author David Turanski
* @since 2.4
*/
class CfEnvAwareResource implements Resource {
private final Resource resource;
private final boolean hasCfEnv;
static CfEnvAwareResource of(Resource resource) {
return new CfEnvAwareResource(resource);
}
private CfEnvAwareResource(Resource resource) {
this.resource = resource;
this.hasCfEnv = CfEnvResolver.hasCfEnv(this);
}
@Override
public boolean exists() {
return resource.exists();
}
@Override
public URL getURL() throws IOException {
return resource.getURL();
}
@Override
public URI getURI() throws IOException {
return resource.getURI();
}
@Override
public File getFile() throws IOException {
return resource.getFile();
}
@Override
public long contentLength() throws IOException {
return resource.contentLength();
}
@Override
public long lastModified() throws IOException {
return resource.lastModified();
}
@Override
public Resource createRelative(String s) throws IOException {
return resource.createRelative(s);
}
@Override
public String getFilename() {
return resource.getFilename();
}
@Override
public String getDescription() {
return resource.getDescription();
}
@Override
public InputStream getInputStream() throws IOException {
return resource.getInputStream();
}
boolean hasCfEnv() {
return this.hasCfEnv;
}
/**
* Inspect the {@link CfEnvAwareResource} to determine if it contains a dependency on <i>io.pivotal.cfenv.core.CfEnv</i>.
* Cache the result in the resource.
*/
static class CfEnvResolver {
private static Log logger = LogFactory.getLog(CfEnvResolver.class);
private static final String CF_ENV = "io.pivotal.cfenv.core.CfEnv";
static boolean hasCfEnv(CfEnvAwareResource app
) {
try {
String scheme = app.getURI().getScheme().toLowerCase(Locale.ROOT);
if (scheme.equals("docker")) {
return false;
}
}
catch (IOException e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
try {
JarFileArchive archive = new JarFileArchive(app.getFile());
List<URL> urls = new ArrayList<>();
archive.getNestedArchives(entry -> entry.getName().endsWith(".jar"), null).forEachRemaining(a -> {
try {
urls.add(a.getUrl());
}
catch (MalformedURLException e) {
logger.error("Unable to process nested archive " + e.getMessage());
}
});
URLClassLoader classLoader = new URLClassLoader(urls.toArray(new URL[urls.size()]), null);
try {
logger.info("Attempting to load class CFEnv");
Class.forName(CF_ENV, false, classLoader);
return true;
}
catch (UnsupportedClassVersionError err) {
logger.debug(app.getFilename() + " contains " + CF_ENV);
// class found but can't load it i.e. because it's newer class version
return true;
}
catch (ClassNotFoundException e) {
logger.debug(app.getFilename() + " doesn't contain " + CF_ENV);
return false;
}
}
catch (Exception e) {
logger.warn("Unable to determine dependencies for file " + app.getFilename());
}
return false;
}
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvConfigurer.java
================================================
/*
* Copyright 2020-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.util.StringUtils;
/**
* Provides methods to configure environment, application properties, and command line
* args if the deployed artifact uses java-cfenv.
*
* @author David Turanski
* @since 2.4
*/
class CfEnvConfigurer {
private static final Log log = LogFactory.getLog(CfEnvConfigurer.class);
static final String SPRING_PROFILES_ACTIVE = "SPRING_PROFILES_ACTIVE";
static final String SPRING_PROFILES_ACTIVE_FQN = "spring.profiles.active";
static final String SPRING_PROFILES_ACTIVE_HYPHENATED = "spring-profiles-active";
static final String CLOUD_PROFILE_NAME = "cloud";
static final String JBP_CONFIG_SPRING_AUTO_RECONFIGURATION = "JBP_CONFIG_SPRING_AUTO_RECONFIGURATION";
static final String ENABLED_FALSE = "{ enabled: false }";
/**
* Disable Java Buildpack Spring Auto-reconfiguration.
*
* @param environment a map containing environment variables
* @return an copy of the map setting the environment variable needed to disable
* auto-reconfiguration
*/
static Map<String, String> disableJavaBuildPackAutoReconfiguration(Map<String, String> environment) {
log.debug("Disabling 'JBP_CONFIG_SPRING_AUTO_RECONFIGURATION'");
Map<String, String> updatedEnvironment = new HashMap<>(environment);
updatedEnvironment.putIfAbsent(JBP_CONFIG_SPRING_AUTO_RECONFIGURATION, ENABLED_FALSE);
return updatedEnvironment;
}
/**
* Activate the <i>cloud</i> profile. Add to a key that binds to
* <i>spring.profiles.active</i> if one exists.
* @param environment a map containing environment variables or application properties
* @param keyToCreate create a new entry using a preferred key if none exists.
* @return the updated map
*/
static Map<String, String> activateCloudProfile(Map<String, String> environment, String keyToCreate) {
log.debug("Activating cloud profile");
Map<String, String> updatedEnvironment = new HashMap<>(environment);
if (appendToExistingEntry(updatedEnvironment, SPRING_PROFILES_ACTIVE, CLOUD_PROFILE_NAME)) {
return updatedEnvironment;
}
else if (appendToExistingEntry(updatedEnvironment, SPRING_PROFILES_ACTIVE_FQN, CLOUD_PROFILE_NAME)) {
return updatedEnvironment;
}
else if (appendToExistingEntry(updatedEnvironment, SPRING_PROFILES_ACTIVE_HYPHENATED, CLOUD_PROFILE_NAME)) {
return updatedEnvironment;
}
// If Key provided, create new spring profiles active entry.
if (StringUtils.hasText(keyToCreate)) {
updatedEnvironment.put(keyToCreate, CLOUD_PROFILE_NAME);
}
return updatedEnvironment;
}
/**
* Process a command line argument to append the <i>cloud</i> profile if it binds to
* <i>spring.profiles.active</i>.
*
* @param arg the current value
* @return the updated value
*/
static String appendCloudProfileToSpringProfilesActiveArg(String arg) {
if ((arg.contains(SPRING_PROFILES_ACTIVE_FQN) ||
arg.contains(SPRING_PROFILES_ACTIVE_HYPHENATED) ||
arg.contains(SPRING_PROFILES_ACTIVE)) && arg.contains("=")) {
String[] tokens = arg.split("=");
arg = String.join("=", tokens[0], appendToValueIfPresent(tokens[1], CLOUD_PROFILE_NAME));
}
return arg;
}
private static boolean appendToExistingEntry(Map<String, String> environment, String key, String value) {
if (environment.containsKey(key)) {
String current = environment.get(key);
environment.put(key, appendToValueIfPresent(current, value));
return true;
}
return false;
}
private static String appendToValueIfPresent(String current, String value) {
if (StringUtils.hasText(current)) {
if (!Stream.of(current.split(",")).filter(s -> s.trim().equals(value)).findFirst().isPresent()) {
return current.join(",", current, value);
}
return current;
}
return value;
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryActuatorTemplate.java
================================================
/*
* Copyright 2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.util.Optional;
import org.springframework.cloud.deployer.spi.app.AbstractActuatorTemplate;
import org.springframework.cloud.deployer.spi.app.AppAdmin;
import org.springframework.cloud.deployer.spi.app.AppDeployer;
import org.springframework.cloud.deployer.spi.app.AppInstanceStatus;
import org.springframework.http.HttpHeaders;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
/**
* Access the actuator endpoint for an app instance deployed to Cloud Foundry.
*
* @author David Turanski
*/
public class CloudFoundryActuatorTemplate extends AbstractActuatorTemplate {
public CloudFoundryActuatorTemplate(RestTemplate restTemplate, AppDeployer appDeployer, AppAdmin appAdmin) {
super(restTemplate, appDeployer, appAdmin);
}
@Override
protected String actuatorUrlForInstance(AppInstanceStatus appInstanceStatus) {
return UriComponentsBuilder.fromHttpUrl(appInstanceStatus.getAttributes().get("url"))
.path("/actuator").toUriString();
}
@Override
public Optional<HttpHeaders> httpHeadersForInstance(AppInstanceStatus appInstanceStatus) {
HttpHeaders headers = new HttpHeaders();
headers.add("X-Cf-App-Instance", String.format("%s:%d", appInstanceStatus.getAttributes()
.get(CloudFoundryAppInstanceStatus.CF_GUID),
Integer.valueOf(appInstanceStatus.getAttributes().get(CloudFoundryAppInstanceStatus.INDEX))));
return Optional.of(headers);
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppDeployer.java
================================================
/*
* Copyright 2016-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.time.Duration;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.cloudfoundry.client.v2.ClientV2Exception;
import org.cloudfoundry.operations.CloudFoundryOperations;
import org.cloudfoundry.operations.applications.ApplicationDetail;
import org.cloudfoundry.operations.applications.ApplicationHealthCheck;
import org.cloudfoundry.operations.applications.ApplicationManifest;
import org.cloudfoundry.operations.applications.ApplicationSummary;
import org.cloudfoundry.operations.applications.DeleteApplicationRequest;
import org.cloudfoundry.operations.applications.Docker;
import org.cloudfoundry.operations.applications.GetApplicationRequest;
import org.cloudfoundry.operations.applications.InstanceDetail;
import org.cloudfoundry.operations.applications.PushApplicationManifestRequest;
import org.cloudfoundry.operations.applications.Route;
import org.cloudfoundry.operations.applications.ScaleApplicationRequest;
import org.cloudfoundry.operations.applications.StartApplicationRequest;
import org.cloudfoundry.operations.services.BindServiceInstanceRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
import reactor.cache.CacheMono;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.core.publisher.Signal;
import reactor.util.retry.Retry;
import org.springframework.cloud.deployer.spi.app.AppDeployer;
import org.springframework.cloud.deployer.spi.app.AppScaleRequest;
import org.springframework.cloud.deployer.spi.app.AppStatus;
import org.springframework.cloud.deployer.spi.app.DeploymentState;
import org.springframework.cloud.deployer.spi.app.MultiStateAppDeployer;
import org.springframework.cloud.deployer.spi.core.AppDeploymentRequest;
import org.springframework.cloud.deployer.spi.core.RuntimeEnvironmentInfo;
import org.springframework.util.StringUtils;
/**
* A deployer that targets Cloud Foundry using the public API.
*
* @author Eric Bottard
* @author Greg Turnquist
* @author Ben Hale
* @author Ilayaperumal Gopinathan
* @author David Turanski
*/
public class CloudFoundryAppDeployer extends AbstractCloudFoundryDeployer implements MultiStateAppDeployer {
private static final Logger logger = LoggerFactory.getLogger(CloudFoundryAppDeployer.class);
private static final String CF_GUID_ID = "cf-guid";
private final AppNameGenerator applicationNameGenerator;
private final CloudFoundryOperations operations;
private final Cache<String, ApplicationDetail> cache = Caffeine.newBuilder().expireAfterWrite(5, TimeUnit.SECONDS)
.build();
private final ApplicationLogAccessor applicationLogAccessor;
public CloudFoundryAppDeployer(
AppNameGenerator applicationNameGenerator,
CloudFoundryDeploymentProperties deploymentProperties,
CloudFoundryOperations operations,
RuntimeEnvironmentInfo runtimeEnvironmentInfo,
ApplicationLogAccessor applicationLogAccessor
) {
super(deploymentProperties, runtimeEnvironmentInfo);
this.operations = operations;
this.applicationNameGenerator = applicationNameGenerator;
this.applicationLogAccessor = applicationLogAccessor;
}
@Override
public String deploy(AppDeploymentRequest appDeploymentRequest) {
final AppDeploymentRequest request = CfEnvAwareAppDeploymentRequest.of(appDeploymentRequest);
logger.trace("Entered deploy: Deploying AppDeploymentRequest: AppDefinition = {}, Resource = {}, Deployment Properties = {}",
request.getDefinition(), request.getResource(), request.getDeploymentProperties());
String deploymentId = deploymentId(request);
logger.trace("deploy: Getting Status for Deployment Id = {}", deploymentId);
getStatus(deploymentId)
.doOnNext(status -> assertApplicationDoesNotExist(deploymentId, status))
// Need to block here to be able to throw exception early
.block(Duration.ofSeconds(this.deploymentProperties.getApiTimeout()));
logger.trace("deploy: Pushing application");
pushApplication(deploymentId, request)
.timeout(Duration.ofSeconds(this.deploymentProperties.getApiTimeout()))
.doOnSuccess(item -> {
logger.info("Successfully deployed {}", deploymentId);
})
.doOnError(error -> {
if (isNotFoundError().test(error)) {
logger.warn("Unable to deploy application. It may have been destroyed before start completed: " + error.getMessage());
} else {
logError(String.format("Failed to deploy %s", deploymentId)).accept(error);
}
})
.doOnSuccess((c) -> {
deleteLocalApplicationResourceFile(request);
}).doOnError((c) -> {
deleteLocalApplicationResourceFile(request);
})
.subscribe();
logger.trace("Exiting deploy(). Deployment Id = {}", deploymentId);
return deploymentId;
}
@Override
public Map<String, DeploymentState> states(String... ids) {
return requestSummary()
.collect(Collectors.toMap(ApplicationSummary::getName, this::mapShallowAppState))
.block();
}
@Override
public Mono<Map<String, DeploymentState>> statesReactive(String... ids) {
return requestSummary()
.collect(Collectors.toMap(ApplicationSummary::getName, this::mapShallowAppState));
}
private DeploymentState mapShallowAppState(ApplicationSummary applicationSummary) {
if (applicationSummary.getRunningInstances().equals(applicationSummary.getInstances())) {
return DeploymentState.deployed;
} else if (applicationSummary.getInstances() > 0) {
return DeploymentState.partial;
} else {
return DeploymentState.undeployed;
}
}
@Override
protected Map<String, String> mergeEnvironmentVariables(String deploymentId, AppDeploymentRequest request) {
Map<String, String> envVariables = super.mergeEnvironmentVariables(deploymentId, request);
envVariables.putAll(getCommandLineArguments(request));
String group = request.getDeploymentProperties().get(AppDeployer.GROUP_PROPERTY_KEY);
if (StringUtils.hasText(group)) {
envVariables.put("SPRING_CLOUD_APPLICATION_GROUP", group);
}
envVariables.put("SPRING_CLOUD_APPLICATION_GUID", "${vcap.application.name}:${vcap.application.instance_index}");
envVariables.put("SPRING_APPLICATION_INDEX", "${vcap.application.instance_index}");
this.deploymentProperties.getAppAdmin().addCredentialsToAppEnvironment(envVariables);
return envVariables;
}
private Map<String, String> getCommandLineArguments(AppDeploymentRequest request) {
if (request.getCommandlineArguments().isEmpty()) {
return Collections.emptyMap();
}
String argumentsAsString = request.getCommandlineArguments().stream()
.collect(Collectors.joining(" "));
String yaml = new Yaml().dump(Collections.singletonMap("arguments", argumentsAsString));
return Collections.singletonMap("JBP_CONFIG_JAVA_MAIN", yaml);
}
@Override
public AppStatus status(String id) {
try {
return getStatus(id)
.doOnSuccess(v -> logger.info("Successfully computed status [{}] for {}", v, id))
.doOnError(logError(String.format("Failed to compute status for %s", id)))
.block(Duration.ofMillis(this.deploymentProperties.getStatusTimeout()));
} catch (Exception timeoutDueToBlock) {
logger.error("Caught exception while querying for status of {}", id, timeoutDueToBlock);
return createErrorAppStatus(id);
}
}
@Override
public Mono<AppStatus> statusReactive(String id) {
return getStatus(id);
}
@Override
public void undeploy(String id) {
getStatus(id)
.doOnNext(status -> assertApplicationExists(id, status))
// Need to block here to be able to throw exception early
.block(Duration.ofSeconds(this.deploymentProperties.getApiTimeout()));
requestDeleteApplication(id)
.timeout(Duration.ofSeconds(this.deploymentProperties.getApiTimeout()))
.doOnSuccess(v -> logger.info("Successfully undeployed app {}", id))
.doOnError(logError(String.format("Failed to undeploy app %s", id)))
.subscribe();
}
@Override
public String getLog(String id) {
AppStatus status = status(id);
String cfGuid = status.getInstances().values().stream()
.map((appInstanceStatus) -> appInstanceStatus.getAttributes().get(CF_GUID_ID))
.filter(Objects::nonNull)
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("Unable to find " + CF_GUID_ID));
return applicationLogAccessor.getLog(cfGuid, Duration.ofSeconds(this.deploymentProperties.getApiTimeout()));
}
@Override
public void scale(AppScaleRequest appScaleRequest) {
logger.info("Scaling the application instance using {}", appScaleRequest);
ScaleApplicationRequest scaleApplicationRequest = ScaleApplicationRequest.builder()
.name(appScaleRequest.getDeploymentId())
.instances(appScaleRequest.getCount())
.memoryLimit(memory(appScaleRequest))
.diskLimit(diskQuota(appScaleRequest))
.stagingTimeout(this.deploymentProperties.getStagingTimeout())
.startupTimeout(this.deploymentProperties.getStartupTimeout())
.build();
this.operations.applications().scale(scaleApplicationRequest)
.timeout(Duration.ofSeconds(this.deploymentProperties.getApiTimeout()))
.doOnSuccess(v -> logger.info("Scaled the application with deploymentId = {}",
appScaleRequest.getDeploymentId()))
.doOnError(e -> logger.error("Error: {} scaling the app instance {}", e.getMessage(),
appScaleRequest.getDeploymentId()))
.subscribe();
}
private void assertApplicationDoesNotExist(String deploymentId, AppStatus status) {
DeploymentState state = status.getState();
if (state != DeploymentState.unknown && state != DeploymentState.error) {
throw new IllegalStateException(String.format("App %s is already deployed with state %s", deploymentId, state));
}
}
private void assertApplicationExists(String deploymentId, AppStatus status) {
DeploymentState state = status.getState();
if (state == DeploymentState.unknown) {
throw new IllegalStateException(String.format("App %s is not in a deployed state", deploymentId));
}
}
private AppStatus createAppStatus(ApplicationDetail applicationDetail, String deploymentId) {
logger.trace("Gathering instances for " + applicationDetail);
logger.trace("InstanceDetails: " + applicationDetail.getInstanceDetails());
AppStatus.Builder builder = AppStatus.of(deploymentId);
int i = 0;
for (InstanceDetail instanceDetail : applicationDetail.getInstanceDetails()) {
builder.with(new CloudFoundryAppInstanceStatus(applicationDetail, instanceDetail, i++));
}
for (; i < applicationDetail.getInstances(); i++) {
builder.with(new CloudFoundryAppInstanceStatus(applicationDetail, null, i));
}
return builder.build();
}
private AppStatus createEmptyAppStatus(String deploymentId) {
return AppStatus.of(deploymentId)
.build();
}
private AppStatus createErrorAppStatus(String deploymentId) {
return AppStatus.of(deploymentId)
.generalState(DeploymentState.error)
.build();
}
private String deploymentId(AppDeploymentRequest request) {
String prefix = Optional.ofNullable(request.getDeploymentProperties().get(GROUP_PROPERTY_KEY))
.map(group -> String.format("%s-", group))
.orElse("");
String appName = String.format("%s%s", prefix, request.getDefinition().getName());
return this.applicationNameGenerator.generateAppName(appName);
}
private String domain(AppDeploymentRequest request) {
return Optional
.ofNullable(request.getDeploymentProperties().get(CloudFoundryDeploymentProperties.DOMAIN_PROPERTY))
.orElse(this.deploymentProperties.getDomain());
}
private Mono<AppStatus> getStatus(String deploymentId) {
return requestGetApplication(deploymentId)
.map(applicationDetail -> createAppStatus(applicationDetail, deploymentId))
.onErrorResume(IllegalArgumentException.class, t -> {
logger.debug("Application for {} does not exist.", deploymentId);
return Mono.just(createEmptyAppStatus(deploymentId));
})
.transform(statusRetry(deploymentId))
.onErrorReturn(createErrorAppStatus(deploymentId));
}
private ApplicationHealthCheck healthCheck(AppDeploymentRequest request) {
return Optional
.ofNullable(request.getDeploymentProperties()
.get(CloudFoundryDeploymentProperties.HEALTHCHECK_PROPERTY_KEY))
.map(this::toApplicationHealthCheck).orElse(this.deploymentProperties.getHealthCheck());
}
private String healthCheckEndpoint(AppDeploymentRequest request) {
return Optional
.ofNullable(request.getDeploymentProperties()
.get(CloudFoundryDeploymentProperties.HEALTHCHECK_HTTP_ENDPOINT_PROPERTY_KEY))
.orElse(this.deploymentProperties.getHealthCheckHttpEndpoint());
}
private Integer healthCheckTimeout(AppDeploymentRequest request) {
String timeoutString = request.getDeploymentProperties().getOrDefault(
CloudFoundryDeploymentProperties.HEALTHCHECK_TIMEOUT_PROPERTY_KEY,
this.deploymentProperties.getHealthCheckTimeout());
return Integer.parseInt(timeoutString);
}
private String host(AppDeploymentRequest request) {
return Optional
.ofNullable(request.getDeploymentProperties().get(CloudFoundryDeploymentProperties.HOST_PROPERTY))
.orElse(this.deploymentProperties.getHost());
}
private int instances(AppDeploymentRequest request) {
return Optional.ofNullable(request.getDeploymentProperties().get(AppDeployer.COUNT_PROPERTY_KEY))
.map(Integer::parseInt)
.orElse(this.deploymentProperties.getInstances());
}
private Mono<Void> pushApplication(String deploymentId, AppDeploymentRequest request) {
ApplicationManifest.Builder manifest = ApplicationManifest.builder()
.path(getApplication(request)) // Only one of the two is non-null
.disk(diskQuota(request))
.environmentVariables(mergeEnvironmentVariables(deploymentId, request))
.healthCheckType(healthCheck(request))
.healthCheckHttpEndpoint(healthCheckEndpoint(request))
.timeout(healthCheckTimeout(request))
.instances(instances(request))
.memory(memory(request))
.name(deploymentId)
.noRoute(toggleNoRoute(request))
.services(servicesToBind(request));
Optional.ofNullable(host(request)).ifPresent(manifest::host);
Optional.ofNullable(domain(request)).ifPresent(manifest::domain);
Optional.ofNullable(routePath(request)).ifPresent(manifest::routePath);
if (route(request) != null) {
manifest.route(Route.builder().route(route(request)).build());
}
if (!routes(request).isEmpty()) {
Set<Route> routes = routes(request).stream()
.map(r -> Route.builder().route(r).build())
.collect(Collectors.toSet());
manifest.routes(routes);
}
if (getDockerImage(request) != null) {
logger.info("Preparing to run a container from {}. This may take some time if the image must be downloaded from a remote container registry.", request.getResource());
manifest.docker(Docker.builder().image(getDockerImage(request)).build());
} else {
manifest.buildpacks(buildpacks(request));
}
if (!includesServiceParameters(request)) {
return pushApplicationWithNoServiceParameters(manifest.build(), deploymentId);
} else {
return pushApplicationWithServiceParameters(manifest.build(), request, deploymentId);
}
}
private Mono<Void> pushApplicationWithNoServiceParameters(ApplicationManifest manifest, String deploymentId) {
logger.debug("Pushing application manifest");
return requestPushApplication(PushApplicationManifestRequest.builder()
.manifest(manifest)
.stagingTimeout(this.deploymentProperties.getStagingTimeout())
.startupTimeout(this.deploymentProperties.getStartupTimeout())
.build())
.doOnSuccess(v -> logger.info("Done uploading bits for {}", deploymentId))
.doOnError(e -> logger.error("Error: {} creating app {}", e.getMessage(), deploymentId));
}
private Mono<Void> requestBind(BindServiceInstanceRequest bindRequest) {
// defer so that new reques gets created when retry does re-sub
return Mono.defer(() -> this.operations.services().bind(bindRequest))
.doOnError(e -> {
if (e instanceof ClientV2Exception) {
ClientV2Exception ce = (ClientV2Exception) e;
if (ce.getCode() == 10001) {
logger.warn("Retry service bind due to concurrency error");
} else {
logger.warn("Received ClientV2Exception error from cf", ce);
}
} else {
logger.warn("Received error from cf", e);
}
})
// check expected code indicating concurrency error, aka
// CF-ConcurrencyError(10001): The service broker could not perform this operation in parallel with other running operations
// and retry those and let other errors to pass and fail fast
.retryWhen(Retry.withThrowable(reactor.retry.Retry.onlyIf(c -> {
if (c.exception() instanceof ClientV2Exception) {
ClientV2Exception e = (ClientV2Exception) c.exception();
if (e.getCode() == 10001) {
return true;
}
}
return false;
})
// for now try 30 seconds and do some jitter to limit concurrency issues
.timeout(Duration.ofSeconds(30))
.randomBackoff(Duration.ofSeconds(1), Duration.ofSeconds(5))
.doOnRetry(c -> logger.debug("Retrying cf call for {}", bindRequest))
));
}
private Mono<Void> pushApplicationWithServiceParameters(
ApplicationManifest manifest,
AppDeploymentRequest request, String deploymentId
) {
logger.debug("Pushing application manifest with no start");
return requestPushApplication(PushApplicationManifestRequest.builder()
.manifest(manifest)
.noStart(true)
.build())
.doOnSuccess(v -> logger.info("Done uploading bits for {}", deploymentId))
.doOnError(e -> logger.error(String.format("Error creating app %s. Exception Message %s", deploymentId, e.getMessage())))
.thenMany(Flux.fromStream(bindParameterizedServiceInstanceRequests(request, deploymentId)))
.flatMap(bindRequest -> this.requestBind(bindRequest)
.doOnSuccess(bv -> logger.info("Done binding service {} for {}", bindRequest.getServiceInstanceName(), deploymentId))
.doOnError(e -> logger.error("Error: {} binding service {}", e.getMessage(), bindRequest.getServiceInstanceName())))
.then(this.operations.applications()
.start(StartApplicationRequest.builder()
.name(deploymentId)
.stagingTimeout(this.deploymentProperties.getStagingTimeout())
.startupTimeout(this.deploymentProperties.getStartupTimeout())
.build())
.doOnSuccess(sv -> logger.info("Started app for {} ", deploymentId))
.doOnError(e -> logger.error("Error: {} starting app for {}.", e.getMessage(), deploymentId)))
.doOnError(e -> logger.error(String.format("Error: %s creating app %s", e.getMessage(), deploymentId), e));
}
private Mono<Void> requestDeleteApplication(String id) {
return this.operations.applications()
.delete(DeleteApplicationRequest.builder()
.deleteRoutes(deploymentProperties.isDeleteRoutes())
.name(id)
.build());
}
private Mono<ApplicationDetail> requestGetApplication(String id) {
return CacheMono
.lookup(k -> Mono.defer(() -> {
ApplicationDetail ifPresent = cache.getIfPresent(id);
logger.debug("Cache get {}", ifPresent);
return Mono.justOrEmpty(ifPresent).map(Signal::next);
}), id)
.onCacheMissResume(Mono.defer(() -> {
logger.debug("Cache miss {}", id);
return getApplicationDetail(id);
}))
.andWriteWith((k, sig) -> Mono.fromRunnable(() -> {
ApplicationDetail ap = sig.get();
if (ap != null) {
logger.debug("Cache put {} {}", k, ap);
cache.put(k, ap);
}
}));
}
private Mono<ApplicationDetail> getApplicationDetail(String id) {
return this.operations.applications()
.get(GetApplicationRequest.builder()
.name(id)
.build());
}
private Mono<Void> requestPushApplication(PushApplicationManifestRequest request) {
return this.operations.applications()
.pushManifest(request);
}
private Flux<ApplicationSummary> requestSummary() {
return this.operations.applications().list();
}
private String routePath(AppDeploymentRequest request) {
String routePath = request.getDeploymentProperties().get(CloudFoundryDeploymentProperties.ROUTE_PATH_PROPERTY);
if (StringUtils.hasText(routePath) && !routePath.startsWith("/")) {
throw new IllegalArgumentException(
"Cloud Foundry routes must start with \"/\". Route passed = [" + routePath + "].");
}
return routePath;
}
private String route(AppDeploymentRequest request) {
return request.getDeploymentProperties().get(CloudFoundryDeploymentProperties.ROUTE_PROPERTY);
}
private Set<String> routes(AppDeploymentRequest request) {
Set<String> routes = new HashSet<>();
routes.addAll(this.deploymentProperties.getRoutes());
routes.addAll(StringUtils.commaDelimitedListToSet(
request.getDeploymentProperties().get(CloudFoundryDeploymentProperties.ROUTES_PROPERTY)));
return routes;
}
private ApplicationHealthCheck toApplicationHealthCheck(String raw) {
try {
return ApplicationHealthCheck.from(raw);
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(String.format("Unsupported health-check value '%s'. Available values are %s", raw,
StringUtils.arrayToCommaDelimitedString(ApplicationHealthCheck.values())), e);
}
}
private Boolean toggleNoRoute(AppDeploymentRequest request) {
return Optional
.ofNullable(request.getDeploymentProperties().get(CloudFoundryDeploymentProperties.NO_ROUTE_PROPERTY))
.map(Boolean::valueOf).orElse(null);
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppInstanceStatus.java
================================================
/*
* Copyright 2016-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.cloudfoundry.operations.applications.ApplicationDetail;
import org.cloudfoundry.operations.applications.InstanceDetail;
import org.springframework.cloud.deployer.spi.app.AppInstanceStatus;
import org.springframework.cloud.deployer.spi.app.DeploymentState;
/**
* Maps status returned by the Cloud Foundry API to {@link AppInstanceStatus}.
*
* @author Eric Bottard
* @author David Turanski
*/
public class CloudFoundryAppInstanceStatus implements AppInstanceStatus {
private final InstanceDetail instanceDetail;
private final ApplicationDetail applicationDetail;
private final int index;
private final Map<String, String> attributes = new TreeMap<>();
/**
* The deployer assigned unique id for each app instance.
*/
static final String GUID = "guid";
/**
* The platform assigned guid - common among app instances with replicas
*/
static final String CF_GUID = "cf-guid";
/**
* The app index.
*/
static final String INDEX = "index";
public CloudFoundryAppInstanceStatus(ApplicationDetail applicationDetail, InstanceDetail instanceDetail, int index) {
this.applicationDetail = applicationDetail;
this.instanceDetail = instanceDetail;
this.index = index;
}
@Override
public String getId() {
return applicationDetail.getName() + "-" + index;
}
@Override
public DeploymentState getState() {
if (instanceDetail == null) {
return DeploymentState.failed;
}
switch (instanceDetail.getState()) {
case "STARTING":
case "DOWN":
return DeploymentState.deploying;
case "CRASHED":
return DeploymentState.failed;
// Seems the client incorrectly reports apps as FLAPPING when they are
// obviously fine. Mapping as RUNNING for now
case "FLAPPING":
case "RUNNING":
return DeploymentState.deployed;
case "UNKNOWN":
return DeploymentState.unknown;
default:
throw new IllegalStateException("Unsupported CF state: " + instanceDetail.getState());
}
}
@Override
public Map<String, String> getAttributes() {
if (instanceDetail != null) {
if (instanceDetail.getCpu() != null) {
attributes.put("metrics.machine.cpu", String.format("%.1f%%", instanceDetail.getCpu() * 100d));
}
if (instanceDetail.getDiskQuota() != null && instanceDetail.getDiskUsage() != null) {
attributes.put("metrics.machine.disk", String.format("%.1f%%", 100d * instanceDetail.getDiskUsage() / instanceDetail.getDiskQuota()));
}
if (instanceDetail.getMemoryQuota() != null && instanceDetail.getMemoryUsage() != null) {
attributes.put("metrics.machine.memory", String.format("%.1f%%", 100d * instanceDetail.getMemoryUsage() / instanceDetail.getMemoryQuota()));
}
}
List<String> urls = applicationDetail.getUrls();
if (!urls.isEmpty()) {
attributes.put("url", "http://" + urls.get(0));
for (int i = 0; i < urls.size() ; i++) {
attributes.put("url." + i, "http://" + urls.get(i));
}
}
// TODO cf-java-client versions > 2.8 will have an index formally added ot InstanceDetail
/*
The deployer GUID must be unique for each app instance, the CloudFoundry GUID is common to all instances of
the same app.
*/
attributes.put(GUID, applicationDetail.getName() + ":" + index);
attributes.put(CF_GUID, applicationDetail.getId());
attributes.put(INDEX, String.valueOf(index));
return attributes;
}
@Override
public String toString() {
return String.format("%s[%s : %s]" , getClass().getSimpleName(), getId(), getState());
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppNameGenerator.java
================================================
/*
* Copyright 2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.util.Random;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.StringUtils;
/**
* CloudFoundry specific implementation of {@link AppNameGenerator}. This takes into account the
* configuration properties {@code enableRandomAppNamePrefix} and {@code appNamePrefix}.
*
* If {@code enableRandomAppNamePrefix} a random short string is prefixed to the base name.
* It is true by default. If {@code appNamePrefix} is set, it is also prefixed before the random string.
* By default the {@code appNamePrefix} is the value of {@code spring.application.name} if available,
* otherwise the empty string.
*
* As an example, if {@code enableRandomAppNamePrefix=true}, {@code spring.application.name=server},
* and we are deploying an application whose base name is {@code time}, then the deployed name on Cloud Foundry
* may be {@code server-ug54dh5-time}
*
* @author Soby Chacko
* @author Mark Pollack
*/
public class CloudFoundryAppNameGenerator implements AppNameGenerator, InitializingBean {
private static final Log logger = LogFactory.getLog(CloudFoundryAppNameGenerator.class);
/* Given that appnames are by default part of a hostname, limit to 63 chars max. */
private static final int MAX_APPNAME_LENGTH = 63;
private String prefixToUse = "";
private final CloudFoundryDeploymentProperties properties;
public CloudFoundryAppNameGenerator(CloudFoundryDeploymentProperties cloudFoundryDeploymentProperties) {
this.properties = cloudFoundryDeploymentProperties;
}
@Override
public void afterPropertiesSet() throws Exception {
if (properties.isEnableRandomAppNamePrefix()) {
prefixToUse = createUniquePrefix();
if (!StringUtils.isEmpty(properties.getAppNamePrefix())) {
prefixToUse = String.format("%s-%s", properties.getAppNamePrefix(), prefixToUse);
}
} else {
if (!StringUtils.isEmpty(properties.getAppNamePrefix())) {
prefixToUse = properties.getAppNamePrefix();
}
}
logger.info(String.format("Prefix to be used for deploying apps: %s", prefixToUse));
}
@Override
public String generateAppName(String appName) {
if (StringUtils.isEmpty(prefixToUse)) {
return appName.substring(0, Math.min(MAX_APPNAME_LENGTH, appName.length()));
} else {
String string = String.format("%s-%s", prefixToUse, appName);
return string.substring(0, Math.min(MAX_APPNAME_LENGTH, string.length()));
}
}
private String createUniquePrefix() {
String alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
char[] result = new char[7];
Random random = new Random();
for (int i = 0 ; i < result.length ; i++) {
result[i] = alphabet.charAt(random.nextInt(alphabet.length()));
}
return new String(result);
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryConnectionProperties.java
================================================
/*
* Copyright 2016-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.net.URL;
import jakarta.validation.constraints.NotNull;
import org.springframework.validation.annotation.Validated;
/**
* Holds configuration properties for connecting to a Cloud Foundry runtime.
*
* @author Eric Bottard
* @author Greg Turnquist
*/
@Validated
public class CloudFoundryConnectionProperties {
/**
* Top level prefix for Cloud Foundry related configuration properties.
*/
public static final String CLOUDFOUNDRY_PROPERTIES = "spring.cloud.deployer.cloudfoundry";
/**
* The organization to use when registering new applications.
*/
@NotNull
private String org;
/**
* The space to use when registering new applications.
*/
@NotNull
private String space;
/**
* Location of the CloudFoundry REST API endpoint to use.
*/
@NotNull
private URL url;
/**
* Username to use to authenticate against the Cloud Foundry API.
*/
@NotNull
private String username;
/**
* Password to use to authenticate against the Cloud Foundry API.
*/
@NotNull
private String password;
/**
* ClientId to use with token providers, effectively defaults to "cf" in
* cloudfroundry client.
*/
private String clientId;
/**
* ClientSecret to use with token providers, effectively defaults to empty in
* cloudfroundry client.
*/
private String clientSecret;
/**
* Indicates the identity provider to be used when accessing the Cloud Foundry API.
* The passed string has to be a URL-Encoded JSON Object, containing the field origin with value as origin_key of an identity provider.
*/
private String loginHint;
/**
* Allow operation using self-signed certificates.
*/
private boolean skipSslValidation = false;
public String getOrg() {
return org;
}
public void setOrg(String org) {
this.org = org;
}
public String getSpace() {
return space;
}
public void setSpace(String space) {
this.space = space;
}
public URL getUrl() {
return url;
}
public void setUrl(URL url) {
this.url = url;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getClientSecret() {
return clientSecret;
}
public void setClientSecret(String clientSecret) {
this.clientSecret = clientSecret;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isSkipSslValidation() {
return skipSslValidation;
}
public void setSkipSslValidation(boolean skipSslValidation) {
this.skipSslValidation = skipSslValidation;
}
public String getLoginHint() {
return loginHint;
}
public void setLoginHint(String loginHint) {
this.loginHint = loginHint;
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryDeployerAutoConfiguration.java
================================================
/*
* Copyright 2016-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.time.Duration;
import com.github.zafarkhaja.semver.Version;
import org.cloudfoundry.client.CloudFoundryClient;
import org.cloudfoundry.client.v2.info.GetInfoRequest;
import org.cloudfoundry.logcache.v1.LogCacheClient;
import org.cloudfoundry.operations.CloudFoundryOperations;
import org.cloudfoundry.operations.DefaultCloudFoundryOperations;
import org.cloudfoundry.reactor.ConnectionContext;
import org.cloudfoundry.reactor.DefaultConnectionContext;
import org.cloudfoundry.reactor.TokenProvider;
import org.cloudfoundry.reactor.client.ReactorCloudFoundryClient;
import org.cloudfoundry.reactor.logcache.v1.ReactorLogCacheClient;
import org.cloudfoundry.reactor.tokenprovider.PasswordGrantTokenProvider;
import org.cloudfoundry.reactor.tokenprovider.PasswordGrantTokenProvider.Builder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.ConfigurationPropertiesBinding;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.deployer.spi.app.AppDeployer;
import org.springframework.cloud.deployer.spi.core.RuntimeEnvironmentInfo;
import org.springframework.cloud.deployer.spi.task.TaskLauncher;
import org.springframework.cloud.deployer.spi.util.RuntimeVersionUtils;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
/**
* Creates a {@link CloudFoundryAppDeployer}
*
* @author Eric Bottard
* @author Ben Hale
* @author David Turanski
*/
@Configuration
@EnableConfigurationProperties
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)
public class CloudFoundryDeployerAutoConfiguration {
private static final Logger logger = LoggerFactory.getLogger(CloudFoundryDeployerAutoConfiguration.class);
@Autowired
private EarlyConnectionConfiguration connectionConfiguration;
@Bean
@ConditionalOnMissingBean
public CloudFoundryOperations cloudFoundryOperations(CloudFoundryClient cloudFoundryClient, CloudFoundryConnectionProperties properties) {
return DefaultCloudFoundryOperations.builder()
.cloudFoundryClient(cloudFoundryClient)
.organization(properties.getOrg())
.space(properties.getSpace())
.build();
}
private RuntimeEnvironmentInfo runtimeEnvironmentInfo(Class spiClass, Class implementationClass, CloudFoundryConnectionProperties cloudFoundryConnectionProperties) {
CloudFoundryClient client = connectionConfiguration.cloudFoundryClient(
connectionConfiguration.connectionContext(cloudFoundryConnectionProperties),
connectionConfiguration.tokenProvider(cloudFoundryConnectionProperties));
Version version = connectionConfiguration.version(client);
return new CloudFoundryPlatformSpecificInfo(new RuntimeEnvironmentInfo.Builder())
.apiEndpoint(cloudFoundryConnectionProperties.getUrl().toString())
.org(cloudFoundryConnectionProperties.getOrg())
.space(cloudFoundryConnectionProperties.getSpace())
.builder()
.implementationName(implementationClass.getSimpleName())
.spiClass(spiClass)
.implementationVersion(RuntimeVersionUtils.getVersion(CloudFoundryAppDeployer.class))
.platformType("Cloud Foundry")
.platformClientVersion(RuntimeVersionUtils.getVersion(client.getClass()))
.platformApiVersion(version.toString())
.platformHostVersion("unknown")
.build();
}
@Bean
@ConditionalOnMissingBean(AppDeployer.class)
public AppDeployer appDeployer(
CloudFoundryOperations operations,
AppNameGenerator applicationNameGenerator,
ApplicationLogAccessor applicationLogAccessor
) {
return new CloudFoundryAppDeployer(
applicationNameGenerator,
connectionConfiguration.appDeploymentProperties(),
operations,
runtimeEnvironmentInfo(AppDeployer.class, CloudFoundryAppDeployer.class, connectionConfiguration.cloudFoundryConnectionProperties()),
applicationLogAccessor);
}
@Bean
CloudFoundryActuatorTemplate actuatorOperations(RestTemplate actuatorRestTemplate, AppDeployer appDeployer) {
return new CloudFoundryActuatorTemplate(actuatorRestTemplate, appDeployer,
connectionConfiguration.appDeploymentProperties().getAppAdmin());
}
@Bean
RestTemplate actuatorRestTemplate() {
return new RestTemplate();
}
@Bean
@ConditionalOnMissingBean(AppNameGenerator.class)
public AppNameGenerator appDeploymentCustomizer() {
return new CloudFoundryAppNameGenerator(connectionConfiguration.appDeploymentProperties());
}
@Bean
@ConditionalOnMissingBean(TaskLauncher.class)
public TaskLauncher taskLauncher(
CloudFoundryClient client,
CloudFoundryOperations operations,
Version version,
ApplicationLogAccessor applicationLogAccessor
) {
if (version.greaterThanOrEqualTo(UnsupportedVersionTaskLauncher.MINIMUM_SUPPORTED_VERSION)) {
RuntimeEnvironmentInfo runtimeEnvironmentInfo = runtimeEnvironmentInfo(TaskLauncher.class, CloudFoundryTaskLauncher.class,
connectionConfiguration.cloudFoundryConnectionProperties());
return new CloudFoundryTaskLauncher(
client,
connectionConfiguration.taskDeploymentProperties(),
operations,
runtimeEnvironmentInfo,
applicationLogAccessor);
} else {
RuntimeEnvironmentInfo runtimeEnvironmentInfo = runtimeEnvironmentInfo(TaskLauncher.class, UnsupportedVersionTaskLauncher.class,
connectionConfiguration.cloudFoundryConnectionProperties());
return new UnsupportedVersionTaskLauncher(version, runtimeEnvironmentInfo);
}
}
@Bean
@ConditionalOnMissingBean(ApplicationLogAccessor.class)
public ApplicationLogAccessor logHelper(LogCacheClient logCacheClient) {
return new ApplicationLogAccessor(logCacheClient);
}
@Bean
@ConfigurationPropertiesBinding
public DurationConverter durationConverter() {
return new DurationConverter();
}
/**
* A subset of configuration beans that can be used on its own to connect to the Cloud Controller API
* and query it for its version. Automatically applied in CloudFoundryDeployerAutoConfiguration by virtue
* of being a static inner class of it.
*
* @author Eric Bottard
*/
@Configuration
@EnableConfigurationProperties
public static class EarlyConnectionConfiguration {
@Bean
@ConditionalOnMissingBean(name = "appDeploymentProperties")
public CloudFoundryDeploymentProperties appDeploymentProperties() {
return defaultSharedDeploymentProperties();
}
@Bean
@ConditionalOnMissingBean(name = "taskDeploymentProperties")
public CloudFoundryDeploymentProperties taskDeploymentProperties() {
return defaultSharedDeploymentProperties();
}
@Bean
@ConfigurationProperties(prefix = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES)
public CloudFoundryDeploymentProperties defaultSharedDeploymentProperties() {
return new CloudFoundryDeploymentProperties();
}
@Bean
@ConditionalOnMissingBean
public Version version(CloudFoundryClient client) {
return client.info()
.get(GetInfoRequest.builder()
.build())
.map(response -> Version.valueOf(response.getApiVersion()))
.doOnError(e -> {
throw new RuntimeException("Bad credentials connecting to Cloud Foundry.", e);
})
.doOnNext(version -> logger.info("Connecting to Cloud Foundry with API Version {}", version))
.block(Duration.ofSeconds(appDeploymentProperties().getApiTimeout()));
}
@Bean
@ConditionalOnMissingBean
public CloudFoundryClient cloudFoundryClient(ConnectionContext connectionContext, TokenProvider tokenProvider) {
return ReactorCloudFoundryClient.builder()
.connectionContext(connectionContext)
.tokenProvider(tokenProvider)
.build();
}
@Bean
@ConditionalOnMissingBean
public LogCacheClient logCacheClient(ConnectionContext connectionContext, TokenProvider tokenProvider) {
return ReactorLogCacheClient.builder()
.connectionContext(connectionContext)
.tokenProvider(tokenProvider)
.build();
}
@Bean
@ConditionalOnMissingBean
public TokenProvider tokenProvider(CloudFoundryConnectionProperties properties) {
Builder tokenProviderBuilder = PasswordGrantTokenProvider.builder()
.username(properties.getUsername())
.password(properties.getPassword())
.loginHint(properties.getLoginHint());
if (StringUtils.hasText(properties.getClientId())) {
tokenProviderBuilder.clientId(properties.getClientId());
}
if (StringUtils.hasText(properties.getClientSecret())) {
tokenProviderBuilder.clientSecret(properties.getClientSecret());
}
return tokenProviderBuilder.build();
}
@Bean
@ConditionalOnMissingBean
@ConfigurationProperties(prefix = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES)
public CloudFoundryConnectionProperties cloudFoundryConnectionProperties() {
return new CloudFoundryConnectionProperties();
}
@Bean
@ConditionalOnMissingBean
public ConnectionContext connectionContext(CloudFoundryConnectionProperties properties) {
return DefaultConnectionContext.builder()
.apiHost(properties.getUrl().getHost())
.skipSslValidation(properties.isSkipSslValidation())
.build();
}
}
}
================================================
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryDeploymentProperties.java
================================================
/*
* Copyright 2016-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.deployer.spi.cloudfoundry;
import java.time.Duration;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.cloudfoundry.operations.applications.ApplicationHealthCheck;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.deployer.spi.app.AppAdmin;
import org.springframework.validation.annotation.Validated;
/**
* Holds configuration properties for specifying what resources and services an app
* deployed to a Cloud Foundry runtime will get.
*
* @author Eric Bottard
* @author Greg Turnquist
* @author Ilayaperumal Gopinathan
* @author David Turanski
*/
@Validated
public class CloudFoundryDeploymentProperties {
private static final Log log = LogFactory.getLog(CloudFoundryDeploymentProperties.class);
public static final String SERVICES_PROPERTY_KEY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".services";
public static final String HEALTHCHECK_PROPERTY_KEY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".health-check";
public static final String HEALTHCHECK_HTTP_ENDPOINT_PROPERTY_KEY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES
+ ".health-check-http-endpoint";
public static final String HEALTHCHECK_TIMEOUT_PROPERTY_KEY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".health-check-timeout";
public static final String ROUTE_PATH_PROPERTY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".route-path";
public static final String ROUTE_PROPERTY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".route";
public static final String ROUTES_PROPERTY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".routes";
public static final String NO_ROUTE_PROPERTY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".no-route";
public static final String HOST_PROPERTY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".host";
public static final String DOMAIN_PROPERTY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".domain";
public static final String BUILDPACK_PROPERTY_KEY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".buildpack";
public static final String BUILDPACKS_PROPERTY_KEY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".buildpacks";
public static final String JAVA_OPTS_PROPERTY_KEY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".javaOpts";
public static final String USE_SPRING_APPLICATION_JSON_KEY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES
+ ".use-spring-application-json";
public static final String ENV_KEY = CloudFoundryConnectionProperties.CLOUDFOUNDRY_PROPERTIES + ".env";
private static final String DEFAULT_BUILDPACK = "https://github.com/cloudfoundry/java-buildpack.git#v4.29.1";
/**
* The names of services to bind to all applications deployed as a module. This should
* typically contain a service capable of playing the role of a binding transport.
*/
private Set<String> services = new HashSet<>();
/**
* The host name to use as part of the route. Defaults to hostname derived by Cloud
* Foundry.
*/
private String host = null;
/**
* The domain to use when mapping routes for applications.
*/
private String domain;
/**
* The routes that the application should be bound to. Mutually exclusive with host and
* domain.
*/
private Set<String> routes = new HashSet<>();
/**
* The buildpack to use for deploying the application.
*/
@Deprecated
private String buildpack = DEFAULT_BUILDPACK;
/**
* The buildpacks to use for deploying the application.
*/
private Set<String> buildpacks = new HashSet<>();
/**
* The amount of memory to allocate, if not overridden per-app. Default unit is mebibytes,
* 'M' and 'G" suffixes supported.
*/
private String memory = "1024m";
/**
* The amount of disk space to allocate, if not overridden per-app. Default unit is
* mebibytes, 'M' and 'G" suffixes supported.
*/
private String disk = "1024m";
/**
* The type of health check to perform on deployed application, if not overridden per-app.
* Defaults to PORT
*/
private ApplicationHealthCheck healthCheck = ApplicationHealthCheck.PORT;
/**
* The path that the http health check will use, defaults to @{code /health}
*/
private String healthCheckHttpEndpoint = "/health";
/**
* The timeout value for health checks in seconds. Defaults to 120 seconds.
*/
private String healthCheckTimeout = "120";
/**
* The number of instances to run.
*/
private int instances = 1;
/**
* Flag to enable prefixing the app name with a random prefix.
*/
private boolean enableRandomAppNamePrefix = true;
/**
* Timeout for blocking API calls, in seconds.
*/
private long apiTimeout = 360L;
/**
* Timeout for status API operations in milliseconds
*/
private long statusTimeout = 30_000L;
/**
* Flag to indicate whether application properties are fed into SPRING_APPLICATION_JSON or
* ENVIRONMENT VARIABLES.
*/
private boolean useSpringApplicationJson = true;
/**
* If set, override the timeout allocated for staging the app by the client.
*/
private Duration stagingTimeout = Duration.ofMinutes(15L);
/**
* If set, override the timeout allocated for starting the app by the client.
*/
private Duration startupTimeout = Duration.ofMinutes(5L);
/**
* String to use as prefix for name of deployed app. Defaults to spring.application.name.
*/
@Value("${spring.application.name:}")
private String appNamePrefix;
/**
* Whether to also delete routes when un-deploying an application.
*/
private boolean deleteRoutes = true;
/**
* Whether to push task apps
*/
private boolean pushTaskAppsEnabled = true;
/**
* Whether to automatically delete cached Maven artifacts after deployment.
*/
private boolean autoDeleteMavenArtifacts = true;
/**
* The maximum concurrent tasks allowed.
*/
@Min(1)
private int maximumConcurrentTasks = 20;
private String javaOpts;
private Optional<Map<String, String>> env = Optional.empty();
/**
* Location of the PCF scheduler REST API enpoint ot use.
*/
private String schedulerUrl;
/**
* The number of retries allowed when scheduling a task if an {@link javax.net.ssl.SSLException} is thrown.
*/
private int scheduleSSLRetryCount = 5;
/**
* The number of seconds to wait for a unSchedule to complete.
*/
private int unScheduleTimeoutInSeconds = 30;
/**
* The number of seconds to wait for a schedule to complete.
* This excludes the time it takes to stage the application on Cloud Foundry.
*/
private int scheduleTimeoutInSeconds = 30;
/**
* The number of seconds to wait for a list of schedules to be returned.
*/
private int listTimeoutInSeconds = 60;
private AppAdmin appAdmin = new AppAdmin();
public Set<String> getServices() {
return services;
}
public void setServices(Set<String> services) {
this.services = services;
}
@Deprecated
public String getBuildpack() {
return buildpack;
}
@Deprecated
public void setBuildpack(String buildpack) {
this.buildpack = buildpack;
}
public Set<String> getBuildpacks() {
return buildpacks;
}
public void setBuildpacks(Set<String> buildpacks) {
this.buildpacks = buildpacks;
}
public String getMemory() {
return memory;
}
public void setMemory(String memory) {
this.memory = memory;
}
public String getDisk() {
return disk;
}
public void setDisk(String disk) {
this.disk = disk;
}
public int getInstances() {
return instances;
}
public void setInstances(int instances) {
this.instances = instances;
}
public boolean isEnableRandomAppNamePrefix() {
return enableRandomAppNamePrefix;
}
public void setEnableRandomAppNamePrefix(boolean enableRandomAppNamePrefix) {
this.enableRandomAppNamePrefix = enableRandomAppNamePrefix;
}
public String getAppNamePrefix() {
return appNamePrefix;
}
public void setAppNamePrefix(String appNamePrefix) {
this.appNamePrefix = appNamePrefix;
}
public long getApiTimeout() {
return apiTimeout;
}
public void setApiTimeout(long apiTimeout) {
this.apiTimeout = apiTimeout;
}
public boolean isUseSpringApplicationJson() {
return useSpringApplicationJson;
}
public void setUseSpringApplicationJson(boolean useSpringApplicationJson) {
this.useSpringApplicationJson = useSpringApplicationJson;
}
public ApplicationHealthCheck getHealthCheck() {
return healthCheck;
}
public void setHealthCheck(ApplicationHealthCheck healthCheck) {
this.healthCheck = healthCheck;
}
public String getHealthCheckHttpEndpoint() {
return healthCheckHttpEndpoint;
}
public void setHealthCheckHttpEndpoint(String healthCheckHttpEndpoint) {
this.healthCheckHttpEndpoint = healthCheckHttpEndpoint;
}
public String getHealthCheckTimeout() {
return healthCheckTimeout;
}
public void setHealthCheckTimeout(String healthCheckTimeout) {
this.healthCheckTimeout = healthCheckTimeout;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public Set<String> getRoutes() {
return routes;
}
public void setRoutes(Set<String> routes) {
this.routes = routes;
}
public Duration getStagingTimeout() {
return stagingTimeout;
}
public void setStagingTimeout(Duration stagingTimeout) {
this.stagingTimeout = stagingTimeout;
}
public Duration getStartupTimeout() {
return startupTimeout;
}
public void setStartupTimeout(Duration startupTimeout) {
this.startupTimeout = startupTimeout;
}
public long getStatusTimeout() {
return statusTimeout;
}
public void setStatusTimeout(long statusTimeout) {
this.statusTimeout = statusTimeout;
}
public boolean isDeleteRoutes() {
return deleteRoutes;
}
public void setDeleteRoutes(boolean deleteRoutes) {
this.deleteRoutes = deleteRoutes;
}
public String getJavaOpts() {
return javaOpts;
}
public void setJavaOpts(String javaOpts) {
this.javaOpts = javaOpts;
}
public int getMaximumConcurrentTasks() {
return maximumConcurrentTasks;
}
public void setMaximumConcurrentTasks(int maximumConcurrentTasks) {
this.maximumConcurrentTasks = maximumConcurrentTasks;
}
public boolean isPushTaskAppsEnabled() {
return pushTaskAppsEnabled;
}
public void setPushTaskAppsEnabled(boolean pushTaskAppsEnabled) {
this.pushTaskAppsEnabled = pushTaskAppsEnabled;
}
public boolean isAutoDeleteMavenArtifacts() {
return autoDeleteMavenArtifacts;
}
public void setAutoDeleteMavenArtifacts(boolean autoDeleteMavenArtifacts) {
this.autoDeleteMavenArtifacts = autoDeleteMavenArtifacts;
}
public Map<String, String> getEnv() {
return env.orElseGet(Collections::emptyMap);
}
public void setEnv(@NotNull Map<String, String> env) {
this.env.map(e -> {
log.error("Environment is immutable. New entries have not been applied");
return this.env;
}
).orElse(this.env = Optional.of(Collections.unmodifiableMap(env)));
}
public String getSchedulerUrl() {
return schedulerUrl;
}
public void setSchedulerUrl(String schedulerUrl) {
thi
gitextract_rlk86ief/
├── .editorconfig
├── .github/
│ ├── actions/
│ │ └── trivy-scan/
│ │ └── action.yml
│ ├── dco.yml
│ ├── settings.xml
│ └── workflows/
│ ├── build-snapshot-worker.yml
│ ├── ci-it.yml
│ ├── ci-pr.yml
│ ├── ci.yml
│ ├── common-ci.yml
│ ├── issue-handler.yml
│ ├── k8s-versions.json
│ ├── milestone-worker.yml
│ ├── next-dev-version-worker.yml
│ └── release-worker.yml
├── .gitignore
├── .mvn/
│ ├── jvm.config
│ ├── maven.config
│ └── wrapper/
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── .settings.xml
├── .trivyignore
├── CONTRIBUTING.adoc
├── LICENSE
├── NOTICE
├── README.adoc
├── SECURITY.md
├── mvnw
├── mvnw.cmd
├── pom.xml
├── spring-cloud-deployer-autoconfigure/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── springframework/
│ │ │ └── cloud/
│ │ │ └── deployer/
│ │ │ └── autoconfigure/
│ │ │ ├── DelegatingResourceLoaderBuilder.java
│ │ │ ├── DelegatingResourceLoaderBuilderCustomizer.java
│ │ │ ├── MavenConfigurationProperties.java
│ │ │ └── ResourceLoadingAutoConfiguration.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── spring.factories
│ └── test/
│ └── java/
│ └── org/
│ └── springframework/
│ └── cloud/
│ └── deployer/
│ └── autoconfigure/
│ └── ResourceLoadingAutoConfigurationTests.java
├── spring-cloud-deployer-cloudfoundry/
│ ├── README.adoc
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── springframework/
│ │ │ └── cloud/
│ │ │ └── deployer/
│ │ │ └── spi/
│ │ │ ├── cloudfoundry/
│ │ │ │ ├── AbstractCloudFoundryDeployer.java
│ │ │ │ ├── AbstractCloudFoundryTaskLauncher.java
│ │ │ │ ├── AppNameGenerator.java
│ │ │ │ ├── ApplicationLogAccessor.java
│ │ │ │ ├── CfEnvAwareAppDeploymentRequest.java
│ │ │ │ ├── CfEnvAwareResource.java
│ │ │ │ ├── CfEnvConfigurer.java
│ │ │ │ ├── CloudFoundryActuatorTemplate.java
│ │ │ │ ├── CloudFoundryAppDeployer.java
│ │ │ │ ├── CloudFoundryAppInstanceStatus.java
│ │ │ │ ├── CloudFoundryAppNameGenerator.java
│ │ │ │ ├── CloudFoundryConnectionProperties.java
│ │ │ │ ├── CloudFoundryDeployerAutoConfiguration.java
│ │ │ │ ├── CloudFoundryDeploymentProperties.java
│ │ │ │ ├── CloudFoundryPlatformSpecificInfo.java
│ │ │ │ ├── CloudFoundryTaskLauncher.java
│ │ │ │ ├── DurationConverter.java
│ │ │ │ ├── ServiceParser.java
│ │ │ │ └── UnsupportedVersionTaskLauncher.java
│ │ │ └── scheduler/
│ │ │ └── cloudfoundry/
│ │ │ ├── CloudFoundryAppScheduler.java
│ │ │ ├── CloudFoundryScheduleSSLException.java
│ │ │ ├── CloudFoundrySchedulerProperties.java
│ │ │ └── expression/
│ │ │ └── QuartzCronExpression.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── additional-spring-configuration-metadata.json
│ │ ├── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── spring.factories
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ ├── cloudfoundry/
│ │ │ ├── AbstractAppDeployerTestSupport.java
│ │ │ ├── ApplicationLogAccessorTests.java
│ │ │ ├── CfEnvAwareResourceTests.java
│ │ │ ├── CfEnvConfigurerTests.java
│ │ │ ├── CloudFoundryActuatorTemplateTests.java
│ │ │ ├── CloudFoundryAppDeployerIntegrationIT.java
│ │ │ ├── CloudFoundryAppDeployerTests.java
│ │ │ ├── CloudFoundryAppNameGeneratorTest.java
│ │ │ ├── CloudFoundryConnectionPropertiesTests.java
│ │ │ ├── CloudFoundryDeployerTests.java
│ │ │ ├── CloudFoundryTaskLauncherCachingTests.java
│ │ │ ├── CloudFoundryTaskLauncherIntegrationIT.java
│ │ │ ├── CloudFoundryTaskLauncherTests.java
│ │ │ └── ServiceParserTests.java
│ │ └── scheduler/
│ │ └── cloudfoundry/
│ │ ├── CloudFoundryAppSchedulerTests.java
│ │ ├── CloudFoundryScheduleSSLExceptionTests.java
│ │ ├── CloudFoundrySchedulerPropertiesTest.java
│ │ ├── SpringCloudSchedulerIntegrationIT.java
│ │ └── expression/
│ │ └── QuartzCronExpressionTests.java
│ └── resources/
│ ├── batch-job-1.0.0.BUILD-SNAPSHOT.jar
│ ├── demo-0.0.1-SNAPSHOT.jar
│ ├── http-source-rabbit-2.1.5.RELEASE.jar
│ ├── log-sink-rabbit-3.0.0.BUILD-SNAPSHOT.jar
│ ├── logback-test.xml
│ ├── long-running-task-1.0.0.BUILD-SNAPSHOT.jar
│ ├── timestamp-task-1.0.0.BUILD-SNAPSHOT-exec-2.jar
│ ├── timestamp-task-1.0.0.BUILD-SNAPSHOT-exec-3.jar
│ ├── timestamp-task-1.0.0.BUILD-SNAPSHOT-exec.jar
│ └── timestamp-task-3.1.2-SNAPSHOT.jar
├── spring-cloud-deployer-dependencies/
│ └── pom.xml
├── spring-cloud-deployer-kubernetes/
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── springframework/
│ │ │ └── cloud/
│ │ │ └── deployer/
│ │ │ └── spi/
│ │ │ └── kubernetes/
│ │ │ ├── AbstractKubernetesDeployer.java
│ │ │ ├── CommandProbeCreator.java
│ │ │ ├── CompositeDeploymentStateResolver.java
│ │ │ ├── ContainerConfiguration.java
│ │ │ ├── ContainerFactory.java
│ │ │ ├── DefaultContainerFactory.java
│ │ │ ├── DefaultRunningPhaseDeploymentStateResolver.java
│ │ │ ├── DeploymentPropertiesResolver.java
│ │ │ ├── EntryPointStyle.java
│ │ │ ├── HttpProbeCreator.java
│ │ │ ├── ImagePullPolicy.java
│ │ │ ├── KubernetesActuatorTemplate.java
│ │ │ ├── KubernetesAppDeployer.java
│ │ │ ├── KubernetesAppInstanceStatus.java
│ │ │ ├── KubernetesAutoConfiguration.java
│ │ │ ├── KubernetesClientFactory.java
│ │ │ ├── KubernetesDeployerProperties.java
│ │ │ ├── KubernetesScheduler.java
│ │ │ ├── KubernetesSchedulerProperties.java
│ │ │ ├── KubernetesTaskLauncher.java
│ │ │ ├── KubernetesTaskLauncherProperties.java
│ │ │ ├── LivenessCommandProbeCreator.java
│ │ │ ├── LivenessHttpProbeCreator.java
│ │ │ ├── LivenessTcpProbeCreator.java
│ │ │ ├── PredicateRunningPhaseDeploymentStateResolver.java
│ │ │ ├── ProbeAuthenticationType.java
│ │ │ ├── ProbeCreator.java
│ │ │ ├── ProbeCreatorFactory.java
│ │ │ ├── ProbeType.java
│ │ │ ├── ReadinessCommandProbeCreator.java
│ │ │ ├── ReadinessHttpProbeCreator.java
│ │ │ ├── ReadinessTcpProbeCreator.java
│ │ │ ├── RestartPolicy.java
│ │ │ ├── RunningPhaseDeploymentStateResolver.java
│ │ │ ├── StartupCommandProbeCreator.java
│ │ │ ├── StartupHttpProbeCreator.java
│ │ │ ├── StartupTcpProbeCreator.java
│ │ │ ├── TcpProbeCreator.java
│ │ │ └── support/
│ │ │ ├── ArgumentSanitizer.java
│ │ │ ├── PropertyParserUtils.java
│ │ │ └── RelaxedNames.java
│ │ └── resources/
│ │ └── META-INF/
│ │ ├── spring/
│ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ │ └── spring.factories
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ └── kubernetes/
│ │ ├── AbstractKubernetesTaskLauncherIntegrationTests.java
│ │ ├── DefaultContainerFactoryTests.java
│ │ ├── DeploymentPropertiesResolverTests.java
│ │ ├── EntryPointStyleTests.java
│ │ ├── ImagePullPolicyTests.java
│ │ ├── KubernetesActuatorTemplateTests.java
│ │ ├── KubernetesAppDeployerIntegrationIT.java
│ │ ├── KubernetesAppDeployerTests.java
│ │ ├── KubernetesConfigurationPropertiesTests.java
│ │ ├── KubernetesDeployerPropertiesTests.java
│ │ ├── KubernetesSchedulerIT.java
│ │ ├── KubernetesSchedulerPropertiesTests.java
│ │ ├── KubernetesTaskLauncherIntegrationIT.java
│ │ ├── KubernetesTaskLauncherMaximumConcurrentTasksTests.java
│ │ ├── KubernetesTaskLauncherWithJobIntegrationIT.java
│ │ ├── PropertyParserUtilsTests.java
│ │ └── RunAbstractKubernetesDeployerTests.java
│ └── resources/
│ ├── dataflow-server-configMapKeyRef.yml
│ ├── dataflow-server-containerSecurityContext.yml
│ ├── dataflow-server-nodeAffinity.yml
│ ├── dataflow-server-podAffinity.yml
│ ├── dataflow-server-podAntiAffinity.yml
│ ├── dataflow-server-podsecuritycontext.yml
│ ├── dataflow-server-secretKeyRef.yml
│ ├── dataflow-server-tolerations.yml
│ └── dataflow-server.yml
├── spring-cloud-deployer-local/
│ ├── README.adoc
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── springframework/
│ │ │ └── cloud/
│ │ │ └── deployer/
│ │ │ └── spi/
│ │ │ └── local/
│ │ │ ├── AbstractLocalDeployerSupport.java
│ │ │ ├── CommandBuilder.java
│ │ │ ├── DebugAddress.java
│ │ │ ├── DeployerSocketUtils.java
│ │ │ ├── DockerCommandBuilder.java
│ │ │ ├── HttpProbeExecutor.java
│ │ │ ├── JavaCommandBuilder.java
│ │ │ ├── LocalActuatorTemplate.java
│ │ │ ├── LocalAppDeployer.java
│ │ │ ├── LocalDeployerAutoConfiguration.java
│ │ │ ├── LocalDeployerProperties.java
│ │ │ ├── LocalDeployerUtils.java
│ │ │ └── LocalTaskLauncher.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ └── local/
│ │ ├── DebugAddressTests.java
│ │ ├── DeployerSocketUtilsTests.java
│ │ ├── DockerCommandBuilderTests.java
│ │ ├── JavaExecutionCommandBuilderTests.java
│ │ ├── LocalAppDeployerEnvironmentIntegrationTests.java
│ │ ├── LocalAppDeployerIntegrationTests.java
│ │ ├── LocalDeployerPropertiesTests.java
│ │ ├── LocalDeployerSupportTests.java
│ │ ├── LocalTaskLauncherIntegrationTests.java
│ │ ├── RandomPortRangeContextTests.java
│ │ ├── RandomPortRangeTests.java
│ │ └── RandomPortTests.java
│ └── resources/
│ └── testResource.txt
├── spring-cloud-deployer-resource-docker/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── resource/
│ │ └── docker/
│ │ ├── DockerResource.java
│ │ └── DockerResourceLoader.java
│ └── test/
│ └── java/
│ └── org/
│ └── springframework/
│ └── cloud/
│ └── deployer/
│ └── resource/
│ └── docker/
│ ├── DockerResourceLoaderTests.java
│ └── DockerResourceTests.java
├── spring-cloud-deployer-resource-maven/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── resource/
│ │ └── maven/
│ │ ├── LoggingRepositoryListener.java
│ │ ├── MavenArtifactResolver.java
│ │ ├── MavenProperties.java
│ │ ├── MavenResource.java
│ │ ├── MavenResourceLoader.java
│ │ ├── StaticWagonConfigurator.java
│ │ └── StaticWagonProvider.java
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── resource/
│ │ └── maven/
│ │ ├── MavenArtifactResolverTests.java
│ │ ├── MavenExtension.java
│ │ ├── MavenPropertiesTests.java
│ │ ├── MavenResourceLoaderTests.java
│ │ ├── MavenResourceTests.java
│ │ └── WagonHttpTests.java
│ └── resources/
│ └── application.properties
├── spring-cloud-deployer-resource-support/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── resource/
│ │ ├── registry/
│ │ │ ├── InMemoryUriRegistry.java
│ │ │ ├── UriRegistry.java
│ │ │ └── UriRegistryPopulator.java
│ │ └── support/
│ │ ├── DelegatingResourceLoader.java
│ │ ├── DownloadingUrlResource.java
│ │ ├── DownloadingUrlResourceLoader.java
│ │ ├── ResourceNotResolvedException.java
│ │ └── ShaUtils.java
│ └── test/
│ └── java/
│ └── org/
│ └── springframework/
│ └── cloud/
│ └── deployer/
│ └── resource/
│ ├── StubResourceLoader.java
│ ├── registry/
│ │ └── UriRegistryPopulatorTests.java
│ └── support/
│ ├── DelegatingResourceLoaderIntegrationTests.java
│ ├── DelegatingResourceLoaderTests.java
│ ├── DownloadingUrlResourceTests.java
│ └── ShaUtilsTests.java
├── spring-cloud-deployer-spi/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ ├── app/
│ │ │ ├── AbstractActuatorTemplate.java
│ │ │ ├── ActuatorOperations.java
│ │ │ ├── AppAdmin.java
│ │ │ ├── AppDeployer.java
│ │ │ ├── AppInstanceStatus.java
│ │ │ ├── AppScaleRequest.java
│ │ │ ├── AppStatus.java
│ │ │ ├── DeploymentState.java
│ │ │ └── MultiStateAppDeployer.java
│ │ ├── core/
│ │ │ ├── AppDefinition.java
│ │ │ ├── AppDeploymentRequest.java
│ │ │ └── RuntimeEnvironmentInfo.java
│ │ ├── scheduler/
│ │ │ ├── CreateScheduleException.java
│ │ │ ├── ScheduleInfo.java
│ │ │ ├── ScheduleRequest.java
│ │ │ ├── Scheduler.java
│ │ │ ├── SchedulerException.java
│ │ │ ├── SchedulerPropertyKeys.java
│ │ │ └── UnScheduleException.java
│ │ ├── task/
│ │ │ ├── LaunchState.java
│ │ │ ├── TaskLauncher.java
│ │ │ └── TaskStatus.java
│ │ └── util/
│ │ ├── ByteSizeUtils.java
│ │ ├── CommandLineTokenizer.java
│ │ └── RuntimeVersionUtils.java
│ └── test/
│ └── java/
│ └── org/
│ └── springframework/
│ └── cloud/
│ └── deployer/
│ └── spi/
│ ├── app/
│ │ ├── AppDeployerTests.java
│ │ └── RuntimeEnvironmentInfoBuilderTests.java
│ ├── task/
│ │ └── TaskLauncherTests.java
│ └── util/
│ ├── ByteSizeUtilsTests.java
│ └── CommandLineTokenizerTests.java
├── spring-cloud-deployer-spi-scheduler-test-app/
│ ├── Dockerfile
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ └── scheduler/
│ │ └── test/
│ │ └── app/
│ │ ├── SchedulerIntegrationTest.java
│ │ ├── SchedulerIntegrationTestApplication.java
│ │ └── SchedulerIntegrationTestProperties.java
│ └── resources/
│ └── application.properties
├── spring-cloud-deployer-spi-test/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ ├── scheduler/
│ │ │ └── test/
│ │ │ └── AbstractSchedulerIntegrationJUnit5Tests.java
│ │ └── test/
│ │ ├── AbstractAppDeployerIntegrationJUnit5Tests.java
│ │ ├── AbstractIntegrationJUnit5Tests.java
│ │ ├── AbstractTaskLauncherIntegrationJUnit5Tests.java
│ │ └── Timeout.java
│ └── resources/
│ └── integration-test-app.properties
├── spring-cloud-deployer-spi-test-app/
│ ├── Dockerfile
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ └── test/
│ │ └── app/
│ │ ├── DeployerIntegrationTest.java
│ │ ├── DeployerIntegrationTestApplication.java
│ │ └── DeployerIntegrationTestProperties.java
│ └── resources/
│ └── application.properties
└── src/
├── main/
│ ├── java/
│ │ └── org/
│ │ └── springframework/
│ │ └── cloud/
│ │ └── deployer/
│ │ └── spi/
│ │ ├── kubernetes/
│ │ │ ├── DefaultContainerFactory.java
│ │ │ ├── HttpProbeCreator.java
│ │ │ ├── KubernetesAppDeployer.java
│ │ │ ├── KubernetesAppInstanceStatus.java
│ │ │ ├── KubernetesDeployerProperties.java
│ │ │ ├── LivenessCommandProbeCreator.java
│ │ │ ├── LivenessHttpProbeCreator.java
│ │ │ ├── LivenessTcpProbeCreator.java
│ │ │ ├── ProbeCreator.java
│ │ │ ├── ProbeCreatorFactory.java
│ │ │ ├── ReadinessCommandProbeCreator.java
│ │ │ ├── ReadinessHttpProbeCreator.java
│ │ │ └── ReadinessTcpProbeCreator.java
│ │ └── local/
│ │ ├── AbstractLocalDeployerSupport.java
│ │ ├── CommandBuilder.java
│ │ ├── DebugAddress.java
│ │ ├── DeployerSocketUtils.java
│ │ ├── DockerCommandBuilder.java
│ │ ├── HttpProbeExecutor.java
│ │ ├── JavaCommandBuilder.java
│ │ ├── LocalActuatorTemplate.java
│ │ ├── LocalAppDeployer.java
│ │ ├── LocalDeployerAutoConfiguration.java
│ │ ├── LocalDeployerProperties.java
│ │ ├── LocalDeployerUtils.java
│ │ └── LocalTaskLauncher.java
│ └── resources/
│ └── META-INF/
│ ├── additional-spring-configuration-metadata.json
│ ├── spring/
│ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│ └── spring.factories
├── scripts/
│ ├── next-minor-parent-snapshot-version
│ ├── next-minor-snapshot-version
│ ├── next-parent-snapshot-version
│ └── next-snapshot-version
└── test/
├── java/
│ └── org/
│ └── springframework/
│ └── cloud/
│ └── deployer/
│ └── spi/
│ ├── kubernetes/
│ │ ├── DefaultContainerFactoryTests.java
│ │ ├── KubernetesAppDeployerIntegrationIT.java
│ │ ├── KubernetesAppDeployerTests.java
│ │ ├── KubernetesTaskLauncherIntegrationIT.java
│ │ └── KubernetesTaskLauncherWithJobIntegrationIT.java
│ └── local/
│ ├── DebugAddressTests.java
│ ├── DeployerSocketUtilsTests.java
│ ├── DockerCommandBuilderTests.java
│ ├── JavaExecutionCommandBuilderTests.java
│ ├── LocalAppDeployerEnvironmentIntegrationTests.java
│ ├── LocalAppDeployerIntegrationTests.java
│ ├── LocalDeployerPropertiesTests.java
│ ├── LocalDeployerSupportTests.java
│ ├── LocalTaskLauncherIntegrationTests.java
│ ├── RandomPortRangeContextTests.java
│ ├── RandomPortRangeTests.java
│ └── RandomPortTests.java
└── resources/
├── dataflow-server-podsecuritycontext.yml
└── testResource.txt
Showing preview only (336K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3737 symbols across 245 files)
FILE: spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/DelegatingResourceLoaderBuilder.java
class DelegatingResourceLoaderBuilder (line 32) | public class DelegatingResourceLoaderBuilder {
method loaders (line 42) | public DelegatingResourceLoaderBuilder loaders(Map<String, ResourceLoa...
method loader (line 54) | public DelegatingResourceLoaderBuilder loader(String scheme, ResourceL...
method build (line 64) | public DelegatingResourceLoader build() {
FILE: spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/DelegatingResourceLoaderBuilderCustomizer.java
type DelegatingResourceLoaderBuilderCustomizer (line 27) | @FunctionalInterface
method customize (line 35) | void customize(DelegatingResourceLoaderBuilder builder);
FILE: spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/MavenConfigurationProperties.java
class MavenConfigurationProperties (line 27) | @ConfigurationProperties(prefix = "maven")
FILE: spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/ResourceLoadingAutoConfiguration.java
class ResourceLoadingAutoConfiguration (line 36) | @Configuration
class MavenResourceLoaderConfig (line 39) | @Configuration
method mavenDelegatingResourceLoaderBuilderCustomizer (line 44) | @Bean
class DelegatingResourceLoaderConfig (line 51) | @Configuration
method DelegatingResourceLoaderConfig (line 57) | public DelegatingResourceLoaderConfig(
method delegatingResourceLoader (line 62) | @Bean
FILE: spring-cloud-deployer-autoconfigure/src/test/java/org/springframework/cloud/deployer/autoconfigure/ResourceLoadingAutoConfigurationTests.java
class ResourceLoadingAutoConfigurationTests (line 40) | public class ResourceLoadingAutoConfigurationTests {
method getResource (line 44) | @Override
method getClassLoader (line 49) | @Override
method testAutoConfigNoProperties (line 71) | @Test
method testMavenProperties (line 80) | @Test
method testBuilderRegistration (line 88) | @Test
method testBuilderOrderRegistration (line 96) | @Test
class CustomBuilderCustomizerConfig (line 104) | @Configuration
method foobarDelegatingResourceLoaderBuilderCustomizer (line 107) | @Bean
class MavenReplacingBuilderCustomizerConfig (line 113) | @Configuration
method foobarDelegatingResourceLoaderBuilderCustomizer (line 116) | @Bean
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/AbstractCloudFoundryDeployer.java
class AbstractCloudFoundryDeployer (line 68) | class AbstractCloudFoundryDeployer {
method AbstractCloudFoundryDeployer (line 79) | AbstractCloudFoundryDeployer(CloudFoundryDeploymentProperties deployme...
method memory (line 84) | int memory(AppDeploymentRequest request) {
method memory (line 90) | int memory(AppScaleRequest request) {
method diskQuota (line 98) | int diskQuota(AppScaleRequest request) {
method servicesToBind (line 106) | Set<String> servicesToBind(AppDeploymentRequest request) {
method includesServiceParameters (line 122) | boolean includesServiceParameters(AppDeploymentRequest request) {
method bindParameterizedServiceInstanceRequests (line 131) | Stream<BindServiceInstanceRequest> bindParameterizedServiceInstanceReq...
method diskQuota (line 145) | int diskQuota(AppDeploymentRequest request) {
method buildpacks (line 151) | Set<String> buildpacks(AppDeploymentRequest request) {
method javaOpts (line 173) | String javaOpts(AppDeploymentRequest request) {
method isNotFoundError (line 180) | Predicate<Throwable> isNotFoundError() {
method getDockerImage (line 189) | String getDockerImage(AppDeploymentRequest request) {
method getApplication (line 207) | Path getApplication(AppDeploymentRequest request) {
method logError (line 227) | protected Consumer<Throwable> logError(String msg) {
method statusRetry (line 243) | <T> Function<Mono<T>, Mono<T>> statusRetry(String id) {
method deleteLocalApplicationResourceFile (line 292) | protected void deleteLocalApplicationResourceFile(AppDeploymentRequest...
method fileToDelete (line 320) | private Optional<File> fileToDelete(Resource resource) throws IOExcept...
method deleteFileOrDirectory (line 331) | private boolean deleteFileOrDirectory(File fileToDelete) {
method mergeEnvironmentVariables (line 345) | protected Map<String, String> mergeEnvironmentVariables(String deploym...
method getDeclaredEnvironmentVariables (line 364) | private Map<? extends String,? extends String> getDeclaredEnvironmentV...
method hasCfEnv (line 373) | protected boolean hasCfEnv(Resource resource) {
method getApplicationProperties (line 380) | private Map<String, String> getApplicationProperties(String deployment...
method getSanitizedApplicationProperties (line 394) | private Map<String, String> getSanitizedApplicationProperties(String d...
method useSpringApplicationJson (line 409) | private boolean useSpringApplicationJson(AppDeploymentRequest request) {
method environmentInfo (line 418) | public RuntimeEnvironmentInfo environmentInfo() {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/AbstractCloudFoundryTaskLauncher.java
class AbstractCloudFoundryTaskLauncher (line 51) | abstract class AbstractCloudFoundryTaskLauncher extends AbstractCloudFou...
method AbstractCloudFoundryTaskLauncher (line 61) | AbstractCloudFoundryTaskLauncher(CloudFoundryClient client,
method cancel (line 77) | @Override
method status (line 92) | @Override
method getRunningTaskExecutionCount (line 106) | @Override
method getMaximumConcurrentTasks (line 125) | @Override
method maxConcurrentExecutionsReached (line 130) | protected boolean maxConcurrentExecutionsReached() {
method getStatus (line 134) | private Mono<TaskStatus> getStatus(String id) {
method createErrorTaskStatus (line 145) | private TaskStatus createErrorTaskStatus(String id) {
method toTaskStatus (line 149) | protected TaskStatus toTaskStatus(GetTaskResponse response) {
method requestCancelTask (line 172) | private Mono<CancelTaskResponse> requestCancelTask(String taskId) {
method requestGetTask (line 179) | private Mono<GetTaskResponse> requestGetTask(String taskId) {
method organizationId (line 186) | private Mono<String> organizationId() {
method spaceId (line 197) | private Mono<String> spaceId() {
method cleanup (line 208) | @Override
method destroy (line 213) | @Override
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/AppNameGenerator.java
type AppNameGenerator (line 24) | public interface AppNameGenerator {
method generateAppName (line 32) | String generateAppName(String appName);
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/ApplicationLogAccessor.java
class ApplicationLogAccessor (line 41) | public class ApplicationLogAccessor {
method ApplicationLogAccessor (line 48) | public ApplicationLogAccessor(LogCacheClient logCacheClient) {
method getLog (line 59) | public String getLog(String deploymentId, Duration apiTimeout) {
method responseToEnvelope (line 89) | private Flux<Log> responseToEnvelope(ReadResponse response) {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvAwareAppDeploymentRequest.java
class CfEnvAwareAppDeploymentRequest (line 27) | class CfEnvAwareAppDeploymentRequest extends AppDeploymentRequest {
method of (line 29) | static CfEnvAwareAppDeploymentRequest of(AppDeploymentRequest appDeplo...
method CfEnvAwareAppDeploymentRequest (line 33) | private CfEnvAwareAppDeploymentRequest(AppDeploymentRequest appDeploym...
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvAwareResource.java
class CfEnvAwareResource (line 44) | class CfEnvAwareResource implements Resource {
method of (line 49) | static CfEnvAwareResource of(Resource resource) {
method CfEnvAwareResource (line 52) | private CfEnvAwareResource(Resource resource) {
method exists (line 57) | @Override
method getURL (line 62) | @Override
method getURI (line 67) | @Override
method getFile (line 72) | @Override
method contentLength (line 77) | @Override
method lastModified (line 82) | @Override
method createRelative (line 87) | @Override
method getFilename (line 92) | @Override
method getDescription (line 97) | @Override
method getInputStream (line 102) | @Override
method hasCfEnv (line 107) | boolean hasCfEnv() {
class CfEnvResolver (line 115) | static class CfEnvResolver {
method hasCfEnv (line 121) | static boolean hasCfEnv(CfEnvAwareResource app
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvConfigurer.java
class CfEnvConfigurer (line 35) | class CfEnvConfigurer {
method disableJavaBuildPackAutoReconfiguration (line 58) | static Map<String, String> disableJavaBuildPackAutoReconfiguration(Map...
method activateCloudProfile (line 72) | static Map<String, String> activateCloudProfile(Map<String, String> en...
method appendCloudProfileToSpringProfilesActiveArg (line 100) | static String appendCloudProfileToSpringProfilesActiveArg(String arg) {
method appendToExistingEntry (line 110) | private static boolean appendToExistingEntry(Map<String, String> envir...
method appendToValueIfPresent (line 119) | private static String appendToValueIfPresent(String current, String va...
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryActuatorTemplate.java
class CloudFoundryActuatorTemplate (line 34) | public class CloudFoundryActuatorTemplate extends AbstractActuatorTempla...
method CloudFoundryActuatorTemplate (line 36) | public CloudFoundryActuatorTemplate(RestTemplate restTemplate, AppDepl...
method actuatorUrlForInstance (line 40) | @Override
method httpHeadersForInstance (line 46) | @Override
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppDeployer.java
class CloudFoundryAppDeployer (line 73) | public class CloudFoundryAppDeployer extends AbstractCloudFoundryDeploye...
method CloudFoundryAppDeployer (line 88) | public CloudFoundryAppDeployer(
method deploy (line 101) | @Override
method states (line 138) | @Override
method statesReactive (line 145) | @Override
method mapShallowAppState (line 151) | private DeploymentState mapShallowAppState(ApplicationSummary applicat...
method mergeEnvironmentVariables (line 161) | @Override
method getCommandLineArguments (line 175) | private Map<String, String> getCommandLineArguments(AppDeploymentReque...
method status (line 187) | @Override
method statusReactive (line 200) | @Override
method undeploy (line 205) | @Override
method getLog (line 218) | @Override
method scale (line 229) | @Override
method assertApplicationDoesNotExist (line 250) | private void assertApplicationDoesNotExist(String deploymentId, AppSta...
method assertApplicationExists (line 257) | private void assertApplicationExists(String deploymentId, AppStatus st...
method createAppStatus (line 264) | private AppStatus createAppStatus(ApplicationDetail applicationDetail,...
method createEmptyAppStatus (line 281) | private AppStatus createEmptyAppStatus(String deploymentId) {
method createErrorAppStatus (line 286) | private AppStatus createErrorAppStatus(String deploymentId) {
method deploymentId (line 292) | private String deploymentId(AppDeploymentRequest request) {
method domain (line 302) | private String domain(AppDeploymentRequest request) {
method getStatus (line 309) | private Mono<AppStatus> getStatus(String deploymentId) {
method healthCheck (line 320) | private ApplicationHealthCheck healthCheck(AppDeploymentRequest reques...
method healthCheckEndpoint (line 327) | private String healthCheckEndpoint(AppDeploymentRequest request) {
method healthCheckTimeout (line 334) | private Integer healthCheckTimeout(AppDeploymentRequest request) {
method host (line 341) | private String host(AppDeploymentRequest request) {
method instances (line 347) | private int instances(AppDeploymentRequest request) {
method pushApplication (line 353) | private Mono<Void> pushApplication(String deploymentId, AppDeploymentR...
method pushApplicationWithNoServiceParameters (line 393) | private Mono<Void> pushApplicationWithNoServiceParameters(ApplicationM...
method requestBind (line 404) | private Mono<Void> requestBind(BindServiceInstanceRequest bindRequest) {
method pushApplicationWithServiceParameters (line 438) | private Mono<Void> pushApplicationWithServiceParameters(
method requestDeleteApplication (line 469) | private Mono<Void> requestDeleteApplication(String id) {
method requestGetApplication (line 477) | private Mono<ApplicationDetail> requestGetApplication(String id) {
method getApplicationDetail (line 497) | private Mono<ApplicationDetail> getApplicationDetail(String id) {
method requestPushApplication (line 504) | private Mono<Void> requestPushApplication(PushApplicationManifestReque...
method requestSummary (line 509) | private Flux<ApplicationSummary> requestSummary() {
method routePath (line 513) | private String routePath(AppDeploymentRequest request) {
method route (line 522) | private String route(AppDeploymentRequest request) {
method routes (line 526) | private Set<String> routes(AppDeploymentRequest request) {
method toApplicationHealthCheck (line 534) | private ApplicationHealthCheck toApplicationHealthCheck(String raw) {
method toggleNoRoute (line 543) | private Boolean toggleNoRoute(AppDeploymentRequest request) {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppInstanceStatus.java
class CloudFoundryAppInstanceStatus (line 35) | public class CloudFoundryAppInstanceStatus implements AppInstanceStatus {
method CloudFoundryAppInstanceStatus (line 60) | public CloudFoundryAppInstanceStatus(ApplicationDetail applicationDeta...
method getId (line 66) | @Override
method getState (line 71) | @Override
method getAttributes (line 94) | @Override
method toString (line 125) | @Override
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppNameGenerator.java
class CloudFoundryAppNameGenerator (line 43) | public class CloudFoundryAppNameGenerator implements AppNameGenerator, I...
method CloudFoundryAppNameGenerator (line 54) | public CloudFoundryAppNameGenerator(CloudFoundryDeploymentProperties c...
method afterPropertiesSet (line 58) | @Override
method generateAppName (line 74) | @Override
method createUniquePrefix (line 84) | private String createUniquePrefix() {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryConnectionProperties.java
class CloudFoundryConnectionProperties (line 31) | @Validated
method getOrg (line 92) | public String getOrg() {
method setOrg (line 96) | public void setOrg(String org) {
method getSpace (line 100) | public String getSpace() {
method setSpace (line 104) | public void setSpace(String space) {
method getUrl (line 108) | public URL getUrl() {
method setUrl (line 112) | public void setUrl(URL url) {
method getClientId (line 116) | public String getClientId() {
method setClientId (line 120) | public void setClientId(String clientId) {
method getClientSecret (line 124) | public String getClientSecret() {
method setClientSecret (line 128) | public void setClientSecret(String clientSecret) {
method getUsername (line 132) | public String getUsername() {
method setUsername (line 136) | public void setUsername(String username) {
method getPassword (line 140) | public String getPassword() {
method setPassword (line 144) | public void setPassword(String password) {
method isSkipSslValidation (line 148) | public boolean isSkipSslValidation() {
method setSkipSslValidation (line 152) | public void setSkipSslValidation(boolean skipSslValidation) {
method getLoginHint (line 156) | public String getLoginHint() {
method setLoginHint (line 160) | public void setLoginHint(String loginHint) {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryDeployerAutoConfiguration.java
class CloudFoundryDeployerAutoConfiguration (line 61) | @Configuration
method cloudFoundryOperations (line 71) | @Bean
method runtimeEnvironmentInfo (line 81) | private RuntimeEnvironmentInfo runtimeEnvironmentInfo(Class spiClass, ...
method appDeployer (line 102) | @Bean
method actuatorOperations (line 117) | @Bean
method actuatorRestTemplate (line 123) | @Bean
method appDeploymentCustomizer (line 128) | @Bean
method taskLauncher (line 134) | @Bean
method logHelper (line 159) | @Bean
method durationConverter (line 165) | @Bean
class EarlyConnectionConfiguration (line 178) | @Configuration
method appDeploymentProperties (line 182) | @Bean
method taskDeploymentProperties (line 189) | @Bean
method defaultSharedDeploymentProperties (line 195) | @Bean
method version (line 201) | @Bean
method cloudFoundryClient (line 215) | @Bean
method logCacheClient (line 224) | @Bean
method tokenProvider (line 233) | @Bean
method cloudFoundryConnectionProperties (line 249) | @Bean
method connectionContext (line 256) | @Bean
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryDeploymentProperties.java
class CloudFoundryDeploymentProperties (line 47) | @Validated
method getServices (line 243) | public Set<String> getServices() {
method setServices (line 247) | public void setServices(Set<String> services) {
method getBuildpack (line 251) | @Deprecated
method setBuildpack (line 256) | @Deprecated
method getBuildpacks (line 261) | public Set<String> getBuildpacks() {
method setBuildpacks (line 265) | public void setBuildpacks(Set<String> buildpacks) {
method getMemory (line 269) | public String getMemory() {
method setMemory (line 273) | public void setMemory(String memory) {
method getDisk (line 277) | public String getDisk() {
method setDisk (line 281) | public void setDisk(String disk) {
method getInstances (line 285) | public int getInstances() {
method setInstances (line 289) | public void setInstances(int instances) {
method isEnableRandomAppNamePrefix (line 293) | public boolean isEnableRandomAppNamePrefix() {
method setEnableRandomAppNamePrefix (line 297) | public void setEnableRandomAppNamePrefix(boolean enableRandomAppNamePr...
method getAppNamePrefix (line 301) | public String getAppNamePrefix() {
method setAppNamePrefix (line 305) | public void setAppNamePrefix(String appNamePrefix) {
method getApiTimeout (line 309) | public long getApiTimeout() {
method setApiTimeout (line 313) | public void setApiTimeout(long apiTimeout) {
method isUseSpringApplicationJson (line 317) | public boolean isUseSpringApplicationJson() {
method setUseSpringApplicationJson (line 321) | public void setUseSpringApplicationJson(boolean useSpringApplicationJs...
method getHealthCheck (line 325) | public ApplicationHealthCheck getHealthCheck() {
method setHealthCheck (line 329) | public void setHealthCheck(ApplicationHealthCheck healthCheck) {
method getHealthCheckHttpEndpoint (line 333) | public String getHealthCheckHttpEndpoint() {
method setHealthCheckHttpEndpoint (line 337) | public void setHealthCheckHttpEndpoint(String healthCheckHttpEndpoint) {
method getHealthCheckTimeout (line 341) | public String getHealthCheckTimeout() {
method setHealthCheckTimeout (line 345) | public void setHealthCheckTimeout(String healthCheckTimeout) {
method getDomain (line 349) | public String getDomain() {
method setDomain (line 353) | public void setDomain(String domain) {
method getHost (line 357) | public String getHost() {
method setHost (line 361) | public void setHost(String host) {
method getRoutes (line 365) | public Set<String> getRoutes() {
method setRoutes (line 369) | public void setRoutes(Set<String> routes) {
method getStagingTimeout (line 373) | public Duration getStagingTimeout() {
method setStagingTimeout (line 377) | public void setStagingTimeout(Duration stagingTimeout) {
method getStartupTimeout (line 381) | public Duration getStartupTimeout() {
method setStartupTimeout (line 385) | public void setStartupTimeout(Duration startupTimeout) {
method getStatusTimeout (line 389) | public long getStatusTimeout() {
method setStatusTimeout (line 393) | public void setStatusTimeout(long statusTimeout) {
method isDeleteRoutes (line 397) | public boolean isDeleteRoutes() {
method setDeleteRoutes (line 401) | public void setDeleteRoutes(boolean deleteRoutes) {
method getJavaOpts (line 405) | public String getJavaOpts() {
method setJavaOpts (line 409) | public void setJavaOpts(String javaOpts) {
method getMaximumConcurrentTasks (line 413) | public int getMaximumConcurrentTasks() {
method setMaximumConcurrentTasks (line 417) | public void setMaximumConcurrentTasks(int maximumConcurrentTasks) {
method isPushTaskAppsEnabled (line 421) | public boolean isPushTaskAppsEnabled() {
method setPushTaskAppsEnabled (line 425) | public void setPushTaskAppsEnabled(boolean pushTaskAppsEnabled) {
method isAutoDeleteMavenArtifacts (line 429) | public boolean isAutoDeleteMavenArtifacts() {
method setAutoDeleteMavenArtifacts (line 433) | public void setAutoDeleteMavenArtifacts(boolean autoDeleteMavenArtifac...
method getEnv (line 437) | public Map<String, String> getEnv() {
method setEnv (line 441) | public void setEnv(@NotNull Map<String, String> env) {
method getSchedulerUrl (line 449) | public String getSchedulerUrl() {
method setSchedulerUrl (line 453) | public void setSchedulerUrl(String schedulerUrl) {
method getScheduleSSLRetryCount (line 457) | public int getScheduleSSLRetryCount() {
method setScheduleSSLRetryCount (line 461) | public void setScheduleSSLRetryCount(int scheduleSSLRetryCount) {
method getUnScheduleTimeoutInSeconds (line 465) | public int getUnScheduleTimeoutInSeconds() {
method setUnScheduleTimeoutInSeconds (line 469) | public void setUnScheduleTimeoutInSeconds(int unScheduleTimeoutInSecon...
method getScheduleTimeoutInSeconds (line 473) | public int getScheduleTimeoutInSeconds() {
method setScheduleTimeoutInSeconds (line 477) | public void setScheduleTimeoutInSeconds(int scheduleTimeoutInSeconds) {
method getListTimeoutInSeconds (line 481) | public int getListTimeoutInSeconds() {
method setListTimeoutInSeconds (line 485) | public void setListTimeoutInSeconds(int listTimeoutInSeconds) {
method getAppAdmin (line 489) | public AppAdmin getAppAdmin() {
method setAppAdmin (line 493) | public void setAppAdmin(AppAdmin appAdmin) {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryPlatformSpecificInfo.java
class CloudFoundryPlatformSpecificInfo (line 27) | public class CloudFoundryPlatformSpecificInfo {
method CloudFoundryPlatformSpecificInfo (line 42) | public CloudFoundryPlatformSpecificInfo(RuntimeEnvironmentInfo.Builder...
method apiEndpoint (line 46) | public CloudFoundryPlatformSpecificInfo apiEndpoint(String apiEndpoint) {
method org (line 51) | public CloudFoundryPlatformSpecificInfo org(String org) {
method space (line 56) | public CloudFoundryPlatformSpecificInfo space(String space) {
method builder (line 61) | public RuntimeEnvironmentInfo.Builder builder() {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryTaskLauncher.java
class CloudFoundryTaskLauncher (line 63) | public class CloudFoundryTaskLauncher extends AbstractCloudFoundryTaskLa...
method CloudFoundryTaskLauncher (line 75) | public CloudFoundryTaskLauncher(CloudFoundryClient client,
method launch (line 94) | @Override
method destroy (line 118) | @Override
method getLog (line 132) | @Override
method stage (line 149) | public SummaryApplicationResponse stage(AppDeploymentRequest request) {
method getCommand (line 162) | public String getCommand(SummaryApplicationResponse application, AppDe...
method escapeChar (line 179) | private String escapeChar(String value, String character) {
method pushTaskAppsEnabled (line 186) | private boolean pushTaskAppsEnabled() {
method deployApplication (line 190) | private Mono<AbstractApplicationSummary> deployApplication(AppDeployme...
method getOptionalApplication (line 201) | private Mono<AbstractApplicationSummary> getOptionalApplication(AppDep...
method getOrDeployApplication (line 221) | private Mono<SummaryApplicationResponse> getOrDeployApplication(AppDep...
method launchTask (line 227) | private Mono<String> launchTask(SummaryApplicationResponse application...
method pushApplication (line 236) | private Mono<Void> pushApplication(String name, AppDeploymentRequest r...
method requestCreateTask (line 260) | private Mono<CreateTaskResponse> requestCreateTask(String applicationI...
method requestDeleteApplication (line 271) | private Mono<Void> requestDeleteApplication(String name) {
method requestGetApplication (line 279) | private Mono<ApplicationDetail> requestGetApplication(String name) {
method requestGetApplicationSummary (line 286) | private Mono<SummaryApplicationResponse> requestGetApplicationSummary(...
method requestListApplications (line 293) | private Flux<ApplicationSummary> requestListApplications() {
method requestPushApplication (line 298) | private Mono<Void> requestPushApplication(PushApplicationManifestReque...
method requestStopApplication (line 303) | private Mono<Void> requestStopApplication(String name) {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/DurationConverter.java
class DurationConverter (line 30) | public class DurationConverter implements Converter <String, Duration> {
method convert (line 32) | @Override
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/ServiceParser.java
class ServiceParser (line 37) | abstract class ServiceParser {
method getServiceParameters (line 47) | static Optional<Map<String, String>> getServiceParameters(String servi...
method getServiceInstanceName (line 63) | static String getServiceInstanceName(String serviceSpec) {
method splitServiceProperties (line 72) | static List<String> splitServiceProperties(String serviceProperties) {
method parseParameters (line 96) | private static Optional<Map<String, String>> parseParameters(
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/UnsupportedVersionTaskLauncher.java
class UnsupportedVersionTaskLauncher (line 35) | public class UnsupportedVersionTaskLauncher implements TaskLauncher {
method UnsupportedVersionTaskLauncher (line 43) | public UnsupportedVersionTaskLauncher(Version actualVersion, RuntimeEn...
method launch (line 48) | @Override
method cancel (line 53) | @Override
method status (line 58) | @Override
method cleanup (line 63) | @Override
method destroy (line 68) | @Override
method environmentInfo (line 73) | @Override
method getMaximumConcurrentTasks (line 77) | @Override
method getRunningTaskExecutionCount (line 81) | @Override
method getLog (line 86) | @Override
method failure (line 91) | private UnsupportedOperationException failure() {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundryAppScheduler.java
class CloudFoundryAppScheduler (line 72) | public class CloudFoundryAppScheduler implements Scheduler {
method CloudFoundryAppScheduler (line 90) | @Deprecated
method CloudFoundryAppScheduler (line 113) | public CloudFoundryAppScheduler(SchedulerClient client, CloudFoundryOp...
method schedule (line 130) | @Override
method unschedule (line 194) | @Override
method list (line 203) | @Override
method list (line 210) | @Override
method scheduleTask (line 232) | private void scheduleTask(String appName, String scheduleName,
method stageTask (line 271) | private String stageTask(ScheduleRequest scheduleRequest) {
method getApplicationByAppName (line 287) | private Mono<AbstractApplicationSummary> getApplicationByAppName(Strin...
method requestListApplications (line 297) | private Flux<ApplicationSummary> requestListApplications() {
method cacheAppSummaries (line 305) | private Flux<ApplicationSummary> cacheAppSummaries() {
method requestSpaces (line 314) | private Flux<SpaceSummary> requestSpaces() {
method getSpace (line 324) | private Mono<SpaceSummary> getSpace(String spaceName) {
method getApplication (line 337) | private Mono<ApplicationSummary> getApplication(Flux<ApplicationSummar...
method getSchedules (line 353) | private Flux<ScheduleInfo> getSchedules(int pageNumber) {
method getJobPageCount (line 385) | private int getJobPageCount() {
method getJobMono (line 403) | private Mono<Job> getJobMono(String jobName, int page) {
method getJob (line 421) | private String getJob(String jobName) {
method retryTemplate (line 437) | private RetryTemplate retryTemplate() {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundryScheduleSSLException.java
class CloudFoundryScheduleSSLException (line 24) | public class CloudFoundryScheduleSSLException extends RuntimeException {
method CloudFoundryScheduleSSLException (line 26) | public CloudFoundryScheduleSSLException(String message, Throwable t) {
method CloudFoundryScheduleSSLException (line 30) | public CloudFoundryScheduleSSLException(String t) {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundrySchedulerProperties.java
class CloudFoundrySchedulerProperties (line 29) | @Validated
method getSchedulerUrl (line 67) | public String getSchedulerUrl() {
method setSchedulerUrl (line 71) | public void setSchedulerUrl(String schedulerUrl) {
method getScheduleSSLRetryCount (line 75) | public int getScheduleSSLRetryCount() {
method setScheduleSSLRetryCount (line 79) | public void setScheduleSSLRetryCount(int scheduleSSLRetryCount) {
method getUnScheduleTimeoutInSeconds (line 83) | public int getUnScheduleTimeoutInSeconds() {
method setUnScheduleTimeoutInSeconds (line 87) | public void setUnScheduleTimeoutInSeconds(int unScheduleTimeoutInSecon...
method getScheduleTimeoutInSeconds (line 91) | public int getScheduleTimeoutInSeconds() {
method setScheduleTimeoutInSeconds (line 95) | public void setScheduleTimeoutInSeconds(int scheduleTimeoutInSeconds) {
method getListTimeoutInSeconds (line 99) | public int getListTimeoutInSeconds() {
method setListTimeoutInSeconds (line 103) | public void setListTimeoutInSeconds(int listTimeoutInSeconds) {
FILE: spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/expression/QuartzCronExpression.java
class QuartzCronExpression (line 40) | public final class QuartzCronExpression {
method QuartzCronExpression (line 104) | public QuartzCronExpression(String cronExpression) throws ParseExcepti...
method toString (line 119) | @Override
method buildExpression (line 131) | protected void buildExpression(String expression) throws ParseException {
method checkIncrementRange (line 216) | private void checkIncrementRange(int incr, int type, int idxPos) throw...
method checkNext (line 230) | protected int checkNext(int pos, String s, int val, int type)
method skipWhiteSpace (line 365) | protected int skipWhiteSpace(int i, String s) {
method findNextWhiteSpace (line 373) | protected int findNextWhiteSpace(int i, String s) {
method addToSet (line 381) | protected void addToSet(int val, int end, int incr, int type)
method getSet (line 528) | TreeSet<Integer> getSet(int type) {
method getValue (line 549) | protected ValueSet getValue(int v, String s, int i) {
method getNumericValue (line 567) | protected int getNumericValue(String s, int i) {
method getMonthNumber (line 573) | protected int getMonthNumber(String s) {
method getDayOfWeekNumber (line 583) | protected int getDayOfWeekNumber(String s) {
method storeExpressionVals (line 594) | protected int storeExpressionVals(int pos, String s, int type)
class ValueSet (line 772) | public static class ValueSet {
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/AbstractAppDeployerTestSupport.java
class AbstractAppDeployerTestSupport (line 48) | public abstract class AbstractAppDeployerTestSupport {
method setUp (line 78) | @BeforeEach
method postSetUp (line 88) | protected abstract void postSetUp();
method givenRequestScaleApplication (line 90) | protected void givenRequestScaleApplication(String id, Integer count, ...
method givenRequestDeleteApplication (line 99) | protected void givenRequestDeleteApplication(String id, Mono<Void> res...
method givenRequestGetApplication (line 104) | @SuppressWarnings("unchecked")
method givenRequestPushApplication (line 111) | protected void givenRequestPushApplication(PushApplicationManifestRequ...
method defaultEnvironmentVariables (line 117) | protected Map<String, String> defaultEnvironmentVariables() {
method addGuidAndIndex (line 124) | protected void addGuidAndIndex(Map<String, String> environmentVariable...
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/ApplicationLogAccessorTests.java
class ApplicationLogAccessorTests (line 37) | @ExtendWith(MockitoExtension.class)
method testDefaultCase (line 43) | @Test
method getSampleResponse (line 52) | private Mono<ReadResponse> getSampleResponse(String sampleData) {
method getSampleLog (line 58) | private Log getSampleLog(String sampleData) {
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvAwareResourceTests.java
class CfEnvAwareResourceTests (line 36) | public class CfEnvAwareResourceTests {
method testCfEnvResolverWithCfEnvJava17 (line 38) | @Test
method testCfEnvResolverWithCfEnv (line 46) | @Test
method testCfEnvResolverWithNoCfEnv (line 52) | @Test
method testDoesNothingWithDocker (line 58) | @Test
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvConfigurerTests.java
class CfEnvConfigurerTests (line 27) | public class CfEnvConfigurerTests {
method testCfEnvConfigurerActivateCloudProfile (line 29) | @Test
method testCfEnvConfigurerDoNotActivateCloudProfileIfNoneExists (line 40) | @Test
method testCfEnvConfigurerActivateCloudProfileWithEmptyValue (line 49) | @Test
method testCfEnvConfigurerAppendToActiveProfiles (line 62) | @Test
method testCfEnvConfigurerDoesNotAppendCloudProfileIfAlreadyThere (line 73) | @Test
method testCloudProfileAppendedToCommandLineArgs (line 88) | @Test
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryActuatorTemplateTests.java
class CloudFoundryActuatorTemplateTests (line 42) | public class CloudFoundryActuatorTemplateTests extends AbstractAppDeploy...
method postSetUp (line 49) | @Override
method actuatorInfo (line 82) | @Test
method actuatorBindings (line 89) | @Test
method actuatorBindingInput (line 97) | @Test
method actuatorPostBindingInput (line 104) | @Test
method getUrl (line 112) | public static String getUrl(int port) {
method findRandomOpenPort (line 115) | public static int findRandomOpenPort() {
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppDeployerIntegrationIT.java
class CloudFoundryAppDeployerIntegrationIT (line 41) | @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.NONE,
method provideAppDeployer (line 49) | @Override
method init (line 62) | @BeforeEach
method testCommandLineArgumentsPassing (line 70) | @Override
method randomName (line 76) | @Override
method deploymentTimeout (line 83) | @Override
method undeploymentTimeout (line 88) | @Override
class Config (line 98) | @Configuration
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppDeployerTests.java
class CloudFoundryAppDeployerTests (line 83) | public class CloudFoundryAppDeployerTests extends AbstractAppDeployerTes...
method postSetUp (line 88) | @Override
method deploy (line 96) | @SuppressWarnings("unchecked")
method getLog (line 138) | @Test
method getLogWithNoResult (line 150) | @Test
method deployMavenArtifactShouldDeleteByDefault (line 162) | @Test
method deployMavenArtifactShouldNotDeleteIfConfigured (line 177) | @Test
method deployHttpArtifactShouldDelete (line 197) | @Test
method deployResource (line 213) | @SuppressWarnings("unchecked")
method deployWithServiceParameters (line 248) | @SuppressWarnings("unchecked")
method deployWithServiceParametersAndBindingError (line 296) | @SuppressWarnings("unchecked")
method deployWithAdditionalProperties (line 359) | @SuppressWarnings("unchecked")
method deployWithAdditionalPropertiesInSpringApplicationJson (line 407) | @SuppressWarnings("unchecked")
method deployWithDeployerEnvironmentVariables (line 453) | @Test
method applicationDetailRunningApp (line 506) | private Mono<ApplicationDetail> applicationDetailRunningApp() {
method automaticallyConfigureForCfEnv (line 520) | @Test
method deployWithApplicationDeploymentProperties (line 541) | @SuppressWarnings("unchecked")
method deployWithInvalidRoutePathProperty (line 597) | @SuppressWarnings("unchecked")
method deployWithCustomDeploymentProperties (line 661) | @SuppressWarnings("unchecked")
method deployWithMultipleRoutes (line 714) | @SuppressWarnings("unchecked")
method deployWithMultipleRoutesAndHostOrDomainMutuallyExclusive (line 769) | @SuppressWarnings("unchecked")
method deployWithGroup (line 797) | @SuppressWarnings("unchecked")
method deployDockerResource (line 844) | @SuppressWarnings("unchecked")
method statusOfCrashedApplicationIsFailed (line 885) | @SuppressWarnings("unchecked")
method statusOfDownApplicationIsDeploying (line 905) | @SuppressWarnings("unchecked")
method statusOfFlappingApplicationIsDeployed (line 925) | @SuppressWarnings("unchecked")
method statusOfRunningApplicationIsDeployed (line 945) | @SuppressWarnings("unchecked")
method statusOfStartingApplicationIsDeploying (line 972) | @SuppressWarnings("unchecked")
method statusOfUnknownApplicationIsUnknown (line 992) | @SuppressWarnings("unchecked")
method statusWithAbnormalInstanceStateThrowsException (line 1012) | @SuppressWarnings("unchecked")
method statusWithFailingCAPICallRetries (line 1032) | @SuppressWarnings("unchecked")
method statusWithFailingCAPICallRetriesEventualError (line 1060) | @SuppressWarnings("unchecked")
method statusWithErrorThrownOnBlocking (line 1089) | @SuppressWarnings("unchecked")
method undeploy (line 1115) | @SuppressWarnings("unchecked")
method scale (line 1135) | @SuppressWarnings("unchecked")
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppNameGeneratorTest.java
class CloudFoundryAppNameGeneratorTest (line 27) | public class CloudFoundryAppNameGeneratorTest {
method testDeploymentIdWithAppNamePrefixAndRandomAppNamePrefixFalse (line 29) | @Test
method testDeploymentIdWithAppNamePrefixAndRandomAppNamePrefixTrue (line 41) | @Test
method testDeploymentIdWithoutAppNamePrefixAndRandomAppNamePrefixTrue (line 58) | @Test
method testDeploymentIdWithoutAppNamePrefixAndRandomAppNamePrefixFalse (line 71) | @Test
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryConnectionPropertiesTests.java
class CloudFoundryConnectionPropertiesTests (line 33) | public class CloudFoundryConnectionPropertiesTests {
method setAllProperties (line 37) | @Test
class Config1 (line 69) | @EnableConfigurationProperties
method testCloudFoundryConnectionProperties (line 72) | @Bean
class TestCloudFoundryConnectionProperties (line 79) | private static class TestCloudFoundryConnectionProperties extends Clou...
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryDeployerTests.java
class CloudFoundryDeployerTests (line 37) | public class CloudFoundryDeployerTests {
method testBuildpacksDefault (line 45) | @Test
method testBuildpacksSingleMultiLogic (line 55) | @Test
class TestCloudFoundryDeployer (line 84) | private static class TestCloudFoundryDeployer extends AbstractCloudFou...
method TestCloudFoundryDeployer (line 86) | TestCloudFoundryDeployer(CloudFoundryDeploymentProperties deployment...
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryTaskLauncherCachingTests.java
class CloudFoundryTaskLauncherCachingTests (line 55) | public class CloudFoundryTaskLauncherCachingTests {
method testOrgSpaceCachingRetries (line 57) | @Test
method listOrganizationsResponse (line 109) | private Mono<ListOrganizationsResponse> listOrganizationsResponse(Atom...
method listSpacesResponse (line 125) | private Mono<ListSpacesResponse> listSpacesResponse(AtomicBoolean erro...
method runningTasksResponse (line 141) | private Mono<ListTasksResponse> runningTasksResponse() {
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryTaskLauncherIntegrationIT.java
class CloudFoundryTaskLauncherIntegrationIT (line 46) | @ContextConfiguration(classes=CloudFoundryTaskLauncherIntegrationIT.Conf...
method init (line 63) | @BeforeEach
method provideTaskLauncher (line 74) | @Override
method pause (line 83) | @AfterEach
method testSimpleCancel (line 88) | @Test
method deploymentTimeout (line 95) | @Override
method undeploymentTimeout (line 100) | @Override
class Config (line 112) | @Configuration
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryTaskLauncherTests.java
class CloudFoundryTaskLauncherTests (line 106) | public class CloudFoundryTaskLauncherTests {
method setUp (line 141) | @BeforeEach
method getCloudFoundryTaskLauncher (line 170) | private CloudFoundryTaskLauncher getCloudFoundryTaskLauncher(Applicati...
method cancel (line 188) | @Test
method currentExecutionCount (line 205) | @Test
method launchTaskApplicationExists (line 210) | @Test
method stageTaskApplicationExists (line 235) | @Test
method launchTaskWithNonExistentApplication (line 261) | @Test
method launchExistingTaskApplicationWithPushDisabled (line 268) | @Test
method launchNonExistingTaskApplicationWithPushDisabled (line 276) | @Test
method stageTaskWithNonExistentApplication (line 285) | @Test
method automaticallyConfigureForCfEnv (line 294) | @Test
method launchTaskWithNonExistentApplicationAndApplicationListingFails (line 314) | @Test
method stageTaskWithNonExistentApplicationAndApplicationListingFails (line 324) | @Test
method launchTaskWithNonExistentApplicationAndPushFails (line 334) | @Test
method stageTaskWithNonExistentApplicationAndPushFails (line 343) | @Test
method launchTaskWithNonExistentApplicationAndRetrievingApplicationSummaryFails (line 352) | @Test
method stageTaskWithNonExistentApplicationAndRetrievingApplicationSummaryFails (line 361) | @Test
method launchTaskWithNonExistentApplicationAndStoppingApplicationFails (line 370) | @Test
method stageTaskWithNonExistentApplicationAndStoppingApplicationFails (line 379) | @Test
method launchTaskWithNonExistentApplicationAndTaskCreationFails (line 388) | @Test
method launchTaskWithNonExistentApplicationBindingOneService (line 440) | @Test
method stageTaskWithNonExistentApplicationBindingOneService (line 450) | @Test
method launchTaskWithNonExistentApplicationBindingThreeServices (line 461) | @Test
method stageTaskWithNonExistentApplicationBindingThreeServices (line 472) | @Test
method launchTaskWithNonExistentApplicationRetrievalFails (line 484) | @Test
method stageTaskWithNonExistentApplicationRetrievalFails (line 493) | @Test
method status (line 502) | @Test
method getDefaultGetTaskResponse (line 514) | private Mono<GetTaskResponse> getDefaultGetTaskResponse() {
method statusTimeout (line 532) | @Test
method destroyApp (line 554) | @Test
method commandProperlyConfigured (line 561) | @Test
method getLog (line 595) | @Test
method getLogForUnknownId (line 599) | @Test
method getLogWithUnknownTaskAppGuid (line 613) | @Test
method givenRequestCancelTask (line 636) | private void givenRequestCancelTask(String taskId, Mono<CancelTaskResp...
method givenRequestCreateTask (line 644) | private void givenRequestCreateTask(String applicationId,
method givenRequestDeleteApplication (line 662) | private void givenRequestDeleteApplication(String appName) {
method givenRequestGetApplication (line 671) | private void givenRequestGetApplication(String name, Mono<ApplicationD...
method givenRequestGetApplicationSummary (line 679) | private void givenRequestGetApplicationSummary(String applicationId, M...
method givenRequestGetTask (line 687) | private void givenRequestGetTask(String taskId, Mono<GetTaskResponse> ...
method givenRequestListApplications (line 695) | private void givenRequestListApplications(Flux<ApplicationSummary> res...
method givenRequestPushApplication (line 701) | private void givenRequestPushApplication(PushApplicationManifestReques...
method givenRequestStopApplication (line 707) | private void givenRequestStopApplication(String name, Mono<Void> respo...
method setupExistingAppSuccessful (line 715) | private void setupExistingAppSuccessful() {
method setupTaskWithNonExistentApplication (line 749) | private void setupTaskWithNonExistentApplication(Resource resource) th...
method setupFailedPush (line 806) | private void setupFailedPush(Resource resource) throws IOException{
method setupTaskWithNonExistentApplicationAndRetrievingApplicationSummaryFails (line 828) | private void setupTaskWithNonExistentApplicationAndRetrievingApplicati...
method setupTaskWithNonExistentApplicationAndStoppingApplicationFails (line 866) | private void setupTaskWithNonExistentApplicationAndStoppingApplication...
method setupTaskWithNonExistentApplicationBindingOneService (line 902) | private void setupTaskWithNonExistentApplicationBindingOneService(Reso...
method setupTaskWithNonExistentApplicationBindingThreeServices (line 959) | private void setupTaskWithNonExistentApplicationBindingThreeServices(R...
method setupTaskWithNonExistentApplicationRetrievalFails (line 1017) | public void setupTaskWithNonExistentApplicationRetrievalFails(Resource...
method defaultRequest (line 1042) | private AppDeploymentRequest defaultRequest() {
method deploymentRequest (line 1045) | private AppDeploymentRequest deploymentRequest(Resource resource, Map<...
method runningTasksResponse (line 1050) | private Mono<ListTasksResponse> runningTasksResponse() {
method listOrganizationsResponse (line 1070) | private Mono<ListOrganizationsResponse> listOrganizationsResponse() {
method listSpacesResponse (line 1079) | private Mono<ListSpacesResponse> listSpacesResponse() {
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/ServiceParserTests.java
class ServiceParserTests (line 29) | public class ServiceParserTests {
method plainService (line 31) | @Test
method plainServiceWithSpecialCharacters (line 37) | @Test
method serviceWithParameters (line 42) | @Test
method getServiceInstanceName (line 49) | @Test
method serviceWithSpacesParameters (line 55) | @Test
method serviceWithEqualsInParameters (line 61) | @Test
method realWorldExample (line 67) | @Test
method anotherRealWorldExample (line 82) | @Test
method serviceWithInvalidParameters (line 96) | @Test
method splitServiceProperties (line 104) | @Test
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundryAppSchedulerTests.java
class CloudFoundryAppSchedulerTests (line 93) | public class CloudFoundryAppSchedulerTests {
method setUp (line 140) | @BeforeEach
method testEmptySchedulerProperties (line 166) | @ParameterizedTest
method testCreateNoCommandLineArgs (line 178) | @ParameterizedTest
method testInvalidCron (line 194) | @ParameterizedTest
method testNameTooLong (line 216) | @ParameterizedTest
method testSuccessJobCreateFailedSchedule (line 245) | @ParameterizedTest
method testCreateWithCommandLineArgs (line 265) | @ParameterizedTest
method testList (line 284) | @ParameterizedTest
method testListWithJobsNoAssociatedSchedule (line 294) | @ParameterizedTest
method testListWithNoSchedules (line 304) | @ParameterizedTest
method testListSchedulesWithAppName (line 314) | @ParameterizedTest
method testListSchedulesWithInvalidAppName (line 323) | @ParameterizedTest
method testUnschedule (line 331) | @ParameterizedTest
method testMissingScheduleDelete (line 344) | @ParameterizedTest
method testNoServiceList (line 359) | @ParameterizedTest
method testNoServiceListSchedulesWithAppName (line 368) | @ParameterizedTest
method testNoServiceCreate (line 377) | @ParameterizedTest
method givenRequestListApplications (line 393) | private void givenRequestListApplications(Flux<ApplicationSummary> res...
method verifyScheduleInfo (line 399) | private void verifyScheduleInfo(ScheduleInfo scheduleInfo, String task...
class TestSchedulerClient (line 411) | private static class TestSchedulerClient implements SchedulerClient {
method TestSchedulerClient (line 414) | public TestSchedulerClient() {
method calls (line 418) | @Override
method jobs (line 423) | @Override
class NoServiceTestSchedulerClient (line 429) | private static class NoServiceTestSchedulerClient implements Scheduler...
method NoServiceTestSchedulerClient (line 432) | public NoServiceTestSchedulerClient() {
method calls (line 436) | @Override
method jobs (line 441) | @Override
class NoServiceTestJobs (line 447) | private static class NoServiceTestJobs extends TestJobs {
method list (line 448) | @Override
method create (line 453) | @Override
class TestJobs (line 459) | private static class TestJobs implements Jobs {
method create (line 466) | @Override
method delete (line 482) | @Override
method deleteSchedule (line 493) | @Override
method execute (line 498) | @Override
method get (line 503) | @Override
method list (line 508) | @Override
method listHistories (line 517) | @Override
method listScheduleHistories (line 522) | @Override
method listSchedules (line 527) | @Override
method schedule (line 536) | @Override
method getCreateJobResponse (line 549) | public CreateJobResponse getCreateJobResponse() {
method getTestSpaces (line 557) | private Flux<SpaceSummary> getTestSpaces() {
method setupMockResults (line 563) | private void setupMockResults() {
method setupMockResultsNoScheduleForJobs (line 568) | private void setupMockResultsNoScheduleForJobs() {
method mockAppResultsInAppList (line 573) | private void mockAppResultsInAppList() {
method mockJobsInJobListNoSchedule (line 594) | private void mockJobsInJobListNoSchedule() {
method mockJobsInJobList (line 608) | private void mockJobsInJobList() {
method createJobScheduleList (line 624) | private List<JobSchedule> createJobScheduleList(String jobId, String s...
method getDefaultScheduleProperties (line 636) | private Map<String, String> getDefaultScheduleProperties() {
method getDefaultDeploymentProperties (line 642) | private Map<String, String> getDefaultDeploymentProperties() {
method getCloudFoundryAppScheduler (line 648) | private CloudFoundryAppScheduler getCloudFoundryAppScheduler(boolean i...
method getNoServiceCloudFoundryAppScheduler (line 652) | private CloudFoundryAppScheduler getNoServiceCloudFoundryAppScheduler(...
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundryScheduleSSLExceptionTests.java
class CloudFoundryScheduleSSLExceptionTests (line 29) | public class CloudFoundryScheduleSSLExceptionTests {
method testExceptionMessageOnly (line 31) | @Test
method testExceptionMessageWithException (line 41) | @Test
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundrySchedulerPropertiesTest.java
class CloudFoundrySchedulerPropertiesTest (line 28) | public class CloudFoundrySchedulerPropertiesTest {
method testProperties (line 30) | @Test
method testEmptyProperties (line 45) | @Test
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/SpringCloudSchedulerIntegrationIT.java
class SpringCloudSchedulerIntegrationIT (line 58) | @ExtendWith(SpringExtension.class)
method provideScheduler (line 72) | @Override
method getCommandLineArgs (line 80) | @Override
method getSchedulerProperties (line 85) | @Override
method getDeploymentProperties (line 90) | @Override
method getAppProperties (line 98) | @Override
method tearDown (line 106) | @AfterEach
class Config (line 128) | @Configuration
method reactorSchedulerClient (line 132) | @Bean
method scheduler (line 144) | @Bean
FILE: spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/expression/QuartzCronExpressionTests.java
class QuartzCronExpressionTests (line 26) | public class QuartzCronExpressionTests {
method testStoreExpressionVal (line 31) | @Test
method testWildCard (line 39) | @Test
method testForInvalidLInCronExpression (line 52) | @Test
method testForLargeWVal (line 68) | @Test
method testSecRangeIntervalAfterSlash (line 74) | @Test
method testMinRangeIntervalAfterSlash (line 90) | @Test
method testHourRangeIntervalAfterSlash (line 106) | @Test
method testDayOfMonthRangeIntervalAfterSlash (line 122) | @Test
method testMonthRangeIntervalAfterSlash (line 138) | @Test
method testDayOfWeekRangeIntervalAfterSlash (line 154) | @Test
method assertExpression (line 170) | private static void assertExpression(String expression, String message...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/AbstractKubernetesDeployer.java
class AbstractKubernetesDeployer (line 72) | public class AbstractKubernetesDeployer {
method createRuntimeEnvironmentInfo (line 101) | protected RuntimeEnvironmentInfo createRuntimeEnvironmentInfo(Class sp...
method createIdMap (line 122) | Map<String, String> createIdMap(String appId, AppDeploymentRequest req...
method buildAppStatus (line 141) | protected AppStatus buildAppStatus(String id, PodList podList, Service...
method logPossibleDownloadResourceMessage (line 173) | protected void logPossibleDownloadResourceMessage(Resource resource) {
method createPodSpec (line 186) | PodSpec createPodSpec(AppDeploymentRequest appDeploymentRequest) {
method getExternalPort (line 333) | int getExternalPort(final AppDeploymentRequest request) {
method createDeploymentId (line 343) | String createDeploymentId(AppDeploymentRequest request) {
method getProbeCredentialsSecret (line 361) | Secret getProbeCredentialsSecret(Map<String, String> kubernetesDeploye...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/CommandProbeCreator.java
class CommandProbeCreator (line 30) | abstract class CommandProbeCreator extends ProbeCreator {
method CommandProbeCreator (line 31) | CommandProbeCreator(KubernetesDeployerProperties kubernetesDeployerPro...
method getCommand (line 36) | abstract String[] getCommand();
method create (line 38) | protected Probe create() {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/CompositeDeploymentStateResolver.java
class CompositeDeploymentStateResolver (line 26) | class CompositeDeploymentStateResolver implements RunningPhaseDeployment...
method CompositeDeploymentStateResolver (line 29) | CompositeDeploymentStateResolver(RunningPhaseDeploymentStateResolver.....
method resolve (line 33) | @Override
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ContainerConfiguration.java
class ContainerConfiguration (line 28) | public class ContainerConfiguration {
method ContainerConfiguration (line 35) | public ContainerConfiguration(String appId, AppDeploymentRequest appDe...
method getAppDeploymentRequest (line 40) | public AppDeploymentRequest getAppDeploymentRequest() {
method getAppId (line 44) | public String getAppId() {
method isHostNetwork (line 48) | public boolean isHostNetwork() {
method withHostNetwork (line 52) | public ContainerConfiguration withHostNetwork(boolean isHostNetwork) {
method withExternalPort (line 57) | public ContainerConfiguration withExternalPort(Integer externalPort) {
method getExternalPort (line 62) | public Integer getExternalPort() {
method withProbeCredentialsSecret (line 66) | public ContainerConfiguration withProbeCredentialsSecret(Secret probeC...
method getProbeCredentialsSecret (line 71) | public Secret getProbeCredentialsSecret() {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ContainerFactory.java
type ContainerFactory (line 29) | public interface ContainerFactory {
method create (line 36) | Container create(ContainerConfiguration containerConfiguration);
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/DefaultContainerFactory.java
class DefaultContainerFactory (line 61) | public class DefaultContainerFactory implements ContainerFactory {
method DefaultContainerFactory (line 68) | public DefaultContainerFactory(KubernetesDeployerProperties properties) {
method create (line 72) | @Override
method getGUIDEnvVar (line 207) | private EnvVar getGUIDEnvVar() {
method configureReadinessProbe (line 221) | private void configureReadinessProbe(ContainerConfiguration containerC...
method configureStartupProbe (line 245) | private void configureStartupProbe(ContainerConfiguration containerCon...
method configureLivenessProbe (line 269) | private void configureLivenessProbe(ContainerConfiguration containerCo...
method getProbeType (line 293) | private ProbeType getProbeType(ContainerConfiguration containerConfigu...
method createCommandArgs (line 307) | List<String> createCommandArgs(AppDeploymentRequest request) {
method getArgOption (line 335) | private String getArgOption(String arg) {
method getDeploymentPropertiesResolver (line 341) | private DeploymentPropertiesResolver getDeploymentPropertiesResolver(A...
method getDeploymentProperties (line 349) | private Map<String, String> getDeploymentProperties(AppDeploymentReque...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/DefaultRunningPhaseDeploymentStateResolver.java
class DefaultRunningPhaseDeploymentStateResolver (line 24) | public class DefaultRunningPhaseDeploymentStateResolver extends Composit...
method DefaultRunningPhaseDeploymentStateResolver (line 26) | public DefaultRunningPhaseDeploymentStateResolver(KubernetesDeployerPr...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/DeploymentPropertiesResolver.java
class DeploymentPropertiesResolver (line 90) | class DeploymentPropertiesResolver {
method DeploymentPropertiesResolver (line 98) | DeploymentPropertiesResolver(String propertyPrefix, KubernetesDeployer...
method getPropertyPrefix (line 103) | String getPropertyPrefix() {
method getTolerations (line 107) | List<Toleration> getTolerations(Map<String, String> kubernetesDeployer...
method getVolumes (line 142) | List<Volume> getVolumes(Map<String, String> kubernetesDeployerProperti...
method deduceResourceLimits (line 170) | Map<String, Quantity> deduceResourceLimits(Map<String, String> kuberne...
method deduceImagePullPolicy (line 214) | ImagePullPolicy deduceImagePullPolicy(Map<String, String> kubernetesDe...
method deduceResourceRequests (line 242) | Map<String, Quantity> deduceResourceRequests(Map<String, String> kuber...
method getStatefulSetVolumeClaimTemplateName (line 283) | String getStatefulSetVolumeClaimTemplateName(Map<String, String> kuber...
method getStatefulSetStorageClassName (line 300) | String getStatefulSetStorageClassName(Map<String, String> kubernetesDe...
method getStatefulSetStorage (line 317) | String getStatefulSetStorage(Map<String, String> kubernetesDeployerPro...
method getHostNetwork (line 334) | boolean getHostNetwork(Map<String, String> kubernetesDeployerPropertie...
method getNodeSelectors (line 357) | Map<String, String> getNodeSelectors(Map<String, String> deploymentPro...
method getImagePullPolicy (line 387) | String getImagePullPolicy(Map<String, String> kubernetesDeployerProper...
method getImagePullSecret (line 392) | String getImagePullSecret(Map<String, String> kubernetesDeployerProper...
method getImagePullSecrets (line 403) | List<String> getImagePullSecrets(Map<String, String> kubernetesDeploye...
method getDeploymentServiceAccountName (line 415) | String getDeploymentServiceAccountName(Map<String, String> kubernetesD...
method getShareProcessNamespace (line 426) | Boolean getShareProcessNamespace(Map<String, String> kubernetesDeploye...
method getPriorityClassName (line 432) | String getPriorityClassName(Map<String, String> kubernetesDeployerProp...
method getPodSecurityContext (line 438) | PodSecurityContext getPodSecurityContext(Map<String, String> kubernete...
method buildPodSecurityContext (line 452) | private PodSecurityContext buildPodSecurityContext(KubernetesDeployerP...
method getContainerSecurityContext (line 489) | SecurityContext getContainerSecurityContext(Map<String, String> kubern...
method buildContainerSecurityContext (line 503) | private SecurityContext buildContainerSecurityContext(KubernetesDeploy...
method getAffinityRules (line 541) | Affinity getAffinityRules(Map<String, String> kubernetesDeployerProper...
method getInitContainers (line 597) | Collection<Container> getInitContainers(Map<String, String> kubernetes...
method initContainerFromProperties (line 654) | private @Nullable Container initContainerFromProperties(Map<String, St...
method getFirstProperty (line 673) | public static String getFirstProperty(Map<String, String> kubeProps, S...
method containerFromProps (line 683) | private Container containerFromProps(InitContainer initContainerProps) {
method toEnvironmentVariables (line 703) | private List<EnvVar> toEnvironmentVariables(String[] environmentVaria...
method toEnvironmentVariablesFromFieldRef (line 720) | private List<EnvVar> toEnvironmentVariablesFromFieldRef(String[] envir...
method getAdditionalContainers (line 736) | List<Container> getAdditionalContainers(Map<String, String> deployment...
method getPodAnnotations (line 758) | Map<String, String> getPodAnnotations(Map<String, String> kubernetesDe...
method getServiceAnnotations (line 769) | Map<String, String> getServiceAnnotations(Map<String, String> kubernet...
method getDeploymentLabels (line 780) | Map<String, String> getDeploymentLabels(Map<String, String> kubernetes...
method getRestartPolicy (line 804) | RestartPolicy getRestartPolicy(Map<String, String> kubernetesDeployerP...
method getTaskServiceAccountName (line 815) | String getTaskServiceAccountName(Map<String, String> kubernetesDeploye...
method bindProperties (line 833) | private static KubernetesDeployerProperties bindProperties(Map<String,...
method getStatefulSetInitContainerImageName (line 857) | String getStatefulSetInitContainerImageName(Map<String, String> kubern...
method getJobAnnotations (line 874) | Map<String, String> getJobAnnotations(Map<String, String> kubernetesDe...
method getVolumeMounts (line 899) | List<VolumeMount> getVolumeMounts(Map<String, String> deploymentProper...
method getInitContainerVolumeMounts (line 918) | private List<VolumeMount> getInitContainerVolumeMounts(Map<String, Str...
method getVolumeMounts (line 925) | private List<VolumeMount> getVolumeMounts(String propertyValue) {
method getContainerCommand (line 959) | List<String> getContainerCommand(Map<String, String> deploymentPropert...
method getLifeCycle (line 971) | KubernetesDeployerProperties.Lifecycle getLifeCycle(Map<String,String>...
method lifecycleHook (line 992) | private KubernetesDeployerProperties.Lifecycle.Hook lifecycleHook(Stri...
method determineTerminationGracePeriodSeconds (line 1005) | Long determineTerminationGracePeriodSeconds(Map<String, String> deploy...
method getContainerPorts (line 1018) | List<Integer> getContainerPorts(Map<String, String> deploymentProperti...
method getAppEnvironmentVariables (line 1039) | Map<String, String> getAppEnvironmentVariables(Map<String, String> dep...
class NestedCommaDelimitedVariableParser (line 1057) | static class NestedCommaDelimitedVariableParser {
method parse (line 1061) | String[] parse(String value) {
method determineEntryPointStyle (line 1084) | EntryPointStyle determineEntryPointStyle(Map<String, String> deploymen...
method determineProbeType (line 1104) | ProbeType determineProbeType(Map<String, String> deploymentProperties) {
method getConfigMapKeyRefs (line 1116) | List<EnvVar> getConfigMapKeyRefs(Map<String, String> deploymentPropert...
method buildConfigMapKeyRefEnvVar (line 1133) | private EnvVar buildConfigMapKeyRefEnvVar(ConfigMapKeyRef configMapKey...
method getSecretKeyRefs (line 1148) | List<EnvVar> getSecretKeyRefs(Map<String, String> deploymentProperties) {
method buildSecretKeyRefEnvVar (line 1166) | private EnvVar buildSecretKeyRefEnvVar(SecretKeyRef secretKeyRef) {
method getConfigMapRefs (line 1181) | List<EnvFromSource> getConfigMapRefs(Map<String, String> deploymentPro...
method buildConfigMapRefEnvVar (line 1200) | private EnvFromSource buildConfigMapRefEnvVar(String configMapRefName) {
method getSecretRefs (line 1210) | List<EnvFromSource> getSecretRefs(Map<String, String> deploymentProper...
method buildSecretRefEnvVar (line 1229) | private EnvFromSource buildSecretRefEnvVar(String secretRefName) {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/EntryPointStyle.java
type EntryPointStyle (line 32) | public enum EntryPointStyle {
method relaxedValueOf (line 58) | public static EntryPointStyle relaxedValueOf(String entryPointStyle) {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/HttpProbeCreator.java
class HttpProbeCreator (line 38) | public abstract class HttpProbeCreator extends ProbeCreator {
method HttpProbeCreator (line 49) | HttpProbeCreator(KubernetesDeployerProperties kubernetesDeployerProper...
method getProbePath (line 54) | protected abstract String getProbePath();
method getPort (line 56) | protected abstract Integer getPort();
method getScheme (line 58) | protected abstract String getScheme();
method getTimeout (line 60) | protected abstract int getTimeout();
method create (line 62) | protected Probe create() {
method getHttpHeaders (line 85) | private List<HTTPHeader> getHttpHeaders() {
method getAuthorizationHeader (line 97) | private HTTPHeader getAuthorizationHeader() {
method getDefaultPort (line 117) | Integer getDefaultPort() {
method useBoot1ProbePath (line 121) | boolean useBoot1ProbePath() {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ImagePullPolicy.java
type ImagePullPolicy (line 31) | public enum ImagePullPolicy {
method relaxedValueOf (line 44) | public static ImagePullPolicy relaxedValueOf(String name) {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesActuatorTemplate.java
class KubernetesActuatorTemplate (line 29) | public class KubernetesActuatorTemplate extends AbstractActuatorTemplate {
method KubernetesActuatorTemplate (line 31) | public KubernetesActuatorTemplate(RestTemplate restTemplate, AppDeploy...
method actuatorUrlForInstance (line 36) | protected String actuatorUrlForInstance(AppInstanceStatus appInstanceS...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesAppDeployer.java
class KubernetesAppDeployer (line 99) | public class KubernetesAppDeployer extends AbstractKubernetesDeployer im...
method KubernetesAppDeployer (line 103) | public KubernetesAppDeployer(KubernetesDeployerProperties properties, ...
method KubernetesAppDeployer (line 107) | public KubernetesAppDeployer(KubernetesDeployerProperties properties, ...
method deploy (line 116) | @Override
method undeploy (line 150) | @Override
method status (line 172) | @Override
method getLog (line 198) | @Override
method scale (line 226) | @Override
method environmentInfo (line 252) | @Override
method createDeployment (line 257) | private Deployment createDeployment(AppDeploymentRequest request) {
method getCountFromRequest (line 289) | private int getCountFromRequest(AppDeploymentRequest request) {
method createStatefulSet (line 299) | protected void createStatefulSet(AppDeploymentRequest request) {
method createService (line 359) | protected void createService(AppDeploymentRequest request) {
method getServiceName (line 460) | private String getServiceName(AppDeploymentRequest request, String app...
method formatServiceName (line 487) | private String formatServiceName(AppDeploymentRequest request, String ...
method addAdditionalServicePorts (line 496) | private Set<ServicePort> addAdditionalServicePorts(String additionalSe...
method createStatefulSetInitContainer (line 523) | private Container createStatefulSetInitContainer(PodSpec podSpec, Stri...
method setIndexProperty (line 549) | private String setIndexProperty(String name) {
method deleteAllObjects (line 555) | private void deleteAllObjects(String appIdToDelete) {
method deleteService (line 568) | private void deleteService(Map<String, String> labels) {
method deleteDeployment (line 580) | private void deleteDeployment(Map<String, String> labels) {
method deleteStatefulSet (line 592) | private void deleteStatefulSet(Map<String, String> labels) {
method deletePod (line 604) | private void deletePod(Map<String, String> labels) {
method deletePvc (line 616) | private void deletePvc(Map<String, String> labels) {
method waitForLoadBalancerReady (line 628) | private void waitForLoadBalancerReady(Map<String, String> labels) {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesAppInstanceStatus.java
class KubernetesAppInstanceStatus (line 44) | public class KubernetesAppInstanceStatus implements AppInstanceStatus {
method KubernetesAppInstanceStatus (line 58) | @Deprecated
method KubernetesAppInstanceStatus (line 72) | public KubernetesAppInstanceStatus(Pod pod, Service service, Kubernete...
method setRunningPhaseDeploymentStateResolver (line 87) | public void setRunningPhaseDeploymentStateResolver(
method getId (line 92) | @Override
method getState (line 97) | @Override
method mapState (line 105) | private DeploymentState mapState() {
method getAttributes (line 131) | @Override
method nullSafe (line 200) | private String nullSafe(String value) {
method determineActuatorPathFromLivenessProbe (line 204) | private String determineActuatorPathFromLivenessProbe(Pod pod) {
method determineActuatorPortFromLivenessProbe (line 214) | private String determineActuatorPortFromLivenessProbe(Pod pod, String ...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesAutoConfiguration.java
class KubernetesAutoConfiguration (line 41) | @Configuration
method appDeployer (line 52) | @Bean
method taskDeployer (line 59) | @Bean
method kubernetesClient (line 66) | @Bean
method containerFactory (line 72) | @Bean
method actuatorOperations (line 77) | @Bean
method actuatorRestTemplate (line 84) | @Bean
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesClientFactory.java
class KubernetesClientFactory (line 29) | public class KubernetesClientFactory {
method getKubernetesClient (line 31) | public static KubernetesClient getKubernetesClient(KubernetesDeployerP...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesDeployerProperties.java
class KubernetesDeployerProperties (line 47) | @ConfigurationProperties(prefix = KubernetesDeployerProperties.KUBERNETE...
method getFabric8 (line 72) | public Config getFabric8() {
method setFabric8 (line 76) | public void setFabric8(Config fabric8) {
class LimitsResources (line 83) | public static class LimitsResources {
method LimitsResources (line 124) | public LimitsResources() {
method LimitsResources (line 136) | public LimitsResources(String cpu, String memory, String ephemeralSt...
method getCpu (line 146) | public String getCpu() {
method setCpu (line 150) | public void setCpu(String cpu) {
method getMemory (line 154) | public String getMemory() {
method setMemory (line 158) | public void setMemory(String memory) {
method getEphemeralStorage (line 162) | public String getEphemeralStorage() {
method setEphemeralStorage (line 166) | public void setEphemeralStorage(String ephemeralStorage) {
method getHugepages2Mi (line 170) | public String getHugepages2Mi() {
method setHugepages2Mi (line 174) | public void setHugepages2Mi(String hugepages2Mi) {
method getHugepages1Gi (line 178) | public String getHugepages1Gi() {
method setHugepages1Gi (line 182) | public void setHugepages1Gi(String hugepages1Gi) {
method getGpuVendor (line 186) | public String getGpuVendor() {
method setGpuVendor (line 190) | public void setGpuVendor(String gpuVendor) {
method getGpuCount (line 194) | public String getGpuCount() {
method setGpuCount (line 198) | public void setGpuCount(String gpuCount) {
class RequestsResources (line 206) | public static class RequestsResources {
method RequestsResources (line 234) | public RequestsResources() {
method RequestsResources (line 238) | @Deprecated
method getCpu (line 247) | public String getCpu() {
method setCpu (line 251) | public void setCpu(String cpu) {
method getMemory (line 255) | public String getMemory() {
method setMemory (line 259) | public void setMemory(String memory) {
method getEphemeralStorage (line 263) | public String getEphemeralStorage() {
method setEphemeralStorage (line 267) | public void setEphemeralStorage(String ephemeralStorage) {
method getHugepages2Mi (line 271) | public String getHugepages2Mi() {
method setHugepages2Mi (line 275) | public void setHugepages2Mi(String hugepages2Mi) {
method getHugepages1Gi (line 279) | public String getHugepages1Gi() {
method setHugepages1Gi (line 283) | public void setHugepages1Gi(String hugepages1Gi) {
class StatefulSet (line 288) | public static class StatefulSet {
method getVolumeClaimTemplate (line 292) | public VolumeClaimTemplate getVolumeClaimTemplate() {
method setVolumeClaimTemplate (line 296) | public void setVolumeClaimTemplate(VolumeClaimTemplate volumeClaimTe...
class VolumeClaimTemplate (line 300) | public static class VolumeClaimTemplate {
method getName (line 317) | public String getName() {
method setName (line 321) | public void setName(String name) {
method getStorage (line 325) | public String getStorage() {
method setStorage (line 329) | public void setStorage(String storage) {
method getStorageClassName (line 333) | public String getStorageClassName() {
method setStorageClassName (line 337) | public void setStorageClassName(String storageClassName) {
class Toleration (line 343) | public static class Toleration {
method getEffect (line 355) | public String getEffect() {
method setEffect (line 359) | public void setEffect(String effect) {
method getKey (line 363) | public String getKey() {
method setKey (line 367) | public void setKey(String key) {
method getOperator (line 371) | public String getOperator() {
method setOperator (line 375) | public void setOperator(String operator) {
method getTolerationSeconds (line 379) | public Long getTolerationSeconds() {
method setTolerationSeconds (line 383) | public void setTolerationSeconds(Long tolerationSeconds) {
method getValue (line 387) | public String getValue() {
method setValue (line 391) | public void setValue(String value) {
class KeyRef (line 396) | static class KeyRef {
method setEnvVarName (line 401) | public void setEnvVarName(String envVarName) {
method getEnvVarName (line 405) | public String getEnvVarName() {
method setDataKey (line 409) | public void setDataKey(String dataKey) {
method getDataKey (line 413) | public String getDataKey() {
class SecretKeyRef (line 418) | public static class SecretKeyRef extends KeyRef {
method setSecretName (line 421) | public void setSecretName(String secretName) {
method getSecretName (line 425) | public String getSecretName() {
class ConfigMapKeyRef (line 430) | public static class ConfigMapKeyRef extends KeyRef {
method setConfigMapName (line 433) | public void setConfigMapName(String configMapName) {
method getConfigMapName (line 437) | public String getConfigMapName() {
class PodSecurityContext (line 442) | public static class PodSecurityContext {
method setRunAsUser (line 495) | public void setRunAsUser(Long runAsUser) {
method getRunAsUser (line 499) | public Long getRunAsUser() {
method getRunAsGroup (line 503) | public Long getRunAsGroup() {
method setRunAsGroup (line 507) | public void setRunAsGroup(Long runAsGroup) {
method getRunAsNonRoot (line 511) | public Boolean getRunAsNonRoot() {
method setRunAsNonRoot (line 515) | public void setRunAsNonRoot(Boolean runAsNonRoot) {
method setFsGroup (line 519) | public void setFsGroup(Long fsGroup) {
method getFsGroup (line 523) | public Long getFsGroup() {
method getFsGroupChangePolicy (line 527) | public String getFsGroupChangePolicy() {
method setFsGroupChangePolicy (line 531) | public void setFsGroupChangePolicy(String fsGroupChangePolicy) {
method setSupplementalGroups (line 535) | public void setSupplementalGroups(Long[] supplementalGroups) {
method getSupplementalGroups (line 539) | public Long[] getSupplementalGroups() {
method getSeccompProfile (line 543) | public SeccompProfile getSeccompProfile() {
method setSeccompProfile (line 547) | public void setSeccompProfile(SeccompProfile seccompProfile) {
method getSeLinuxOptions (line 551) | public SELinuxOptions getSeLinuxOptions() {
method setSeLinuxOptions (line 555) | public void setSeLinuxOptions(SELinuxOptions seLinuxOptions) {
method getSysctls (line 559) | public List<SysctlInfo> getSysctls() {
method setSysctls (line 563) | public void setSysctls(List<SysctlInfo> sysctls) {
method getWindowsOptions (line 567) | public WindowsSecurityContextOptions getWindowsOptions() {
method setWindowsOptions (line 571) | public void setWindowsOptions(WindowsSecurityContextOptions windowsO...
class ContainerSecurityContext (line 576) | public static class ContainerSecurityContext {
method getAllowPrivilegeEscalation (line 633) | public Boolean getAllowPrivilegeEscalation() {
method setAllowPrivilegeEscalation (line 637) | public void setAllowPrivilegeEscalation(Boolean allowPrivilegeEscala...
method getCapabilities (line 641) | public Capabilities getCapabilities() {
method setCapabilities (line 645) | public void setCapabilities(Capabilities capabilities) {
method getPrivileged (line 649) | public Boolean getPrivileged() {
method setPrivileged (line 653) | public void setPrivileged(Boolean privileged) {
method getProcMount (line 657) | public String getProcMount() {
method setProcMount (line 661) | public void setProcMount(String procMount) {
method getReadOnlyRootFilesystem (line 665) | public Boolean getReadOnlyRootFilesystem() {
method setReadOnlyRootFilesystem (line 669) | public void setReadOnlyRootFilesystem(Boolean readOnlyRootFilesystem) {
method getRunAsUser (line 673) | public Long getRunAsUser() {
method setRunAsUser (line 677) | public void setRunAsUser(Long runAsUser) {
method getRunAsGroup (line 681) | public Long getRunAsGroup() {
method setRunAsGroup (line 685) | public void setRunAsGroup(Long runAsGroup) {
method getRunAsNonRoot (line 689) | public Boolean getRunAsNonRoot() {
method setRunAsNonRoot (line 693) | public void setRunAsNonRoot(Boolean runAsNonRoot) {
method getSeccompProfile (line 697) | public SeccompProfile getSeccompProfile() {
method setSeccompProfile (line 701) | public void setSeccompProfile(SeccompProfile seccompProfile) {
method getSeLinuxOptions (line 705) | public SELinuxOptions getSeLinuxOptions() {
method setSeLinuxOptions (line 709) | public void setSeLinuxOptions(SELinuxOptions seLinuxOptions) {
method getWindowsOptions (line 713) | public WindowsSecurityContextOptions getWindowsOptions() {
method setWindowsOptions (line 717) | public void setWindowsOptions(WindowsSecurityContextOptions windowsO...
class Capabilities (line 725) | public static class Capabilities {
method getAdd (line 736) | public List<String> getAdd() {
method setAdd (line 740) | public void setAdd(List<String> add) {
method getDrop (line 744) | public List<String> getDrop() {
method setDrop (line 748) | public void setDrop(List<String> drop) {
class SeccompProfile (line 756) | public static class SeccompProfile {
method getType (line 768) | public String getType() {
method setType (line 772) | public void setType(String type) {
method getLocalhostProfile (line 776) | public String getLocalhostProfile() {
method setLocalhostProfile (line 780) | public void setLocalhostProfile(String localhostProfile) {
class SELinuxOptions (line 788) | public static class SELinuxOptions {
method getLevel (line 809) | public String getLevel() {
method setLevel (line 813) | public void setLevel(String level) {
method getRole (line 817) | public String getRole() {
method setRole (line 821) | public void setRole(String role) {
method getType (line 825) | public String getType() {
method setType (line 829) | public void setType(String type) {
method getUser (line 833) | public String getUser() {
method setUser (line 837) | public void setUser(String user) {
class SysctlInfo (line 845) | public static class SysctlInfo {
method getName (line 856) | public String getName() {
method setName (line 860) | public void setName(String name) {
method getValue (line 864) | public String getValue() {
method setValue (line 868) | public void setValue(String value) {
class WindowsSecurityContextOptions (line 876) | public static class WindowsSecurityContextOptions {
method getGmsaCredentialSpec (line 899) | public String getGmsaCredentialSpec() {
method setGmsaCredentialSpec (line 903) | public void setGmsaCredentialSpec(String gmsaCredentialSpec) {
method getGmsaCredentialSpecName (line 907) | public String getGmsaCredentialSpecName() {
method setGmsaCredentialSpecName (line 911) | public void setGmsaCredentialSpecName(String gmsaCredentialSpecName) {
method getHostProcess (line 915) | public Boolean getHostProcess() {
method setHostProcess (line 919) | public void setHostProcess(Boolean hostProcess) {
method getRunAsUserName (line 923) | public String getRunAsUserName() {
method setRunAsUserName (line 927) | public void setRunAsUserName(String runAsUserName) {
class Lifecycle (line 932) | public static class Lifecycle {
method getPreStop (line 936) | Hook getPreStop() {
method getPostStart (line 940) | Hook getPostStart() {
method setPostStart (line 944) | void setPostStart(Hook postStart) {
method setPreStop (line 948) | void setPreStop(Hook preStop) {
class Hook (line 953) | public static class Hook {
method getExec (line 956) | Exec getExec() {
method setExec (line 960) | void setExec(Exec exec) {
class Exec (line 965) | public static class Exec {
method getCommand (line 968) | List<String> getCommand() {
method setCommand (line 972) | void setCommand(List<String> command) {
class InitContainer (line 978) | public static class InitContainer extends ContainerProperties {
class Container (line 981) | static class Container extends io.fabric8.kubernetes.api.model.Contain...
class ContainerProperties (line 984) | public static class ContainerProperties {
method getName (line 1005) | public String getName() {
method setName (line 1009) | public void setName(String name) {
method getImageName (line 1012) | @Deprecated
method setImageName (line 1016) | @Deprecated
method getImage (line 1020) | public String getImage() {
method setImage (line 1024) | public void setImage(String image) {
method getContainerName (line 1028) | @Deprecated
method setContainerName (line 1033) | @Deprecated
method getCommand (line 1038) | public List<String> getCommand() {
method setCommand (line 1042) | public void setCommand(List<String> command) {
method getCommands (line 1045) | @Deprecated
method setCommands (line 1050) | @Deprecated
method getArgs (line 1055) | public List<String> getArgs() {
method setArgs (line 1059) | public void setArgs(List<String> args) {
method getVolumeMounts (line 1063) | public List<VolumeMount> getVolumeMounts() {
method setVolumeMounts (line 1067) | public void setVolumeMounts(List<VolumeMount> volumeMounts) {
method getEnvironmentVariables (line 1071) | public String[] getEnvironmentVariables() {
method setEnvironmentVariables (line 1075) | public void setEnvironmentVariables(String[] environmentVariables) {
method getEnvironmentVariablesFromFieldRefs (line 1079) | public String[] getEnvironmentVariablesFromFieldRefs() {
method setEnvironmentVariablesFromFieldRefs (line 1083) | public void setEnvironmentVariablesFromFieldRefs(String[] environmen...
method getConfigMapRefEnvVars (line 1087) | public String[] getConfigMapRefEnvVars() {
method setConfigMapRefEnvVars (line 1091) | public void setConfigMapRefEnvVars(String[] configMapRefEnvVars) {
method getSecretRefEnvVars (line 1095) | public String[] getSecretRefEnvVars() {
method setSecretRefEnvVars (line 1099) | public void setSecretRefEnvVars(String[] secretRefEnvVars) {
method getRestartPolicy (line 1126) | public RestartPolicy getRestartPolicy() {
method setRestartPolicy (line 1135) | public void setRestartPolicy(RestartPolicy restartPolicy) {
method getTaskServiceAccountName (line 1144) | public String getTaskServiceAccountName() {
method setTaskServiceAccountName (line 1153) | public void setTaskServiceAccountName(String taskServiceAccountName) {
method getNamespace (line 1629) | public String getNamespace() {
method setNamespace (line 1633) | public void setNamespace(String namespace) {
method getImagePullSecret (line 1637) | public String getImagePullSecret() {
method setImagePullSecret (line 1641) | public void setImagePullSecret(String imagePullSecret) {
method getImagePullSecrets (line 1645) | public List<String> getImagePullSecrets() {
method setImagePullSecrets (line 1649) | public void setImagePullSecrets(List<String> imagePullSecrets) {
class CronConfig (line 1653) | public static class CronConfig {
method getConcurrencyPolicy (line 1660) | public String getConcurrencyPolicy() {
method setConcurrencyPolicy (line 1664) | public void setConcurrencyPolicy(String concurrencyPolicy) {
method getTtlSecondsAfterFinished (line 1668) | public Integer getTtlSecondsAfterFinished() {
method setTtlSecondsAfterFinished (line 1672) | public void setTtlSecondsAfterFinished(Integer ttlSecondsAfterFinish...
method getBackoffLimit (line 1676) | public Integer getBackoffLimit() {
method setBackoffLimit (line 1680) | public void setBackoffLimit(Integer backoffLimit) {
method getShareProcessNamespace (line 1685) | public Boolean getShareProcessNamespace() {
method setShareProcessNamespace (line 1689) | public void setShareProcessNamespace(Boolean shareProcessNamespace) {
method getPriorityClassName (line 1693) | public String getPriorityClassName() {
method setPriorityClassName (line 1697) | public void setPriorityClassName(String priorityClassName) {
method getLivenessTcpProbeSuccess (line 1701) | public int getLivenessTcpProbeSuccess() {
method setLivenessTcpProbeSuccess (line 1705) | public void setLivenessTcpProbeSuccess(int livenessTcpProbeSuccess) {
method getLivenessTcpProbeFailure (line 1709) | public int getLivenessTcpProbeFailure() {
method setLivenessTcpProbeFailure (line 1713) | public void setLivenessTcpProbeFailure(int livenessTcpProbeFailure) {
method getLivenessHttpProbeDelay (line 1717) | public int getLivenessHttpProbeDelay() {
method setLivenessHttpProbeDelay (line 1721) | public void setLivenessHttpProbeDelay(int livenessHttpProbeDelay) {
method getLivenessTcpProbeTimeout (line 1725) | public int getLivenessTcpProbeTimeout() {
method setLivenessTcpProbeTimeout (line 1729) | public void setLivenessTcpProbeTimeout(int livenessTcpProbeTimeout) {
method getLivenessHttpProbePeriod (line 1734) | public int getLivenessHttpProbePeriod() {
method setLivenessHttpProbePeriod (line 1738) | public void setLivenessHttpProbePeriod(int livenessHttpProbePeriod) {
method getLivenessHttpProbeTimeout (line 1742) | public int getLivenessHttpProbeTimeout() {
method setLivenessHttpProbeTimeout (line 1746) | public void setLivenessHttpProbeTimeout(int livenessHttpProbeTimeout) {
method getLivenessHttpProbePath (line 1750) | public String getLivenessHttpProbePath() {
method setLivenessHttpProbePath (line 1754) | public void setLivenessHttpProbePath(String livenessHttpProbePath) {
method getLivenessHttpProbePort (line 1758) | public Integer getLivenessHttpProbePort() {
method setLivenessHttpProbePort (line 1762) | public void setLivenessHttpProbePort(Integer livenessHttpProbePort) {
method getStartupHttpProbeTimeout (line 1766) | public int getStartupHttpProbeTimeout() {
method getStartupHttpProbeFailure (line 1770) | public int getStartupHttpProbeFailure() {
method setStartupHttpProbeFailure (line 1774) | public void setStartupHttpProbeFailure(int startupHttpProbeFailure) {
method setStartupProbeFailure (line 1778) | public void setStartupProbeFailure(int startupHttpProbeFailure) {
method getLivenessHttpProbeFailure (line 1782) | public int getLivenessHttpProbeFailure() {
method setLivenessHttpProbeFailure (line 1786) | public void setLivenessHttpProbeFailure(int livenessHttpProbeFailure) {
method setLivenessProbeFailure (line 1790) | public void setLivenessProbeFailure(int livenessHttpProbeFailure) {
method getLivenessHttpProbeSuccess (line 1794) | public int getLivenessHttpProbeSuccess() {
method setLivenessHttpProbeSuccess (line 1798) | public void setLivenessHttpProbeSuccess(int livenessHttpProbeSuccess) {
method setLivenessProbeSuccess (line 1802) | public void setLivenessProbeSuccess(int livenessHttpProbeSuccess) {
method getStartupHttpProbeSuccess (line 1806) | public int getStartupHttpProbeSuccess() {
method setStartupHttpProbeSuccess (line 1810) | public void setStartupHttpProbeSuccess(int startupHttpProbeSuccess) {
method setStartupProbeSuccess (line 1814) | public void setStartupProbeSuccess(int startupHttpProbeSuccess) {
method getStartupTcpProbeFailure (line 1818) | public int getStartupTcpProbeFailure() {
method setStartupTcpProbeFailure (line 1822) | public void setStartupTcpProbeFailure(int startupTcpProbeFailure) {
method getStartupTcpProbeSuccess (line 1826) | public int getStartupTcpProbeSuccess() {
method setStartupTcpProbeSuccess (line 1830) | public void setStartupTcpProbeSuccess(int startupTcpProbeSuccess) {
method getStartupCommandProbeFailure (line 1834) | public int getStartupCommandProbeFailure() {
method setStartupCommandProbeFailure (line 1838) | public void setStartupCommandProbeFailure(int startupCommandProbeFailu...
method getStartupCommandProbeSuccess (line 1842) | public int getStartupCommandProbeSuccess() {
method setStartupCommandProbeSuccess (line 1846) | public void setStartupCommandProbeSuccess(int startupCommandProbeSucce...
method getLivenessCommandProbeFailure (line 1850) | public int getLivenessCommandProbeFailure() {
method setLivenessCommandProbeFailure (line 1854) | public void setLivenessCommandProbeFailure(int livenessCommandProbeFai...
method getLivenessCommandProbeSuccess (line 1858) | public int getLivenessCommandProbeSuccess() {
method setLivenessCommandProbeSuccess (line 1862) | public void setLivenessCommandProbeSuccess(int livenessCommandProbeSuc...
method getStartupHttpProbeDelay (line 1866) | public int getStartupHttpProbeDelay() {
method setStartupHttpProbeTimeout (line 1870) | public void setStartupHttpProbeTimeout(int startupHttpProbeTimeout) {
method setStartupProbeTimeout (line 1874) | public void setStartupProbeTimeout(int startupHttpProbeTimeout) {
method setStartupHttpProbeDelay (line 1878) | public void setStartupHttpProbeDelay(int startupHttpProbeDelay) {
method setStartupProbeDelay (line 1882) | public void setStartupProbeDelay(int startupHttpProbeDelay) {
method getStartupHttpProbePath (line 1886) | public String getStartupHttpProbePath() {
method setStartupHttpProbePath (line 1890) | public void setStartupHttpProbePath(String startupHttpProbePath) {
method getStartupHttpProbePort (line 1894) | public Integer getStartupHttpProbePort() {
method setStartupHttpProbePort (line 1898) | public void setStartupHttpProbePort(Integer startupHttpProbePort) {
method setStartupProbePort (line 1902) | public void setStartupProbePort(Integer startupHttpProbePort) {
method getStartupProbeScheme (line 1906) | public String getStartupProbeScheme() {
method setStartupProbeScheme (line 1910) | public void setStartupProbeScheme(String startupProbeScheme) {
method getStartupHttpProbePeriod (line 1914) | public int getStartupHttpProbePeriod() {
method setStartupHttpProbePeriod (line 1918) | public void setStartupHttpProbePeriod(int startupHttpProbePeriod) {
method getStartupProbePeriod (line 1922) | public int getStartupProbePeriod() {
method setStartupProbePeriod (line 1926) | public void setStartupProbePeriod(int startupHttpProbePeriod) {
method getStartupTcpProbeDelay (line 1930) | public int getStartupTcpProbeDelay() {
method setStartupTcpProbeDelay (line 1934) | public void setStartupTcpProbeDelay(int startupTcpProbeDelay) {
method getStartupTcpProbeTimeout (line 1938) | public int getStartupTcpProbeTimeout() {
method setStartupTcpProbeTimeout (line 1942) | public void setStartupTcpProbeTimeout(int startupTcpProbeTimeout) {
method getStartupTcpProbePeriod (line 1951) | public int getStartupTcpProbePeriod() {
method setStartupTcpProbePeriod (line 1955) | public void setStartupTcpProbePeriod(int startupTcpProbePeriod) {
method getStartupTcpProbePort (line 1959) | public Integer getStartupTcpProbePort() {
method setStartupTcpProbePort (line 1963) | public void setStartupTcpProbePort(Integer startupTcpProbePort) {
method getStartupCommandProbeDelay (line 1967) | public int getStartupCommandProbeDelay() {
method setStartupCommandProbeDelay (line 1971) | public void setStartupCommandProbeDelay(int startupCommandProbeDelay) {
method getStartupCommandProbePeriod (line 1975) | public int getStartupCommandProbePeriod() {
method setStartupCommandProbePeriod (line 1979) | public void setStartupCommandProbePeriod(int startupCommandProbePeriod) {
method getStartupCommandProbeCommand (line 1983) | public String getStartupCommandProbeCommand() {
method setStartupCommandProbeCommand (line 1987) | public void setStartupCommandProbeCommand(String startupCommandProbeCo...
method getReadinessTcpProbeFailure (line 1991) | public int getReadinessTcpProbeFailure() {
method setReadinessTcpProbeFailure (line 1995) | public void setReadinessTcpProbeFailure(int readinessTcpProbeFailure) {
method getReadinessTcpProbeSuccess (line 1999) | public int getReadinessTcpProbeSuccess() {
method setReadinessTcpProbeSuccess (line 2003) | public void setReadinessTcpProbeSuccess(int readinessTcpProbeSuccess) {
method getReadinessHttpProbeSuccess (line 2007) | public int getReadinessHttpProbeSuccess() {
method setReadinessHttpProbeSuccess (line 2011) | public void setReadinessHttpProbeSuccess(int readinessHttpProbeSuccess) {
method getReadinessHttpProbeFailure (line 2015) | public int getReadinessHttpProbeFailure() {
method setReadinessHttpProbeFailure (line 2019) | public void setReadinessHttpProbeFailure(int readinessHttpProbeFailure) {
method setReadinessProbeFailure (line 2023) | public void setReadinessProbeFailure(int readinessHttpProbeFailure) {
method getReadinessCommandProbeFailure (line 2028) | public int getReadinessCommandProbeFailure() {
method setReadinessCommandProbeFailure (line 2032) | public void setReadinessCommandProbeFailure(int readinessCommandProbeF...
method getReadinessCommandProbeSuccess (line 2036) | public int getReadinessCommandProbeSuccess() {
method setReadinessCommandProbeSuccess (line 2040) | public void setReadinessCommandProbeSuccess(int readinessCommandProbeS...
method getReadinessHttpProbeDelay (line 2044) | public int getReadinessHttpProbeDelay() {
method setReadinessHttpProbeDelay (line 2048) | public void setReadinessHttpProbeDelay(int readinessHttpProbeDelay) {
method getReadinessHttpProbePeriod (line 2052) | public int getReadinessHttpProbePeriod() {
method setReadinessHttpProbePeriod (line 2056) | public void setReadinessHttpProbePeriod(int readinessHttpProbePeriod) {
method getReadinessTcpProbeTimeout (line 2060) | public int getReadinessTcpProbeTimeout() {
method setReadinessTcpProbeTimeout (line 2064) | public void setReadinessTcpProbeTimeout(int readinessTcpProbeTimeout) {
method getReadinessHttpProbeTimeout (line 2068) | public int getReadinessHttpProbeTimeout() {
method setReadinessHttpProbeTimeout (line 2072) | public void setReadinessHttpProbeTimeout(int readinessHttpProbeTimeout) {
method getReadinessHttpProbePath (line 2076) | public String getReadinessHttpProbePath() {
method setReadinessHttpProbePath (line 2080) | public void setReadinessHttpProbePath(String readinessHttpProbePath) {
method getReadinessHttpProbePort (line 2084) | public Integer getReadinessHttpProbePort() {
method setReadinessHttpProbePort (line 2088) | public void setReadinessHttpProbePort(Integer readinessHttpProbePort) {
method getLivenessTcpProbeDelay (line 2092) | public int getLivenessTcpProbeDelay() {
method setLivenessTcpProbeDelay (line 2096) | public void setLivenessTcpProbeDelay(int livenessTcpProbeDelay) {
method getLivenessTcpProbePeriod (line 2100) | public int getLivenessTcpProbePeriod() {
method setLivenessTcpProbePeriod (line 2104) | public void setLivenessTcpProbePeriod(int livenessTcpProbePeriod) {
method getLivenessTcpProbePort (line 2108) | public Integer getLivenessTcpProbePort() {
method setLivenessTcpProbePort (line 2112) | public void setLivenessTcpProbePort(Integer livenessTcpProbePort) {
method getReadinessTcpProbeDelay (line 2116) | public int getReadinessTcpProbeDelay() {
method setReadinessTcpProbeDelay (line 2120) | public void setReadinessTcpProbeDelay(int readinessTcpProbeDelay) {
method getReadinessTcpProbePeriod (line 2124) | public int getReadinessTcpProbePeriod() {
method setReadinessTcpProbePeriod (line 2128) | public void setReadinessTcpProbePeriod(int readinessTcpProbePeriod) {
method getReadinessTcpProbePort (line 2132) | public Integer getReadinessTcpProbePort() {
method setReadinessTcpProbePort (line 2136) | public void setReadinessTcpProbePort(Integer readinessTcpProbePort) {
method getReadinessCommandProbeDelay (line 2140) | public int getReadinessCommandProbeDelay() {
method setReadinessCommandProbeDelay (line 2144) | public void setReadinessCommandProbeDelay(int readinessCommandProbeDel...
method getReadinessCommandProbePeriod (line 2148) | public int getReadinessCommandProbePeriod() {
method setReadinessCommandProbePeriod (line 2152) | public void setReadinessCommandProbePeriod(int readinessCommandProbePe...
method getReadinessCommandProbeCommand (line 2156) | public String getReadinessCommandProbeCommand() {
method setReadinessCommandProbeCommand (line 2160) | public void setReadinessCommandProbeCommand(String readinessCommandPro...
method getLivenessCommandProbeDelay (line 2164) | public int getLivenessCommandProbeDelay() {
method setLivenessCommandProbeDelay (line 2168) | public void setLivenessCommandProbeDelay(int livenessCommandProbeDelay) {
method getLivenessCommandProbePeriod (line 2172) | public int getLivenessCommandProbePeriod() {
method setLivenessCommandProbePeriod (line 2176) | public void setLivenessCommandProbePeriod(int livenessCommandProbePeri...
method getLivenessCommandProbeCommand (line 2180) | public String getLivenessCommandProbeCommand() {
method setLivenessCommandProbeCommand (line 2184) | public void setLivenessCommandProbeCommand(String livenessCommandProbe...
method getProbeCredentialsSecret (line 2188) | public String getProbeCredentialsSecret() {
method setProbeCredentialsSecret (line 2192) | public void setProbeCredentialsSecret(String probeCredentialsSecret) {
method getProbeType (line 2196) | public ProbeType getProbeType() {
method setProbeType (line 2200) | public void setProbeType(ProbeType probeType) {
method getStatefulSet (line 2204) | public StatefulSet getStatefulSet() {
method setStatefulSet (line 2208) | public void setStatefulSet(
method getTolerations (line 2213) | public List<Toleration> getTolerations() {
method setTolerations (line 2217) | public void setTolerations(List<Toleration> tolerations) {
method getSecretKeyRefs (line 2221) | public List<SecretKeyRef> getSecretKeyRefs() {
method setSecretKeyRefs (line 2225) | public void setSecretKeyRefs(List<SecretKeyRef> secretKeyRefs) {
method getConfigMapKeyRefs (line 2229) | public List<ConfigMapKeyRef> getConfigMapKeyRefs() {
method setConfigMapKeyRefs (line 2233) | public void setConfigMapKeyRefs(List<ConfigMapKeyRef> configMapKeyRefs) {
method getConfigMapRefs (line 2237) | public List<String> getConfigMapRefs() {
method setConfigMapRefs (line 2241) | public void setConfigMapRefs(List<String> configMapRefs) {
method getSecretRefs (line 2245) | public List<String> getSecretRefs() {
method setSecretRefs (line 2249) | public void setSecretRefs(List<String> secretRefs) {
method getEnvironmentVariables (line 2253) | public String[] getEnvironmentVariables() {
method setEnvironmentVariables (line 2257) | public void setEnvironmentVariables(String[] environmentVariables) {
method getEntryPointStyle (line 2261) | public EntryPointStyle getEntryPointStyle() {
method setEntryPointStyle (line 2265) | public void setEntryPointStyle(EntryPointStyle entryPointStyle) {
method isCreateLoadBalancer (line 2269) | public boolean isCreateLoadBalancer() {
method setCreateLoadBalancer (line 2273) | public void setCreateLoadBalancer(boolean createLoadBalancer) {
method getServiceAnnotations (line 2277) | public String getServiceAnnotations() {
method setServiceAnnotations (line 2281) | public void setServiceAnnotations(String serviceAnnotations) {
method getPodAnnotations (line 2285) | public String getPodAnnotations() {
method setPodAnnotations (line 2289) | public void setPodAnnotations(String podAnnotations) {
method getJobAnnotations (line 2293) | public String getJobAnnotations() {
method setJobAnnotations (line 2297) | public void setJobAnnotations(String jobAnnotations) {
method getMinutesToWaitForLoadBalancer (line 2301) | public int getMinutesToWaitForLoadBalancer() {
method setMinutesToWaitForLoadBalancer (line 2305) | public void setMinutesToWaitForLoadBalancer(int minutesToWaitForLoadBa...
method getMaxTerminatedErrorRestarts (line 2309) | public int getMaxTerminatedErrorRestarts() {
method setMaxTerminatedErrorRestarts (line 2313) | public void setMaxTerminatedErrorRestarts(int maxTerminatedErrorRestar...
method getMaxCrashLoopBackOffRestarts (line 2317) | public int getMaxCrashLoopBackOffRestarts() {
method setMaxCrashLoopBackOffRestarts (line 2321) | public void setMaxCrashLoopBackOffRestarts(int maxCrashLoopBackOffRest...
method getImagePullPolicy (line 2325) | public ImagePullPolicy getImagePullPolicy() {
method setImagePullPolicy (line 2329) | public void setImagePullPolicy(ImagePullPolicy imagePullPolicy) {
method getLimits (line 2333) | public LimitsResources getLimits() {
method setLimits (line 2337) | public void setLimits(LimitsResources limits) {
method getRequests (line 2341) | public RequestsResources getRequests() {
method setRequests (line 2345) | public void setRequests(RequestsResources requests) {
method getVolumeMounts (line 2349) | public List<VolumeMount> getVolumeMounts() {
method setVolumeMounts (line 2353) | public void setVolumeMounts(List<VolumeMount> volumeMounts) {
method getVolumes (line 2357) | public List<Volume> getVolumes() {
method setVolumes (line 2361) | public void setVolumes(List<Volume> volumes) {
method isHostNetwork (line 2365) | public boolean isHostNetwork() {
method setHostNetwork (line 2369) | public void setHostNetwork(boolean hostNetwork) {
method isCreateJob (line 2373) | public boolean isCreateJob() {
method setCreateJob (line 2377) | public void setCreateJob(boolean createJob) {
method getDeploymentServiceAccountName (line 2381) | public String getDeploymentServiceAccountName() {
method setDeploymentServiceAccountName (line 2385) | public void setDeploymentServiceAccountName(String deploymentServiceAc...
method getMaximumConcurrentTasks (line 2389) | public int getMaximumConcurrentTasks() {
method setMaximumConcurrentTasks (line 2393) | public void setMaximumConcurrentTasks(int maximumConcurrentTasks) {
method getTerminationGracePeriodSeconds (line 2397) | public Long getTerminationGracePeriodSeconds() {
method setTerminationGracePeriodSeconds (line 2401) | public void setTerminationGracePeriodSeconds(Long terminationGracePeri...
method setNodeSelector (line 2405) | public void setNodeSelector(String nodeSelector) {
method getNodeSelector (line 2409) | public String getNodeSelector() {
method setPodSecurityContext (line 2413) | public void setPodSecurityContext(PodSecurityContext podSecurityContex...
method getPodSecurityContext (line 2417) | public PodSecurityContext getPodSecurityContext() {
method setContainerSecurityContext (line 2421) | public void setContainerSecurityContext(ContainerSecurityContext conta...
method getContainerSecurityContext (line 2425) | public ContainerSecurityContext getContainerSecurityContext() {
method getNodeAffinity (line 2429) | public NodeAffinity getNodeAffinity() {
method setNodeAffinity (line 2433) | public void setNodeAffinity(NodeAffinity nodeAffinity) {
method getPodAffinity (line 2437) | public PodAffinity getPodAffinity() {
method setPodAffinity (line 2441) | public void setPodAffinity(PodAffinity podAffinity) {
method getPodAntiAffinity (line 2445) | public PodAntiAffinity getPodAntiAffinity() {
method setPodAntiAffinity (line 2449) | public void setPodAntiAffinity(PodAntiAffinity podAntiAffinity) {
method getStatefulSetInitContainerImageName (line 2453) | public String getStatefulSetInitContainerImageName() {
method setStatefulSetInitContainerImageName (line 2457) | public void setStatefulSetInitContainerImageName(String statefulSetIni...
method getInitContainer (line 2461) | public InitContainer getInitContainer() {
method setInitContainer (line 2465) | public void setInitContainer(InitContainer initContainer) {
method getInitContainers (line 2469) | public List<InitContainer> getInitContainers() {
method setInitContainers (line 2473) | public void setInitContainers(List<InitContainer> initContainers) {
method getAdditionalContainers (line 2477) | public List<Container> getAdditionalContainers() {
method setAdditionalContainers (line 2481) | public void setAdditionalContainers(List<Container> additionalContaine...
method getLivenessHttpProbeScheme (line 2485) | public String getLivenessHttpProbeScheme() {
method setLivenessHttpProbeScheme (line 2489) | public void setLivenessHttpProbeScheme(String livenessHttpProbeScheme) {
method getReadinessHttpProbeScheme (line 2493) | public String getReadinessHttpProbeScheme() {
method setReadinessHttpProbeScheme (line 2497) | public void setReadinessHttpProbeScheme(String readinessHttpProbeSchem...
method getLifecycle (line 2501) | Lifecycle getLifecycle() {
method setLifecycle (line 2505) | void setLifecycle(Lifecycle lifecycle) {
method getDeploymentLabels (line 2509) | public String getDeploymentLabels() {
method setDeploymentLabels (line 2513) | public void setDeploymentLabels(String deploymentLabels) {
method getAppAdmin (line 2517) | public AppAdmin getAppAdmin() {
method setAppAdmin (line 2521) | public void setAppAdmin(AppAdmin appAdmin) {
method getCron (line 2525) | public CronConfig getCron() {
method setCron (line 2529) | public void setCron(CronConfig cron) {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesScheduler.java
class KubernetesScheduler (line 54) | public class KubernetesScheduler extends AbstractKubernetesDeployer impl...
method KubernetesScheduler (line 65) | public KubernetesScheduler(KubernetesClient client,
method schedule (line 79) | @Override
method mergeSchedulerProperties (line 103) | static Map<String, String> mergeSchedulerProperties(ScheduleRequest sc...
method validateScheduleName (line 149) | public void validateScheduleName(ScheduleRequest request) {
method unschedule (line 162) | @Override
method list (line 171) | @Override
method list (line 179) | @Override
method createCronJob (line 204) | protected CronJob createCronJob(ScheduleRequest scheduleRequest) {
method getExceptionMessageForField (line 280) | protected String getExceptionMessageForField(KubernetesClientException...
method setImagePullSecret (line 298) | private void setImagePullSecret(ScheduleRequest scheduleRequest, CronJ...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesSchedulerProperties.java
class KubernetesSchedulerProperties (line 26) | @Deprecated
method getRestartPolicy (line 56) | public RestartPolicy getRestartPolicy() {
method setRestartPolicy (line 65) | public void setRestartPolicy(RestartPolicy restartPolicy) {
method getTaskServiceAccountName (line 74) | public String getTaskServiceAccountName() {
method setTaskServiceAccountName (line 83) | public void setTaskServiceAccountName(String taskServiceAccountName) {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesTaskLauncher.java
class KubernetesTaskLauncher (line 78) | public class KubernetesTaskLauncher extends AbstractKubernetesDeployer i...
method KubernetesTaskLauncher (line 81) | public KubernetesTaskLauncher(KubernetesDeployerProperties properties,
method KubernetesTaskLauncher (line 87) | public KubernetesTaskLauncher(KubernetesDeployerProperties properties,
method KubernetesTaskLauncher (line 92) | public KubernetesTaskLauncher(KubernetesDeployerProperties deployerPro...
method KubernetesTaskLauncher (line 97) | public KubernetesTaskLauncher(KubernetesDeployerProperties kubernetesD...
method launch (line 108) | @Override
method cancel (line 134) | @Override
method cleanup (line 141) | @Override
method destroy (line 155) | @Override
method environmentInfo (line 162) | @Override
method status (line 167) | @Override
method getMaximumConcurrentTasks (line 175) | @Override
method getRunningTaskExecutionCount (line 180) | @Override
method getLog (line 194) | @Override
method getLogFromSelector (line 210) | private String getLogFromSelector(Map<String, String> selector) {
method maxConcurrentExecutionsReached (line 222) | private boolean maxConcurrentExecutionsReached() {
method createDeploymentId (line 226) | protected String createDeploymentId(AppDeploymentRequest request) {
method launch (line 237) | private synchronized void launch(String appId, AppDeploymentRequest re...
method getIdsForTasks (line 300) | private List<String> getIdsForTasks(Optional<String> taskName, boolean...
method getTaskResources (line 316) | private KubernetesResourceList<?> getTaskResources(Optional<String> ta...
method buildTaskStatus (line 336) | TaskStatus buildTaskStatus(String id) {
method buildPodStatus (line 366) | private TaskStatus buildPodStatus(String id) {
method deleteJob (line 388) | private void deleteJob(String id) {
method deletePod (line 403) | private void deletePod(String id) {
method getJob (line 418) | private Job getJob(String jobName) {
method getPodByName (line 430) | private Pod getPodByName(String name) {
method getRestartPolicy (line 441) | protected RestartPolicy getRestartPolicy(AppDeploymentRequest request) {
method getBackoffLimit (line 459) | protected Integer getBackoffLimit(AppDeploymentRequest request) {
method getTtlSecondsAfterFinished (line 476) | protected Integer getTtlSecondsAfterFinished(AppDeploymentRequest requ...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesTaskLauncherProperties.java
class KubernetesTaskLauncherProperties (line 26) | @ConfigurationProperties(prefix = "spring.cloud.deployer.kubernetes")
method getRestartPolicy (line 51) | public RestartPolicy getRestartPolicy() {
method setRestartPolicy (line 60) | public void setRestartPolicy(RestartPolicy restartPolicy) {
method getBackoffLimit (line 68) | public Integer getBackoffLimit() {
method setBackoffLimit (line 77) | public void setBackoffLimit(Integer backoffLimit) {
method getTtlSecondsAfterFinished (line 85) | public Integer getTtlSecondsAfterFinished() {
method setTtlSecondsAfterFinished (line 94) | public void setTtlSecondsAfterFinished(Integer ttlSecondsAfterFinished) {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/LivenessCommandProbeCreator.java
class LivenessCommandProbeCreator (line 29) | class LivenessCommandProbeCreator extends CommandProbeCreator {
method LivenessCommandProbeCreator (line 30) | LivenessCommandProbeCreator(KubernetesDeployerProperties kubernetesDep...
method getInitialDelay (line 34) | @Override
method getPeriod (line 40) | @Override
method getFailure (line 46) | @Override
method getSuccess (line 52) | @Override
method getCommand (line 58) | @Override
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/LivenessHttpProbeCreator.java
class LivenessHttpProbeCreator (line 28) | class LivenessHttpProbeCreator extends HttpProbeCreator {
method LivenessHttpProbeCreator (line 29) | LivenessHttpProbeCreator(KubernetesDeployerProperties kubernetesDeploy...
method getPort (line 34) | @Override
method getProbePath (line 53) | @Override
method getScheme (line 69) | @Override
method getTimeout (line 81) | @Override
method getInitialDelay (line 87) | @Override
method getPeriod (line 93) | @Override
method getFailure (line 99) | @Override
method getSuccess (line 105) | @Override
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/LivenessTcpProbeCreator.java
class LivenessTcpProbeCreator (line 28) | class LivenessTcpProbeCreator extends TcpProbeCreator {
method LivenessTcpProbeCreator (line 29) | LivenessTcpProbeCreator(KubernetesDeployerProperties kubernetesDeploye...
method getInitialDelay (line 33) | @Override
method getPeriod (line 39) | @Override
method getTimeout (line 45) | @Override
method getPort (line 51) | @Override
method getFailure (line 70) | @Override
method getSuccess (line 76) | @Override
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/PredicateRunningPhaseDeploymentStateResolver.java
class PredicateRunningPhaseDeploymentStateResolver (line 31) | public class PredicateRunningPhaseDeploymentStateResolver implements Run...
method PredicateRunningPhaseDeploymentStateResolver (line 37) | PredicateRunningPhaseDeploymentStateResolver(
method resolve (line 46) | public DeploymentState resolve(ContainerStatus containerStatus) {
class ContainerStatusCondition (line 73) | static abstract class ContainerStatusCondition implements Predicate<Co...
method ContainerStatusCondition (line 76) | ContainerStatusCondition(String description) {
method toString (line 79) | public String toString() {
class ContainerReady (line 86) | static class ContainerReady extends PredicateRunningPhaseDeploymentSta...
method ContainerReady (line 87) | ContainerReady(KubernetesDeployerProperties properties) {
class ContainerCrashed (line 97) | static class ContainerCrashed extends PredicateRunningPhaseDeploymentS...
method ContainerCrashed (line 98) | ContainerCrashed(KubernetesDeployerProperties properties) {
class RestartsDueToTheSameError (line 122) | static class RestartsDueToTheSameError extends PredicateRunningPhaseDe...
method RestartsDueToTheSameError (line 124) | RestartsDueToTheSameError(KubernetesDeployerProperties properties) {
class CrashLoopBackOffRestarts (line 153) | static class CrashLoopBackOffRestarts extends PredicateRunningPhaseDep...
method CrashLoopBackOffRestarts (line 154) | CrashLoopBackOffRestarts(KubernetesDeployerProperties properties) {
class ContainerTerminated (line 176) | static class ContainerTerminated extends PredicateRunningPhaseDeployme...
method ContainerTerminated (line 178) | ContainerTerminated(KubernetesDeployerProperties properties) {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ProbeAuthenticationType.java
type ProbeAuthenticationType (line 25) | public enum ProbeAuthenticationType {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ProbeCreator.java
class ProbeCreator (line 32) | abstract class ProbeCreator {
method ProbeCreator (line 41) | ProbeCreator(KubernetesDeployerProperties kubernetesDeployerProperties,
method create (line 47) | abstract Probe create();
method getInitialDelay (line 49) | abstract int getInitialDelay();
method getPeriod (line 51) | abstract int getPeriod();
method getFailure (line 53) | abstract int getFailure();
method getSuccess (line 55) | abstract int getSuccess();
method getKubernetesDeployerProperties (line 57) | KubernetesDeployerProperties getKubernetesDeployerProperties() {
method getDeploymentProperties (line 61) | private Map<String, String> getDeploymentProperties() {
method getDeploymentPropertyValue (line 65) | protected String getDeploymentPropertyValue(String propertyName) {
method getDeploymentPropertyValue (line 68) | protected String getDeploymentPropertyValue(String propertyName, Strin...
method getContainerConfiguration (line 72) | ContainerConfiguration getContainerConfiguration() {
method getProbeProperty (line 78) | String getProbeProperty(String propertyPrefix, String probeName, Strin...
method getProbeProperty (line 84) | String getProbeProperty(String propertyPrefix, String probeName, Strin...
method getProbeIntProperty (line 89) | int getProbeIntProperty(String propertyPrefix, String probeName, Strin...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ProbeCreatorFactory.java
class ProbeCreatorFactory (line 27) | class ProbeCreatorFactory {
method createStartupProbe (line 28) | static Probe createStartupProbe(ContainerConfiguration containerConfig...
method createReadinessProbe (line 42) | static Probe createReadinessProbe(ContainerConfiguration containerConf...
method createLivenessProbe (line 56) | static Probe createLivenessProbe(ContainerConfiguration containerConfi...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ProbeType.java
type ProbeType (line 24) | enum ProbeType {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ReadinessCommandProbeCreator.java
class ReadinessCommandProbeCreator (line 29) | class ReadinessCommandProbeCreator extends CommandProbeCreator {
method ReadinessCommandProbeCreator (line 30) | ReadinessCommandProbeCreator(KubernetesDeployerProperties kubernetesDe...
method getInitialDelay (line 34) | @Override
method getPeriod (line 40) | @Override
method getFailure (line 46) | @Override
method getSuccess (line 52) | @Override
method getCommand (line 58) | @Override
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ReadinessHttpProbeCreator.java
class ReadinessHttpProbeCreator (line 28) | class ReadinessHttpProbeCreator extends HttpProbeCreator {
method ReadinessHttpProbeCreator (line 29) | ReadinessHttpProbeCreator(KubernetesDeployerProperties kubernetesDeplo...
method getPort (line 34) | @Override
method getProbePath (line 57) | @Override
method getScheme (line 76) | @Override
method getTimeout (line 91) | @Override
method getInitialDelay (line 97) | @Override
method getPeriod (line 103) | @Override
method getFailure (line 109) | @Override
method getSuccess (line 115) | @Override
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ReadinessTcpProbeCreator.java
class ReadinessTcpProbeCreator (line 28) | class ReadinessTcpProbeCreator extends TcpProbeCreator {
method ReadinessTcpProbeCreator (line 29) | ReadinessTcpProbeCreator(KubernetesDeployerProperties kubernetesDeploy...
method getInitialDelay (line 33) | @Override
method getPeriod (line 39) | @Override
method getTimeout (line 45) | @Override
method getPort (line 51) | @Override
method getFailure (line 70) | @Override
method getSuccess (line 76) | @Override
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/RestartPolicy.java
type RestartPolicy (line 24) | public enum RestartPolicy {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/RunningPhaseDeploymentStateResolver.java
type RunningPhaseDeploymentStateResolver (line 26) | public interface RunningPhaseDeploymentStateResolver {
method resolve (line 27) | DeploymentState resolve(ContainerStatus containerStatus);
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/StartupCommandProbeCreator.java
class StartupCommandProbeCreator (line 28) | class StartupCommandProbeCreator extends CommandProbeCreator {
method StartupCommandProbeCreator (line 29) | StartupCommandProbeCreator(KubernetesDeployerProperties kubernetesDepl...
method getInitialDelay (line 33) | @Override
method getPeriod (line 39) | @Override
method getFailure (line 45) | @Override
method getSuccess (line 51) | @Override
method getCommand (line 57) | @Override
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/StartupHttpProbeCreator.java
class StartupHttpProbeCreator (line 26) | class StartupHttpProbeCreator extends HttpProbeCreator {
method StartupHttpProbeCreator (line 27) | StartupHttpProbeCreator(KubernetesDeployerProperties kubernetesDeploye...
method getPort (line 32) | @Override
method getProbePath (line 55) | @Override
method getScheme (line 74) | @Override
method getTimeout (line 89) | @Override
method getInitialDelay (line 95) | @Override
method getPeriod (line 101) | @Override
method getFailure (line 107) | @Override
method getSuccess (line 113) | @Override
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/StartupTcpProbeCreator.java
class StartupTcpProbeCreator (line 27) | class StartupTcpProbeCreator extends TcpProbeCreator {
method StartupTcpProbeCreator (line 28) | StartupTcpProbeCreator(KubernetesDeployerProperties kubernetesDeployer...
method getInitialDelay (line 32) | @Override
method getPeriod (line 38) | @Override
method getTimeout (line 44) | @Override
method getPort (line 50) | @Override
method getFailure (line 69) | @Override
method getSuccess (line 75) | @Override
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/TcpProbeCreator.java
class TcpProbeCreator (line 28) | abstract class TcpProbeCreator extends ProbeCreator {
method TcpProbeCreator (line 29) | TcpProbeCreator(KubernetesDeployerProperties kubernetesDeployerPropert...
method getPort (line 34) | abstract Integer getPort();
method getTimeout (line 36) | protected abstract int getTimeout();
method create (line 38) | protected Probe create() {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/support/ArgumentSanitizer.java
class ArgumentSanitizer (line 36) | public class ArgumentSanitizer {
method ArgumentSanitizer (line 47) | public ArgumentSanitizer() {
method getPattern (line 54) | private Pattern getPattern(String value) {
method isRegex (line 61) | private boolean isRegex(String value) {
method sanitize (line 76) | public String sanitize(String argument) {
method sanitize (line 96) | public String sanitize(String key, String value) {
method sanitizeProperties (line 114) | public Map<String, String> sanitizeProperties(Map<String, String> prop...
method sanitizeArguments (line 131) | public List<String> sanitizeArguments(List<String> arguments) {
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/support/PropertyParserUtils.java
class PropertyParserUtils (line 33) | public class PropertyParserUtils {
method getStringPairsToMap (line 40) | public static Map<String, String> getStringPairsToMap(String stringPai...
method getDeploymentPropertyValue (line 59) | public static String getDeploymentPropertyValue(Map<String, String> de...
method getDeploymentPropertyValue (line 63) | public static String getDeploymentPropertyValue(Map<String, String> de...
FILE: spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/support/RelaxedNames.java
class RelaxedNames (line 34) | public final class RelaxedNames implements Iterable<String> {
method RelaxedNames (line 50) | public RelaxedNames(String name) {
method iterator (line 55) | @Override
method initialize (line 60) | private void initialize(String name, Set<String> values) {
type Variation (line 78) | enum Variation {
method apply (line 82) | @Override
method apply (line 91) | @Override
method apply (line 100) | @Override
method apply (line 107) | public abstract String apply(String value);
type Manipulation (line 114) | enum Manipulation {
method apply (line 118) | @Override
method apply (line 127) | @Override
method apply (line 136) | @Override
method apply (line 145) | @Override
method apply (line 154) | @Override
method apply (line 177) | @Override
method apply (line 200) | @Override
method apply (line 209) | @Override
method apply (line 218) | public abstract String apply(String value);
method separatedToCamelCase (line 220) | private static String separatedToCamelCase(String value,
method forCamelCase (line 248) | public static RelaxedNames forCamelCase(String name) {
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/AbstractKubernetesTaskLauncherIntegrationTests.java
class AbstractKubernetesTaskLauncherIntegrationTests (line 47) | abstract class AbstractKubernetesTaskLauncherIntegrationTests extends Ab...
method provideTaskLauncher (line 57) | @Override
method randomName (line 62) | @Override
method testApplication (line 67) | @Override
method deploymentTimeout (line 72) | @Override
method testSimpleCancel (line 77) | @Test
method logTestInfo (line 84) | protected void logTestInfo(TestInfo testInfo) {
method awaitWithPollAndTimeout (line 90) | protected ConditionFactory awaitWithPollAndTimeout(Timeout timeout) {
method getPodsForTask (line 95) | protected List<Pod> getPodsForTask(String taskName) {
method getJobsForTask (line 99) | protected List<Job> getJobsForTask(String taskName) {
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/DefaultContainerFactoryTests.java
class DefaultContainerFactoryTests (line 63) | @ExtendWith(SpringExtension.class)
method create (line 67) | @Test
method createWithContainerCommand (line 94) | @Test
method createWithPorts (line 114) | @Test
method createWithInvalidPort (line 139) | @Test
method createWithPortAndHostNetwork (line 160) | @Test
method createWithEntryPointStyle (line 189) | @Test
method createWithVolumeMounts (line 258) | @Test
method createCustomLivenessPortFromProperties (line 312) | @Test
method createCustomLivenessHttpPortFromProperties (line 343) | @Test
method createCustomLivenessHttpProbeSchemeFromProperties (line 374) | @Test
method createCustomReadinessHttpSchemeFromProperties (line 402) | @Test
method createCustomLivenessAndReadinessHttpProbeSchemeFromAppRequest (line 430) | @Test
method createCustomLivenessPortFromAppRequest (line 464) | @Test
method createCustomLivenessHttpPortFromAppRequest (line 495) | @Test
method createCustomReadinessPortFromAppRequest (line 528) | @Test
method createCustomReadinessHttpPortFromAppRequest (line 559) | @Test
method createCustomReadinessPortFromProperties (line 592) | @Test
method createCustomReadinessHttpPortFromProperties (line 623) | @Test
method createDefaultHttpProbePorts (line 653) | @Test
method createHttpProbesWithDefaultEndpoints (line 681) | @Test
method createHttpProbesWithBoot1Endpoints (line 709) | @Test
method createProbesWithOverrides (line 742) | @Test
method createHttpProbesWithOverrides (line 774) | @Test
method createProbesWithPropertyOverrides (line 808) | @Test
method createHttpProbesWithPropertyOverrides (line 838) | @Test
method testHttpProbeCredentialsSecret (line 867) | @Test
method testHttpProbeCredentialsInvalidSecret (line 897) | @Test
method testHttpProbeHeadersWithoutAuth (line 920) | @Test
method createTcpProbe (line 935) | @Test
method createTcpProbeMissingLivenessPort (line 986) | @Test
method createTcpProbeMissingReadinessPort (line 1012) | @Test
method createReadinessTcpProbeWithNonDigitPort (line 1038) | @Test
method createLivenessTcpProbeWithNonDigitPort (line 1065) | @Test
method createTcpProbeGlobalProperties (line 1092) | @Test
method createTcpProbeGlobalPropertyOverride (line 1156) | @Test
method createCommandProbe (line 1229) | @Test
method createCommandProbeMissingCommand (line 1273) | @Test
method createCommandProbeGlobalProperties (line 1298) | @Test
method createCommandProbeGlobalPropertyOverride (line 1357) | @Test
method testCommandLineArgsOverridesExistingProperties (line 1425) | @Test
method testCommandLineArgsNoAssignment (line 1437) | @Test
method testCommandLineArgsExcludesMalformedProperties (line 1454) | @Test
method getResource (line 1468) | private Resource getResource() {
method randomSecret (line 1473) | private Secret randomSecret() {
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/DeploymentPropertiesResolverTests.java
class DeploymentPropertiesResolverTests (line 32) | public class DeploymentPropertiesResolverTests {
method testRestartPolicy (line 34) | @ParameterizedTest
method testTaskServiceAccountName (line 53) | @ParameterizedTest
method getDeploymentPropertiesResolver (line 72) | private DeploymentPropertiesResolver getDeploymentPropertiesResolver(b...
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/EntryPointStyleTests.java
class EntryPointStyleTests (line 27) | public class EntryPointStyleTests {
method testInvalidEntryPointStyleDefaulting (line 29) | @Test
method testMatchEntryPointStyle (line 36) | @Test
method testMixedCaseEntryPointStyle (line 43) | @Test
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/ImagePullPolicyTests.java
class ImagePullPolicyTests (line 28) | public class ImagePullPolicyTests {
method relaxedValueOf_ignoresCase (line 30) | @Test
method relaxedValueOf_parsesValueWithDashesInsteadOfCamelCase (line 36) | @Test
method relaxedValueOf_returnsNullIfValueNotParseable (line 42) | @Test
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesActuatorTemplateTests.java
class KubernetesActuatorTemplateTests (line 47) | public class KubernetesActuatorTemplateTests {
method setUp (line 56) | @BeforeEach
method actuatorInfo (line 98) | @Test
method actuatorBindings (line 106) | @Test
method actuatorBindingInput (line 114) | @Test
method actuatorPostBindingInput (line 121) | @Test
method noInstanceDeployed (line 129) | @Test
method getUrl (line 139) | public static String getUrl(int port) {
method findRandomOpenPort (line 142) | public static int findRandomOpenPort() {
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesAppDeployerIntegrationIT.java
class KubernetesAppDeployerIntegrationIT (line 117) | @SpringBootTest(classes = {KubernetesAutoConfiguration.class}, propertie...
method provideAppDeployer (line 128) | @Override
method setup (line 133) | @BeforeEach
method testScaleStatefulSet (line 140) | @Test
method testScaleDeployment (line 195) | @Test
method testScaleWithNonExistingApps (line 231) | @Test
method testFailedDeploymentWithLoadBalancer (line 237) | @Test
method testGoodDeploymentWithLoadBalancer (line 273) | @Test
method testDeploymentWithLoadBalancerHasUrlAndAnnotation (line 301) | @Test
method testAttributes (line 349) | @Test
method testDeploymentWithPodAnnotation (line 390) | @Test
method testDeploymentWithMountedHostPathVolume (line 432) | @Test
method verifyAppEnv (line 481) | private void verifyAppEnv(String appId) {
method testDeploymentWithGroupAndIndex (line 573) | @Test
method testDeploymentServiceAccountName (line 618) | @Test
method testCreateStatefulSet (line 655) | @Test
method testCreateStatefulSetInitContainerImageNamePropOverride (line 733) | @Test
method createStatefulSetInitContainerImageNameGlobalOverride (line 779) | @Test
method createStatefulSetWithOverridingRequest (line 826) | @Test
method createStatefulSetWithPVCDefaultName (line 893) | @Test
method testStatefulSetPodAnnotations (line 929) | @Test
method testDeploymentLabels (line 970) | @Test
method testDeploymentLabelsStatefulSet (line 1008) | @Test
method testCleanupOnDeployFailure (line 1059) | @Test
method testMultipleContainersInPod (line 1111) | @Test
method testDefaultServicePort (line 1148) | @Test
method testDefaultServicePortOverride (line 1179) | @Test
method testServiceWithMultiplePorts (line 1210) | @Test
method testCreateInitContainer (line 1244) | @Test
method testCreateInitContainerWithEnvVariables (line 1285) | @Test
method initContainerFromGlobalProps (line 1325) | @Test
method initContainerFromDeployerProps (line 1353) | @Test
method initContainerPartialFromDeployerProps (line 1384) | @Test
method initContainerFromDeployerPropsWithVolumeMounts (line 1414) | @Test
method deploy (line 1469) | private String deploy(KubernetesAppDeployer kubernetesAppDeployer, App...
method undeploy (line 1480) | private void undeploy(KubernetesAppDeployer kubernetesAppDeployer, Str...
method testCreateAdditionalContainers (line 1491) | @Test
method testCreateAdditionalContainersOverride (line 1565) | @Test
class SecurityContextITs (line 1664) | @Nested
method podWithInitContainerAndAdditionalContainers (line 1667) | @Test
method statefulSetWithInitContainerAndAdditionalContainers (line 1745) | @Test
method assertThatContainerExistsWithSecurityContext (line 1819) | private void assertThatContainerExistsWithSecurityContext(List<Contain...
method testUnknownStatusOnPendingResources (line 1825) | @Test
method testSecretRef (line 1874) | @Test
method testSecretRefFromDeployerProperty (line 1925) | @Test
method testSecretRefFromDeployerPropertyOverride (line 1976) | @Test
method testSecretRefFromPropertyMultiple (line 2035) | @Test
method testSecretRefFromDeploymentPropertyMultiple (line 2099) | @Test
method testConfigMapRef (line 2160) | @Test
method testConfigMapRefFromDeployerProperty (line 2210) | @Test
method testConfigMapRefFromDeployerPropertyOverride (line 2260) | @Test
method testConfigMapRefFromPropertyMultiple (line 2318) | @Test
method testConfigMapRefFromDeploymentPropertyMultiple (line 2381) | @Test
method randomName (line 2442) | @Override
method deploymentTimeout (line 2448) | @Override
method testApplication (line 2453) | @Override
method getPodEnvironment (line 2458) | private String getPodEnvironment(String deploymentId) throws Interrupt...
method randomSecret (line 2493) | private Secret randomSecret() {
method randomConfigMap (line 2515) | private ConfigMap randomConfigMap() {
method kubernetesAppDeployer (line 2531) | private KubernetesAppDeployer kubernetesAppDeployer() {
method kubernetesAppDeployer (line 2535) | private KubernetesAppDeployer kubernetesAppDeployer(KubernetesDeployer...
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesAppDeployerTests.java
class KubernetesAppDeployerTests (line 96) | @DisplayName("KubernetesAppDeployer")
method deployWithVolumesOnly (line 104) | @Test
method deployWithVolumesAndVolumeMounts (line 116) | @Test
method deployWithVolumesAndVolumeMountsOnAdditionalContainer (line 154) | @Test
method deployWithVolumesAndVolumeMountsOnAdditionalContainerAbsentVolumeMount (line 173) | @Test
method deployWithNodeSelectorGlobalProperty (line 195) | @Test
method deployWithNodeSelectorDeploymentProperty (line 209) | @Test
method deployWithNodeSelectorTrainTruckCaseProperty (line 221) | @Test
method deployWithNodeSelectorDeploymentPropertyGlobalOverride (line 234) | @Test
method deployWithEnvironmentWithCommaDelimitedValue (line 250) | @Test
method deployWithEnvironmentWithSingleCommaDelimitedValue (line 272) | @Test
method deployWithEnvironmentWithMultipleCommaDelimitedValue (line 288) | @Test
method deployWithImagePullSecretDeploymentProperty (line 306) | @Test
method deployWithImagePullSecretDeployerProperty (line 322) | @Test
method deployWithImagePullSecretsDeploymentProperty (line 338) | @Test
method deployWithImagePullSecretsDeployerProperty (line 355) | @Test
method deployWithDeploymentServiceAccountNameDeploymentProperties (line 372) | @Test
method deployWithDeploymentServiceAccountNameDeployerProperty (line 388) | @Test
method deployWithDeploymentServiceAccountNameDeploymentPropertyOverride (line 404) | @Test
method deployWithTolerations (line 423) | @Test
method deployWithGlobalTolerations (line 435) | @Test
method deployWithTolerationPropertyOverride (line 455) | @Test
method deployWithDuplicateTolerationKeyPropertyOverride (line 485) | @Test
method deployWithDuplicateGlobalToleration (line 513) | @Test
method testInvalidDeploymentLabelDelimiter (line 547) | @Test
method testInvalidMultipleDeploymentLabelDelimiter (line 560) | @Test
method testDeploymentLabels (line 573) | @Test
method testSecretKeyRef (line 591) | @Test
method testSecretKeyRefMultiple (line 614) | @Test
method testSecretKeyRefGlobal (line 644) | @Test
method testSecretKeyRefPropertyOverride (line 670) | @Test
method testSecretKeyRefGlobalFromYaml (line 727) | @Test
method testConfigMapKeyRef (line 746) | @Test
method testConfigMapKeyRefMultiple (line 769) | @Test
method testConfigMapKeyRefGlobal (line 799) | @Test
method testConfigMapKeyRefPropertyOverride (line 825) | @Test
method testConfigMapKeyRefGlobalFromYaml (line 882) | @Test
method testInitContainerProperties (line 900) | @Test
method testInitContainerJsonArrayProperties (line 916) | @Test
method testInitContainerEnvironmentVariables (line 933) | @Test
method testMultipleInitContainerProperties (line 957) | @Test
method testNodeAffinityProperty (line 1003) | @Test
method testPodAffinityProperty (line 1035) | @Test
method testPodAntiAffinityProperty (line 1070) | @Test
method testNodeAffinityGlobalProperty (line 1105) | @Test
method testPodAffinityGlobalProperty (line 1145) | @Test
method testPodAntiAffinityGlobalProperty (line 1185) | @Test
method testNodeAffinityFromYaml (line 1225) | @Test
method testPodAffinityFromYaml (line 1239) | @Test
method testPodAntiAffinityFromYaml (line 1253) | @Test
method testNodeAffinityPropertyOverrideGlobal (line 1267) | @Test
method testPodAffinityPropertyOverrideGlobal (line 1317) | @Test
method testPodAntiAffinityPropertyOverrideGlobal (line 1369) | @Test
class CreatePodSpecWithPodSecurityContext (line 1421) | @Nested
method createdFromDeploymentPropertyWithAllFields (line 1425) | @Test
method createdFromDeploymentPropertyWithRunAsUserOnly (line 1457) | @Test
method createdFromDeploymentPropertyWithFsGroupOnly (line 1469) | @Test
method createdFromDeploymentPropertyWithSupplementalGroupsOnly (line 1481) | @Test
method createdFromDeploymentPropertyWithSeccompProfileOnly (line 1493) | @Test
method createdFromGlobalDeployerPropertySourcedFromYaml (line 1505) | @Test
method createdFromGlobalDeployerProperty (line 1525) | @Test
method createdFromDeploymentPropertyOverridingGlobalDeployerProperty (line 1548) | @Test
method assertThatDeployerCreatesPodSpecWithPodSecurityContext (line 1572) | private void assertThatDeployerCreatesPodSpecWithPodSecurityContext(
class CreatePodSpecWithContainerSecurityContext (line 1585) | @Nested
method createdFromDeploymentPropertyWithAllFields (line 1589) | @Test
method createdFromDeploymentPropertyWithAllowPrivilegeEscalationOnly (line 1623) | @Test
method createdFromDeploymentPropertyWithReadOnlyRootFilesystemOnly (line 1634) | @Test
method createdFromGlobalDeployerPropertySourcedFromYaml (line 1645) | @Test
method createdFromGlobalDeployerProperty (line 1666) | @Test
method createdFromDeploymentPropertyOverridingGlobalDeployerProperty (line 1682) | @Test
method assertThatDeployerCreatesPodSpecWithContainerSecurityContext (line 1698) | private void assertThatDeployerCreatesPodSpecWithContainerSecurityCo...
method deployerCreatesPodSpec (line 1711) | private PodSpec deployerCreatesPodSpec(KubernetesDeployerProperties gl...
method testWithLifecyclePostStart (line 1718) | @Test
method testWithLifecyclePreStop (line 1732) | @Test
method testLifecyclePostStartOverridesGlobalPostStart (line 1747) | @Test
method testLifecyclePrestopOverridesGlobalPrestop (line 1788) | @Test
method terminationGracePeriodFromDeployerProp (line 1829) | @Test
method terminationGracePeriodFromGlobalProp (line 1842) | @Test
method terminationGracePeriodNotSpecified (line 1853) | @Test
method getResource (line 1863) | private Resource getResource() {
method bindDeployerProperties (line 1867) | private KubernetesDeployerProperties bindDeployerProperties() throws E...
method k8sAppDeployer (line 1883) | protected KubernetesAppDeployer k8sAppDeployer() throws Exception {
method k8sAppDeployer (line 1887) | protected KubernetesAppDeployer k8sAppDeployer(KubernetesDeployerPrope...
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesConfigurationPropertiesTests.java
class KubernetesConfigurationPropertiesTests (line 31) | public class KubernetesConfigurationPropertiesTests {
method testFabric8Namespacing (line 33) | @Test
method testTopLevelNamespacing (line 52) | @Test
method testTopLevelNamespacingOverride (line 68) | @Test
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesDeployerPropertiesTests.java
class KubernetesDeployerPropertiesTests (line 31) | public class KubernetesDeployerPropertiesTests {
method testImagePullPolicyDefault (line 33) | @Test
method testImagePullPolicyCanBeCustomized (line 42) | @Test
method testRestartPolicyDefault (line 52) | @Test
method testRestartPolicyCanBeCustomized (line 61) | @Test
method testEntryPointStyleDefault (line 71) | @Test
method testEntryPointStyleCanBeCustomized (line 80) | @Test
method testNamespaceDefault (line 90) | @Test
method testNamespaceCanBeCustomized (line 101) | @Test
method testImagePullSecretDefault (line 109) | @Test
method testImagePullSecretCanBeCustomized (line 115) | @Test
method testEnvironmentVariablesDefault (line 124) | @Test
method testEnvironmentVariablesCanBeCustomized (line 132) | @Test
method testTaskServiceAccountNameDefault (line 143) | @Test
method testTaskServiceAccountNameCanBeCustomized (line 152) | @Test
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesSchedulerIT.java
class KubernetesSchedulerIT (line 84) | @ExtendWith(SpringExtension.class)
method provideScheduler (line 97) | @Override
method getCommandLineArgs (line 102) | @Override
method getSchedulerProperties (line 111) | @Override
method getSchedulerProperties (line 117) | private Map<String, String> getSchedulerProperties(String concurrencyP...
method getDeploymentProperties (line 123) | @Override
method getAppProperties (line 128) | @Override
method randomName (line 137) | @Override
method scheduleName (line 144) | @Override
method testApplication (line 151) | protected Resource testApplication() {
method test (line 155) | @Test
method testMissingSchedule (line 160) | @ParameterizedTest
method testInvalidNameSchedule (line 173) | @ParameterizedTest
method testSchedulerPropertiesMerge (line 186) | @Test
method listScheduleWithExternalCronJobs (line 211) | @Test
method testInvalidCronSyntax (line 257) | @ParameterizedTest
method testNameTooLong (line 271) | @ParameterizedTest
method testWithExecEntryPoint (line 293) | @ParameterizedTest
method testWithShellEntryPoint (line 325) | @ParameterizedTest
method testWithBootEntryPoint (line 357) | @ParameterizedTest
method testGetExceptionMessageForExistingField (line 397) | @Test
method testGetExceptionMessageForNonExistentField (line 416) | @Test
method testEntryPointStyleOverride (line 434) | @ParameterizedTest
method testEntryPointStyleDefault (line 475) | @ParameterizedTest
method testImagePullPolicyOverride (line 504) | @ParameterizedTest
method testJobAnnotationsAndLabelsFromSchedulerProperties (line 536) | @ParameterizedTest
method testDefaultLabel (line 570) | @Test
method testJobAnnotationsAndLabelsFromSchedulerRequest (line 595) | @ParameterizedTest
method testJobAnnotationsOverride (line 644) | @ParameterizedTest
method testImagePullPolicyDefault (line 674) | @ParameterizedTest
method testImagePullSecret (line 701) | @ParameterizedTest
method testImagePullSecretDefault (line 733) | @ParameterizedTest
method testImagePullSecretFromSchedulerProperties (line 760) | @ParameterizedTest
method testCustomEnvironmentVariables (line 790) | @ParameterizedTest
method testGlobalEnvironmentVariables (line 805) | @ParameterizedTest
method testCustomEnvironmentVariablesWithNestedComma (line 821) | @ParameterizedTest
method testGlobalAndCustomEnvironmentVariables (line 836) | @ParameterizedTest
method testCustomEnvironmentVariablesOverrideGlobal (line 860) | @ParameterizedTest
method testEnvironmentVariables (line 882) | private void testEnvironmentVariables(KubernetesDeployerProperties kub...
method testTaskServiceAccountNameOverride (line 907) | @ParameterizedTest
method testTaskServiceAccountNameDefault (line 940) | @ParameterizedTest
method testConcurrencyPolicy (line 970) | @ParameterizedTest
method testConcurrencyPolicyDefault (line 994) | @Test
method testConcurrencyPolicyFromServerProperties (line 1017) | @Test
method testTtlSecondsAfterFinished (line 1041) | @ParameterizedTest
method testInvalidTtlSecondsAfterFinished (line 1068) | @ParameterizedTest
method testTtlSecondsAfterFinishedDefault (line 1083) | @Test
method testTtlSecondsAfterFinishedFromServerProperties (line 1107) | @Test
method testBackoffLimit (line 1131) | @Test
method testBackoffLimitDefault (line 1153) | @Test
method testBackoffLimitFromServerProperties (line 1171) | @Test
method cleanup (line 1190) | @AfterAll
method safeUnschedule (line 1209) | private static void safeUnschedule(KubernetesScheduler scheduler, Stri...
class Config (line 1218) | @Configuration
method scheduler (line 1224) | @Bean
method kubernetesClient (line 1229) | @Bean
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesSchedulerPropertiesTests.java
class KubernetesSchedulerPropertiesTests (line 31) | public class KubernetesSchedulerPropertiesTests {
method testImagePullPolicyDefault (line 33) | @Test
method testImagePullPolicyCanBeCustomized (line 42) | @Test
method testRestartPolicyDefault (line 52) | @Test
method testRestartPolicyCanBeCustomized (line 61) | @Test
method testEntryPointStyleDefault (line 71) | @Test
method testEntryPointStyleCanBeCustomized (line 80) | @Test
method testNamespaceDefault (line 90) | @Test
method testNamespaceCanBeCustomized (line 101) | @Test
method testImagePullSecretDefault (line 109) | @Test
method testImagePullSecretCanBeCustomized (line 115) | @Test
method testEnvironmentVariablesDefault (line 124) | @Test
method testEnvironmentVariablesCanBeCustomized (line 132) | @Test
method testTaskServiceAccountNameDefault (line 143) | @Test
method testTaskServiceAccountNameCanBeCustomized (line 152) | @Test
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesTaskLauncherIntegrationIT.java
class KubernetesTaskLauncherIntegrationIT (line 55) | @SpringBootTest(classes = {KubernetesAutoConfiguration.class}, propertie...
method taskLaunchedWithJobPodAnnotations (line 61) | @Test
method taskLaunchedWithDeploymentLabels (line 74) | @Test
method tasksLaunchedWithAdditionalContainers (line 87) | @Test
method launchTaskPodAndValidateCreatedPodWithCleanup (line 99) | private void launchTaskPodAndValidateCreatedPodWithCleanup(Map<String,...
method cleanupDeletesTaskPod (line 121) | @Test
method cleanupForNonExistentTaskThrowsException (line 147) | @Test
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesTaskLauncherMaximumConcurrentTasksTests.java
class KubernetesTaskLauncherMaximumConcurrentTasksTests (line 51) | @SpringBootTest(classes = { KubernetesAutoConfiguration.class }, propert...
method getMaximumConcurrentTasksExceeded (line 64) | @Test
method stubForRunningPods (line 107) | private List<Pod> stubForRunningPods(int numTasks) {
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesTaskLauncherWithJobIntegrationIT.java
class KubernetesTaskLauncherWithJobIntegrationIT (line 57) | @SpringBootTest(classes = {KubernetesAutoConfiguration.class})
method setup (line 62) | @BeforeEach
method taskLaunchedWithJobAnnotations (line 69) | @Test
method taskLaunchedWithJobSpecProperties (line 80) | @Test
method launchTaskJobAndValidateCreatedJobAndPodWithCleanup (line 92) | private void launchTaskJobAndValidateCreatedJobAndPodWithCleanup(Map<S...
method taskLaunchedWithInvalidRestartPolicyThrowsException (line 120) | @Test
method cleanupDeletesTaskJob (line 136) | @Test
method cleanupForNonExistentTaskThrowsException (line 161) | @Test
method deleteJobAfterTtlSecondsOnAfterFinishedExpire (line 168) | @Test
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/PropertyParserUtilsTests.java
class PropertyParserUtilsTests (line 36) | public class PropertyParserUtilsTests {
method testAnnotationParseSingle (line 38) | @Test
method testAnnotationParseMultiple (line 47) | @Test
method testAnnotationParseMultipleWithCommas (line 58) | @Test
method testAnnotationWithQuotes (line 83) | @Test
method testAnnotationMultipleColon (line 94) | @Test
method testAnnotationParseInvalidValue (line 109) | @Test
method testDeploymentPropertyParsing (line 116) | @Test
FILE: spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/RunAbstractKubernetesDeployerTests.java
class RunAbstractKubernetesDeployerTests (line 40) | public class RunAbstractKubernetesDeployerTests {
method setUp (line 48) | @BeforeEach
method deduceImagePullPolicy_fallsBackToIfNotPresentIfOverrideNotParseable (line 57) | @Test
method limitGpu_noDeploymentProperty_incompleteServerProperty1_noGpu (line 64) | @Test
method limitGpu_noDeploymentProperty_incompleteServerProperty2_noGpu (line 71) | @Test
method limitGpu_noDeploymentProperty_serverProperty_usesServerProperty (line 78) | @Test
method limitGpu_deploymentPropertyVendor_usesDeploymentProperty (line 86) | @Test
method limitGpu_deploymentPropertyCount_usesDeploymentProperty (line 95) | @Test
method limitGpu_deploymentPropertyBoth_usesDeploymentProperty (line 104) | @Test
method limitCpu_noDeploymentProperty_serverProperty_usesServerProperty (line 114) | @Test
method limitMemory_noDeploymentProperty_serverProperty_usesServerProperty (line 121) | @Test
method limitCpu_deploymentProperty_usesDeploymentProperty (line 128) | @Test
method limitMemory_deploymentProperty_usesDeploymentProperty (line 136) | @Test
method requestCpu_noDeploymentProperty_serverProperty_usesServerProperty (line 144) | @Test
method requestMemory_noDeploymentProperty_serverProperty_usesServerProperty (line 151) | @Test
method requestCpu_deploymentProperty_usesDeploymentProperty (line 158) | @Test
method requestMemory_deploymentProperty_usesDeploymentProperty (line 166) | @Test
method requestEphemeralStorage_deploymentProperty_usesDeploymentProperty (line 173) | @Test
method limitEphemeralStorage_deploymentProperty_usesDeploymentProperty (line 181) | @Test
method requestHugepages1Gi_deploymentProperty_usesDeploymentProperty (line 189) | @Test
method limitHugepages1Gi_deploymentProperty_usesDeploymentProperty (line 197) | @Test
method requestHugepages2Mi_deploymentProperty_usesDeploymentProperty (line 205) | @Test
method limitHugepages2Mi_deploymentProperty_usesDeploymentProperty (line 213) | @Test
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/AbstractLocalDeployerSupport.java
class AbstractLocalDeployerSupport (line 61) | public abstract class AbstractLocalDeployerSupport {
method removeEldestEntry (line 64) | @Override
method AbstractLocalDeployerSupport (line 98) | public AbstractLocalDeployerSupport(LocalDeployerProperties localDeplo...
method buildRestTemplate (line 116) | protected RestTemplate buildRestTemplate(LocalDeployerProperties prope...
method createRuntimeEnvironmentInfo (line 132) | protected RuntimeEnvironmentInfo createRuntimeEnvironmentInfo(Class<?>...
method getLocalDeployerProperties (line 146) | final protected LocalDeployerProperties getLocalDeployerProperties() {
method buildProcessBuilder (line 159) | protected ProcessBuilder buildProcessBuilder(AppDeploymentRequest requ...
method getCommandBuilder (line 188) | protected CommandBuilder getCommandBuilder(AppDeploymentRequest reques...
method windowsSupport (line 197) | public static String[] windowsSupport(String[] commands) {
method bindDeploymentProperties (line 212) | protected LocalDeployerProperties bindDeploymentProperties(Map<String,...
method formatApplicationProperties (line 219) | protected Map<String, String> formatApplicationProperties(AppDeploymen...
method shutdownAndWait (line 265) | protected void shutdownAndWait(Instance instance) {
method isAlive (line 299) | protected boolean isAlive(Process process) {
method useSpringApplicationJson (line 312) | protected boolean useSpringApplicationJson(AppDeploymentRequest reques...
method calcServerPort (line 324) | protected int calcServerPort(AppDeploymentRequest request, boolean use...
method shouldInheritLogging (line 348) | protected boolean shouldInheritLogging(AppDeploymentRequest request) {
method getRandomPort (line 353) | public synchronized int getRandomPort(AppDeploymentRequest request) {
method isServerPortKeyPresentOnArgs (line 395) | protected Integer isServerPortKeyPresentOnArgs(AppDeploymentRequest re...
type Instance (line 403) | protected interface Instance {
method getBaseUrl (line 405) | URL getBaseUrl();
method getProcess (line 407) | Process getProcess();
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/CommandBuilder.java
type CommandBuilder (line 33) | public interface CommandBuilder {
method buildExecutionCommand (line 44) | ProcessBuilder buildExecutionCommand(AppDeploymentRequest request,
method getBaseUrl (line 57) | URL getBaseUrl(String deploymentId, int index, int port);
method getPortSuggestion (line 64) | int getPortSuggestion(LocalDeployerProperties localDeployerProperties);
method getJdwpOptions (line 72) | default String getJdwpOptions(String suspend, String address) {
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/DebugAddress.java
class DebugAddress (line 35) | public class DebugAddress {
method DebugAddress (line 47) | private DebugAddress(String host, int port, String suspend) {
method getHost (line 54) | public String getHost() {
method getPort (line 58) | public String getPort() {
method getSuspend (line 62) | public String getSuspend() {
method getAddress (line 66) | public String getAddress() {
method from (line 70) | public static Optional<DebugAddress> from(LocalDeployerProperties depl...
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/DeployerSocketUtils.java
class DeployerSocketUtils (line 49) | @Deprecated
method findAvailableTcpPort (line 67) | public static int findAvailableTcpPort(int minPort) {
method findAvailableTcpPort (line 79) | public static int findAvailableTcpPort(int minPort, int maxPort) {
method findAvailableTcpPorts (line 93) | public static SortedSet<Integer> findAvailableTcpPorts(int numRequeste...
type SocketType (line 97) | private enum SocketType {
method isPortAvailable (line 99) | @Override
method isPortAvailable (line 117) | protected abstract boolean isPortAvailable(int port);
method findRandomPort (line 126) | private int findRandomPort(int minPort, int maxPort) {
method findAvailablePort (line 139) | int findAvailablePort(int minPort, int maxPort) {
method findAvailablePorts (line 171) | SortedSet<Integer> findAvailablePorts(int numRequested, int minPort,...
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/DockerCommandBuilder.java
class DockerCommandBuilder (line 52) | public class DockerCommandBuilder implements CommandBuilder {
method DockerCommandBuilder (line 64) | public DockerCommandBuilder(String dockerNetwork) {
method getPortSuggestion (line 68) | @Override
method getBaseUrl (line 74) | @Override
method buildExecutionCommand (line 84) | @Override
method addDockerOptions (line 96) | private List<String> addDockerOptions(AppDeploymentRequest request, Ma...
method applyVolumeMountings (line 170) | private void applyVolumeMountings(List<String> commands, LocalDeployer...
method applyAdditionalHosts (line 180) | private void applyAdditionalHosts(List<String> commands, LocalDeployer...
method applyPortMappings (line 190) | private void applyPortMappings(List<String> commands, LocalDeployerPro...
method getPort (line 200) | private String getPort(Map<String, String> appInstanceEnv) {
method parseMapping (line 219) | private List<String> parseMapping(String map) {
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/HttpProbeExecutor.java
class HttpProbeExecutor (line 36) | public class HttpProbeExecutor {
method HttpProbeExecutor (line 42) | public HttpProbeExecutor(RestTemplate restTemplate, URI uri) {
method from (line 47) | public static HttpProbeExecutor from(URL baseUrl, HttpProbe httpProbe) {
method probe (line 62) | public boolean probe() {
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/JavaCommandBuilder.java
class JavaCommandBuilder (line 52) | public class JavaCommandBuilder implements CommandBuilder {
method JavaCommandBuilder (line 58) | public JavaCommandBuilder(LocalDeployerProperties properties) {
method getPortSuggestion (line 62) | @Override
method getBaseUrl (line 68) | @Override
method buildExecutionCommand (line 77) | @Override
method retainEnvVars (line 128) | protected void retainEnvVars(Map<String, String> vars, LocalDeployerPr...
method addJavaOptions (line 146) | protected void addJavaOptions(
method addJavaExecutionOptions (line 176) | protected void addJavaExecutionOptions(List<String> commands, AppDeplo...
method bindDeploymentProperties (line 193) | protected LocalDeployerProperties bindDeploymentProperties(Map<String,...
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalActuatorTemplate.java
class LocalActuatorTemplate (line 29) | public class LocalActuatorTemplate extends AbstractActuatorTemplate {
method LocalActuatorTemplate (line 31) | public LocalActuatorTemplate(RestTemplate restTemplate, AppDeployer ap...
method actuatorUrlForInstance (line 36) | @Override
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalAppDeployer.java
class LocalAppDeployer (line 71) | public class LocalAppDeployer extends AbstractLocalDeployerSupport imple...
method LocalAppDeployer (line 83) | public LocalAppDeployer(LocalDeployerProperties properties) {
method getProcessExitValue (line 93) | private static Integer getProcessExitValue(Process process) {
method getLocalProcessPid (line 111) | private static synchronized int getLocalProcessPid(Process p) {
method deploy (line 127) | @Override
method scale (line 151) | @Override
method undeploy (line 194) | @Override
method status (line 212) | @Override
method getLog (line 227) | @Override
method environmentInfo (line 249) | @Override
method shutdown (line 254) | @PreDestroy
method deployApp (line 261) | private AppInstance deployApp(AppDeploymentRequest request, Path workD...
method createWorkingDir (line 336) | private Path createWorkingDir(Map<String, String> deploymentProperties...
method validateStatus (line 348) | private void validateStatus(String deploymentId, DeploymentState expec...
method toGuid (line 355) | private static String toGuid(String deploymentId, int appIndex) {
class AppInstance (line 359) | private static class AppInstance implements Instance, AppInstanceStatus {
method AppInstance (line 377) | private AppInstance(String deploymentId, int instanceNumber, int por...
method getId (line 390) | @Override
method getBaseUrl (line 395) | @Override
method getProcess (line 400) | @Override
method toString (line 405) | @Override
method getState (line 410) | @Override
method getStdOut (line 450) | public String getStdOut() {
method getStdErr (line 459) | public String getStdErr() {
method getInstanceNumber (line 468) | public int getInstanceNumber() {
method getAttributes (line 472) | @Override
method start (line 481) | private void start(ProcessBuilder builder, Path workDir) throws IOEx...
method start (line 496) | private void start(ProcessBuilder builder, Path workDir, boolean del...
class AppInstancesHolder (line 516) | private static class AppInstancesHolder {
method AppInstancesHolder (line 520) | public AppInstancesHolder(List<AppInstance> instances, AppDeployment...
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalDeployerAutoConfiguration.java
class LocalDeployerAutoConfiguration (line 36) | @Configuration
method appDeployer (line 41) | @Bean
method taskLauncher (line 47) | @Bean
method actuatorRestTemplate (line 53) | @Bean
method actuatorOperations (line 59) | @Bean
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalDeployerProperties.java
class LocalDeployerProperties (line 51) | @Validated
type DebugSuspendType (line 172) | public enum DebugSuspendType {y, n}
method LocalDeployerProperties (line 193) | public LocalDeployerProperties() {
method LocalDeployerProperties (line 201) | public LocalDeployerProperties(LocalDeployerProperties from) {
class PortRange (line 227) | public static class PortRange {
method getLow (line 239) | public int getLow() {
method setLow (line 243) | public void setLow(int low) {
method getHigh (line 247) | public int getHigh() {
method setHigh (line 251) | public void setHigh(int high) {
method toString (line 255) | @Override
method hashCode (line 260) | @Override
method equals (line 269) | @Override
class Docker (line 288) | public static class Docker {
method getPortRange (line 319) | public PortRange getPortRange() {
method getNetwork (line 323) | public String getNetwork() {
method setNetwork (line 327) | public void setNetwork(String network) {
method isDeleteContainerOnExit (line 331) | public boolean isDeleteContainerOnExit() {
method setDeleteContainerOnExit (line 335) | public void setDeleteContainerOnExit(boolean deleteContainerOnExit) {
method getPortMappings (line 339) | public String getPortMappings() {
method setPortMappings (line 343) | public void setPortMappings(String portMappings) {
method getVolumeMounts (line 347) | public String getVolumeMounts() {
method setVolumeMounts (line 351) | public void setVolumeMounts(String volumeMounts) {
method getAdditionalHosts (line 355) | public String getAdditionalHosts() { return additionalHosts; }
method setAdditionalHosts (line 357) | public void setAdditionalHosts(String additionalHosts) { this.additi...
method hashCode (line 359) | @Override
method equals (line 367) | @Override
method getDocker (line 385) | public Docker getDocker() {
method getHostname (line 389) | public String getHostname() {
method setHostname (line 393) | public void setHostname(String hostname) {
method getDebugPort (line 397) | public Integer getDebugPort() {
method getDebugSuspend (line 401) | public DebugSuspendType getDebugSuspend() {
method setDebugSuspend (line 405) | public void setDebugSuspend(DebugSuspendType debugSuspend) {
method setDebugPort (line 409) | public void setDebugPort(Integer debugPort) {
method getDebugAddress (line 415) | public String getDebugAddress() {
method setDebugAddress (line 419) | public void setDebugAddress(String debugAddress) {
method isInheritLogging (line 423) | public boolean isInheritLogging() {
method setInheritLogging (line 427) | public void setInheritLogging(boolean inheritLogging) {
method getJavaCommand (line 431) | public String getJavaCommand(String bootVersion) {
method getJavaHomePath (line 438) | public Map<String, String> getJavaHomePath() {
method setJavaHomePath (line 442) | public void setJavaHomePath(Map<String, String> javaHomePath) {
method getJavaCmd (line 446) | public String getJavaCmd() {
method setJavaCmd (line 450) | public void setJavaCmd(String javaCmd) {
method getWorkingDirectoriesRoot (line 454) | public Path getWorkingDirectoriesRoot() {
method setWorkingDirectoriesRoot (line 458) | public void setWorkingDirectoriesRoot(String workingDirectoriesRoot) {
method setWorkingDirectoriesRoot (line 462) | public void setWorkingDirectoriesRoot(Path workingDirectoriesRoot) {
method isDeleteFilesOnExit (line 466) | public boolean isDeleteFilesOnExit() {
method setDeleteFilesOnExit (line 470) | public void setDeleteFilesOnExit(boolean deleteFilesOnExit) {
method getEnvVarsToInherit (line 474) | public String[] getEnvVarsToInherit() {
method setEnvVarsToInherit (line 478) | public void setEnvVarsToInherit(String[] envVarsToInherit) {
method getShutdownTimeout (line 482) | public int getShutdownTimeout() {
method setShutdownTimeout (line 486) | public LocalDeployerProperties setShutdownTimeout(int shutdownTimeout) {
method getJavaOpts (line 491) | public String getJavaOpts() {
method setJavaOpts (line 495) | public void setJavaOpts(String javaOpts) {
method isUseSpringApplicationJson (line 499) | public boolean isUseSpringApplicationJson() {
method setUseSpringApplicationJson (line 503) | public void setUseSpringApplicationJson(boolean useSpringApplicationJs...
method getPortRange (line 507) | public PortRange getPortRange() {
method getMaximumConcurrentTasks (line 511) | public int getMaximumConcurrentTasks() {
method setMaximumConcurrentTasks (line 515) | public void setMaximumConcurrentTasks(int maximumConcurrentTasks) {
method getStartupProbe (line 523) | public HttpProbe getStartupProbe() {
method setStartupProbe (line 527) | public void setStartupProbe(HttpProbe startupProbe) {
method getHealthProbe (line 531) | public HttpProbe getHealthProbe() {
method setHealthProbe (line 535) | public void setHealthProbe(HttpProbe healthProbe) {
method getAppAdmin (line 539) | public AppAdmin getAppAdmin() {
method setAppAdmin (line 543) | public void setAppAdmin(AppAdmin appAdmin) {
class HttpProbe (line 547) | public static class HttpProbe {
method getPath (line 554) | public String getPath() {
method setPath (line 558) | public void setPath(String path) {
method deduceJavaCommand (line 563) | private String deduceJavaCommand(String bootVersion) {
method getJavaHome (line 583) | private String getJavaHome(String bootVersion) {
method toString (line 588) | @Override
method equals (line 594) | @Override
method hashCode (line 623) | @Override
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalDeployerUtils.java
class LocalDeployerUtils (line 28) | public class LocalDeployerUtils {
method isWindows (line 35) | protected static boolean isWindows() {
FILE: spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalTaskLauncher.java
class LocalTaskLauncher (line 64) | public class LocalTaskLauncher extends AbstractLocalDeployerSupport impl...
method LocalTaskLauncher (line 79) | public LocalTaskLauncher(LocalDeployerProperties properties) {
method launch (line 83) | @Override
method pruneTaskInstanceHistory (line 131) | private void pruneTaskInstanceHistory(String taskDefinitionName, Strin...
method isDynamicPort (line 151) | private boolean isDynamicPort(AppDeploymentRequest request) {
method cancel (line 157) | @Override
method status (line 168) | @Override
method getLog (line 177) | @Override
method cleanup (line 199) | @Override
method destroy (line 203) | @Override
method environmentInfo (line 207) | @Override
method getMaximumConcurrentTasks (line 212) | @Override
method getRunningTaskExecutionCount (line 218) | @Override
method maxConcurrentExecutionsReached (line 230) | private synchronized boolean maxConcurrentExecutionsReached() {
method shutdown (line 234) | @PreDestroy
method createWorkingDirectory (line 242) | private Path createWorkingDirectory(Map<String, String> deploymentProp...
class TaskInstance (line 258) | private static class TaskInstance implements Instance {
method TaskInstance (line 272) | private TaskInstance(ProcessBuilder builder, Path workDir, int port)...
method getBaseUrl (line 282) | @Override
method getProcess (line 287) | @Override
method getState (line 292) | public LaunchState getState() {
method getStdOut (line 318) | public String getStdOut() {
method getStdErr (line 327) | public String getStdErr() {
method start (line 340) | private void start(ProcessBuilder builder) throws IOException {
method start (line 348) | private void start(ProcessBuilder builder, boolean deleteOnExit) thr...
method getAttributes (line 361) | private Map<String, String> getAttributes() {
method getProcessExitValue (line 382) | private static Integer getProcessExitValue(Process process) {
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/DebugAddressTests.java
class DebugAddressTests (line 28) | public class DebugAddressTests {
method testDebugEmptyConfiguration (line 30) | @Test
method testDebugPort (line 37) | @Test
method testDebugPortWithInstance (line 49) | @Test
method testDebugPortInvalidValue (line 61) | @Test
method testDebugAddressPortOnly (line 70) | @Test
method testDebugAddressWildcardHost (line 82) | @Test
method testDebugAddressWithIP (line 95) | @Test
method testDebugAddressWithHostname (line 107) | @Test
method testDebugAddressWithInvalidIP (line 119) | @Test
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/DeployerSocketUtilsTests.java
class DeployerSocketUtilsTests (line 33) | class DeployerSocketUtilsTests {
method findAvailableTcpPortWithZeroMinPort (line 35) | @Test
method findAvailableTcpPortWithNegativeMinPort (line 40) | @Test
method findAvailableTcpPortWithMin (line 45) | @Test
method find4AvailableTcpPortsInRange (line 51) | @Test
method find50AvailableTcpPortsInRange (line 56) | @Test
method findAvailableTcpPortsWithRequestedNumberGreaterThanSizeOfRange (line 61) | @Test
method findAvailableTcpPorts (line 68) | private void findAvailableTcpPorts(int numRequested, int minPort, int ...
method assertPortInRange (line 73) | private void assertPortInRange(int port, int minPort, int maxPort) {
method assertAvailablePorts (line 78) | private void assertAvailablePorts(SortedSet<Integer> ports, int numReq...
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/DockerCommandBuilderTests.java
class DockerCommandBuilderTests (line 40) | public class DockerCommandBuilderTests {
method testContainerName (line 42) | @Test
method testContainerNameWithDockerNetwork (line 56) | @Test
method testContainerNameWithDockerNetworkAndKeepContainers (line 69) | @Test
method testUseLocalDeployerPropertiesToKeepStoppedContainer (line 87) | @Test
method testSpringApplicationJSON (line 105) | @Test
method testContainerPortMappings (line 122) | @Test
method testContainerVolumeMount (line 143) | @Test
method testContainerAdditionalHost (line 164) | @Test
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/JavaExecutionCommandBuilderTests.java
class JavaExecutionCommandBuilderTests (line 43) | public class JavaExecutionCommandBuilderTests {
method setUp (line 50) | @BeforeEach
method testDirectJavaMemoryOption (line 58) | @Test
method testDirectJavaMemoryOptionWithG (line 66) | @Test
method testJavaMemoryOption (line 74) | @Test
method testJavaMemoryOptionWithKebabCase (line 82) | @Test
method testJavaCmdOption (line 90) | @Test
method testJavaCmdOptionWithKebabCase (line 102) | @Test
method testOverrideMemoryOptions (line 114) | @Test
method testDirectMemoryOptionsWithOtherOptions (line 123) | @Test
method testMultipleOptions (line 133) | @Test
method testConfigurationPropertiesOverride (line 142) | @Test
method testJarExecution (line 151) | @Test
method testBadResourceExecution (line 163) | @Test
method testCommandBuilderSpringApplicationJson (line 174) | @Test
method testCommandBuilderWithSpringApplicationJson (line 190) | @Test
method testRetainEnv (line 212) | @Test
method testResource (line 236) | protected Resource testResource() {
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/LocalAppDeployerEnvironmentIntegrationTests.java
class LocalAppDeployerEnvironmentIntegrationTests (line 70) | @SpringBootTest(classes = { Config.class, AbstractIntegrationJUnit5Tests...
method provideAppDeployer (line 87) | @Override
method testApplication (line 92) | @Override
method randomName (line 101) | @Override
method testEnvVariablesInheritedViaEnvEndpointNoSaj (line 114) | @Test
method testFailureToCallShutdownOnUndeploy (line 171) | @Test
method testNoStdoutStderrOnInheritLoggingAndNoNPEOnGetAttributes (line 201) | @Test
method testInDebugModeWithSuspended (line 221) | @Test
method testActuatorOperations (line 251) | @Test
method getCommandOutput (line 291) | private String getCommandOutput(String cmd) throws IOException {
class Config (line 297) | @Configuration
method appDeployer (line 301) | @Bean
method actuatorOperations (line 306) | @Bean
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/LocalAppDeployerIntegrationTests.java
class LocalAppDeployerIntegrationTests (line 75) | @SpringBootTest(classes = {
method provideAppDeployer (line 92) | @Override
method testApplication (line 97) | @Override
method randomName (line 106) | @Override
method testEnvVariablesInheritedViaEnvEndpoint (line 118) | @Test
method testAppLogRetrieval (line 176) | @Test
method testScale (line 196) | @Test
method testScaleWithIndex (line 201) | @Test
method testFailureToCallShutdownOnUndeploy (line 206) | @Test
method testNoStdoutStderrOnInheritLoggingAndNoNPEOnGetAttributes (line 237) | @Test
method testInDebugModeWithSuspended (line 259) | @Test
method testInDebugModeWithSuspendedUseCamelCase (line 289) | @Test
method testUseDefaultDeployerProperties (line 321) | @Test
method testZeroPortReportsDeployed (line 359) | @Test
method testStartupProbeFail (line 394) | @Test
method testStartupProbeSucceed (line 426) | @Test
method testHealthProbeFail (line 458) | @Test
method testHealthProbeSucceed (line 493) | @Test
method getAfterPaths (line 531) | @SuppressWarnings("resource")
method getBeforePaths (line 542) | private List<Path> getBeforePaths(Path customWorkDirRoot) throws IOExc...
method getCommandOutput (line 553) | private String getCommandOutput(String cmd) throws IOException {
method getCommandOutputAll (line 559) | private String getCommandOutputAll(String cmd) throws IOException {
class Config (line 565) | @Configuration
method appDeployer (line 569) | @Bean
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/LocalDeployerPropertiesTests.java
class LocalDeployerPropertiesTests (line 33) | public class LocalDeployerPropertiesTests {
method defaultNoPropertiesSet (line 37) | @Test
method setAllProperties (line 66) | @Test
method setAllPropertiesCamelCase (line 121) | @Test
method testOnWindows (line 172) | @Test
method testOnLinux (line 191) | @Test
method testCopyProperties (line 210) | @Test
class Config1 (line 236) | @EnableConfigurationProperties({LocalDeployerProperties.class})
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/LocalDeployerSupportTests.java
class LocalDeployerSupportTests (line 41) | public class LocalDeployerSupportTests {
method setUp (line 46) | @BeforeEach
method testAppPropsAsSAJ (line 52) | @Test
method testCalcServerPort (line 65) | @Test
method testShutdownPropertyConfiguresRequestFactory (line 95) | @Test
method testShutdownPropertyNotConfiguresRequestFactory (line 108) | @Test
method createAppDeploymentRequest (line 121) | protected AppDeploymentRequest createAppDeploymentRequest() throws Mal...
method createAppDeploymentRequest (line 125) | protected AppDeploymentRequest createAppDeploymentRequest(Map<String, ...
method testResource (line 134) | protected Resource testResource() {
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/LocalTaskLauncherIntegrationTests.java
class LocalTaskLauncherIntegrationTests (line 76) | @SpringBootTest(classes = {Config.class, AbstractIntegrationJUnit5Tests....
method provideTaskLauncher (line 88) | @Override
method testApplication (line 93) | @Override
method randomName (line 102) | @Override
method testPassingServerPortViaCommandLineArgs (line 115) | @Test
method testBasicLaunchWithSymbolicLink (line 127) | @Test
method createSymbolicLink (line 148) | private Path createSymbolicLink() throws IOException {
method testInheritLoggingAndWorkDir (line 162) | @Test
method testAppLogRetrieval (line 197) | @Test
method testDeleteHistoryOnReLaunch (line 220) | @Test
method basicLaunchAndValidation (line 285) | private void basicLaunchAndValidation(AppDefinition definition, Map<St...
class Config (line 318) | @Configuration
method taskLauncher (line 322) | @Bean
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/RandomPortRangeContextTests.java
class RandomPortRangeContextTests (line 28) | public class RandomPortRangeContextTests {
method defaultProtRangeProperties (line 33) | @Test
method presetProtRangeProperties (line 47) | @Test
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/RandomPortRangeTests.java
class RandomPortRangeTests (line 34) | @ExtendWith(MockitoExtension.class)
method setUp (line 42) | @BeforeEach
method portTests (line 55) | @Test
method portTests2 (line 65) | @Test
FILE: spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/RandomPortTests.java
class RandomPortTests (line 32) | @ExtendWith(MockitoExtension.class)
method setUp (line 40) | @BeforeEach
method portTests (line 46) | @Test
FILE: spring-cloud-deployer-resource-docker/src/main/java/org/springframework/cloud/deployer/resource/docker/DockerResource.java
class DockerResource (line 34) | public class DockerResource extends AbstractResource {
method DockerResource (line 44) | public DockerResource(String imageName) {
method DockerResource (line 53) | public DockerResource(URI uri) {
method getDescription (line 60) | @Override
method getInputStream (line 68) | @Override
method getURI (line 73) | @Override
FILE: spring-cloud-deployer-resource-docker/src/main/java/org/springframework/cloud/deployer/resource/docker/DockerResourceLoader.java
class DockerResourceLoader (line 31) | public class DockerResourceLoader implements ResourceLoader {
method getResource (line 42) | @Override
method getClassLoader (line 52) | @Override
FILE: spring-cloud-deployer-resource-docker/src/test/java/org/springframework/cloud/deployer/resource/docker/DockerResourceLoaderTests.java
class DockerResourceLoaderTests (line 32) | public class DockerResourceLoaderTests {
method verifyImageUri (line 34) | @Test
method verifyImageUriWithSlashes (line 46) | @Test
method verifyImageUriWithoutPrefix (line 58) | @Test
FILE: spring-cloud-deployer-resource-docker/src/test/java/org/springframework/cloud/deployer/resource/docker/DockerResourceTests.java
class DockerResourceTests (line 33) | public class DockerResourceTests {
method testResource (line 37) | @Test
method testUri (line 43) | @Test
method testInvalidUri (line 49) | @Test
FILE: spring-cloud-deployer-resource-maven/src/main/java/org/springframework/cloud/deployer/resource/maven/LoggingRepositoryListener.java
class LoggingRepositoryListener (line 26) | public class LoggingRepositoryListener extends AbstractRepositoryListener {
method artifactDeployed (line 30) | public void artifactDeployed(RepositoryEvent event) {
method artifactDeploying (line 34) | public void artifactDeploying(RepositoryEvent event) {
method artifactDescriptorInvalid (line 38) | public void artifactDescriptorInvalid(RepositoryEvent event) {
method artifactDescriptorMissing (line 42) | public void artifactDescriptorMissing(RepositoryEvent event) {
method artifactInstalled (line 46) | public void artifactInstalled(RepositoryEvent event) {
method artifactInstalling (line 50) | public void artifactInstalling(RepositoryEvent event) {
method artifactResolved (line 54) | public void artifactResolved(RepositoryEvent event) {
method artifactDownloading (line 58) | public void artifactDownloading(RepositoryEvent event) {
method artifactDownloaded (line 62) | public void artifactDownloaded(RepositoryEvent event) {
method artifactResolving (line 66) | public void artifactResolving(RepositoryEvent event) {
method metadataDeployed (line 70) | public void metadataDeployed(RepositoryEvent event) {
method metadataDeploying (line 74) | public void metadataDeploying(RepositoryEvent event) {
method metadataInstalled (line 78) | public void metadataInstalled(RepositoryEvent event) {
method metadataInstalling (line 82) | public void metadataInstalling(RepositoryEvent event) {
method metadataInvalid (line 86) | public void metadataInvalid(RepositoryEvent event) {
method metadataResolved (line 90) | public void metadataResolved(RepositoryEvent event) {
method metadataResolving (line 94) | public void metadataResolving(RepositoryEvent event) {
method println (line 98) | private void println(String event, String message) {
FILE: spring-cloud-deployer-resource-maven/src/main/java/org/springframework/cloud/deployer/resource/maven/MavenArtifactResolver.java
class MavenArtifactResolver (line 85) | class MavenArtifactResolver {
method MavenArtifactResolver (line 104) | public MavenArtifactResolver(MavenProperties properties) {
method defaultRemoteRepos (line 186) | protected Map<String, String> defaultRemoteRepos() {
method proxyRepoIfProxyEnabled (line 194) | private RemoteRepository proxyRepoIfProxyEnabled(RemoteRepository remo...
method isProxyEnabled (line 228) | private boolean isProxyEnabled() {
method proxyHasCredentials (line 239) | private boolean proxyHasCredentials() {
method remoteRepositoryHasCredentials (line 251) | private boolean remoteRepositoryHasCredentials(MavenProperties.RemoteR...
method newAuthentication (line 265) | private Authentication newAuthentication(final String username, final ...
method newRepositorySystemSession (line 282) | DefaultRepositorySystemSession newRepositorySystemSession() {
method newRepositorySystemSession (line 289) | private DefaultRepositorySystemSession newRepositorySystemSession(Repo...
method newRepositorySystem (line 326) | private RepositorySystem newRepositorySystem() {
method remoteRepositories (line 352) | List<RemoteRepository> remoteRepositories() {
method actualRemoteRepositoriesDescription (line 356) | private String actualRemoteRepositoriesDescription() {
method configuredRemoteRepositoriesDescription (line 361) | private String configuredRemoteRepositoriesDescription() {
method getVersions (line 367) | List<String> getVersions(String coordinates) {
method resolve (line 394) | Resource resolve(MavenResource resource) {
method validateCoordinates (line 414) | private void validateCoordinates(MavenResource resource) {
method toResource (line 421) | public FileSystemResource toResource(ArtifactResult resolvedArtifact) {
method toJarArtifact (line 425) | private Artifact toJarArtifact(MavenResource resource) {
method toPomArtifact (line 429) | private Artifact toPomArtifact(MavenResource resource) {
method toArtifact (line 433) | private Artifact toArtifact(MavenResource resource, String extension) {
FILE: spring-cloud-deployer-resource-maven/src/main/java/org/springframework/cloud/deployer/resource/maven/MavenProperties.java
class MavenProperties (line 32) | public class MavenProperties {
method isIncludeDefaultRemoteRepos (line 88) | boolean isIncludeDefaultRemoteRepos() {
method setIncludeDefaultRemoteRepos (line 92) | void setIncludeDefaultRemoteRepos(boolean includeDefaultRemoteRepos) {
method setUseWagon (line 101) | public void setUseWagon(boolean useWagon) {
method isUseWagon (line 105) | public boolean isUseWagon() {
method isEnableRepositoryListener (line 109) | public boolean isEnableRepositoryListener() {
method setEnableRepositoryListener (line 113) | public void setEnableRepositoryListener(boolean enableRepositoryListen...
method getUpdatePolicy (line 121) | public String getUpdatePolicy() {
method setUpdatePolicy (line 125) | public void setUpdatePolicy(String updatePolicy) {
method getChecksumPolicy (line 129) | public String getChecksumPolicy() {
method setChecksumPolicy (line 133) | public void setChecksumPolicy(String checksumPolicy) {
method getRemoteRepositories (line 137) | public Map<String, RemoteRepository> getRemoteRepositories() {
method setRemoteRepositories (line 141) | public void setRemoteRepositories(final Map<String, RemoteRepository> ...
method setLocalRepository (line 145) | public void setLocalRepository(String localRepository) {
method getLocalRepository (line 149) | public String getLocalRepository() {
method isOffline (line 153) | public boolean isOffline() {
method setOffline (line 157) | public void setOffline(Boolean offline) {
method getConnectTimeout (line 161) | public Integer getConnectTimeout() {
method setConnectTimeout (line 165) | public void setConnectTimeout(Integer connectTimeout) {
method getRequestTimeout (line 169) | public Integer getRequestTimeout() {
method setRequestTimeout (line 173) | public void setRequestTimeout(Integer requestTimeout) {
method getProxy (line 177) | public Proxy getProxy() {
method setProxy (line 181) | public void setProxy(Proxy proxy) {
method isResolvePom (line 185) | public boolean isResolvePom() {
method setResolvePom (line 189) | public void setResolvePom(final boolean resolvePom) {
class Proxy (line 193) | public static class Proxy {
method getProtocol (line 217) | public String getProtocol() {
method setProtocol (line 221) | public void setProtocol(String protocol) {
method getHost (line 225) | public String getHost() {
method setHost (line 229) | public void setHost(String host) {
method getPort (line 233) | public int getPort() {
method setPort (line 237) | public void setPort(int port) {
method getNonProxyHosts (line 241) | public String getNonProxyHosts() {
method setNonProxyHosts (line 245) | public void setNonProxyHosts(String nonProxyHosts) {
method getAuth (line 249) | public Authentication getAuth() {
method setAuth (line 253) | public void setAuth(Authentication auth) {
type WagonHttpMethod (line 258) | public static enum WagonHttpMethod {
class WagonHttpMethodProperties (line 266) | public static class WagonHttpMethodProperties {
method isUsePreemptive (line 275) | public boolean isUsePreemptive() {
method setUsePreemptive (line 279) | public void setUsePreemptive(boolean usePreemptive) {
method isUseDefaultHeaders (line 283) | public boolean isUseDefaultHeaders() {
method setUseDefaultHeaders (line 287) | public void setUseDefaultHeaders(boolean useDefaultHeaders) {
method getConnectionTimeout (line 291) | public Integer getConnectionTimeout() {
method setConnectionTimeout (line 295) | public void setConnectionTimeout(Integer connectionTimeout) {
method getReadTimeout (line 299) | public Integer getReadTimeout() {
method setReadTimeout (line 303) | public void setReadTimeout(Integer readTimeout) {
method getHeaders (line 307) | public Map<String, String> getHeaders() {
method setHeaders (line 311) | public void setHeaders(Map<String, String> headers) {
method getParams (line 315) | public Map<String, String> getParams() {
method setParams (line 319) | public void setParams(Map<String, String> params) {
class Wagon (line 324) | public static class Wagon {
method getHttp (line 328) | public Map<WagonHttpMethod, WagonHttpMethodProperties> getHttp() {
method setHttp (line 332) | public void setHttp(Map<WagonHttpMethod, WagonHttpMethodProperties> ...
class RemoteRepository (line 337) | public static class RemoteRepository {
method RemoteRepository (line 354) | public RemoteRepository() {
method RemoteRepository (line 357) | public RemoteRepository(final String url) {
method RemoteRepository (line 361) | public RemoteRepository(final String url, final Authentication auth) {
method getWagon (line 366) | public Wagon getWagon() {
method setWagon (line 370) | public void setWagon(Wagon wagon) {
method getUrl (line 374) | public String getUrl() {
method setUrl (line 378) | public void setUrl(final String url) {
method getAuth (line 382) | public Authentication getAuth() {
method setAuth (line 386) | public void setAuth(final Authentication auth) {
method getPolicy (lin
Condensed preview — 332 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,591K chars).
[
{
"path": ".editorconfig",
"chars": 348,
"preview": "root = true\n\n[*.java]\nindent_style = tab\nindent_size = 4\n\n[*.adoc]\nindent_style = tab\nindent_size = 4\n\n[*.groovy]\nindent"
},
{
"path": ".github/actions/trivy-scan/action.yml",
"chars": 669,
"preview": "name: 'Trivy Scan'\ndescription: 'Run Trivy Scan on repository'\nruns:\n using: \"composite\"\n steps:\n - uses: actions/c"
},
{
"path": ".github/dco.yml",
"chars": 26,
"preview": "require:\n members: false\n"
},
{
"path": ".github/settings.xml",
"chars": 2548,
"preview": "<settings>\n\t<profiles>\n\t\t<profile>\n\t\t\t<id>stagingmilestone</id>\n\t\t\t<repositories>\n\t\t\t\t<repository>\n\t\t\t\t\t<id>maven-centra"
},
{
"path": ".github/workflows/build-snapshot-worker.yml",
"chars": 3902,
"preview": "# Worker which is dispatched from build-snapshot-controller workflow.\nname: Build Snapshot Worker\n\non:\n workflow_dispat"
},
{
"path": ".github/workflows/ci-it.yml",
"chars": 1932,
"preview": "name: CI IT\n\non:\n workflow_dispatch:\n\njobs:\n prepare:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/chec"
},
{
"path": ".github/workflows/ci-pr.yml",
"chars": 446,
"preview": "name: CI PRs\n\non:\n workflow_dispatch:\n pull_request:\n\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n - use"
},
{
"path": ".github/workflows/ci.yml",
"chars": 302,
"preview": "name: CI\n\non:\n workflow_dispatch:\n push:\n branches:\n - 'main'\n - '2.9.x'\n - '2.8.x'\n - '2.7.x'\n"
},
{
"path": ".github/workflows/common-ci.yml",
"chars": 1470,
"preview": "name: common-ci\n\non:\n workflow_call:\n inputs:\n artifactoryServerId:\n type: string\n required: true"
},
{
"path": ".github/workflows/issue-handler.yml",
"chars": 2356,
"preview": "name: Issue Handler\n\non:\n workflow_dispatch:\n issues:\n types: [opened, labeled, unlabeled]\n issue_comment:\n typ"
},
{
"path": ".github/workflows/k8s-versions.json",
"chars": 442,
"preview": "[\n {\n \"k8s_version\": \"v1.23\",\n \"patch\": null\n },\n {\n \"k8s_version\": \"v1.24\",\n \"patch\": null\n },\n {\n "
},
{
"path": ".github/workflows/milestone-worker.yml",
"chars": 4514,
"preview": "name: Milestone Worker\n\non:\n workflow_dispatch:\n inputs:\n build-zoo-handler:\n description: 'Build Zoo Ha"
},
{
"path": ".github/workflows/next-dev-version-worker.yml",
"chars": 4223,
"preview": "name: Next Dev Version Worker\n\non:\n workflow_dispatch:\n inputs:\n build-zoo-handler:\n description: 'Build"
},
{
"path": ".github/workflows/release-worker.yml",
"chars": 4401,
"preview": "name: Release Worker\n\non:\n workflow_dispatch:\n inputs:\n build-zoo-handler:\n description: 'Build Zoo Hand"
},
{
"path": ".gitignore",
"chars": 565,
"preview": "*~\n.#*\n*#\n*.sw*\n_site/\n.factorypath\n.gradletasknamecache\n.DS_Store\n.checkstyle\n/application.yml\n/application.properties\n"
},
{
"path": ".mvn/jvm.config",
"chars": 95,
"preview": "-Xmx1024m -XX:CICompilerCount=1 -XX:TieredStopAtLevel=1 -Djava.security.egd=file:/dev/./urandom"
},
{
"path": ".mvn/maven.config",
"chars": 112,
"preview": "-DaltSnapshotDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-snapshot-local -P spring\n"
},
{
"path": ".mvn/wrapper/maven-wrapper.properties",
"chars": 116,
"preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.8/apache-maven-3.8.8-bin.zip\n"
},
{
"path": ".settings.xml",
"chars": 1753,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<settings>\n <servers>\n\t<server>\n\t <id>repo.spring.io</id>\n\t <username>${env.CI"
},
{
"path": ".trivyignore",
"chars": 30,
"preview": "CVE-2022-1471\nCVE-2016-1000027"
},
{
"path": "CONTRIBUTING.adoc",
"chars": 3257,
"preview": "= Contributing to Spring Cloud Deployer\n\n:github: https://github.com/spring-cloud/spring-cloud-deployer\n\nSpring Cloud De"
},
{
"path": "LICENSE",
"chars": 11360,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "NOTICE",
"chars": 618,
"preview": "spring-cloud-deployer\n\nCopyright (c) 2016-Present Pivotal Software, Inc. All Rights Reserved.\n\nLicensed under the Apache"
},
{
"path": "README.adoc",
"chars": 3448,
"preview": "# Spring Cloud Data Flow is no longer maintained as an open-source project by Broadcom, Inc.\n\n## For information about e"
},
{
"path": "SECURITY.md",
"chars": 342,
"preview": "# Security Policy\n## Reporting a Vulnerability\n\nIf you think you have found a security vulnerability, please **DO NOT** "
},
{
"path": "mvnw",
"chars": 7097,
"preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
},
{
"path": "mvnw.cmd",
"chars": 5008,
"preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
},
{
"path": "pom.xml",
"chars": 9235,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "spring-cloud-deployer-autoconfigure/pom.xml",
"chars": 1808,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/DelegatingResourceLoaderBuilder.java",
"chars": 2022,
"preview": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/DelegatingResourceLoaderBuilderCustomizer.java",
"chars": 1190,
"preview": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/MavenConfigurationProperties.java",
"chars": 1042,
"preview": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-autoconfigure/src/main/java/org/springframework/cloud/deployer/autoconfigure/ResourceLoadingAutoConfiguration.java",
"chars": 2785,
"preview": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 82,
"preview": "org.springframework.cloud.deployer.autoconfigure.ResourceLoadingAutoConfiguration\n"
},
{
"path": "spring-cloud-deployer-autoconfigure/src/main/resources/META-INF/spring.factories",
"chars": 149,
"preview": "org.springframework.boot.autoconfigure.EnableAutoConfiguration=\\\n org.springframework.cloud.deployer.autoconfigure.Reso"
},
{
"path": "spring-cloud-deployer-autoconfigure/src/test/java/org/springframework/cloud/deployer/autoconfigure/ResourceLoadingAutoConfigurationTests.java",
"chars": 4163,
"preview": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-cloudfoundry/README.adoc",
"chars": 4259,
"preview": "= Spring Cloud Deployer for Cloud Foundry\n\nThis project provides a common means to deploy applications to Cloud Foundry "
},
{
"path": "spring-cloud-deployer-cloudfoundry/pom.xml",
"chars": 4835,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/AbstractCloudFoundryDeployer.java",
"chars": 16589,
"preview": "/*\n * Copyright 2016-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/AbstractCloudFoundryTaskLauncher.java",
"chars": 8514,
"preview": "/*\n * Copyright 2016-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/AppNameGenerator.java",
"chars": 1034,
"preview": "/*\n * Copyright 2016 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/ApplicationLogAccessor.java",
"chars": 3588,
"preview": "/*\n * Copyright 2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvAwareAppDeploymentRequest.java",
"chars": 1419,
"preview": "/*\n * Copyright 2020-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvAwareResource.java",
"chars": 4443,
"preview": "/*\n * Copyright 2020-2024 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvConfigurer.java",
"chars": 4591,
"preview": "/*\n * Copyright 2020-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryActuatorTemplate.java",
"chars": 2129,
"preview": "/*\n * Copyright 2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppDeployer.java",
"chars": 22147,
"preview": "/*\n * Copyright 2016-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppInstanceStatus.java",
"chars": 4219,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppNameGenerator.java",
"chars": 3522,
"preview": "/*\n * Copyright 2016 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryConnectionProperties.java",
"chars": 3543,
"preview": "/*\n * Copyright 2016-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryDeployerAutoConfiguration.java",
"chars": 10138,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryDeploymentProperties.java",
"chars": 13142,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryPlatformSpecificInfo.java",
"chars": 2198,
"preview": "/*\n * Copyright 2020-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryTaskLauncher.java",
"chars": 11949,
"preview": "/*\n * Copyright 2016-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/DurationConverter.java",
"chars": 1331,
"preview": "/*\n * Copyright 2016 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/ServiceParser.java",
"chars": 3870,
"preview": "/*\n * Copyright 2019-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/UnsupportedVersionTaskLauncher.java",
"chars": 2813,
"preview": "/*\n * Copyright 2017 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundryAppScheduler.java",
"chars": 18530,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundryScheduleSSLException.java",
"chars": 1034,
"preview": "/*\n * Copyright 2018-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundrySchedulerProperties.java",
"chars": 3051,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/expression/QuartzCronExpression.java",
"chars": 20034,
"preview": "/*\n * Copyright 2018-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/resources/META-INF/additional-spring-configuration-metadata.json",
"chars": 314,
"preview": "{\n \"hints\": [\n {\n \"name\": \"spring.cloud.deployer.cloudfoundry.health-check\",\n \"values\": [\n {\n "
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 90,
"preview": "org.springframework.cloud.deployer.spi.cloudfoundry.CloudFoundryDeployerAutoConfiguration\n"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/main/resources/META-INF/spring.factories",
"chars": 157,
"preview": "org.springframework.boot.autoconfigure.EnableAutoConfiguration=\\\n org.springframework.cloud.deployer.spi.cloudfoundry.C"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/AbstractAppDeployerTestSupport.java",
"chars": 5036,
"preview": "/*\n * Copyright 2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/ApplicationLogAccessorTests.java",
"chars": 2417,
"preview": "/*\n * Copyright 2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvAwareResourceTests.java",
"chars": 2211,
"preview": "/*\n * Copyright 2020-2024 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CfEnvConfigurerTests.java",
"chars": 4283,
"preview": "/*\n * Copyright 2020-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryActuatorTemplateTests.java",
"chars": 5058,
"preview": "/*\n * Copyright 2022-2025 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppDeployerIntegrationIT.java",
"chars": 3298,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppDeployerTests.java",
"chars": 45098,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppNameGeneratorTest.java",
"chars": 3290,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryConnectionPropertiesTests.java",
"chars": 3579,
"preview": "/*\n * Copyright 2019-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryDeployerTests.java",
"chars": 3640,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryTaskLauncherCachingTests.java",
"chars": 6230,
"preview": "/*\n * Copyright 2020-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryTaskLauncherIntegrationIT.java",
"chars": 3791,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryTaskLauncherTests.java",
"chars": 42269,
"preview": "/*\n * Copyright 2016-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/cloudfoundry/ServiceParserTests.java",
"chars": 4208,
"preview": "/*\n * Copyright 2019-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundryAppSchedulerTests.java",
"chars": 25410,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundryScheduleSSLExceptionTests.java",
"chars": 1525,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/CloudFoundrySchedulerPropertiesTest.java",
"chars": 2031,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/SpringCloudSchedulerIntegrationIT.java",
"chars": 5831,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/java/org/springframework/cloud/deployer/spi/scheduler/cloudfoundry/expression/QuartzCronExpressionTests.java",
"chars": 7490,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-cloudfoundry/src/test/resources/logback-test.xml",
"chars": 606,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n\n <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAp"
},
{
"path": "spring-cloud-deployer-dependencies/pom.xml",
"chars": 4652,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "spring-cloud-deployer-kubernetes/README.md",
"chars": 3604,
"preview": "# Spring Cloud Deployer Kubernetes\nA [Spring Cloud Deployer](https://github.com/spring-cloud/spring-cloud-deployer) impl"
},
{
"path": "spring-cloud-deployer-kubernetes/pom.xml",
"chars": 4652,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/AbstractKubernetesDeployer.java",
"chars": 14547,
"preview": "/*\n * Copyright 2015-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/CommandProbeCreator.java",
"chars": 1770,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/CompositeDeploymentStateResolver.java",
"chars": 1418,
"preview": "/*\n * Copyright 2017 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ContainerConfiguration.java",
"chars": 2050,
"preview": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ContainerFactory.java",
"chars": 1231,
"preview": "/*\n * Copyright 2015-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/DefaultContainerFactory.java",
"chars": 15744,
"preview": "/*\n * Copyright 2015-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/DefaultRunningPhaseDeploymentStateResolver.java",
"chars": 1480,
"preview": "/*\n * Copyright 2017 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/DeploymentPropertiesResolver.java",
"chars": 54303,
"preview": "/*\n * Copyright 2020-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/EntryPointStyle.java",
"chars": 2452,
"preview": "/*\n * Copyright 2018-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/HttpProbeCreator.java",
"chars": 4674,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ImagePullPolicy.java",
"chars": 2065,
"preview": "/*\n * Copyright 2015-2016 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesActuatorTemplate.java",
"chars": 1589,
"preview": "/*\n * Copyright 2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesAppDeployer.java",
"chars": 30630,
"preview": "/*\n * Copyright 2015-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesAppInstanceStatus.java",
"chars": 10126,
"preview": "/*\n * Copyright 2015-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesAutoConfiguration.java",
"chars": 3348,
"preview": "/*\n * Copyright 2015-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesClientFactory.java",
"chars": 1574,
"preview": "/*\n * Copyright 2018-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesDeployerProperties.java",
"chars": 67434,
"preview": "/*\n * Copyright 2015-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesScheduler.java",
"chars": 14077,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesSchedulerProperties.java",
"chars": 2650,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesTaskLauncher.java",
"chars": 17557,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesTaskLauncherProperties.java",
"chars": 2789,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/LivenessCommandProbeCreator.java",
"chars": 2806,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/LivenessHttpProbeCreator.java",
"chars": 3715,
"preview": "/*\n * Copyright 2018-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/LivenessTcpProbeCreator.java",
"chars": 2925,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/PredicateRunningPhaseDeploymentStateResolver.java",
"chars": 7450,
"preview": "/*\n * Copyright 2017 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ProbeAuthenticationType.java",
"chars": 854,
"preview": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ProbeCreator.java",
"chars": 4027,
"preview": "/*\n * Copyright 2018-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ProbeCreatorFactory.java",
"chars": 3200,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ProbeType.java",
"chars": 793,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ReadinessCommandProbeCreator.java",
"chars": 2821,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ReadinessHttpProbeCreator.java",
"chars": 4131,
"preview": "/*\n * Copyright 2018-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/ReadinessTcpProbeCreator.java",
"chars": 2941,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/RestartPolicy.java",
"chars": 1038,
"preview": "/*\n * Copyright 2018-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/RunningPhaseDeploymentStateResolver.java",
"chars": 954,
"preview": "/*\n * Copyright 2017 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/StartupCommandProbeCreator.java",
"chars": 2767,
"preview": "/*\n * Copyright 2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/StartupHttpProbeCreator.java",
"chars": 4009,
"preview": "/*\n * Copyright 2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/StartupTcpProbeCreator.java",
"chars": 2879,
"preview": "/*\n * Copyright 2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/TcpProbeCreator.java",
"chars": 1644,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/support/ArgumentSanitizer.java",
"chars": 4287,
"preview": "/*\n * Copyright 2017-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/support/PropertyParserUtils.java",
"chars": 2575,
"preview": "/*\n * Copyright 2018-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/java/org/springframework/cloud/deployer/spi/kubernetes/support/RelaxedNames.java",
"chars": 5962,
"preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 78,
"preview": "org.springframework.cloud.deployer.spi.kubernetes.KubernetesAutoConfiguration\n"
},
{
"path": "spring-cloud-deployer-kubernetes/src/main/resources/META-INF/spring.factories",
"chars": 141,
"preview": "org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.springframework.cloud.deployer.spi.kubernetes.Kuberne"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/AbstractKubernetesTaskLauncherIntegrationTests.java",
"chars": 3351,
"preview": "/*\n * Copyright 2021-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/DefaultContainerFactoryTests.java",
"chars": 76991,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/DeploymentPropertiesResolverTests.java",
"chars": 3460,
"preview": "/*\n * Copyright 2021-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/EntryPointStyleTests.java",
"chars": 1501,
"preview": "/*\n * Copyright 2019-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/ImagePullPolicyTests.java",
"chars": 1558,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesActuatorTemplateTests.java",
"chars": 6414,
"preview": "/*\n * Copyright 2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesAppDeployerIntegrationIT.java",
"chars": 132325,
"preview": "/*\n * Copyright 2016-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesAppDeployerTests.java",
"chars": 109033,
"preview": "/*\n * Copyright 2015-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesConfigurationPropertiesTests.java",
"chars": 3866,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesDeployerPropertiesTests.java",
"chars": 7297,
"preview": "/*\n * Copyright 2021-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesSchedulerIT.java",
"chars": 59287,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesSchedulerPropertiesTests.java",
"chars": 8207,
"preview": "/*\n * Copyright 2018-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesTaskLauncherIntegrationIT.java",
"chars": 6557,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesTaskLauncherMaximumConcurrentTasksTests.java",
"chars": 4322,
"preview": "/*\n * Copyright 2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/KubernetesTaskLauncherWithJobIntegrationIT.java",
"chars": 8541,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/PropertyParserUtilsTests.java",
"chars": 6957,
"preview": "/*\n * Copyright 2018-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/java/org/springframework/cloud/deployer/spi/kubernetes/RunAbstractKubernetesDeployerTests.java",
"chars": 11209,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/resources/dataflow-server-configMapKeyRef.yml",
"chars": 152,
"preview": "# spring.cloud.deployer.kubernetes.configMapKeyRefs:\nconfigMapKeyRefs:\n - envVarName: \"MY_ENV\"\n configMapName: \"myCo"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/resources/dataflow-server-containerSecurityContext.yml",
"chars": 600,
"preview": "# spring.cloud.deployer.kubernetes.containerSecurityContext:\ncontainerSecurityContext:\n allowPrivilegeEscalation: true\n"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/resources/dataflow-server-nodeAffinity.yml",
"chars": 535,
"preview": "# spring.cloud.deployer.kubernetes.nodeAffinity:\nnodeAffinity:\n requiredDuringSchedulingIgnoredDuringExecution:\n nod"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/resources/dataflow-server-podAffinity.yml",
"chars": 606,
"preview": "# spring.cloud.deployer.kubernetes.podAffinity:\npodAffinity:\n requiredDuringSchedulingIgnoredDuringExecution:\n - lab"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/resources/dataflow-server-podAntiAffinity.yml",
"chars": 598,
"preview": "# spring.cloud.deployer.kubernetes.podAntiAffinity:\npodAntiAffinity:\n requiredDuringSchedulingIgnoredDuringExecution:\n "
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/resources/dataflow-server-podsecuritycontext.yml",
"chars": 611,
"preview": "# spring.cloud.deployer.kubernetes.podSecurityContext:\npodSecurityContext:\n fsGroup: 65534\n fsGroupChangePolicy: Alway"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/resources/dataflow-server-secretKeyRef.yml",
"chars": 152,
"preview": "# spring.cloud.deployer.kubernetes.secretKeyRefs:\nsecretKeyRefs:\n - envVarName: \"SECRET_PASSWORD\"\n secretName: \"mySe"
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/resources/dataflow-server-tolerations.yml",
"chars": 142,
"preview": "# spring.cloud.deployer.kubernetes.tolerations:\ntolerations:\n - key: \"scdf\"\n operator: \"Equal\"\n value: \"true\"\n "
},
{
"path": "spring-cloud-deployer-kubernetes/src/test/resources/dataflow-server.yml",
"chars": 288,
"preview": "# spring.cloud.deployer.kubernetes.volumes:\nvolumes:\n - name: testhostpath\n hostPath:\n path: /test/hostPath\n\n "
},
{
"path": "spring-cloud-deployer-local/README.adoc",
"chars": 1292,
"preview": "== Spring Cloud Local Deployer\n\nSpring Cloud Local Deployer is an implementation of the Spring Cloud Deployer SPI for us"
},
{
"path": "spring-cloud-deployer-local/pom.xml",
"chars": 2721,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/AbstractLocalDeployerSupport.java",
"chars": 16387,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/CommandBuilder.java",
"chars": 2648,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/DebugAddress.java",
"chars": 3842,
"preview": "/*\n * Copyright 2020-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/DeployerSocketUtils.java",
"chars": 7350,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/DockerCommandBuilder.java",
"chars": 8090,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/HttpProbeExecutor.java",
"chars": 2755,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/JavaCommandBuilder.java",
"chars": 7506,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalActuatorTemplate.java",
"chars": 1537,
"preview": "/*\n * Copyright 2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalAppDeployer.java",
"chars": 18600,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalDeployerAutoConfiguration.java",
"chars": 2365,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalDeployerProperties.java",
"chars": 19455,
"preview": "/*\n * Copyright 2015-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalDeployerUtils.java",
"chars": 1109,
"preview": "/*\n * Copyright 2017-2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/java/org/springframework/cloud/deployer/spi/local/LocalTaskLauncher.java",
"chars": 12094,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
"chars": 76,
"preview": "org.springframework.cloud.deployer.spi.local.LocalDeployerAutoConfiguration\n"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/DebugAddressTests.java",
"chars": 4566,
"preview": "/*\n * Copyright 2020-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/DeployerSocketUtilsTests.java",
"chars": 2697,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/DockerCommandBuilderTests.java",
"chars": 8848,
"preview": "/*\n * Copyright 2017-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/JavaExecutionCommandBuilderTests.java",
"chars": 10920,
"preview": "/*\n * Copyright 2015-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/LocalAppDeployerEnvironmentIntegrationTests.java",
"chars": 12145,
"preview": "/*\n * Copyright 2018-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/LocalAppDeployerIntegrationTests.java",
"chars": 22402,
"preview": "/*\n * Copyright 2016-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/LocalDeployerPropertiesTests.java",
"chars": 11670,
"preview": "/*\n * Copyright 2019-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/LocalDeployerSupportTests.java",
"chars": 5843,
"preview": "/*\n * Copyright 2017-2021 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/LocalTaskLauncherIntegrationTests.java",
"chars": 12025,
"preview": "/*\n * Copyright 2016-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/RandomPortRangeContextTests.java",
"chars": 2422,
"preview": "/*\n * Copyright 2018-2025 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/RandomPortRangeTests.java",
"chars": 2456,
"preview": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-local/src/test/java/org/springframework/cloud/deployer/spi/local/RandomPortTests.java",
"chars": 1646,
"preview": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-local/src/test/resources/testResource.txt",
"chars": 0,
"preview": ""
},
{
"path": "spring-cloud-deployer-resource-docker/pom.xml",
"chars": 1045,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "spring-cloud-deployer-resource-docker/src/main/java/org/springframework/cloud/deployer/resource/docker/DockerResource.java",
"chars": 2174,
"preview": "/*\n * Copyright 2016 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-resource-docker/src/main/java/org/springframework/cloud/deployer/resource/docker/DockerResourceLoader.java",
"chars": 1951,
"preview": "/*\n * Copyright 2016 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-resource-docker/src/test/java/org/springframework/cloud/deployer/resource/docker/DockerResourceLoaderTests.java",
"chars": 2785,
"preview": "/*\n * Copyright 2016 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-resource-docker/src/test/java/org/springframework/cloud/deployer/resource/docker/DockerResourceTests.java",
"chars": 1727,
"preview": "/*\n * Copyright 2016 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-resource-maven/pom.xml",
"chars": 3328,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "spring-cloud-deployer-resource-maven/src/main/java/org/springframework/cloud/deployer/resource/maven/LoggingRepositoryListener.java",
"chars": 3616,
"preview": "/*\n * Copyright 2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-resource-maven/src/main/java/org/springframework/cloud/deployer/resource/maven/MavenArtifactResolver.java",
"chars": 18656,
"preview": "/*\n * Copyright 2015-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-resource-maven/src/main/java/org/springframework/cloud/deployer/resource/maven/MavenProperties.java",
"chars": 10356,
"preview": "/*\n * Copyright 2015-2017 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-resource-maven/src/main/java/org/springframework/cloud/deployer/resource/maven/MavenResource.java",
"chars": 9885,
"preview": "/*\n * Copyright 2015-2016 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-resource-maven/src/main/java/org/springframework/cloud/deployer/resource/maven/MavenResourceLoader.java",
"chars": 2517,
"preview": "/*\n * Copyright 2016 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-resource-maven/src/main/java/org/springframework/cloud/deployer/resource/maven/StaticWagonConfigurator.java",
"chars": 3681,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-resource-maven/src/main/java/org/springframework/cloud/deployer/resource/maven/StaticWagonProvider.java",
"chars": 1827,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
},
{
"path": "spring-cloud-deployer-resource-maven/src/test/java/org/springframework/cloud/deployer/resource/maven/MavenArtifactResolverTests.java",
"chars": 10429,
"preview": "/*\n * Copyright 2016-2023 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
},
{
"path": "spring-cloud-deployer-resource-maven/src/test/java/org/springframework/cloud/deployer/resource/maven/MavenExtension.java",
"chars": 5312,
"preview": "/*\n * Copyright 2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\""
}
]
// ... and 132 more files (download for full content)
About this extraction
This page contains the full source code of the spring-cloud/spring-cloud-deployer GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 332 files (136.8 MB), approximately 625.6k tokens, and a symbol index with 3737 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.