├── multiapps-controller-core ├── .gitignore └── src │ ├── test │ └── resources │ │ ├── mta │ │ ├── devxdi │ │ │ └── .gitignore │ │ ├── devxwebide │ │ │ ├── .gitignore │ │ │ ├── config.mtaext │ │ │ ├── xs2-config-2.mtaext │ │ │ ├── xs2-config-1.mtaext │ │ │ ├── services.json │ │ │ └── mtad.yaml │ │ ├── app-features │ │ │ ├── config-app-features.mtaext │ │ │ ├── mtad-app-features-empty.yaml │ │ │ ├── mtad-app-features-single.yaml │ │ │ └── mtad-app-features.yaml │ │ ├── incremental-blue-green │ │ │ ├── mtaext-application.yaml │ │ │ └── mtad-with-different-instances-application.yaml │ │ └── skip-deploy │ │ │ ├── mtad-skip-deploy-true.yaml │ │ │ ├── mtad-skip-deploy-false.yaml │ │ │ └── mtad-skip-deploy-string-true.yaml │ │ └── org │ │ └── cloudfoundry │ │ └── multiapps │ │ └── controller │ │ └── core │ │ ├── cf │ │ ├── detect │ │ │ └── metadata │ │ │ │ ├── apps-01.json │ │ │ │ ├── apps-03.json │ │ │ │ ├── deployed-mtas-01.json │ │ │ │ ├── services-03.json │ │ │ │ └── apps-02.json │ │ ├── v2 │ │ │ ├── expected-configuration-entries-00.json │ │ │ ├── config-01.mtaext │ │ │ ├── config-02.mtaext │ │ │ ├── mtad-16.yaml │ │ │ ├── mtad-ssh-enabled-true.yaml │ │ │ ├── mtad-ssh-enabled-false.yaml │ │ │ ├── mtad-health-check-type-port.yaml │ │ │ ├── mtad-health-check-type-http-without-endpoint.yaml │ │ │ ├── mtad-07-v2.yaml │ │ │ ├── keep-existing-routes │ │ │ │ ├── mtad.yaml │ │ │ │ ├── mtad-with-global-parameter.yaml │ │ │ │ ├── deployed-mta-without-foo-module.json │ │ │ │ ├── deployed-mta.json │ │ │ │ ├── deployed-mta-without-routes.json │ │ │ │ └── mtad-routes-with-nohostname.yaml │ │ │ ├── mtad-15.yaml │ │ │ ├── mtad-health-check-type-http-with-endpoint.yaml │ │ │ ├── mtad-08-v2.yaml │ │ │ ├── mtad-02.yaml │ │ │ ├── mtad-09-v2.yaml │ │ │ ├── services-01.json │ │ │ ├── mtad-12.yaml │ │ │ ├── mtad-03.yaml │ │ │ ├── mtad-14.yaml │ │ │ ├── mtad-05.yaml │ │ │ ├── mtad-01.yaml │ │ │ ├── config-03.mtaext │ │ │ ├── expected-configuration-entries-01.json │ │ │ ├── mtad-10-v2.yaml │ │ │ ├── mtad-routes-with-nohostname.yaml │ │ │ └── mtad-13.yaml │ │ ├── clients │ │ │ ├── cf-error-response-body-3.json │ │ │ ├── cf-error-response-body-1.json │ │ │ ├── application-updater-input-01.json │ │ │ ├── cf-error-response-body-0.json │ │ │ ├── cf-error-response-body-2.json │ │ │ ├── apps-response-without-package-state.json │ │ │ ├── application-updater-input-00.json │ │ │ └── apps-response-with-package-state.json │ │ ├── apps │ │ │ ├── app-without-no-start-attribute.json │ │ │ ├── started-app.json │ │ │ ├── stopped-app.json │ │ │ ├── app-with-no-start-attribute-false.json │ │ │ ├── app-with-no-start-attribute-true.json │ │ │ ├── app-in-inconsistent-state-0.json │ │ │ ├── app-in-inconsistent-state-1.json │ │ │ └── app-in-inconsistent-state-2.json │ │ └── v3 │ │ │ ├── config-01.mtaext │ │ │ └── mtad-missing-resource-type-definition.yaml │ │ ├── helpers │ │ ├── env-value-05.txt │ │ ├── object-05.json │ │ ├── mta-archive-helper-manifest-with-created-by-null.txt │ │ ├── deployed-module-1.json │ │ ├── application-env-updater-result-01.json │ │ ├── env-value-03.txt │ │ ├── mta-archive-helper-1.yaml │ │ ├── object-01.json │ │ ├── env-value-00.txt │ │ ├── env-value-01.txt │ │ ├── object-00.json │ │ ├── env-value-02.txt │ │ ├── mta-archive-helper-manifest-with-created-by.txt │ │ ├── object-02.json │ │ ├── env-value-04.txt │ │ ├── object-03.json │ │ ├── object-04.json │ │ ├── deployed-module-6.json │ │ ├── mtad-08.yaml │ │ ├── application-with-invalid-deploy-attributes.json │ │ ├── application-env-updater-result-00.json │ │ ├── deployed-module-7.json │ │ ├── deployed-module-4.json │ │ ├── v2 │ │ │ ├── configuration-entries-07.json │ │ │ ├── configuration-filter-parser-test-output-02.json │ │ │ ├── configuration-filter-parser-test-output-01.json │ │ │ ├── configuration-entries-04.json │ │ │ ├── configuration-filter-parser-test-input-02.json │ │ │ ├── configuration-filter-parser-test-output-03.json │ │ │ ├── subscriptions-mtad-02.yaml │ │ │ ├── mtad-07.yaml │ │ │ ├── subscriptions-mtad-01.yaml │ │ │ ├── configuration-filter-parser-test-input-01.json │ │ │ └── configuration-filter-parser-test-input-03.json │ │ ├── mta-archive-helper-1.mtar │ │ ├── mta-archive-helper-2.mtar │ │ ├── application-env-updater-input-01.json │ │ ├── deployed-module-2.json │ │ ├── deployed-module-5.json │ │ ├── duplicate-keys.yaml │ │ ├── node-hello-world-0.1.0-SNAPSHOT.mtar │ │ ├── deployed-module-3.json │ │ ├── package.json │ │ ├── application-with-valid-deploy-attributes.json │ │ ├── deployed-module-0.json │ │ ├── billion-laughs.mtad.yaml │ │ ├── mta-archive-helper-manifest.txt │ │ ├── application-env-updater-input-00.json │ │ ├── mtad-properties-resolver-test │ │ │ └── mtad-with-domain.yaml │ │ ├── expander │ │ │ ├── expanded-properties-00.json │ │ │ ├── properties-00.json │ │ │ └── expanded-properties-01.json │ │ └── v3 │ │ │ ├── subscriptions-mtad-02.yaml │ │ │ ├── subscriptions-mtad-01.yaml │ │ │ └── mtad-02.yaml │ │ ├── validators │ │ └── parameters │ │ │ ├── tasks-01.json │ │ │ ├── tasks-02.json │ │ │ ├── tasks-07.json │ │ │ ├── tasks-06.json │ │ │ ├── tasks-05.json │ │ │ ├── tasks-04.json │ │ │ ├── tasks-03.json │ │ │ ├── v2 │ │ │ ├── mtad-04.yaml │ │ │ ├── mtad-06.yaml │ │ │ ├── mtad-07.yaml │ │ │ ├── mtad-03.yaml │ │ │ └── mtad-01.yaml │ │ │ ├── valid-format.yaml │ │ │ ├── duplicate-key.yaml │ │ │ └── tasks-00.json │ │ ├── util │ │ ├── cloud-components.json │ │ ├── vcap-application-without-urls.json │ │ ├── vcap-application-without-space.json │ │ ├── platform.json │ │ └── vcap-application.json │ │ ├── security │ │ └── serialization │ │ │ ├── secured-object-01.json │ │ │ ├── unsecured-object-01.json │ │ │ └── secured-object-02.json │ │ └── resolvers │ │ └── v2 │ │ └── mtad.yaml │ └── main │ ├── resources │ └── META-INF │ │ └── services │ │ └── liquibase.lockservice.LockService │ └── java │ └── org │ └── cloudfoundry │ └── multiapps │ └── controller │ └── core │ ├── model │ ├── Phase.java │ ├── ErrorType.java │ ├── SubprocessPhase.java │ ├── ApplicationColor.java │ └── ResourceTypeEnum.java │ ├── cf │ ├── DeploymentMode.java │ ├── apps │ │ ├── ApplicationStartupState.java │ │ ├── ApplicationStateAction.java │ │ └── ActionCalculator.java │ ├── util │ │ ├── CloudModelBuilderContentCalculator.java │ │ └── ModulesContentValidator.java │ ├── metadata │ │ ├── criteria │ │ │ └── MtaMetadataCriteria.java │ │ └── MtaMetadataLabels.java │ └── detect │ │ └── AppSuffixDeterminer.java │ ├── util │ ├── OperationExecutionState.java │ └── LoggingUtil.java │ ├── package-info.java │ ├── helpers │ ├── expander │ │ └── Expander.java │ └── escaping │ │ └── CharacterToReplace.java │ ├── auditlogging │ ├── UserInfoProvider.java │ ├── impl │ │ ├── AuditLogWriteException.java │ │ └── AuditLoggingExceptionHandler.java │ └── model │ │ └── ConfigurationChangeActions.java │ ├── parser │ └── ParametersParser.java │ ├── configuration │ ├── EnvironmentVariablesAccessor.java │ └── DefaultEnvironmentVariablesAccessor.java │ ├── validators │ └── parameters │ │ ├── CompatibilityParameterValidator.java │ │ └── CompatibilityParametersValidator.java │ ├── security │ ├── token │ │ └── parsers │ │ │ └── TokenParser.java │ └── serialization │ │ └── masking │ │ ├── ResourceMasker.java │ │ ├── RequiredDependencyMasker.java │ │ └── ProvidedDependencyMasker.java │ ├── health │ └── model │ │ └── HealthCheckConfiguration.java │ └── application │ └── health │ └── model │ └── ApplicationHealthResult.java ├── logo.png ├── multiapps-controller-web └── src │ ├── main │ ├── webapp │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ └── index.html │ ├── java │ │ └── org │ │ │ └── cloudfoundry │ │ │ └── multiapps │ │ │ └── controller │ │ │ ├── web │ │ │ ├── package-info.java │ │ │ ├── upload │ │ │ │ └── client │ │ │ │ │ └── FileFromUrlData.java │ │ │ ├── security │ │ │ │ ├── AbstractUriAuthorizationFilter.java │ │ │ │ └── UriAuthorizationFilter.java │ │ │ ├── interceptors │ │ │ │ └── CustomHandlerInterceptor.java │ │ │ ├── configuration │ │ │ │ ├── CustomLongStringType.java │ │ │ │ └── UserProviderConfiguration.java │ │ │ └── monitoring │ │ │ │ └── MetricsMBean.java │ │ │ └── PackageMarker.java │ └── resources │ │ └── log4j2.properties │ └── test │ ├── resources │ └── org │ │ └── cloudfoundry │ │ └── multiapps │ │ └── controller │ │ └── web │ │ ├── resources │ │ ├── ongoing-operations-resource-test-output-5.json │ │ ├── ongoing-operations-resource-test-output-1.json │ │ ├── ongoing-operation-1.json │ │ ├── ongoing-operations-resource-test-output-2.json │ │ ├── ongoing-operations-resource-test-output-3.json │ │ ├── ongoing-operations-resource-test-output-4.json │ │ └── ongoing-operations-resource-test-output-7.json │ │ └── util │ │ ├── expected-entity-00.json │ │ ├── entity-01.xml │ │ ├── entity-00.xml │ │ └── entity-02.xml │ └── java │ └── org │ └── cloudfoundry │ └── multiapps │ └── controller │ └── web │ └── util │ └── foo │ └── package-info.java ├── multiapps-controller-process └── src │ ├── test │ └── resources │ │ └── org │ │ └── cloudfoundry │ │ └── multiapps │ │ └── controller │ │ └── process │ │ ├── steps │ │ ├── empty-list.json │ │ ├── empty-map.json │ │ ├── test-app-1.mtar │ │ ├── undeploy-apps-step-output-02.json │ │ ├── undeploy-apps-step-output-05.json │ │ ├── undeploy-apps-step-output-06.json │ │ ├── service-keys-01.json │ │ ├── undeploy-apps-step-input-02.json │ │ ├── config-01.mtaext │ │ ├── config-02.mtaext │ │ ├── platform.json │ │ ├── update-subscribers-step-output-02.json │ │ ├── update-subscribers-step-output-09.json │ │ ├── mtad-non-application.yaml │ │ ├── create-subscriptions-step-input-01.json │ │ ├── undeploy-apps-step-output-03.json │ │ ├── create-subscriptions-step-input-02.json │ │ ├── test.mtar │ │ ├── parsed-platform.json │ │ ├── test2.mtar │ │ ├── publish-configuration-entries-step-input-4.json │ │ ├── sample-app.mtar │ │ ├── undeploy-apps-step-output-07.json │ │ ├── system-parameters │ │ │ ├── mtad-with-route-path.yaml │ │ │ ├── mtad.yaml │ │ │ └── mtad-with-existing-parameters.yaml │ │ ├── undeploy-apps-step-output-04.json │ │ ├── upload-app-step-input-1.mtar │ │ ├── process-archive-step-test-1.mtar │ │ ├── undeploy-apps-step-output-00.json │ │ ├── undeploy-apps-step-output-01.json │ │ ├── determine-actions-create-or-update-services-step-input-2-no-action.json │ │ ├── mtad-tcp-tcps.yaml │ │ ├── check-app-step-input-1.json │ │ ├── check-app-step-input-2.json │ │ ├── existing-app-2.json │ │ ├── app-to-deploy-1.json │ │ ├── app-to-deploy-2.json │ │ ├── update-subscribed-service-broker-input-02.json │ │ ├── check-for-creation-conflicts-step-input-2.json │ │ ├── check-for-creation-conflicts-step-input-6.json │ │ ├── update-subscribed-service-broker-input-04.json │ │ ├── update-subscribed-service-broker-input-00.json │ │ ├── update-subscribed-service-broker-input-01.json │ │ ├── determine-actions-create-or-update-services-step-input-15-dynamic-parameter-relationship-match.json │ │ ├── determine-actions-create-or-update-services-step-input-4-update-plan.json │ │ ├── test-mtad-1.yaml │ │ ├── update-subscribed-service-broker-input-03.json │ │ ├── test-manifest-1.MF │ │ ├── process-mta-archive-step-1.json │ │ ├── create-or-update-services-step-input-11.json │ │ ├── deployed-mta-04.json │ │ ├── determine-actions-create-or-update-services-step-input-14-update-syslog-url.json │ │ ├── determine-actions-create-or-update-services-step-input-8-recreate-service-failure.json │ │ ├── check-for-creation-conflicts-step-input-1.json │ │ ├── deployed-mta-09.json │ │ ├── check-for-creation-conflicts-step-input-4.json │ │ ├── subscriptions-to-delete-01.json │ │ ├── undeploy-apps-step-input-05.json │ │ ├── check-for-creation-conflicts-step-input-7.json │ │ ├── deployed-mta-02.json │ │ ├── determine-actions-create-or-update-services-step-input-6-update-tags.json │ │ ├── poll-create-services-step-input-09.json │ │ ├── poll-create-services-step-input-10.json │ │ ├── determine-actions-create-or-update-services-step-input-3-recreate-service.json │ │ ├── build-cloud-model.yaml │ │ ├── determine-actions-create-or-update-services-step-input-9-recreate-service-error.json │ │ ├── app-to-deploy-4.json │ │ ├── existing-app-4.json │ │ ├── app-to-deploy-3.json │ │ ├── existing-app-1.json │ │ ├── configuration-entries.json │ │ ├── deployed-mta-13.json │ │ ├── services-to-create-01.json │ │ ├── deployed-mta-07.json │ │ ├── determine-actions-create-or-update-services-step-input-10-update-credentials.json │ │ └── determine-actions-create-or-update-services-step-input-7-update-credentials.json │ │ └── util │ │ ├── expected-mtad.yaml │ │ ├── namespace-global-parameters-with-default-values.yaml │ │ ├── deployed-mta-05.json │ │ ├── mtad-00.yaml │ │ ├── test │ │ ├── stored-mta.mtar │ │ ├── deflated-mta.mtar │ │ ├── uploaded-file-entry.json │ │ ├── com.sap.mta.sample-1.2.1-beta.mtar │ │ ├── archive-entry-with-absolute-path.mtar │ │ ├── com.sap.mta.sample-1.2.1-beta-flat.mtar │ │ ├── archive-entry-with-not-normalized-path.mtar │ │ ├── file-entry-without-parts.json │ │ ├── namespace-global-parameters-with-incorrect-values.yaml │ │ ├── namespace-global-parameters-with-all-true-values.yaml │ │ ├── mtad-01.yaml │ │ ├── namespace-global-parameters-with-all-false-values.yaml │ │ ├── mtad-04.yaml │ │ ├── mtad-02.yaml │ │ ├── mtad-03.yaml │ │ ├── file-entries.json │ │ ├── mtad-05.yaml │ │ ├── mtad-06.yaml │ │ ├── file-entries-1.json │ │ ├── file-entries-with-invalid-names.json │ │ ├── file-entries-with-invalid-names-no-indexes.json │ │ └── deployed-mta-03.json │ └── main │ └── java │ └── org │ └── cloudfoundry │ └── multiapps │ └── controller │ └── process │ ├── DeployStrategy.java │ ├── steps │ ├── StepPhase.java │ ├── AsyncExecutionState.java │ ├── AsyncExecution.java │ ├── AfterStepHookPhaseProvider.java │ ├── BeforeStepHookPhaseProvider.java │ ├── PollServiceBindingOperationExecution.java │ └── PollServiceUnbindingOperationExecution.java │ ├── package-info.java │ ├── flowable │ ├── commands │ │ ├── FlowableCommandExecutor.java │ │ └── FlowableCommandExecutorFactory.java │ └── AdditionalProcessAction.java │ ├── variables │ ├── ListVariable.java │ └── Serializer.java │ ├── jobs │ └── Cleaner.java │ ├── util │ ├── ServiceDeletionActions.java │ ├── ServiceAction.java │ ├── ProcessTime.java │ ├── FileEntryProperties.java │ ├── ContentLengthTracker.java │ ├── StagingState.java │ ├── HooksWithPhases.java │ ├── ModuleDeployProcessGetter.java │ └── SchemaVersionUtils.java │ ├── stream │ └── ArchiveStreamWithName.java │ └── listeners │ └── AbortProcessStatisticsListener.java ├── multiapps-controller-persistence └── src │ ├── test │ └── resources │ │ ├── org │ │ └── cloudfoundry │ │ │ └── multiapps │ │ │ └── controller │ │ │ └── persistence │ │ │ └── services │ │ │ └── logs.txt │ │ ├── pexels-photo-401794.jpeg │ │ └── pexels-photo-463467.jpeg │ └── main │ ├── java │ └── org │ │ └── cloudfoundry │ │ └── multiapps │ │ └── controller │ │ └── persistence │ │ ├── OrderDirection.java │ │ ├── package-info.java │ │ ├── query │ │ ├── options │ │ │ └── StreamFetchingOptions.java │ │ └── SqlQuery.java │ │ ├── dto │ │ └── DtoWithPrimaryKey.java │ │ ├── services │ │ ├── PersistenceObjectMapper.java │ │ ├── FileContentToProcess.java │ │ ├── FileStorageException.java │ │ └── FileContentConsumer.java │ │ ├── model │ │ └── LockOwnerEntry.java │ │ └── util │ │ └── ConfigurationEntriesUtil.java │ └── resources │ └── org │ └── cloudfoundry │ └── multiapps │ └── controller │ └── persistence │ └── db │ └── changelog │ └── sql │ ├── delete_unlink_file_content_trigger_v2.sql │ ├── create_unlink_file_content_trigger_v2.sql │ ├── create_unlink_file_content_triggers.sql │ ├── delete_unlink_file_content_triggers.sql │ └── create_unlink_file_content_function.sql ├── multiapps-controller-client └── src │ ├── main │ └── java │ │ └── org │ │ └── cloudfoundry │ │ └── multiapps │ │ └── controller │ │ ├── client │ │ ├── facade │ │ │ ├── Nullable.java │ │ │ ├── SkipNulls.java │ │ │ ├── domain │ │ │ │ ├── Derivable.java │ │ │ │ ├── PackageState.java │ │ │ │ ├── Status.java │ │ │ │ ├── ApplicationLogs.java │ │ │ │ ├── HealthCheckType.java │ │ │ │ ├── ServicePlanVisibility.java │ │ │ │ ├── LifecycleType.java │ │ │ │ ├── DockerCredentials.java │ │ │ │ ├── Upload.java │ │ │ │ ├── CloudDomain.java │ │ │ │ ├── InstanceState.java │ │ │ │ ├── DockerInfo.java │ │ │ │ ├── InstanceInfo.java │ │ │ │ └── CloudOrganization.java │ │ │ ├── ApplicationServicesUpdateCallback.java │ │ │ ├── ServiceBindingOperationCallback.java │ │ │ ├── Constants.java │ │ │ ├── ApplicationLogListener.java │ │ │ ├── CloudException.java │ │ │ └── adapters │ │ │ │ └── ApplicationLogsResponse.java │ │ ├── package-info.java │ │ ├── lib │ │ │ └── domain │ │ │ │ ├── DropletInfo.java │ │ │ │ ├── ServiceRouteBinding.java │ │ │ │ └── UploadStatusCallbackExtended.java │ │ ├── util │ │ │ └── CheckedSupplier.java │ │ └── TokenProvider.java │ │ └── Messages.java │ └── test │ └── resources │ └── org │ └── cloudfoundry │ └── multiapps │ └── controller │ └── client │ └── facade │ ├── staticfile.zip │ └── rest │ ├── v2-error.json │ └── v3-error.json ├── multiapps-controller-api └── src │ └── main │ ├── java │ └── org │ │ └── cloudfoundry │ │ └── multiapps │ │ └── controller │ │ └── api │ │ ├── model │ │ ├── ErrorType.java │ │ ├── ParameterType.java │ │ ├── parameters │ │ │ ├── StringParameterConverter.java │ │ │ ├── ParameterConverter.java │ │ │ └── IntegerParameterConverter.java │ │ └── MessageType.java │ │ ├── package-info.java │ │ ├── CsrfTokenApiService.java │ │ ├── InfoApiService.java │ │ └── MtasApiService.java │ └── resources │ └── securityDefinition.json ├── multiapps-controller-core-test └── src │ └── main │ └── java │ ├── org │ └── cloudfoundry │ │ └── multiapps │ │ └── controller │ │ └── core │ │ └── test │ │ ├── package-info.java │ │ └── LambdaArgumentMatcher.java │ └── module-info.java ├── multiapps-controller-persistence-test └── src │ └── main │ └── java │ ├── org │ └── cloudfoundry │ │ └── multiapps │ │ └── controller │ │ └── persistence │ │ └── test │ │ └── package-info.java │ └── module-info.java ├── multiapps-controller-shutdown-client └── src │ └── main │ └── java │ └── org │ └── cloudfoundry │ └── multiapps │ └── controller │ └── shutdown │ └── client │ ├── package-info.java │ ├── CsrfHttpClientFactory.java │ ├── configuration │ ├── ShutdownConfiguration.java │ └── CustomShutdownConfiguration.java │ └── ShutdownClient.java ├── multiapps-controller-database-migration └── src │ └── main │ ├── java │ └── org │ │ └── cloudfoundry │ │ └── multiapps │ │ └── controller │ │ └── database │ │ └── migration │ │ ├── package-info.java │ │ ├── metadata │ │ ├── DatabaseTableColumnMetadata.java │ │ ├── DatabaseTableData.java │ │ └── DatabaseTableRowData.java │ │ └── executor │ │ └── type │ │ └── DatabaseTypeSetter.java │ └── resources │ └── console-logger.properties ├── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .github └── workflows │ ├── main.yml │ └── on-prem.yml └── NOTICE /multiapps-controller-core/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /.externalToolBuilders/ 3 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/devxdi/.gitignore: -------------------------------------------------------------------------------- 1 | *.mtar 2 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/devxwebide/.gitignore: -------------------------------------------------------------------------------- 1 | *.mtar 2 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/logo.png -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/webapp/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/empty-list.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/empty-map.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/test-app-1.mtar: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/detect/metadata/apps-01.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/detect/metadata/apps-03.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/env-value-05.txt: -------------------------------------------------------------------------------- 1 | test$1\$2 -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/object-05.json: -------------------------------------------------------------------------------- 1 | "test$1\\$2" -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/tasks-01.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/detect/metadata/deployed-mtas-01.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/test/resources/org/cloudfoundry/multiapps/controller/persistence/services/logs.txt: -------------------------------------------------------------------------------- 1 | some content -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/tasks-02.json: -------------------------------------------------------------------------------- 1 | ["foo", "bar"] -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/resources/ongoing-operations-resource-test-output-5.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/expected-configuration-entries-00.json: -------------------------------------------------------------------------------- 1 | { 2 | "module": [] 3 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/tasks-07.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "foo" 4 | } 5 | ] -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/resources/META-INF/services/liquibase.lockservice.LockService: -------------------------------------------------------------------------------- 1 | org.cloudfoundry.multiapps.controller.core.liquibase.RecoveringLockService 2 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/tasks-06.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "command": "echo foo" 4 | } 5 | ] -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/undeploy-apps-step-output-02.json: -------------------------------------------------------------------------------- 1 | { 2 | "expectedRoutesToDelete": [] 3 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/undeploy-apps-step-output-05.json: -------------------------------------------------------------------------------- 1 | { 2 | "expectedRoutesToDelete": [] 3 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/expected-mtad.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1.0" 2 | ID: test 3 | version: 6.0.0 4 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/app-features/config-app-features.mtaext: -------------------------------------------------------------------------------- 1 | ID: app-features-test.ext 2 | _schema-version: '2.1' 3 | extends: app-features-test 4 | 5 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/mta-archive-helper-manifest-with-created-by-null.txt: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | 3 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/undeploy-apps-step-output-06.json: -------------------------------------------------------------------------------- 1 | { 2 | "expectedRoutesToDelete": [ 3 | ] 4 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/clients/cf-error-response-body-3.json: -------------------------------------------------------------------------------- 1 | "Application currency-services-core-uaa-dev1!i211 does not exist" -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/tasks-05.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "foo", 4 | "command": 1000 5 | } 6 | ] -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/service-keys-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "module-1": [], 3 | "module-2": [], 4 | "module-3": [] 5 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/tasks-04.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": 1, 4 | "command": "echo foo" 5 | } 6 | ] -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/undeploy-apps-step-input-02.json: -------------------------------------------------------------------------------- 1 | { 2 | "portBasedRouting":true, 3 | "appsToDelete": [] 4 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/clients/cf-error-response-body-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 10001, 3 | "error_code": "CF-ServiceBrokerBadResponse", 4 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/deployed-module-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleName": "foo", 3 | "uris": [ "localhost:50100", "localhost:50200" ] 4 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/config-01.mtaext: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: com.sap.mta.test.config-01 3 | extends: com.sap.mta.test 4 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/config-02.mtaext: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: com.sap.mta.test.config-02 3 | extends: com.sap.mta.test 4 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/application-env-updater-result-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "test-key": "test-value", 3 | "test-new-key": "test-new-value" 4 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/env-value-03.txt: -------------------------------------------------------------------------------- 1 | [ { 2 | "source" : "$1/\\\$2/\$3", 3 | "target" : "$4/\\\$5/\$6", 4 | "token" : "TOKEN" 5 | } ] -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/mta-archive-helper-1.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: com.sap.xs2.samples.javahelloworld 3 | version: 0.1.0 4 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/apps/app-without-no-start-attribute.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "env": { 4 | "DEPLOY_ATTRIBUTES":"{}" 5 | } 6 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/object-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "source": "rest/$1/operations", 3 | "target": "rest/$2/operations", 4 | "token": "TOKEN" 5 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/util/cloud-components.json: -------------------------------------------------------------------------------- 1 | { 2 | "cloud-component-1": "some-component-1", 3 | "cloud-component-2": "some-component-2" 4 | } -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/Nullable.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade; 2 | 3 | public @interface Nullable { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/SkipNulls.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade; 2 | 3 | public @interface SkipNulls { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/env-value-00.txt: -------------------------------------------------------------------------------- 1 | { 2 | "source" : "rest/\$1/operations", 3 | "target" : "rest/\$2/operations", 4 | "token" : "TOKEN" 5 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/env-value-01.txt: -------------------------------------------------------------------------------- 1 | { 2 | "source" : "rest/$1/operations", 3 | "target" : "rest/$2/operations", 4 | "token" : "TOKEN" 5 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/object-00.json: -------------------------------------------------------------------------------- 1 | { 2 | "source": "rest/\\$1/operations", 3 | "target": "rest/\\$2/operations", 4 | "token": "TOKEN" 5 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/security/serialization/secured-object-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "username" : "********", 3 | "p@ssword" : "Support", 4 | "xxx" : "xxx" 5 | } -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/test/resources/pexels-photo-401794.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-persistence/src/test/resources/pexels-photo-401794.jpeg -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/test/resources/pexels-photo-463467.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-persistence/src/test/resources/pexels-photo-463467.jpeg -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/model/Phase.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.model; 2 | 3 | public enum Phase { 4 | UNDEPLOY, AFTER_RESUME 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/env-value-02.txt: -------------------------------------------------------------------------------- 1 | { 2 | "source" : "rest/\\$1/operations", 3 | "target" : "rest/\\$2/operations", 4 | "token" : "TOKEN" 5 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/mta-archive-helper-manifest-with-created-by.txt: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Created-By: SAP Application Archive Builder 1.2.34 3 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/object-02.json: -------------------------------------------------------------------------------- 1 | { 2 | "source": "rest/\\\\$1/operations", 3 | "target": "rest/\\\\$2/operations", 4 | "token": "TOKEN" 5 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/security/serialization/unsecured-object-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "username": "i318495", 3 | "p@ssword": "Support", 4 | "xxx": "xxx" 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/namespace-global-parameters-with-default-values.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CF ALM Service 6 | 7 | Welcome to CF ALM Service! 8 | 9 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/apps/started-app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "instances": 3, 4 | "runningInstances": 3, 5 | "state": "STARTED", 6 | "env":{} 7 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/apps/stopped-app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "instances": 3, 4 | "runningInstances": 0, 5 | "state": "STOPPED", 6 | "env":{} 7 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/config-01.mtaext: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.xs2.test.config-01 3 | extends: com.sap.xs2.test 4 | 5 | targets: [CF-TRIAL] 6 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v3/config-01.mtaext: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1.0" 2 | ID: com.sap.xs2.test.config-01 3 | extends: com.sap.xs2.test 4 | 5 | targets: [CF-TRIAL] 6 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/tasks-03.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "command": "echo ${test}", 4 | "env": { 5 | "test": "test" 6 | } 7 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/platform.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CF_PLATFORM", 3 | "parameters": { 4 | "org": "initial", 5 | "space": "initial" 6 | } 7 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/update-subscribers-step-output-02.json: -------------------------------------------------------------------------------- 1 | { 2 | "callArgumentsOfUpdateApplicationEnvMethod": [], 3 | "updatedSubscribers": [] 4 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/update-subscribers-step-output-09.json: -------------------------------------------------------------------------------- 1 | { 2 | "callArgumentsOfUpdateApplicationEnvMethod": [], 3 | "updatedSubscribers": [] 4 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/deployed-mta-05.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "id": "com.sap.sample.mta.consumer" 4 | }, 5 | "applications": [] 6 | } 7 | -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/java/org/cloudfoundry/multiapps/controller/api/model/ErrorType.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.api.model; 2 | 3 | public enum ErrorType { 4 | 5 | CONTENT, INFRASTRUCTURE 6 | 7 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/apps/app-with-no-start-attribute-false.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "env": { 4 | "DEPLOY_ATTRIBUTES":"{\"no-start\":false}" 5 | } 6 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/apps/app-with-no-start-attribute-true.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "env": { 4 | "DEPLOY_ATTRIBUTES":"{\"no-start\":true}" 5 | } 6 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/config-02.mtaext: -------------------------------------------------------------------------------- 1 | _schema-version: "2.1.0" 2 | ID: com.sap.sample.mta.config-01 3 | extends: com.sap.sample.mta 4 | 5 | targets: [XS2-INITIAL] -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-16.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.sample.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: java.tomee -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/env-value-04.txt: -------------------------------------------------------------------------------- 1 | { 2 | "test_1" : "\\\"$1\$2\\$3", 3 | "test_2" : "\\\n\$1$2\\$3", 4 | "test_3" : "\\\n$1\\$2\$3", 5 | "x" : "$1" 6 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/object-03.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "source": "$1/\\\\\\$2/\\$3", 4 | "target": "$4/\\\\\\$5/\\$6", 5 | "token": "TOKEN" 6 | } 7 | ] -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/resources/securityDefinition.json: -------------------------------------------------------------------------------- 1 | { 2 | "oauth2" : { 3 | "type" : "oauth2", 4 | "tokenUrl" : "https://uaa.bosh-lite.com/oauth/token", 5 | "flow" : "password", 6 | "scopes" : { } 7 | } 8 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/DeploymentMode.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.cf; 2 | 3 | public enum DeploymentMode { 4 | 5 | SEQUENTIAL, PARALLEL 6 | } 7 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/model/ErrorType.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.model; 2 | 3 | public enum ErrorType { 4 | CONTENT_ERROR, UNKNOWN_ERROR 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/object-04.json: -------------------------------------------------------------------------------- 1 | { 2 | "test_1": "\\\"$1\\$2\\\\$3", 3 | "test_2": "\\\n\\$1$2\\\\$3", 4 | "test_3": "\\\n$1\\\\$2\\$3", 5 | "x": "$1" 6 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/DeployStrategy.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process; 2 | 3 | public enum DeployStrategy { 4 | DEFAULT, BLUE_GREEN 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/mtad-non-application.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 3 2 | ID: mta-tcp 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: module-1 7 | type: non-app -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/apps/app-in-inconsistent-state-0.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "instances": 3, 4 | "runningInstances": 1, 5 | "state": "STARTED", 6 | "env":{} 7 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/apps/app-in-inconsistent-state-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "instances": 0, 4 | "runningInstances": 0, 5 | "state": "STARTED", 6 | "env":{} 7 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/apps/app-in-inconsistent-state-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "instances": 3, 4 | "runningInstances": 3, 5 | "state": "STOPPED", 6 | "env":{} 7 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/deployed-module-6.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleName": "foo", 3 | "uris": [], 4 | "deployAttributes": { 5 | "descriptor-defined-uris": [] 6 | } 7 | } -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/OrderDirection.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.persistence; 2 | 3 | public enum OrderDirection { 4 | ASCENDING, DESCENDING 5 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/StepPhase.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.steps; 2 | 3 | public enum StepPhase { 4 | EXECUTE, POLL, RETRY, DONE 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/mtad-00.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 4 | parameters: 5 | default-domain: "some.default.domain" -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/util/expected-entity-00.json: -------------------------------------------------------------------------------- 1 | { 2 | "property1": "property-1-value", 3 | "property2": "property-2-value", 4 | "property3": 1000, 5 | "property4": true 6 | } -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/java/org/cloudfoundry/multiapps/controller/api/model/ParameterType.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.api.model; 2 | 3 | public enum ParameterType { 4 | STRING, INTEGER, BOOLEAN, TABLE 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/util/OperationExecutionState.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.util; 2 | 3 | public enum OperationExecutionState { 4 | FINISHED, EXECUTING 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/incremental-blue-green/mtaext-application.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2 2 | ID: foo.mtar.mtaext 3 | version: 1.0.0 4 | extends: foo.mtar 5 | 6 | modules: 7 | - name: foo5 8 | parameters: 9 | instances: 4 -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/mtad-08.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.sample.mta.consumer 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: consumer 7 | type: java.tomee 8 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/create-subscriptions-step-input-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "subscriptionsToCreate": [], 3 | "oldSubscriptionsToBeUpdated": [], 4 | "subscriptionsToUpdate": [] 5 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/undeploy-apps-step-output-03.json: -------------------------------------------------------------------------------- 1 | { 2 | "expectedRoutesToDelete": [ 3 | { 4 | "host": "foo", 5 | "domain": "domain" 6 | } 7 | ] 8 | } -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/java/org/cloudfoundry/multiapps/controller/api/package-info.java: -------------------------------------------------------------------------------- 1 | @MultiappsImmutablesStyle 2 | package org.cloudfoundry.multiapps.controller.api; 3 | 4 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; 5 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/package-info.java: -------------------------------------------------------------------------------- 1 | @MultiappsImmutablesStyle 2 | package org.cloudfoundry.multiapps.controller.client; 3 | 4 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/package-info.java: -------------------------------------------------------------------------------- 1 | @MultiappsImmutablesStyle 2 | package org.cloudfoundry.multiapps.controller.core; 3 | 4 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; 5 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/application-with-invalid-deploy-attributes.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "env": { 4 | "DEPLOY_ATTRIBUTES":"{\"create-service-broker\":\"ture\"}" 5 | } 6 | } -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/resources/org/cloudfoundry/multiapps/controller/persistence/db/changelog/sql/delete_unlink_file_content_trigger_v2.sql: -------------------------------------------------------------------------------- 1 | DROP TRIGGER IF EXISTS DELETE_FROM_SYSTEM_TABLE_LM_SL_PERSISTENCE_FILE ON LM_SL_PERSISTENCE_FILE; 2 | -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/package-info.java: -------------------------------------------------------------------------------- 1 | @MultiappsImmutablesStyle 2 | package org.cloudfoundry.multiapps.controller.web; 3 | 4 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; 5 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/Derivable.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | public interface Derivable { 4 | 5 | T derive(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/PackageState.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | public enum PackageState { 4 | PENDING, STAGED, FAILED, 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/AsyncExecutionState.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.steps; 2 | 3 | public enum AsyncExecutionState { 4 | FINISHED, RUNNING, ERROR 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/helpers/expander/Expander.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.helpers.expander; 2 | 3 | public interface Expander { 4 | 5 | R expand(T object); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/package-info.java: -------------------------------------------------------------------------------- 1 | @MultiappsImmutablesStyle 2 | package org.cloudfoundry.multiapps.controller.process; 3 | 4 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; 5 | -------------------------------------------------------------------------------- /multiapps-controller-core-test/src/main/java/org/cloudfoundry/multiapps/controller/core/test/package-info.java: -------------------------------------------------------------------------------- 1 | @MultiappsImmutablesStyle 2 | package org.cloudfoundry.multiapps.controller.core.test; 3 | 4 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; 5 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-ssh-enabled-true.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | parameters: 9 | enable-ssh: true -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/v2/mtad-04.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.test 3 | version: "1.0" 4 | 5 | resources: 6 | - name: baz 7 | parameters: 8 | test: test-1 9 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/test -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/lib/domain/DropletInfo.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.lib.domain; 2 | 3 | public interface DropletInfo { 4 | 5 | boolean equals(DropletInfo other); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/model/SubprocessPhase.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.model; 2 | 3 | public enum SubprocessPhase { 4 | 5 | BEFORE_APPLICATION_STOP, BEFORE_APPLICATION_START 6 | } 7 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-ssh-enabled-false.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | parameters: 9 | enable-ssh: false -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/application-env-updater-result-00.json: -------------------------------------------------------------------------------- 1 | { 2 | "test-complex-key": "{\"test-inner-key-1\":\"test-inner-value-2\",\"test-new-key\":\"test-new-value\"}", 3 | "test-key": "test-value" 4 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/deployed-module-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleName": "foo", 3 | "uris": [ "localhost:50100", "localhost:50200" ], 4 | "deployAttributes": { 5 | "descriptor-defined-uris": [] 6 | } 7 | } -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/package-info.java: -------------------------------------------------------------------------------- 1 | @MultiappsImmutablesStyle 2 | package org.cloudfoundry.multiapps.controller.persistence; 3 | 4 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; 5 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/create-subscriptions-step-input-02.json: -------------------------------------------------------------------------------- 1 | { 2 | "subscriptionsToCreate": [ 3 | { 4 | } 5 | ], 6 | "oldSubscriptionsToBeUpdated": [], 7 | "subscriptionsToUpdate": [] 8 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/apps/ApplicationStartupState.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.cf.apps; 2 | 3 | public enum ApplicationStartupState { 4 | STOPPED, STARTED, INCONSISTENT, EXECUTED 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/valid-format.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.3" 2 | ID: com.test 3 | extends: com.test 4 | 5 | modules: 6 | - name: spark-service-admin 7 | properties: 8 | MAX_SIZE: а 9 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/test.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/test.mtar -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/Status.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | public enum Status { 4 | AWAITING_UPLOAD, COPYING, EXPIRED, PROCESSING_UPLOAD, READY, FAILED, 5 | } -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/util/CheckedSupplier.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.util; 2 | 3 | @FunctionalInterface 4 | public interface CheckedSupplier { 5 | 6 | T get() throws Exception; 7 | } 8 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/apps/ApplicationStateAction.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.cf.apps; 2 | 3 | public enum ApplicationStateAction { 4 | STOP, STAGE, START, EXECUTE, GRADUAL_INSTANCE_UPDATE 5 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/clients/application-updater-input-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "staging": { 3 | "buildpackUrl": "test-buildpack", 4 | "healthCheckType": "none" 5 | }, 6 | "application": { 7 | "appName": "testApp" 8 | } 9 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/parsed-platform.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CF_PLATFORM", 3 | "moduleTypes": [], 4 | "resourceTypes": [], 5 | "parameters": { 6 | "org": "initial", 7 | "space": "initial" 8 | } 9 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/test2.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/test2.mtar -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/util/entity-01.xml: -------------------------------------------------------------------------------- 1 | 2 | property-1-value 3 | property-2-value 4 | 1000 5 | true 6 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/test/resources/org/cloudfoundry/multiapps/controller/client/facade/staticfile.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-client/src/test/resources/org/cloudfoundry/multiapps/controller/client/facade/staticfile.zip -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/clients/cf-error-response-body-0.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 10001, 3 | "description": "Application currency-services-core-uaa-dev1!i211 does not exist", 4 | "error_code": "CF-ServiceBrokerBadResponse" 5 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/v2/mtad-06.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.test 3 | version: "1.0" 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | properties: 9 | port: -1 10 | -------------------------------------------------------------------------------- /multiapps-controller-persistence-test/src/main/java/org/cloudfoundry/multiapps/controller/persistence/test/package-info.java: -------------------------------------------------------------------------------- 1 | @MultiappsImmutablesStyle 2 | package org.cloudfoundry.multiapps.controller.persistence.test; 3 | 4 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; 5 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/stored-mta.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/stored-mta.mtar -------------------------------------------------------------------------------- /multiapps-controller-shutdown-client/src/main/java/org/cloudfoundry/multiapps/controller/shutdown/client/package-info.java: -------------------------------------------------------------------------------- 1 | @MultiappsImmutablesStyle 2 | package org.cloudfoundry.multiapps.controller.shutdown.client; 3 | 4 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; 5 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/deployed-module-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleName": "foo", 3 | "uris": [ "localhost:50100" ], 4 | "deployAttributes": { 5 | "descriptor-defined-uris": [ "localhost:50100", "localhost:50200" ] 6 | } 7 | } -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/query/options/StreamFetchingOptions.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.persistence.query.options; 2 | 3 | public record StreamFetchingOptions(long startOffset, long endOffset) { 4 | } 5 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/publish-configuration-entries-step-input-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "entriesToPublish": [ 3 | 4 | ], 5 | "expectedCreatedEntries": [ 6 | 7 | ], 8 | "expectedUpdatedEntries": [ 9 | 10 | ] 11 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/sample-app.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/sample-app.mtar -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/deflated-mta.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/deflated-mta.mtar -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/app-features/mtad-app-features-empty.yaml: -------------------------------------------------------------------------------- 1 | ID: app-features-test 2 | _schema-version: '2.1' 3 | version: 0.0.1 4 | 5 | modules: 6 | - name: feature-app 7 | type: java 8 | path: . 9 | parameters: 10 | app-features: { } 11 | 12 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-health-check-type-port.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | parameters: 9 | health-check-type: port 10 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/configuration-entries-07.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "filter": { 4 | "requiredContent": { 5 | "type": "com.acme.plugin" 6 | } 7 | }, 8 | "configurationEntries": [] 9 | } 10 | ] -------------------------------------------------------------------------------- /multiapps-controller-database-migration/src/main/java/org/cloudfoundry/multiapps/controller/database/migration/package-info.java: -------------------------------------------------------------------------------- 1 | @MultiappsImmutablesStyle 2 | package org.cloudfoundry.multiapps.controller.database.migration; 3 | 4 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; 5 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/undeploy-apps-step-output-07.json: -------------------------------------------------------------------------------- 1 | { 2 | "expectedRoutesToDelete": [ 3 | { 4 | "domain": "db.example.com" 5 | }, 6 | { 7 | "domain": "ui.example.com" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/mta-archive-helper-1.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/mta-archive-helper-1.mtar -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/mta-archive-helper-2.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/mta-archive-helper-2.mtar -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/flowable/commands/FlowableCommandExecutor.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.flowable.commands; 2 | 3 | 4 | public interface FlowableCommandExecutor { 5 | 6 | void executeCommand(); 7 | } 8 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/variables/ListVariable.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.variables; 2 | 3 | import java.util.List; 4 | 5 | public interface ListVariable> extends Variable { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/uploaded-file-entry.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "id", 3 | "name": "archive", 4 | "namespace": "namespace1", 5 | "space": "some_space", 6 | "size": 20000, 7 | "digest": "digest", 8 | "digestAlgorithm": "MD5" 9 | } -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/ApplicationLogs.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | import java.util.ArrayList; 4 | 5 | public class ApplicationLogs extends ArrayList { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/application-env-updater-input-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "app": { 3 | "name": "testApp", 4 | "env": { 5 | "test-key": "test-value" 6 | } 7 | }, 8 | "newKey": "test-new-key", 9 | "newValue": "test-new-value" 10 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-health-check-type-http-without-endpoint.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | parameters: 9 | health-check-type: http 10 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/deployed-module-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleName": "foo", 3 | "uris": [ "localhost:50100", "localhost:50200" ], 4 | "deployAttributes": { 5 | "descriptor-defined-uris": [ "localhost:50100", "localhost:50200" ] 6 | } 7 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/deployed-module-5.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleName": "foo", 3 | "uris": [ "localhost:50100", "localhost:50300" ], 4 | "deployAttributes": { 5 | "descriptor-defined-uris": [ "localhost:50100", "localhost:50200" ] 6 | } 7 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/duplicate-keys.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.test.1 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: spark-service-admin 7 | type: abc 8 | properties: 9 | MAX_SIZE: а 10 | MAX_SIZE: а -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/duplicate-key.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.3" 2 | ID: com.test 3 | extends: com.test 4 | 5 | modules: 6 | - name: spark-service-admin 7 | properties: 8 | MAX_SIZE: а 9 | MAX_SIZE: а 10 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/clients/cf-error-response-body-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": { 3 | "code": 10001, 4 | "error_code": "CF-ServiceBrokerBadResponse", 5 | "text": "Application currency-services-core-uaa-dev1!i211 does not exist" 6 | } 7 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-07-v2.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: module 7 | type: module 8 | provides: 9 | - name: foo 10 | - name: bar 11 | - name: baz 12 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/util/vcap-application-without-urls.json: -------------------------------------------------------------------------------- 1 | { 2 | "instance_id": "d827d1f2-d4c1-462a-ab9d-5bf828706d63", 3 | "application_name": "deploy-service", 4 | "started_at_timestamp": "1437740774167", 5 | "state_timestamp": "1437651427557" 6 | } -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/dto/DtoWithPrimaryKey.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.persistence.dto; 2 | 3 | public interface DtoWithPrimaryKey

{ 4 | 5 | P getPrimaryKey(); 6 | 7 | void setPrimaryKey(P primaryKey); 8 | } 9 | -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/resources/org/cloudfoundry/multiapps/controller/persistence/db/changelog/sql/create_unlink_file_content_trigger_v2.sql: -------------------------------------------------------------------------------- 1 | CREATE TRIGGER DELETE_FROM_SYSTEM_TABLE_LM_SL_PERSISTENCE_FILE AFTER DELETE 2 | ON LM_SL_PERSISTENCE_FILE FOR EACH ROW EXECUTE PROCEDURE UNLINK_FILE_CONTENT(); 3 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/jobs/Cleaner.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.jobs; 2 | 3 | import java.time.LocalDateTime; 4 | 5 | public interface Cleaner { 6 | 7 | void execute(LocalDateTime expirationTime); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/system-parameters/mtad-with-route-path.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 3 2 | ID: system-parameters-test 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | parameters: 9 | route-path: /foo 10 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/undeploy-apps-step-output-04.json: -------------------------------------------------------------------------------- 1 | { 2 | "expectedTasksToCancel": [ 3 | "1710fe37-c834-402a-b2ff-ac0a099cf725", 4 | "514b0009-4685-4c35-9a49-a755e4a6627e", 5 | "4e794f6b-c3bd-45c2-8346-e87216292be9" 6 | ] 7 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/upload-app-step-input-1.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/upload-app-step-input-1.mtar -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/app-features/mtad-app-features-single.yaml: -------------------------------------------------------------------------------- 1 | ID: app-features-test 2 | _schema-version: '2.1' 3 | version: 0.0.1 4 | 5 | modules: 6 | - name: feature-app 7 | type: java 8 | path: . 9 | parameters: 10 | app-features: 11 | featureA: true 12 | 13 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/node-hello-world-0.1.0-SNAPSHOT.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/node-hello-world-0.1.0-SNAPSHOT.mtar -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ServiceDeletionActions.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.util; 2 | 3 | public enum ServiceDeletionActions { 4 | DELETE_METADATA, DELETE_SERVICE_BINDINGS, DELETE_SERVICE_KEYS, DELETE_SERVICE_INSTANCE 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/process-archive-step-test-1.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/process-archive-step-test-1.mtar -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/util/entity-00.xml: -------------------------------------------------------------------------------- 1 | 2 | property-1-value 3 | property-2-value 4 | 1000 5 | true 6 | -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/util/entity-02.xml: -------------------------------------------------------------------------------- 1 | 2 | property-1-value 3 | property-2-value 4 | 1000 5 | true 6 | -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/java/org/cloudfoundry/multiapps/controller/api/CsrfTokenApiService.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.api; 2 | 3 | import org.springframework.http.ResponseEntity; 4 | 5 | public interface CsrfTokenApiService { 6 | 7 | ResponseEntity getCsrfToken(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/auditlogging/UserInfoProvider.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.auditlogging; 2 | 3 | import org.cloudfoundry.multiapps.controller.core.util.UserInfo; 4 | 5 | public interface UserInfoProvider { 6 | UserInfo getUserInfo(); 7 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/com.sap.mta.sample-1.2.1-beta.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/com.sap.mta.sample-1.2.1-beta.mtar -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/tasks-00.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "foo", 4 | "command": "echo ${test}", 5 | "env": { 6 | "test": "test" 7 | } 8 | }, 9 | { 10 | "name": "bar", 11 | "command": "echo bar" 12 | } 13 | ] -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ServiceAction.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.util; 2 | 3 | public enum ServiceAction { 4 | CREATE, RECREATE, UPDATE_CREDENTIALS, UPDATE_TAGS, UPDATE_SYSLOG_URL, UPDATE_PLAN, UPDATE_KEYS, UPDATE_METADATA 5 | } 6 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/archive-entry-with-absolute-path.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/archive-entry-with-absolute-path.mtar -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/keep-existing-routes/mtad.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2 2 | ID: foo.mtar 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: w/e 8 | parameters: 9 | keep-existing-routes: true 10 | 11 | - name: bar 12 | type: w/e 13 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/v2/mtad-07.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.test 3 | version: "1.0" 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | provides: 9 | - name: foo 10 | properties: 11 | port: -1 12 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/com.sap.mta.sample-1.2.1-beta-flat.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/com.sap.mta.sample-1.2.1-beta-flat.mtar -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/upload/client/FileFromUrlData.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.web.upload.client; 2 | 3 | import java.io.InputStream; 4 | import java.net.URI; 5 | 6 | public record FileFromUrlData(InputStream fileInputStream, URI uri, long fileSize) { 7 | } 8 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-15.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.sample.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: java.tomee 8 | parameters: 9 | buildpacks: 10 | - java_buildpack 11 | - staticfile_buildpack -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/archive-entry-with-not-normalized-path.mtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudfoundry/multiapps-controller/HEAD/multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/archive-entry-with-not-normalized-path.mtar -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/Messages.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller; 2 | 3 | public class Messages { 4 | 5 | // INFO messages 6 | public static final String WAITING_MS_BEFORE_RETRYING_WITH_TIMEOUT_OF_MS = "Waiting: {} ms before retrying with timeout of: {} ms"; 7 | 8 | } 9 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/deployed-module-3.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleName": "foo", 3 | "uris": [ "localhost:50100", "localhost:50200", "localhost:50300", "localhost:50400" ], 4 | "deployAttributes": { 5 | "descriptor-defined-uris": [ "localhost:50100", "localhost:50200" ] 6 | } 7 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "deploy", 3 | "dependencies": { 4 | "deploy": "git://example.com/xs2/hdideploy.js" 5 | }, 6 | "private": true, 7 | "scripts": { 8 | "start": "node node_modules/node-hdi-deploy/deploy.js" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/configuration-filter-parser-test-output-02.json: -------------------------------------------------------------------------------- 1 | { 2 | "providerId": "my-mta-id:my-provides-section", 3 | "providerNid": "mta", 4 | "targetSpace": { 5 | "space": "some-space", 6 | "org": "some-org" 7 | }, 8 | "providerVersion": "0.1.0" 9 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/skip-deploy/mtad-skip-deploy-true.yaml: -------------------------------------------------------------------------------- 1 | ID: skip-deploy-mta 2 | _schema-version: '3' 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: skip-deploy-app 7 | type: java 8 | path: app 9 | parameters: 10 | skip-deploy: true 11 | 12 | - name: foo 13 | type: java 14 | path: app 15 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/detect/metadata/services-03.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "mta-service-1", 4 | "metadata": { 5 | "labels": { 6 | "mta_id": "quux", 7 | "mta_version": "0.1.0" 8 | }, 9 | "annotations": { 10 | } 11 | } 12 | } 13 | ] -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/application-with-valid-deploy-attributes.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foo", 3 | "env": { 4 | "DEPLOY_ATTRIBUTES":"{\"create-service-broker\":true,\"service-broker-username\":\"username\",\"service-broker-password\":\"password\",\"env\":{\"foo\":\"bar\"}}" 5 | } 6 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/deployed-module-0.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleName": "foo", 3 | "uris": [ "localhost:50100", "localhost:50200" ], 4 | "deployAttributes": { 5 | "success-marker": "STDOUT:Success!", 6 | "failure-marker": "STDERR:Failure!", 7 | "execute-app": true 8 | } 9 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/parser/ParametersParser.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.parser; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | public interface ParametersParser { 7 | 8 | R parse(List> parametersList); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/skip-deploy/mtad-skip-deploy-false.yaml: -------------------------------------------------------------------------------- 1 | ID: skip-deploy-mta 2 | _schema-version: '3' 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: skip-deploy-app 7 | type: java 8 | path: app 9 | parameters: 10 | skip-deploy: false 11 | 12 | - name: foo 13 | type: java 14 | path: app 15 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-health-check-type-http-with-endpoint.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | parameters: 9 | health-check-type: http 10 | health-check-http-endpoint: /health 11 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/ApplicationServicesUpdateCallback.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade; 2 | 3 | public interface ApplicationServicesUpdateCallback { 4 | 5 | void onError(CloudOperationException e, String applicationName, String serviceInstanceName); 6 | } 7 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/ServiceBindingOperationCallback.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade; 2 | 3 | import java.util.UUID; 4 | 5 | public interface ServiceBindingOperationCallback { 6 | 7 | void onError(CloudOperationException e, UUID serviceBindingGuid); 8 | } 9 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/incremental-blue-green/mtad-with-different-instances-application.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2 2 | ID: foo.mtar 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo5 7 | type: w/e 8 | parameters: 9 | instances: 5 10 | 11 | - name: foo0 12 | type: w/e 13 | parameters: 14 | instances: 0 -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/skip-deploy/mtad-skip-deploy-string-true.yaml: -------------------------------------------------------------------------------- 1 | ID: skip-deploy-mta 2 | _schema-version: '3' 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: skip-deploy-app 7 | type: java 8 | path: app 9 | parameters: 10 | skip-deploy: "true" 11 | 12 | - name: foo 13 | type: java 14 | path: app 15 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/undeploy-apps-step-output-00.json: -------------------------------------------------------------------------------- 1 | { 2 | "expectedRoutesToDelete": [ 3 | { 4 | "host": "test-app-db", 5 | "domain": "example.com" 6 | }, 7 | { 8 | "host": "test-app-ui", 9 | "domain": "example.com" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/file-entry-without-parts.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "id1", 4 | "name": "archive", 5 | "namespace": "namespace1", 6 | "space": "some-custom-space", 7 | "size": 10000, 8 | "digest": "fake-digest", 9 | "digestAlgorithm": "MD-5" 10 | } 11 | ] -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | #### Description: 2 | 7 | 8 | 9 | #### Issue: 10 | 11 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-08-v2.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: module 7 | type: module 8 | provides: 9 | - name: foo 10 | public: true 11 | - name: bar 12 | - name: baz 13 | public: true 14 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/AsyncExecution.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.steps; 2 | 3 | public interface AsyncExecution { 4 | 5 | AsyncExecutionState execute(ProcessContext context); 6 | 7 | String getPollingErrorMessage(ProcessContext context); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/undeploy-apps-step-output-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "expectedRoutesToDelete": [ 3 | { 4 | "host": "1112", 5 | "domain": "routerhost.example.com" 6 | }, 7 | { 8 | "host": "1113", 9 | "domain": "routerhost.example.com" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/app-features/mtad-app-features.yaml: -------------------------------------------------------------------------------- 1 | ID: app-features-test 2 | _schema-version: '2.1' 3 | version: 0.0.1 4 | 5 | modules: 6 | - name: feature-app 7 | type: java 8 | path: . 9 | parameters: 10 | app-features: 11 | featureA: true 12 | featureB: false 13 | featureC: true 14 | 15 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/util/vcap-application-without-space.json: -------------------------------------------------------------------------------- 1 | { 2 | "instance_id": "d827d1f2-d4c1-462a-ab9d-5bf828706d63", 3 | "application_name": "deploy-service", 4 | "started_at_timestamp": "1437740774167", 5 | "state_timestamp": "1437651427557", 6 | "application_uris": ["sofd60245639a:12993"] 7 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ProcessTime.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.util; 2 | 3 | import org.immutables.value.Value; 4 | 5 | @Value.Immutable 6 | public interface ProcessTime { 7 | 8 | long getProcessDuration(); 9 | 10 | long getDelayBetweenSteps(); 11 | } 12 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/namespace-global-parameters-with-incorrect-values.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 4 | 5 | parameters: 6 | apply-namespace: 7 | app-names: aaa 8 | service-names: aaa 9 | app-routes: aaa 10 | as-suffix: aaa 11 | -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/java/org/cloudfoundry/multiapps/controller/web/util/foo/package-info.java: -------------------------------------------------------------------------------- 1 | @XmlSchema(namespace = "http://www.sap.com/lm/sl/example", elementFormDefault = XmlNsForm.QUALIFIED) 2 | package org.cloudfoundry.multiapps.controller.web.util.foo; 3 | 4 | import jakarta.xml.bind.annotation.XmlNsForm; 5 | import jakarta.xml.bind.annotation.XmlSchema; 6 | -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/java/org/cloudfoundry/multiapps/controller/api/InfoApiService.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.api; 2 | 3 | import org.cloudfoundry.multiapps.controller.api.model.Info; 4 | import org.springframework.http.ResponseEntity; 5 | 6 | public interface InfoApiService { 7 | 8 | ResponseEntity getInfo(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/flowable/AdditionalProcessAction.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.flowable; 2 | 3 | public interface AdditionalProcessAction { 4 | 5 | void executeAdditionalProcessAction(String processInstanceId); 6 | 7 | Action getApplicableAction(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/namespace-global-parameters-with-all-true-values.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 4 | 5 | parameters: 6 | apply-namespace: 7 | app-names: true 8 | service-names: true 9 | app-routes: true 10 | as-suffix: true 11 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/util/CloudModelBuilderContentCalculator.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.cf.util; 2 | 3 | import java.util.List; 4 | 5 | public interface CloudModelBuilderContentCalculator { 6 | 7 | List calculateContentForBuilding(List elements); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/clients/apps-response-without-package-state.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "created_at": "2017-07-31T13:28:20Z", 4 | "updated_at": "2017-08-02T06:18:59Z", 5 | "guid": "a72df2e8-b06c-44b2-a8fa-5cadb0239573" 6 | }, 7 | "entity": { 8 | "name": "foo" 9 | } 10 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/detect/metadata/apps-02.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "mta-application-1", 4 | "metadata": { 5 | "labels": { 6 | "mta_id": "quux", 7 | "mta_version": "0.1.0" 8 | }, 9 | "annotations": { 10 | "invalid": "" 11 | } 12 | } 13 | } 14 | ] -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/system-parameters/mtad.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 3 2 | ID: system-parameters-test 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | 9 | - name: bar 10 | type: bar 11 | 12 | resources: 13 | - name: baz 14 | type: baz 15 | 16 | - name: qux 17 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/mtad-01.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 4 | 5 | modules: 6 | - name: demo-app 7 | type: javascript.nodejs 8 | requires: 9 | - name: demo-service 10 | parameters: 11 | default-domain: "some.default.domain" 12 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/namespace-global-parameters-with-all-false-values.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 4 | 5 | parameters: 6 | apply-namespace: 7 | app-names: false 8 | service-names: false 9 | app-routes: false 10 | as-suffix: false 11 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-02.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.xs2.test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | requires: 9 | - name: bar 10 | parameters: 11 | config: test 12 | 13 | resources: 14 | - name: bar 15 | type: bar 16 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-09-v2.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: module 7 | type: module 8 | provides: 9 | - name: foo 10 | - name: bar 11 | - name: baz 12 | properties: 13 | foo: bar 14 | baz: qux 15 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/TokenProvider.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client; 2 | 3 | import org.cloudfoundry.multiapps.controller.client.facade.oauth2.OAuth2AccessTokenWithAdditionalInfo; 4 | 5 | public interface TokenProvider { 6 | 7 | OAuth2AccessTokenWithAdditionalInfo getToken(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/util/ModulesContentValidator.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.cf.util; 2 | 3 | import java.util.List; 4 | 5 | import org.cloudfoundry.multiapps.mta.model.Module; 6 | 7 | public interface ModulesContentValidator { 8 | 9 | void validate(List modules); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/Constants.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade; 2 | 3 | public class Constants { 4 | 5 | private Constants() { 6 | 7 | } 8 | 9 | public static final String PACKAGE = "package"; 10 | 11 | public static final String ORIGIN_KEY = "origin"; 12 | 13 | } -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/lib/domain/ServiceRouteBinding.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.lib.domain; 2 | 3 | import org.immutables.value.Value; 4 | 5 | @Value.Immutable 6 | public interface ServiceRouteBinding { 7 | 8 | String getRouteId(); 9 | 10 | String getServiceInstanceId(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v3/mtad-missing-resource-type-definition.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1.0" 2 | ID: com.sap.xs2.test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: foo 7 | type: java.tomee 8 | requires: 9 | - name: bar 10 | 11 | resources: 12 | - name: bar 13 | type: bar 14 | optional: true 15 | -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/query/SqlQuery.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.persistence.query; 2 | 3 | import java.sql.Connection; 4 | import java.sql.SQLException; 5 | 6 | @FunctionalInterface 7 | public interface SqlQuery { 8 | 9 | R execute(Connection connection) throws SQLException; 10 | } 11 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/determine-actions-create-or-update-services-step-input-2-no-action.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "name": "service-1", 4 | "tags": [] 5 | }, 6 | "existingService": { 7 | "name": "service-1", 8 | "metadata": {"guid": "beeb5e8d-4ab9-46ee-9205-455a278743f0"}, 9 | "tags": [] 10 | } 11 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/mtad-tcp-tcps.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 3 2 | ID: mta-tcp 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: module-1 7 | type: javascript.nodejs 8 | parameters: 9 | tcp: true 10 | 11 | - name: module-2 12 | type: javascript.nodejs 13 | parameters: 14 | tcps: true -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/HealthCheckType.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | public enum HealthCheckType { 4 | HTTP, PORT, PROCESS, @Deprecated NONE; 5 | 6 | @Override 7 | public String toString() { 8 | return this.name().toLowerCase(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/ServicePlanVisibility.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | public enum ServicePlanVisibility { 4 | 5 | PUBLIC, ADMIN, ORGANIZATION; 6 | 7 | @Override 8 | public String toString() { 9 | return name().toLowerCase(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/test/resources/org/cloudfoundry/multiapps/controller/client/facade/rest/v2-error.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Request invalid due to parse error: Field: name, Error: Missing field name, Field: space_guid, Error: Missing field space_guid, Field: service_plan_guid, Error: Missing field service_plan_guid", 3 | "error_code": "CF-MessageParseError", 4 | "code": 1001 5 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/configuration/EnvironmentVariablesAccessor.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.configuration; 2 | 3 | import java.util.Map; 4 | 5 | public interface EnvironmentVariablesAccessor { 6 | 7 | Map getAllVariables(); 8 | 9 | String getVariable(String name); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/security/serialization/secured-object-02.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "jobscheduler", 3 | "env" : [ "********", "MTA_MODULE_METADATA={\"name\":\"jobscheduler-broker\"}", "MTA_MODULE_PROVIDED=[\"name\":\"jobscheduler-broker\"]", "********", "********", "MTA_SERVICES=[\"jobscheduler-db-container\",\"jobscheduler-sbss\"]" ] 4 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/check-app-step-input-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "applications": [ 3 | { 4 | "name": "application-1" 5 | }, 6 | { 7 | "name": "application-2" 8 | }, 9 | { 10 | "name": "application-3" 11 | } 12 | ], 13 | "applicationIndex": 1, 14 | "isExistingApplication": false 15 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/check-app-step-input-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "applications": [ 3 | { 4 | "name": "application-1" 5 | }, 6 | { 7 | "name": "application-2" 8 | }, 9 | { 10 | "name": "application-3" 11 | } 12 | ], 13 | "applicationIndex": 1, 14 | "isExistingApplication": true 15 | } -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/resources/ongoing-operations-resource-test-output-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "processId": "100", 3 | "processType": "deploy", 4 | "startedAt": "10:11:12", 5 | "spaceId": "testProcessSpaceId", 6 | "mtaId": "testMtaId", 7 | "user": "testUser", 8 | "acquiredLock": false, 9 | "state": "SLP_TASK_STATE_RUNNING" 10 | } -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/LifecycleType.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | public enum LifecycleType { 4 | 5 | BUILDPACK, DOCKER, KPACK, CNB; 6 | 7 | public String toString() { 8 | return this.name() 9 | .toLowerCase(); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/clients/application-updater-input-00.json: -------------------------------------------------------------------------------- 1 | { 2 | "staging": { 3 | "buildpackUrl": "test-buildpack", 4 | "command": "test-command", 5 | "healthCheckTimeout": 10, 6 | "healthCheckType": "http", 7 | "healthCheckHttpEndpoint": "/health" 8 | }, 9 | "application": { 10 | "appName": "testApp" 11 | } 12 | } -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/java/org/cloudfoundry/multiapps/controller/api/model/parameters/StringParameterConverter.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.api.model.parameters; 2 | 3 | public class StringParameterConverter implements ParameterConverter { 4 | 5 | @Override 6 | public String convert(Object value) { 7 | return String.valueOf(value); 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/keep-existing-routes/mtad-with-global-parameter.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2 2 | ID: foo.mtar 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: w/e 8 | 9 | - name: bar 10 | type: w/e 11 | parameters: 12 | keep-existing-routes: false 13 | 14 | parameters: 15 | keep-existing-routes: true -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/clients/apps-response-with-package-state.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "created_at": "2017-07-31T13:28:20Z", 4 | "updated_at": "2017-08-02T06:18:59Z", 5 | "guid": "a72df2e8-b06c-44b2-a8fa-5cadb0239573" 6 | }, 7 | "entity": { 8 | "name": "foo", 9 | "package_state": "STAGED" 10 | } 11 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/billion-laughs.mtad.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 3 2 | ID: anatz 3 | version: 0.1.1 4 | 5 | modules: 6 | - name: anatz 7 | path: ui5Provider/buildresults 8 | type: javascript.nodejs 9 | properties: 10 | a: &a ["lol","lol","lol","lol","lol","lol","lol","lol","lol"] 11 | b: &b [*a,*a,*a,*a,*a,*a,*a,*a,*a] -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/existing-app-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "module-1", 3 | "routes": [ 4 | { 5 | "appsUsingRoute": 0, 6 | "domain": { 7 | "name": "domain.com" 8 | }, 9 | "host": "module-1", 10 | "path": "", 11 | "url": "module-1.domain.com" 12 | } 13 | ], 14 | "idleRoutes": [] 15 | } -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/PackageMarker.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller; 2 | 3 | /** 4 | * Used for Spring component scanning. See {@link org.cloudfoundry.multiapps.controller.web.configuration.SecurityConfiguration}. 5 | * 6 | */ 7 | public final class PackageMarker { 8 | 9 | private PackageMarker() { 10 | 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/resources/ongoing-operation-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "processId": "100", 3 | "processType": { 4 | "name": "DEPLOY" 5 | }, 6 | "startedAt": "10:11:12", 7 | "spaceId": "testProcessSpaceId", 8 | "mtaId": "testMtaId", 9 | "user": "testUser", 10 | "acquiredLock": false, 11 | "finalState": "SLP_TASK_STATE_RUNNING" 12 | } 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/* 2 | bin/ 3 | target/ 4 | .project 5 | .classpath 6 | .settings 7 | .bpmn 8 | **/.factorypath 9 | *.iml 10 | *.zip 11 | *.war 12 | *.log 13 | .pmd 14 | mta-assembly 15 | .DS_Store 16 | !com.sap.cloud.lm.sl.cf.process/src/test/resources/com/sap/cloud/lm/sl/cf/process/steps/web.zip 17 | !multiapps-controller-client/src/test/resources/org/cloudfoundry/multiapps/controller/client/facade/staticfile.zip 18 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/mta-archive-helper-manifest.txt: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | 3 | Name: config-bind.json 4 | MTA-Requires: anatz/my-required-application, anatz/my-required-application-2 5 | Content-Type: application/json 6 | 7 | Name: config.json 8 | MTA-Resource: parameters-service, parameters-service-2 9 | Content-Type: application/json 10 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/app-to-deploy-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "module-1", 3 | "routes": [ 4 | { 5 | "appsUsingRoute": 0, 6 | "domain": { 7 | "name": "domain.com" 8 | }, 9 | "host": "module-2", 10 | "path": "", 11 | "url": "module-2.domain.com" 12 | } 13 | ], 14 | "idleRoutes": [] 15 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/app-to-deploy-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "module-1", 3 | "routes": [ 4 | { 5 | "appsUsingRoute": 0, 6 | "domain": { 7 | "name": "domain.com" 8 | }, 9 | "host": "module-1", 10 | "path": "", 11 | "url": "module-1.domain.com" 12 | } 13 | ], 14 | "idleRoutes": [] 15 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/update-subscribed-service-broker-input-02.json: -------------------------------------------------------------------------------- 1 | { 2 | "brokerApplication": { 3 | "name": "test-application", 4 | "brokerName": "test-broker", 5 | "brokerUsername": "test-broker-username", 6 | "brokerUrl": "test-broker-url" 7 | }, 8 | "brokerFromClient": { 9 | "name": "test-broker" 10 | } 11 | } -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/lib/domain/UploadStatusCallbackExtended.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.lib.domain; 2 | 3 | import org.cloudfoundry.multiapps.controller.client.facade.UploadStatusCallback; 4 | 5 | public interface UploadStatusCallbackExtended extends UploadStatusCallback { 6 | 7 | void onError(Exception e); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/application-env-updater-input-00.json: -------------------------------------------------------------------------------- 1 | { 2 | "app": { 3 | "name": "testApp", 4 | "env": { 5 | "test-key": "test-value", 6 | "test-complex-key": "{\"test-inner-key-1\":\"test-inner-value-2\"}" 7 | } 8 | }, 9 | "envPropertyKey": "test-complex-key", 10 | "newKey": "test-new-key", 11 | "newValue": "test-new-value" 12 | } -------------------------------------------------------------------------------- /multiapps-controller-persistence-test/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | open module org.cloudfoundry.multiapps.controller.persistence.test { 2 | 3 | exports org.cloudfoundry.multiapps.controller.persistence.test; 4 | 5 | requires transitive java.sql; 6 | 7 | requires liquibase.core; 8 | requires org.cloudfoundry.multiapps.common; 9 | requires spring.beans; 10 | requires spring.jdbc; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/stream/ArchiveStreamWithName.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.stream; 2 | 3 | import java.io.InputStream; 4 | 5 | import org.immutables.value.Value; 6 | 7 | @Value.Immutable 8 | public interface ArchiveStreamWithName { 9 | 10 | String getArchiveName(); 11 | 12 | InputStream getArchiveStream(); 13 | } 14 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/system-parameters/mtad-with-existing-parameters.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 3 2 | ID: system-parameters-test 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | parameters: 9 | app-name: bar 10 | 11 | resources: 12 | - name: baz 13 | type: baz 14 | parameters: 15 | service-name: qux 16 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/AfterStepHookPhaseProvider.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.steps; 2 | 3 | import java.util.List; 4 | 5 | import org.cloudfoundry.multiapps.controller.core.model.HookPhase; 6 | 7 | public interface AfterStepHookPhaseProvider { 8 | 9 | List getHookPhasesAfterStep(ProcessContext context); 10 | } 11 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/check-for-creation-conflicts-step-input-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "servicesToDeploy": [ 3 | { 4 | "name": "service-1" 5 | }, 6 | { 7 | "name": "service-2" 8 | } 9 | ], 10 | "existingServices": [ 11 | { 12 | "name": "service-1" 13 | }, 14 | { 15 | "name": "service-2" 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/mtad-04.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 4 | parameters: 5 | default-domain: "some.default.domain" 6 | 7 | modules: 8 | - name: demo-app 9 | type: javascript.nodejs 10 | requires: 11 | - name: demo-service 12 | parameters: 13 | default-domain: "some.default.domain" -------------------------------------------------------------------------------- /multiapps-controller-shutdown-client/src/main/java/org/cloudfoundry/multiapps/controller/shutdown/client/CsrfHttpClientFactory.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.shutdown.client; 2 | 3 | import java.util.Map; 4 | 5 | import org.cloudfoundry.multiapps.controller.core.http.CsrfHttpClient; 6 | 7 | interface CsrfHttpClientFactory { 8 | 9 | CsrfHttpClient create(Map defaultHttpHeaders); 10 | 11 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/services-01.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "resourceName": "bar", 4 | "credentials": {}, 5 | "tags": [], 6 | "isOptional": false, 7 | "isManaged": true, 8 | "shouldSkipParametersUpdate" : false, 9 | "shouldSkipTagsUpdate" : false, 10 | "shouldSkipPlanUpdate" : false, 11 | "metadata": {}, 12 | "name": "bar" 13 | } 14 | ] -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/BeforeStepHookPhaseProvider.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.steps; 2 | 3 | import java.util.List; 4 | 5 | import org.cloudfoundry.multiapps.controller.core.model.HookPhase; 6 | 7 | public interface BeforeStepHookPhaseProvider { 8 | 9 | List getHookPhasesBeforeStep(ProcessContext context); 10 | } 11 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/keep-existing-routes/deployed-mta-without-foo-module.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "id": "foo.mtar", 4 | "version": "1.0.0" 5 | }, 6 | "applications": [ 7 | { 8 | "moduleName": "bar", 9 | "name": "bar", 10 | "metadata": { 11 | "guid": "3725650a-8725-4401-a949-c68f83d54a86" 12 | } 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /multiapps-controller-database-migration/src/main/java/org/cloudfoundry/multiapps/controller/database/migration/metadata/DatabaseTableColumnMetadata.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.database.migration.metadata; 2 | 3 | import org.immutables.value.Value.Immutable; 4 | 5 | @Immutable 6 | public interface DatabaseTableColumnMetadata { 7 | 8 | String getColumnName(); 9 | 10 | String getColumnType(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/FileEntryProperties.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.util; 2 | 3 | import org.immutables.value.Value; 4 | 5 | @Value.Immutable 6 | public interface FileEntryProperties { 7 | 8 | String getGuid(); 9 | 10 | String getName(); 11 | 12 | String getSpaceGuid(); 13 | 14 | long getMaxFileSizeInBytes(); 15 | } 16 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/check-for-creation-conflicts-step-input-6.json: -------------------------------------------------------------------------------- 1 | { 2 | "appsToDeploy": [ 3 | { 4 | "name": "application-1" 5 | }, 6 | { 7 | "name": "application-2" 8 | } 9 | ], 10 | "existingApps": [ 11 | { 12 | "name": "application-1" 13 | }, 14 | { 15 | "name": "application-2" 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-12.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.sample.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: java.tomee 8 | parameters: 9 | # define route parameter 10 | routes: 11 | - route: "foo-custom-route.test-domain" 12 | # adding route-path which will be ignored 13 | route-path: /custom-path -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/PersistenceObjectMapper.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.persistence.services; 2 | 3 | import org.cloudfoundry.multiapps.controller.persistence.dto.DtoWithPrimaryKey; 4 | 5 | public interface PersistenceObjectMapper> { 6 | 7 | T fromDto(D dto); 8 | 9 | D toDto(T object); 10 | 11 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/update-subscribed-service-broker-input-04.json: -------------------------------------------------------------------------------- 1 | { 2 | "brokerApplication": { 3 | "name": "test-application", 4 | "brokerName": "test-broker", 5 | "brokerPassword": "test-broker-password", 6 | "brokerUsername": "test-broker-username", 7 | "brokerUrl": "test-roker-url" 8 | }, 9 | "brokerFromClient": { 10 | 11 | } 12 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/configuration-filter-parser-test-output-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "providerId": "test:foo", 3 | "requiredContent": { 4 | "foo": "bar", 5 | "baz": "cux" 6 | }, 7 | "providerNid": "mta", 8 | "targetSpace": { 9 | "space": "some-space", 10 | "org": "some-org" 11 | }, 12 | "providerVersion": "0.1.0", 13 | "providerNamespace": "namespace" 14 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/flowable/commands/FlowableCommandExecutorFactory.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.flowable.commands; 2 | 3 | import org.flowable.common.engine.impl.interceptor.CommandContext; 4 | 5 | public interface FlowableCommandExecutorFactory { 6 | 7 | FlowableCommandExecutor getExecutor(CommandContext commandContext, String processInstanceId); 8 | } 9 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ContentLengthTracker.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.util; 2 | 3 | public class ContentLengthTracker { 4 | private long totalSize = 0; 5 | 6 | public long getTotalSize() { 7 | return totalSize; 8 | } 9 | 10 | public void addToTotalFileSize(long sizeToAdd) { 11 | totalSize += sizeToAdd; 12 | } 13 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-03.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.sample.mta 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: module-1 7 | type: java.tomee 8 | parameters: 9 | app-name: application-1 10 | host: test-host 11 | route-path: /test 12 | - name: module-2 13 | type: java.tomee 14 | parameters: 15 | app-name: application-2 16 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/mtad-properties-resolver-test/mtad-with-domain.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: hello 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: hello-backend 7 | type: java.tomee 8 | path: web/router.war 9 | parameters: 10 | memory: 512M 11 | disk-quota: 256M 12 | domain: ${default-domain} 13 | parameters: 14 | default-domain: "sap.com" -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/java/org/cloudfoundry/multiapps/controller/api/model/parameters/ParameterConverter.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.api.model.parameters; 2 | 3 | /** 4 | * Validates and converts the raw parameter value to its appropriate type. The result is then used as input for starting a Flowable process. 5 | * 6 | */ 7 | public interface ParameterConverter { 8 | 9 | Object convert(Object value); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/metadata/criteria/MtaMetadataCriteria.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.cf.metadata.criteria; 2 | 3 | public class MtaMetadataCriteria { 4 | 5 | private String query; 6 | 7 | public MtaMetadataCriteria(String query) { 8 | this.query = query; 9 | } 10 | 11 | public String get() { 12 | return query; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/validators/parameters/CompatibilityParameterValidator.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.validators.parameters; 2 | 3 | import java.util.List; 4 | 5 | public interface CompatibilityParameterValidator { 6 | 7 | boolean isCompatible(String parameter); 8 | 9 | String getParameterName(); 10 | 11 | List getIncompatibleParameters(); 12 | } 13 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Multiapps Controller Main 2 | 3 | on: 4 | push: 5 | branches: [ "master" ] 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - name: Set up JDK 17 13 | uses: actions/setup-java@v3 14 | with: 15 | java-version: '17' 16 | distribution: 'zulu' 17 | 18 | - name: Build and Run Unit Tests 19 | run: mvn clean install 20 | 21 | -------------------------------------------------------------------------------- /.github/workflows/on-prem.yml: -------------------------------------------------------------------------------- 1 | name: Multiapps Controller On-Prem 2 | 3 | on: 4 | push: 5 | branches: [ "rel-1.73" ] 6 | 7 | jobs: 8 | build-on-prem: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - name: Set up JDK 8 13 | uses: actions/setup-java@v3 14 | with: 15 | java-version: '8' 16 | distribution: 'adopt' 17 | 18 | - name: Build with Maven 19 | run: mvn clean package 20 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/ApplicationLogListener.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade; 2 | 3 | import org.cloudfoundry.multiapps.controller.client.facade.domain.ApplicationLog; 4 | 5 | public interface ApplicationLogListener { 6 | 7 | void onComplete(); 8 | 9 | void onError(Throwable exception); 10 | 11 | void onMessage(ApplicationLog log); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/FileContentToProcess.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.persistence.services; 2 | 3 | import org.immutables.value.Value; 4 | 5 | @Value.Immutable 6 | public interface FileContentToProcess { 7 | 8 | String getGuid(); 9 | 10 | String getSpaceGuid(); 11 | 12 | long getStartOffset(); 13 | 14 | long getEndOffset(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/update-subscribed-service-broker-input-00.json: -------------------------------------------------------------------------------- 1 | { 2 | "brokerApplication": { 3 | "name": "test-application", 4 | "brokerName": "test-broker", 5 | "brokerPassword": "test-broker-password", 6 | "brokerUsername": "test-broker-username", 7 | "brokerUrl": "test-broker-url" 8 | }, 9 | "brokerFromClient": { 10 | "name": "test-broker" 11 | } 12 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-14.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.sample.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: java.tomee 8 | parameters: 9 | hosts: 10 | - "abc" 11 | - "cba" 12 | domains: 13 | - "cfapps.domain.com" 14 | - "cfapps.domain.moc" 15 | host: not-in-use 16 | domain: default-unused 17 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/configuration-entries-04.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "filter": { 4 | "providerId": "mta-2:provided-dependency-1", 5 | "providerNid": "mta", 6 | "targetSpace": { 7 | "spaceName": "initial", 8 | "organizationName": "initial" 9 | }, 10 | "providerVersion": "2.0.0" 11 | }, 12 | "configurationEntries": [] 13 | } 14 | ] -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/configuration-filter-parser-test-input-02.json: -------------------------------------------------------------------------------- 1 | { 2 | "deploymentNamespace": "namespace", 3 | "cloudTarget": { 4 | "space": "some-space", 5 | "org": "some-org" 6 | }, 7 | "isNewResourceType": false, 8 | "resourceParameters": { 9 | "mta-id": "my-mta-id", 10 | "mta-provides-dependency": "my-provides-section", 11 | "mta-version": "0.1.0" 12 | } 13 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/update-subscribed-service-broker-input-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "brokerApplication": { 3 | "name": "test-application", 4 | "brokerName": "test-broker", 5 | "brokerPassword": "test-broker-password", 6 | "brokerUsername": "test-broker-username", 7 | "brokerUrl": "test-broker-url" 8 | }, 9 | "brokerFromClient": { 10 | "name": "another-broker" 11 | } 12 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/model/ApplicationColor.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.model; 2 | 3 | public enum ApplicationColor { 4 | 5 | BLUE, GREEN; 6 | 7 | public ApplicationColor getAlternativeColor() { 8 | return (this == BLUE) ? GREEN : BLUE; 9 | } 10 | 11 | public String asSuffix() { 12 | return "-" + super.toString().toLowerCase(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-05.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.sample.mta 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: module-1 7 | type: java.tomee 8 | parameters: 9 | idle-hosts: [foo, bar] 10 | idle-domain: localhost 11 | 12 | - name: module-2 13 | type: java.tomee 14 | parameters: 15 | idle-hosts: [baz, qux] 16 | idle-domain: localhost 17 | -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/resources/org/cloudfoundry/multiapps/controller/persistence/db/changelog/sql/create_unlink_file_content_triggers.sql: -------------------------------------------------------------------------------- 1 | CREATE TRIGGER DELETE_FROM_SYSTEM_TABLE_LM_SL_PERSISTENCE_FILE AFTER UPDATE OR DELETE 2 | ON LM_SL_PERSISTENCE_FILE FOR EACH ROW EXECUTE PROCEDURE UNLINK_FILE_CONTENT(); 3 | 4 | CREATE TRIGGER DELETE_FROM_SYSTEM_TABLE_PROCESS_LOG AFTER UPDATE OR DELETE 5 | ON PROCESS_LOG FOR EACH ROW EXECUTE PROCEDURE UNLINK_FILE_CONTENT(); 6 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/security/token/parsers/TokenParser.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.security.token.parsers; 2 | 3 | import java.util.Optional; 4 | 5 | import org.cloudfoundry.multiapps.controller.client.facade.oauth2.OAuth2AccessTokenWithAdditionalInfo; 6 | 7 | public interface TokenParser { 8 | 9 | Optional parse(String tokenString); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/configuration-filter-parser-test-output-03.json: -------------------------------------------------------------------------------- 1 | { 2 | "providerId": "test:foo", 3 | "requiredContent": { 4 | "foo": "bar", 5 | "baz": "cux" 6 | }, 7 | "providerNid": "mta", 8 | "targetSpace": { 9 | "org": "some-different-org", 10 | "space": "some-different-space" 11 | }, 12 | "providerVersion": "0.1.0", 13 | "providerNamespace": "different-namespace" 14 | } -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/resources/org/cloudfoundry/multiapps/controller/persistence/db/changelog/sql/delete_unlink_file_content_triggers.sql: -------------------------------------------------------------------------------- 1 | DROP TRIGGER IF EXISTS DELETE_FROM_SYSTEM_TABLE_LM_SL_PERSISTANCE_FILE ON LM_SL_PERSISTENCE_FILE; 2 | DROP TRIGGER IF EXISTS DELETE_FROM_SYSTEM_TABLE_LM_SL_PERSISTENCE_FILE ON LM_SL_PERSISTENCE_FILE; 3 | DROP TRIGGER IF EXISTS DELETE_FROM_SYSTEM_TABLE_PROCESS_LOG ON PROCESS_LOG; 4 | 5 | DROP FUNCTION IF EXISTS UNLINK_FILE_CONTENT(); 6 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/variables/Serializer.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.variables; 2 | 3 | import org.flowable.common.engine.api.variable.VariableContainer; 4 | 5 | public interface Serializer { 6 | 7 | Object serialize(T value); 8 | 9 | T deserialize(Object serializedValue); 10 | 11 | T deserialize(Object serializedValue, VariableContainer container); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/determine-actions-create-or-update-services-step-input-15-dynamic-parameter-relationship-match.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "type": "user-provided", 4 | "name": "service-1", 5 | "resourceName": "service-1" 6 | }, 7 | "existingService": { 8 | "type": "user-provided", 9 | "name": "service-1", 10 | "metadata": {"guid": "beeb5e8d-4ab9-46ee-9205-455a278743f0"} 11 | } 12 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/determine-actions-create-or-update-services-step-input-4-update-plan.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "name": "service-1", 4 | "plan": "plan-1", 5 | "tags": [] 6 | }, 7 | "existingService": { 8 | "name": "service-1", 9 | "plan": "plan-3", 10 | "metadata": {"guid": "beeb5e8d-4ab9-46ee-9205-455a278743f0"}, 11 | "tags": [] 12 | }, 13 | "shouldUpdateServicePlan": true 14 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/test-mtad-1.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1.0" 2 | ID: mta 3 | version: 6.0.0 4 | 5 | modules: 6 | - name: test-module1 7 | type: application 8 | requires: 9 | - name: test-resource1 10 | 11 | - name: test-module2 12 | type: application 13 | requires: 14 | - name: test-resource1 15 | 16 | resources: 17 | - name: test-resource1 18 | type: com.sap.xs.uaa -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/update-subscribed-service-broker-input-03.json: -------------------------------------------------------------------------------- 1 | { 2 | "brokerApplication": { 3 | "name": "test-application", 4 | "brokerName": "test-broker-which-does-not-exist", 5 | "brokerUsername": "test-broker-username", 6 | "brokerPassword": "test-broker-password", 7 | "brokerUrl": "test-broker-url" 8 | }, 9 | "brokerFromClient": { 10 | "name": "test-broker" 11 | } 12 | } -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/security/AbstractUriAuthorizationFilter.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.web.security; 2 | 3 | import org.cloudfoundry.multiapps.controller.web.util.SecurityContextUtil; 4 | 5 | public abstract class AbstractUriAuthorizationFilter implements UriAuthorizationFilter { 6 | 7 | protected String extractUserGuid() { 8 | return SecurityContextUtil.getUserGuid(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/security/serialization/masking/ResourceMasker.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.security.serialization.masking; 2 | 3 | import org.cloudfoundry.multiapps.mta.model.Resource; 4 | 5 | public class ResourceMasker extends AbstractMasker { 6 | 7 | public void mask(Resource resource) { 8 | maskParameters(resource); 9 | maskProperties(resource); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/v2/mtad-03.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.test 3 | version: "1.0" 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | parameters: 9 | host: .com.sap.test.foo 10 | 11 | - name: bar 12 | type: bar 13 | parameters: 14 | domain: com.sap.test.foo 15 | 16 | resources: 17 | - name: baz 18 | parameters: 19 | host: .com.sap.test.foo 20 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/apps/ActionCalculator.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.cf.apps; 2 | 3 | import java.util.Set; 4 | 5 | public interface ActionCalculator { 6 | 7 | Set determineActionsToExecute(ApplicationStartupState currentState, ApplicationStartupState desiredState, 8 | boolean isApplicationStagedCorrectly); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/test-manifest-1.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | 3 | Name: test-module1 4 | MTA-Module: app1 5 | 6 | Name: test-module2 7 | MTA-Module: app2 8 | 9 | Name: test-resource1 10 | MTA-Resource: test-resource1 11 | 12 | Name: test-dependency1 13 | MTA-Requires: test-module1/test-resource1 14 | 15 | Name: test-dependency1 16 | MTA-Requires: test-module2/test-resource2 17 | 18 | Name: META-INF/mtad.yaml 19 | -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/resources/log4j2.properties: -------------------------------------------------------------------------------- 1 | status=WARN 2 | name=DefaultConfig 3 | # Console Appender Configuration 4 | appender.console.type=Console 5 | appender.console.name=Console 6 | appender.console.target=SYSTEM_OUT 7 | appender.console.layout.type=PatternLayout 8 | appender.console.layout.pattern=%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n 9 | # Root Logger Configuration 10 | rootLogger.level=error 11 | rootLogger.appenderRefs=console 12 | rootLogger.appenderRef.console.ref=Console -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/resources/org/cloudfoundry/multiapps/controller/persistence/db/changelog/sql/create_unlink_file_content_function.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE FUNCTION UNLINK_FILE_CONTENT() RETURNS TRIGGER AS 2 | $$ 3 | BEGIN 4 | PERFORM lo_unlink(OLD.content); 5 | RETURN NULL; 6 | EXCEPTION 7 | WHEN undefined_object THEN RAISE NOTICE 'Referenced large object could not be deleted, because it does not exist!'; 8 | RETURN NULL; 9 | END; 10 | $$ 11 | LANGUAGE 'plpgsql' STABLE; 12 | -------------------------------------------------------------------------------- /multiapps-controller-shutdown-client/src/main/java/org/cloudfoundry/multiapps/controller/shutdown/client/configuration/ShutdownConfiguration.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.shutdown.client.configuration; 2 | 3 | import java.util.UUID; 4 | 5 | public interface ShutdownConfiguration { 6 | 7 | UUID getApplicationGuid(); 8 | 9 | String getApplicationUrl(); 10 | 11 | String getCloudControllerUrl(); 12 | 13 | String getUsername(); 14 | 15 | String getPassword(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/test/resources/org/cloudfoundry/multiapps/controller/client/facade/rest/v3-error.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "detail": "memory_in_mb exceeds organization memory quota", 5 | "title": "CF-UnprocessableEntity", 6 | "code": 10008 7 | }, 8 | { 9 | "detail": "disk_in_mb exceeds organization disk quota", 10 | "title": "CF-UnprocessableEntity", 11 | "code": 10008 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-01.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.xs2.test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | requires: 9 | - name: bar 10 | parameters: 11 | config: 12 | baz: baz 13 | qux: qux 14 | binding-name: binding-name 15 | parameters: 16 | route-path: /test 17 | 18 | resources: 19 | - name: bar 20 | type: bar 21 | -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/model/LockOwnerEntry.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.persistence.model; 2 | 3 | import org.immutables.value.Value; 4 | 5 | import java.time.LocalDateTime; 6 | 7 | @Value.Immutable 8 | public interface LockOwnerEntry { 9 | 10 | @Value.Default 11 | default long getId() { 12 | return 0; 13 | } 14 | 15 | String getLockOwner(); 16 | 17 | LocalDateTime getTimestamp(); 18 | } 19 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/StagingState.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.util; 2 | 3 | import org.cloudfoundry.multiapps.common.Nullable; 4 | import org.cloudfoundry.multiapps.controller.client.facade.domain.PackageState; 5 | import org.immutables.value.Value; 6 | 7 | @Value.Immutable 8 | public interface StagingState { 9 | 10 | PackageState getState(); 11 | 12 | @Nullable 13 | String getError(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/process-mta-archive-step-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "archiveFileLocations": [ 3 | "process-archive-step-test-1.mtar" 4 | ], 5 | "expectedModules": [ 6 | "test-module2", "test-module1" 7 | ], 8 | "expectedResources": [ 9 | "test-resource1" 10 | ], 11 | "expectedRequiredDependencies": [ 12 | "test-dependency1" 13 | ] 14 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/expander/expanded-properties-00.json: -------------------------------------------------------------------------------- 1 | { 2 | "credentials_1": "~{foo/user}|~{foo/pass}", 3 | "credentials_2": [], 4 | "credentials_3": { 5 | "pass": "~{foo/pass}", 6 | "user": "~{foo/user}" 7 | }, 8 | "credentials_4": { 9 | "pass": [], 10 | "user": [] 11 | }, 12 | "name_1": "~{foo/name}", 13 | "name_2": [], 14 | "test": "test", 15 | "url_1": "${protocol}://~{foo/name}.com", 16 | "url_2": [] 17 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/util/platform.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CLOUD-FOUNDRY", 3 | "module-types": [ 4 | { 5 | "name": "custom" 6 | }, 7 | { 8 | "name": "javascript.nodejs" 9 | } 10 | ], 11 | "resource-types": [ 12 | { 13 | "name": "destination", 14 | "parameters": { 15 | "service": "destination", 16 | "service-plan": "lite", 17 | "type": "managed-service" 18 | } 19 | } 20 | ] 21 | } -------------------------------------------------------------------------------- /multiapps-controller-shutdown-client/src/main/java/org/cloudfoundry/multiapps/controller/shutdown/client/configuration/CustomShutdownConfiguration.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.shutdown.client.configuration; 2 | 3 | import org.immutables.value.Value; 4 | 5 | /** 6 | * NOT USED PRODUCTIVELY! Can be used to run the "script" locally, for testing and development purposes. 7 | * 8 | */ 9 | @Value.Immutable 10 | public interface CustomShutdownConfiguration extends ShutdownConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/HooksWithPhases.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.util; 2 | 3 | import java.util.List; 4 | 5 | import org.cloudfoundry.multiapps.controller.core.model.HookPhase; 6 | import org.cloudfoundry.multiapps.mta.model.Hook; 7 | import org.immutables.value.Value; 8 | 9 | @Value.Immutable 10 | public interface HooksWithPhases { 11 | 12 | List getHookPhases(); 13 | 14 | List getHooks(); 15 | } 16 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/ModuleDeployProcessGetter.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.util; 2 | 3 | import org.cloudfoundry.multiapps.controller.process.Constants; 4 | import org.flowable.engine.delegate.DelegateExecution; 5 | 6 | public class ModuleDeployProcessGetter { 7 | 8 | public String get(byte[] moduleToDeploy, DelegateExecution execution) { 9 | return Constants.DEPLOY_APP_SUB_PROCESS_ID; 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/create-or-update-services-step-input-11.json: -------------------------------------------------------------------------------- 1 | { 2 | "services": [ 3 | { 4 | "name": "service-1", 5 | "tags":["test-tag"] 6 | }, 7 | { 8 | "name": "service-2", 9 | "tags":[] 10 | } 11 | ], 12 | "existingServices": [ 13 | { 14 | "name": "service-1", 15 | "tags":["test-tag"] 16 | }, 17 | { 18 | "name": "service-2", 19 | "tags":[] 20 | } 21 | ] 22 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/mtad-02.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 4 | 5 | modules: 6 | - name: demo-app 7 | type: javascript.nodejs 8 | requires: 9 | - name: demo-service 10 | 11 | resources: 12 | - name: demo-service 13 | type: org.cloudfoundry.managed-service 14 | parameters: 15 | service: postgresql 16 | service-plan: v9.6-dev 17 | default-container-name: "some-name" -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/model/ResourceTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.model; 2 | 3 | public enum ResourceTypeEnum { 4 | HDI_CONTAINER("com.sap.xs.hdi-container"); 5 | 6 | private final String resourceType; 7 | 8 | ResourceTypeEnum(String resourceType) { 9 | this.resourceType = resourceType; 10 | } 11 | 12 | @Override 13 | public String toString() { 14 | return this.resourceType; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/auditlogging/impl/AuditLogWriteException.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.auditlogging.impl; 2 | 3 | import org.cloudfoundry.multiapps.common.SLException; 4 | 5 | public class AuditLogWriteException extends SLException { 6 | 7 | private static final long serialVersionUID = 5417802052219339920L; 8 | 9 | public AuditLogWriteException(Exception loggingException) { 10 | super(loggingException); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/mtad-03.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 4 | 5 | modules: 6 | - name: demo-app 7 | type: javascript.nodejs 8 | requires: 9 | - name: demo-service 10 | parameters: 11 | domain: "custom-domain" 12 | 13 | resources: 14 | - name: demo-service 15 | type: org.cloudfoundry.managed-service 16 | parameters: 17 | service: postgresql 18 | service-plan: v9.6-dev -------------------------------------------------------------------------------- /multiapps-controller-database-migration/src/main/java/org/cloudfoundry/multiapps/controller/database/migration/executor/type/DatabaseTypeSetter.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.database.migration.executor.type; 2 | 3 | import java.sql.PreparedStatement; 4 | import java.sql.SQLException; 5 | import java.util.List; 6 | 7 | public interface DatabaseTypeSetter { 8 | 9 | List getSupportedTypes(); 10 | 11 | void setType(int columnIndex, PreparedStatement insertStatement, Object value) throws SQLException; 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/interceptors/CustomHandlerInterceptor.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.web.interceptors; 2 | 3 | import org.springframework.web.servlet.HandlerInterceptor; 4 | 5 | /** 6 | * Marker interface via which all custom interceptors are injected as a list in 7 | * {@link org.cloudfoundry.multiapps.controller.web.configuration.WebMvcConfiguration}. 8 | * 9 | */ 10 | public interface CustomHandlerInterceptor extends HandlerInterceptor { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-database-migration/src/main/java/org/cloudfoundry/multiapps/controller/database/migration/metadata/DatabaseTableData.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.database.migration.metadata; 2 | 3 | import java.util.List; 4 | 5 | import org.immutables.value.Value.Immutable; 6 | 7 | @Immutable 8 | public interface DatabaseTableData { 9 | 10 | String getTableName(); 11 | 12 | List getTableColumnsMetadata(); 13 | 14 | List getTableRowsData(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/devxwebide/config.mtaext: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.devx.webide.config1 3 | extends: com.sap.devx.webide 4 | 5 | targets: [CF-TRIAL] 6 | 7 | modules: 8 | - name: webide 9 | parameters: 10 | host: i027947-webide 11 | memory: 128M 12 | 13 | resources: 14 | - name: sapui5 15 | properties: 16 | url: "https://sapui5.netweaver.ondemand.com" 17 | 18 | - name: che 19 | properties: 20 | url: "http://i027947-di-core.cfapps.neo.ondemand.com" 21 | 22 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/deployed-mta-04.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "id": "test", 4 | "version": "0.1.0" 5 | }, 6 | "applications": [ 7 | { 8 | "moduleName": "d", 9 | "name": "d", 10 | "boundMtaServices": [], 11 | "providedDependencyNames": [] 12 | }, 13 | { 14 | "moduleName": "e", 15 | "name": "e", 16 | "boundMtaServices": [], 17 | "providedDependencyNames": [] 18 | } 19 | ], 20 | "services": [] 21 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/config-03.mtaext: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: com.sap.sample.mta.config-03 3 | extends: com.sap.sample.mta 4 | 5 | target-platforms: [XS2-INITIAL] 6 | 7 | modules: 8 | - name: module-1 9 | resources: 10 | - name: ups 11 | parameters: 12 | service-name: user-provided-renamed 13 | - name: rs 14 | parameters: 15 | service-name: random-service-renamed 16 | - name: es 17 | parameters: 18 | service-name: existing-service-renamed 19 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/determine-actions-create-or-update-services-step-input-14-update-syslog-url.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "type": "user-provided", 4 | "name": "service-1", 5 | "syslogDrainUrl": "new-syslog-drain" 6 | }, 7 | "existingService": { 8 | "type": "user-provided", 9 | "name": "service-1", 10 | "metadata": {"guid": "beeb5e8d-4ab9-46ee-9205-455a278743f0"}, 11 | "syslogDrainUrl": "old-syslog-drain" 12 | 13 | }, 14 | "shouldUpdateSyslogDrainUrl": true 15 | } -------------------------------------------------------------------------------- /multiapps-controller-shutdown-client/src/main/java/org/cloudfoundry/multiapps/controller/shutdown/client/ShutdownClient.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.shutdown.client; 2 | 3 | import java.util.UUID; 4 | 5 | import org.cloudfoundry.multiapps.controller.core.model.ApplicationShutdown; 6 | 7 | public interface ShutdownClient { 8 | 9 | ApplicationShutdown triggerShutdown(UUID applicationGuid, int applicationInstanceIndex); 10 | 11 | ApplicationShutdown getStatus(UUID applicationGuid, int applicationInstanceIndex); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/expected-configuration-entries-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "module" : [ { 3 | "id" : 0, 4 | "providerNid" : "mta", 5 | "providerId" : "test:baz", 6 | "providerVersion" : "0.1.0", 7 | "targetSpace" : { 8 | "org" : "some-org", 9 | "space" : "some-space" 10 | }, 11 | "content" : "{\"foo\":\"bar\",\"baz\":\"qux\"}", 12 | "visibility" : [ { 13 | "org" : "some-org", 14 | "space" : "*" 15 | } ], 16 | "spaceId" : "" 17 | } ] 18 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/determine-actions-create-or-update-services-step-input-8-recreate-service-failure.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "name": "service-1", 4 | "label": "label-1", 5 | "plan": "plan-3", 6 | "tags": [] 7 | }, 8 | "existingService": { 9 | "name": "service-1", 10 | "label": "label-1-old", 11 | "plan": "plan-3", 12 | "tags": [], 13 | "lastOperation": { 14 | "type": "CREATE", 15 | "state": "FAILED" 16 | } 17 | }, 18 | "shouldRecreateService": true 19 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/security/serialization/masking/RequiredDependencyMasker.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.security.serialization.masking; 2 | 3 | import org.cloudfoundry.multiapps.mta.model.RequiredDependency; 4 | 5 | public class RequiredDependencyMasker extends AbstractMasker { 6 | 7 | @Override 8 | public void mask(RequiredDependency dependency) { 9 | maskProperties(dependency); 10 | maskParameters(dependency); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-10-v2.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: test 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: module-1 7 | type: module-1 8 | provides: 9 | - name: foo 10 | public: true 11 | properties: 12 | a: b 13 | c: d 14 | - name: bar 15 | - name: module-2 16 | type: module-2 17 | provides: 18 | - name: baz 19 | public: true 20 | properties: 21 | foo: bar 22 | baz: qux 23 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/check-for-creation-conflicts-step-input-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "servicesToDeploy": [ 3 | { 4 | "name": "service-1" 5 | }, 6 | { 7 | "name": "service-2" 8 | } 9 | ], 10 | "appsToDeploy": [ 11 | { 12 | "name": "application-1", 13 | "boundServices": [ 14 | "service-1" 15 | ] 16 | }, 17 | { 18 | "name": "application-2", 19 | "boundServices": [ 20 | "service-2" 21 | ] 22 | } 23 | ] 24 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/file-entries.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "id1", 4 | "name": "archive.part.2", 5 | "namespace": "namespace1", 6 | "space": "some_space", 7 | "size": 10000, 8 | "digest": "digest", 9 | "digestAlgorithm": "MD5" 10 | }, 11 | { 12 | "id": "id2", 13 | "name": "archive.part.1", 14 | "namespace": "namespace1", 15 | "space": "some_space", 16 | "size": 10000, 17 | "digest": "digest", 18 | "digestAlgorithm": "MD5" 19 | } 20 | ] -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/security/serialization/masking/ProvidedDependencyMasker.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.security.serialization.masking; 2 | 3 | import org.cloudfoundry.multiapps.mta.model.ProvidedDependency; 4 | 5 | public class ProvidedDependencyMasker extends AbstractMasker { 6 | 7 | @Override 8 | public void mask(ProvidedDependency dependency) { 9 | maskProperties(dependency); 10 | maskParameters(dependency); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/deployed-mta-09.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "id": "test", 4 | "version": "0.1.0" 5 | }, 6 | "applications": [ 7 | { 8 | "moduleName": "a", 9 | "name": "namespace.a", 10 | "boundMtaServices": [], 11 | "providedDependencyNames": [] 12 | }, 13 | { 14 | "moduleName": "b", 15 | "name": "namespace.b", 16 | "boundMtaServices": [], 17 | "providedDependencyNames": [] 18 | } 19 | ], 20 | "services": [] 21 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/metadata/MtaMetadataLabels.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.cf.metadata; 2 | 3 | public class MtaMetadataLabels { 4 | 5 | public static final String MTA_ID = "mta_id"; 6 | public static final String MTA_NAMESPACE = "mta_namespace"; 7 | public static final String SPACE_GUID = "space_guid"; 8 | public static final String AUTOSCALER_LABEL = "app-autoscaler.cloudfoundry.org/disable-autoscaling"; 9 | 10 | private MtaMetadataLabels() { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/CloudException.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade; 2 | 3 | @SuppressWarnings("serial") 4 | public class CloudException extends RuntimeException { 5 | 6 | public CloudException(Throwable cause) { 7 | super(cause); 8 | } 9 | 10 | public CloudException(String message, Throwable cause) { 11 | super(message, cause); 12 | } 13 | 14 | public CloudException(String message) { 15 | super(message); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceBindingOperationExecution.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.steps; 2 | 3 | import org.cloudfoundry.multiapps.controller.process.variables.Variables; 4 | 5 | public class PollServiceBindingOperationExecution extends PollServiceBindingUnbindingOperationBaseExecution { 6 | 7 | @Override 8 | protected String getAsyncJobId(ProcessContext context) { 9 | return context.getVariable(Variables.SERVICE_BINDING_JOB_ID); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/check-for-creation-conflicts-step-input-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "servicesToDeploy": [ 3 | { 4 | "name": "service-1" 5 | }, 6 | { 7 | "name": "service-2" 8 | } 9 | ], 10 | "existingServices": [ 11 | { 12 | "name": "service-1" 13 | }, 14 | { 15 | "name": "service-2" 16 | } 17 | ], 18 | "servicesFromDeployedMta": [ 19 | { 20 | "name": "service-1" 21 | }, 22 | { 23 | "name": "service-2" 24 | } 25 | ] 26 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/configuration/DefaultEnvironmentVariablesAccessor.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.configuration; 2 | 3 | import java.util.Map; 4 | 5 | class DefaultEnvironmentVariablesAccessor implements EnvironmentVariablesAccessor { 6 | 7 | @Override 8 | public Map getAllVariables() { 9 | return System.getenv(); 10 | } 11 | 12 | @Override 13 | public String getVariable(String name) { 14 | return System.getenv(name); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/listeners/AbortProcessStatisticsListener.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.listeners; 2 | 3 | import jakarta.inject.Named; 4 | 5 | import org.flowable.engine.delegate.event.AbstractFlowableEngineEventListener; 6 | 7 | @Named("abortProcessStatisticsListener") 8 | public class AbortProcessStatisticsListener extends AbstractFlowableEngineEventListener { 9 | 10 | @Override 11 | public boolean isFailOnException() { 12 | return false; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/steps/PollServiceUnbindingOperationExecution.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.steps; 2 | 3 | import org.cloudfoundry.multiapps.controller.process.variables.Variables; 4 | 5 | public class PollServiceUnbindingOperationExecution extends PollServiceBindingUnbindingOperationBaseExecution { 6 | 7 | @Override 8 | protected String getAsyncJobId(ProcessContext context) { 9 | return context.getVariable(Variables.SERVICE_UNBINDING_JOB_ID); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/subscriptions-to-delete-01.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 0, 4 | "spaceId": "sap", 5 | "appName": "t-4", 6 | "moduleDto": { 7 | "name": "t-4", 8 | "properties": {}, 9 | "providedDependencies": [], 10 | "requiredDependencies": [ 11 | { 12 | "name": "plugins-1", 13 | "properties": {} 14 | } 15 | ] 16 | }, 17 | "resourceDto": { 18 | "name": "plugins-1", 19 | "properties": {} 20 | } 21 | } 22 | ] -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/undeploy-apps-step-input-05.json: -------------------------------------------------------------------------------- 1 | { 2 | "portBasedRouting":true, 3 | "appsToDelete": [ 4 | { 5 | "routes": [ 6 | { 7 | "appsUsingRoute": 0, 8 | "domain": { 9 | "name": "domain" 10 | }, 11 | "host": "foo", 12 | "path": "/1111", 13 | "url": "foo.domain/1111" 14 | } 15 | ], 16 | "name": "foo" 17 | } 18 | ], 19 | "appRoutesPerApplication": { 20 | "foo": [] 21 | } 22 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/mtad-05.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 4 | parameters: 5 | default-domain: "some.default.domain" 6 | 7 | modules: 8 | - name: demo-app 9 | type: javascript.nodejs 10 | requires: 11 | - name: demo-service 12 | 13 | resources: 14 | - name: demo-service 15 | type: org.cloudfoundry.managed-service 16 | parameters: 17 | service: postgresql 18 | service-plan: v9.6-dev 19 | default-container-name: "some-name" -------------------------------------------------------------------------------- /multiapps-controller-database-migration/src/main/resources/console-logger.properties: -------------------------------------------------------------------------------- 1 | log4j.rootCategory=debug,console 2 | log4j.logger.com.demo.package=debug,console 3 | #log4j.additivity.com.demo.package=false 4 | 5 | log4j.appender.console=org.apache.log4j.ConsoleAppender 6 | log4j.appender.console.target=System.out 7 | log4j.appender.console.immediateFlush=true 8 | log4j.appender.console.encoding=UTF-8 9 | #log4j.appender.console.threshold=warn 10 | 11 | log4j.appender.console.layout=org.apache.log4j.PatternLayout 12 | log4j.appender.console.layout.conversionPattern=%d [%t] %-5p %c: %m%n -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/check-for-creation-conflicts-step-input-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "appsToDeploy": [ 3 | { 4 | "name": "application-1" 5 | }, 6 | { 7 | "name": "application-2" 8 | } 9 | ], 10 | "existingApps": [ 11 | { 12 | "name": "application-1" 13 | }, 14 | { 15 | "name": "application-2" 16 | } 17 | ], 18 | "appsFromDeployedMta": [ 19 | { 20 | "name": "application-1" 21 | }, 22 | { 23 | "name": "application-2" 24 | } 25 | ] 26 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/deployed-mta-02.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "id": "com.sap.xs2.samples.helloworld", 4 | "version": "0.2.0" 5 | }, 6 | "modules": [ 7 | { 8 | "moduleName": "node-hello-world", 9 | "appName": "node-hello-world", 10 | "services": [ 11 | "uaa", 12 | "node-hdi-container" 13 | ], 14 | "providedDependencyNames": [], 15 | "routes": [] 16 | } 17 | ], 18 | "services": [ 19 | "node-hdi-container", 20 | "uaa" 21 | ] 22 | } -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/java/org/cloudfoundry/multiapps/controller/api/MtasApiService.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.api; 2 | 3 | import java.util.List; 4 | 5 | import org.cloudfoundry.multiapps.controller.api.model.Mta; 6 | import org.springframework.http.ResponseEntity; 7 | 8 | public interface MtasApiService { 9 | 10 | ResponseEntity> getMtas(String spaceGuid); 11 | 12 | ResponseEntity getMta(String spaceGuid, String mtaId); 13 | 14 | ResponseEntity> getMtas(String spaceGuid, String mtaId, String namespace); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/keep-existing-routes/deployed-mta.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "id": "foo.mtar", 4 | "version": "1.0.0" 5 | }, 6 | "applications": [ 7 | { 8 | "moduleName": "bar", 9 | "name": "bar", 10 | "metadata": { 11 | "guid": "3725650a-8725-4401-a949-c68f83d54a86" 12 | } 13 | }, 14 | { 15 | "moduleName": "foo", 16 | "name": "foo", 17 | "metadata": { 18 | "guid": "3725650a-8725-4401-a949-c68f83d54a86" 19 | } 20 | } 21 | ] 22 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-routes-with-nohostname.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.sample.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: java.tomee 8 | parameters: 9 | # define multiple route parameters 10 | routes: 11 | - route: "sub.domain.to.test" 12 | no-hostname: true 13 | - route: "sub.sub.domain.to.test/with/path" 14 | no-hostname: true 15 | - route: "normal-host.domain.to.test" 16 | keep-existing: 17 | env: true -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/expander/properties-00.json: -------------------------------------------------------------------------------- 1 | { 2 | "credentials_1": "~{foo/user}|~{foo/pass}", 3 | "credentials_2": "~{bar/user}|~{bar/pass}", 4 | "credentials_3": { 5 | "user": "~{foo/user}", 6 | "pass": "~{foo/pass}" 7 | }, 8 | "credentials_4": { 9 | "user": "~{bar/user}", 10 | "pass": "~{bar/pass}" 11 | }, 12 | "name_1": "~{foo/name}", 13 | "name_2": "~{bar/name}", 14 | "url_1": "${protocol}://~{foo/name}.com", 15 | "url_2": "${protocol}://~{bar/name}.com", 16 | "test": "test" 17 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/determine-actions-create-or-update-services-step-input-6-update-tags.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "name": "service-1", 4 | "label": "uaa", 5 | "plan": "test", 6 | "tags": [ 7 | "test-tag-1", 8 | "test-tag-2" 9 | ] 10 | }, 11 | "existingService": { 12 | "name": "service-1", 13 | "label": "uaa", 14 | "plan": "test", 15 | "metadata": {"guid": "beeb5e8d-4ab9-46ee-9205-455a278743f0"}, 16 | "tags": [ 17 | "test-tag-1" 18 | ] 19 | }, 20 | "shouldUpdateServiceTags": true 21 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/mtad-06.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3.1" 2 | ID: com.sap.mta.sample.util 3 | version: 2.4.0 4 | 5 | modules: 6 | - name: demo-app 7 | type: javascript.nodejs 8 | requires: 9 | - name: demo-service 10 | parameters: 11 | default-domain: "some.default.domain" 12 | 13 | resources: 14 | - name: demo-service 15 | type: org.cloudfoundry.managed-service 16 | parameters: 17 | service: postgresql 18 | service-plan: v9.6-dev 19 | default-container-name: "some-name" -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/mtad-13.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.sample.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: java.tomee 8 | parameters: 9 | # define multiple route parameters 10 | routes: 11 | - route: "host-in-route1.test-domain" 12 | - route: "host-in-route2.test-domain/path-in-route" 13 | # adding parameters which will be ignored 14 | host: deprecated-host 15 | route-path: /deprecated-path 16 | keep-existing: 17 | env: true -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/subscriptions-mtad-02.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: com.sap.example.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | properties: 9 | plugin_names: ~{plugins/name} 10 | other_property: other_property_value 11 | parameters: 12 | host: ~{plugins/name} 13 | requires: 14 | - name: plugins 15 | list: plugins 16 | properties: 17 | names: ~{name} 18 | 19 | resources: 20 | - name: plugins 21 | type: configuration -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v3/subscriptions-mtad-02.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 3.1.0 2 | ID: com.sap.example.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | properties: 9 | plugin_names: ~{plugins/name} 10 | other_property: other_property_value 11 | parameters: 12 | host: ~{plugins/name} 13 | requires: 14 | - name: plugins 15 | list: plugins 16 | properties: 17 | names: ~{name} 18 | 19 | resources: 20 | - name: plugins 21 | type: configuration -------------------------------------------------------------------------------- /multiapps-controller-database-migration/src/main/java/org/cloudfoundry/multiapps/controller/database/migration/metadata/DatabaseTableRowData.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.database.migration.metadata; 2 | 3 | import java.util.Map; 4 | 5 | import org.cloudfoundry.multiapps.common.MultiappsImmutablesStyle; 6 | import org.cloudfoundry.multiapps.common.SkipNulls; 7 | import org.immutables.value.Value; 8 | 9 | @MultiappsImmutablesStyle 10 | @Value.Immutable 11 | public interface DatabaseTableRowData { 12 | 13 | @SkipNulls 14 | Map getValues(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/poll-create-services-step-input-09.json: -------------------------------------------------------------------------------- 1 | { 2 | "services": [ 3 | { 4 | "name": "test-service", 5 | "label": "test", 6 | "plan": "test", 7 | "provider": "test", 8 | "version": "test" 9 | } 10 | ], 11 | "triggeredServiceOperations": { 12 | "test-service": "CREATE" 13 | }, 14 | "serviceInstanceResponse": { 15 | "test-service": { 16 | "last_operation": { 17 | "type": "create", 18 | "state": "failed" 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/poll-create-services-step-input-10.json: -------------------------------------------------------------------------------- 1 | { 2 | "services": [ 3 | { 4 | "name": "test-service", 5 | "label": "test", 6 | "plan": "test", 7 | "provider": "test", 8 | "version": "test" 9 | } 10 | ], 11 | "triggeredServiceOperations": { 12 | "test-service": "UPDATE" 13 | }, 14 | "serviceInstanceResponse": { 15 | "test-service": { 16 | "last_operation": { 17 | "type": "update", 18 | "state": "failed" 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/mtad-07.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: mta-1 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: framework 7 | type: javascript.nodejs 8 | requires: 9 | - name: plugins 10 | list: plugins 11 | properties: 12 | plugin_name: ~{plugin_name} 13 | url: ~{url} 14 | 15 | resources: 16 | - name: plugins 17 | type: configuration 18 | parameters: 19 | filter: 20 | type: com.acme.plugin 21 | properties: 22 | foo: bar 23 | baz: qux -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/file-entries-1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "id1", 4 | "name": "archive.part.part.2", 5 | "namespace": "namespace1", 6 | "space": "some-custom-space", 7 | "size": 10000, 8 | "digest": "fake-digest", 9 | "digestAlgorithm": "MD-5" 10 | }, 11 | { 12 | "id": "id2", 13 | "name": "archive.part.part.1", 14 | "namespace": "namespace1", 15 | "space": "some-custom-space", 16 | "size": 10000, 17 | "digest": "fake-digest", 18 | "digestAlgorithm": "MD-5" 19 | } 20 | ] -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/keep-existing-routes/deployed-mta-without-routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "id": "foo.mtar", 4 | "version": "1.0.0" 5 | }, 6 | "applications": [ 7 | { 8 | "moduleName": "bar", 9 | "name": "bar", 10 | "metadata": { 11 | "guid": "3725650a-8725-4401-a949-c68f83d54a86" 12 | } 13 | }, 14 | { 15 | "moduleName": "foo", 16 | "name": "foo", 17 | "metadata": { 18 | "guid": "3725650a-8725-4401-a949-c68f83d54a86" 19 | } 20 | } 21 | ] 22 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/determine-actions-create-or-update-services-step-input-3-recreate-service.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "resourceName": "service-1", 4 | "name": "service-1", 5 | "label": "label-1", 6 | "plan": "plan-3", 7 | "tags": [] 8 | }, 9 | "existingService": { 10 | "name": "service-1", 11 | "label": "label-1-old", 12 | "plan": "plan-3", 13 | "metadata": {"guid": "beeb5e8d-4ab9-46ee-9205-455a278743f0"}, 14 | "tags": [] 15 | }, 16 | "shouldRecreateService": true, 17 | "shouldDeleteServices": true 18 | } -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018-Present CloudFoundry.org Foundation, Inc. All Rights Reserved. 2 | This project contains software that is Copyright (c) 2015-2018 SAP SE or an SAP affiliate company. 3 | 4 | This project is licensed to you under the Apache License, Version 2.0 (the "License"). 5 | You may not use this project except in compliance with the License. 6 | 7 | This project may include a number of subcomponents with separate copyright notices 8 | and license terms. Your use of these subcomponents is subject to the terms and 9 | conditions of the subcomponent's license, as noted in the LICENSE file. 10 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/util/vcap-application.json: -------------------------------------------------------------------------------- 1 | { 2 | "instance_id": "d827d1f2-d4c1-462a-ab9d-5bf828706d63", 3 | "application_name": "deploy-service", 4 | "application_id": "00290016-c00b-11e9-9cb5-2a2ae2dbcce4", 5 | "space_id": "954229f5-4945-43eb-8acb-a8f07cc5a7f8", 6 | "started_at_timestamp": "1437740774167", 7 | "state_timestamp": "1437651427557", 8 | "application_uris": ["sofd60245639a:12993"], 9 | "uris": ["sofd60245639a:12993"], 10 | "organization_name": "org_name_123", 11 | "cf_api": "https://api.cf.sap.hana.ondemand.com" 12 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/file-entries-with-invalid-names.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "id1", 4 | "name": "archive.invalid", 5 | "namespace": "namespace1", 6 | "space": "some-custom-space", 7 | "size": 10000, 8 | "digest": "fake-digest", 9 | "digestAlgorithm": "MD-5" 10 | }, 11 | { 12 | "id": "id2", 13 | "name": "archive.invalid.1", 14 | "namespace": "namespace1", 15 | "space": "some-custom-space", 16 | "size": 10000, 17 | "digest": "fake-digest", 18 | "digestAlgorithm": "MD-5" 19 | } 20 | ] -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/util/LoggingUtil.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.util; 2 | 3 | import org.cloudfoundry.multiapps.controller.core.Constants; 4 | import org.slf4j.MDC; 5 | 6 | public final class LoggingUtil { 7 | 8 | private LoggingUtil() { 9 | 10 | } 11 | 12 | public static void logWithCorrelationId(String correlationId, Runnable runnable) { 13 | MDC.put(Constants.ATTR_CORRELATION_ID, correlationId); 14 | runnable.run(); 15 | MDC.remove(Constants.ATTR_CORRELATION_ID); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/build-cloud-model.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: com.sap.xs2.samples.helloworld 3 | version: 0.1.0 4 | 5 | modules: 6 | - name: module-1 7 | type: javascript.nodejs 8 | provides: 9 | - name: module-1-provides 10 | properties: 11 | url: "https://example.com" 12 | test-key: "test-value" 13 | 14 | - name: module-2 15 | type: javascript.nodejs 16 | provides: 17 | - name: module-2-provides 18 | properties: 19 | test-key: "test-value" 20 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/determine-actions-create-or-update-services-step-input-9-recreate-service-error.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "resourceName": "service-1", 4 | "name": "service-1", 5 | "label": "label-1", 6 | "plan": "plan-3", 7 | "tags": [] 8 | }, 9 | "existingService": { 10 | "name": "service-1", 11 | "label": "label-1-old", 12 | "plan": "plan-3", 13 | "metadata": {"guid": "beeb5e8d-4ab9-46ee-9205-455a278743f0"}, 14 | "tags": [] 15 | }, 16 | "shouldRecreateService": true, 17 | "shouldDeleteServices": false 18 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/devxwebide/xs2-config-2.mtaext: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.devx.webide.xs2-config1 3 | extends: com.sap.devx.webide 4 | 5 | targets: [XS2-INITIAL] 6 | 7 | modules: 8 | - name: webide 9 | parameters: 10 | memory: 128M 11 | requires: 12 | - name: sapui5 13 | properties: 14 | proxyHost: proxy 15 | proxyPort: "8080" 16 | 17 | resources: 18 | - name: sapui5 19 | properties: 20 | url: "https://sapui5.netweaver.ondemand.com" 21 | 22 | - name: che 23 | properties: 24 | url: "http://che.sofd60245639a" -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/validators/parameters/v2/mtad-01.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.test 3 | version: "1.0" 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | provides: 9 | - name: bar 10 | properties: 11 | test: bar 12 | parameters: 13 | port: 30030 14 | memory: 512 15 | 16 | - name: baz 17 | type: baz 18 | parameters: 19 | domain: com.sap.test.foo 20 | memory: 256 21 | 22 | resources: 23 | - name: qux 24 | parameters: 25 | test: test 26 | port: -100 27 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/app-to-deploy-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "module-1", 3 | "routes": [ 4 | { 5 | "appsUsingRoute": 0, 6 | "domain": { 7 | "name": "testdomain.com" 8 | }, 9 | "host": "foo", 10 | "path": "", 11 | "url": "foo.testdomain.com" 12 | }, 13 | { 14 | "appsUsingRoute": 0, 15 | "domain": { 16 | "name": "testdomain.com" 17 | }, 18 | "host": "", 19 | "path": "/path", 20 | "url": "testdomain.com/path" 21 | } 22 | ], 23 | "idleRoutes": [] 24 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/existing-app-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "module-1", 3 | "routes": [ 4 | { 5 | "appsUsingRoute": 0, 6 | "domain": { 7 | "name": "testdomain.com" 8 | }, 9 | "host": "foo", 10 | "path": "", 11 | "url": "foo.testdomain.com" 12 | }, 13 | { 14 | "appsUsingRoute": 0, 15 | "domain": { 16 | "name": "testdomain.com" 17 | }, 18 | "host": "", 19 | "path": "/path", 20 | "url": "testdomain.com/path" 21 | } 22 | ], 23 | "idleRoutes": [] 24 | } 25 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/devxwebide/xs2-config-1.mtaext: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.devx.webide.xs2-config1 3 | extends: com.sap.devx.webide 4 | 5 | target-platforms: [XS2-INITIAL] 6 | 7 | modules: 8 | - name: webide 9 | parameters: 10 | memory: 128M 11 | requires: 12 | - name: sapui5 13 | properties: 14 | proxyHost: proxy 15 | proxyPort: "8080" 16 | 17 | resources: 18 | - name: sapui5 19 | properties: 20 | url: "https://sapui5.netweaver.ondemand.com" 21 | 22 | - name: che 23 | properties: 24 | url: "http://che.sofd60245639a" -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/cf/v2/keep-existing-routes/mtad-routes-with-nohostname.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: foo.mtar 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: java.tomee 8 | parameters: 9 | # define multiple route parameters 10 | routes: 11 | - route: "sub.domain.to.test" 12 | no-hostname: true 13 | - route: "sub.sub.domain.to.test/with/path" 14 | no-hostname: true 15 | - route: "normal-host.domain.to.test" 16 | keep-existing: 17 | env: true 18 | routes: true -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/app-to-deploy-3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "module-1", 3 | "routes": [ 4 | { 5 | "appsUsingRoute": 0, 6 | "domain": { 7 | "name": "domain.com" 8 | }, 9 | "host": "test", 10 | "path": "/51051", 11 | "url": "test.domain.com/51051" 12 | }, 13 | { 14 | "appsUsingRoute": 0, 15 | "domain": { 16 | "name": "domain.com" 17 | }, 18 | "host": "test", 19 | "path": "/51053", 20 | "url": "test.domain.com/51053" 21 | } 22 | ], 23 | "idleRoutes": [] 24 | } 25 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/DockerCredentials.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | import org.immutables.value.Value; 4 | 5 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 6 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 7 | 8 | @Value.Immutable 9 | @JsonSerialize(as = ImmutableDockerCredentials.class) 10 | @JsonDeserialize(as = ImmutableDockerCredentials.class) 11 | public interface DockerCredentials { 12 | 13 | String getUsername(); 14 | 15 | String getPassword(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /multiapps-controller-core-test/src/main/java/org/cloudfoundry/multiapps/controller/core/test/LambdaArgumentMatcher.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.test; 2 | 3 | import java.util.function.Predicate; 4 | 5 | import org.mockito.ArgumentMatcher; 6 | 7 | public class LambdaArgumentMatcher implements ArgumentMatcher { 8 | 9 | private final Predicate matcher; 10 | 11 | public LambdaArgumentMatcher(Predicate matcher) { 12 | this.matcher = matcher; 13 | } 14 | 15 | @Override 16 | public boolean matches(Object argument) { 17 | return matcher.test(argument); 18 | } 19 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/health/model/HealthCheckConfiguration.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.health.model; 2 | 3 | import org.cloudfoundry.multiapps.common.Nullable; 4 | import org.immutables.value.Value; 5 | 6 | @Value.Immutable 7 | public interface HealthCheckConfiguration { 8 | 9 | @Nullable 10 | String getSpaceId(); 11 | 12 | @Nullable 13 | String getMtaId(); 14 | 15 | @Value.Default 16 | default long getTimeRangeInSeconds() { 17 | return 0; 18 | } 19 | 20 | @Nullable 21 | String getUserName(); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/validators/parameters/CompatibilityParametersValidator.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.validators.parameters; 2 | 3 | import org.cloudfoundry.multiapps.controller.core.util.UserMessageLogger; 4 | 5 | public abstract class CompatibilityParametersValidator { 6 | 7 | protected final UserMessageLogger userMessageLogger; 8 | 9 | protected CompatibilityParametersValidator(UserMessageLogger userMessageLoger) { 10 | this.userMessageLogger = userMessageLoger; 11 | } 12 | 13 | public abstract T validate(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/existing-app-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "module-1", 3 | "routes": [ 4 | { 5 | "appsUsingRoute": 0, 6 | "domain": { 7 | "name": "domain.com" 8 | }, 9 | "host": "module-1", 10 | "path": "", 11 | "url": "module-1.domain.com" 12 | }, 13 | { 14 | "appsUsingRoute": 0, 15 | "domain": { 16 | "name": "domain.com" 17 | }, 18 | "host": "module-1", 19 | "path": "/with/path", 20 | "url": "module-1.domain.com/with/path" 21 | } 22 | ], 23 | "idleRoutes": [] 24 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/auditlogging/impl/AuditLoggingExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.auditlogging.impl; 2 | 3 | class AuditLoggingExceptionHandler implements DBAppender.ExceptionHandler { 4 | 5 | private Exception exception; 6 | 7 | @Override 8 | public void handleException(Exception e) { 9 | this.setException(e); 10 | } 11 | 12 | Exception getException() { 13 | return exception; 14 | } 15 | 16 | void setException(Exception exception) { 17 | this.exception = exception; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/helpers/escaping/CharacterToReplace.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.helpers.escaping; 2 | 3 | public class CharacterToReplace { 4 | 5 | private final String replacement; 6 | private final char value; 7 | 8 | public CharacterToReplace(char value, String replacement) { 9 | this.replacement = replacement; 10 | this.value = value; 11 | } 12 | 13 | public String getReplacement() { 14 | return replacement; 15 | } 16 | 17 | public char getValue() { 18 | return value; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/subscriptions-mtad-01.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: com.sap.example.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | properties: 9 | plugin_names: ~{plugins/name} 10 | other_property: other_property_value 11 | parameters: 12 | host: ~{plugins/name} 13 | requires: 14 | - name: plugins 15 | list: plugins 16 | parameters: 17 | managed: false 18 | properties: 19 | names: ~{name} 20 | 21 | resources: 22 | - name: plugins 23 | type: configuration -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v3/subscriptions-mtad-01.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 3.1.0 2 | ID: com.sap.example.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | properties: 9 | plugin_names: ~{plugins/name} 10 | other_property: other_property_value 11 | parameters: 12 | host: ~{plugins/name} 13 | requires: 14 | - name: plugins 15 | list: plugins 16 | parameters: 17 | managed: false 18 | properties: 19 | names: ~{name} 20 | 21 | resources: 22 | - name: plugins 23 | type: configuration -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/file-entries-with-invalid-names-no-indexes.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "id1", 4 | "name": "archive.part.thisShouldBeIndex", 5 | "namespace": "namespace1", 6 | "space": "some-custom-space", 7 | "size": 10000, 8 | "digest": "fake-digest", 9 | "digestAlgorithm": "MD-5" 10 | }, 11 | { 12 | "id": "id2", 13 | "name": "archive.part.thisShouldBeIndexToo", 14 | "namespace": "namespace1", 15 | "space": "some-custom-space", 16 | "size": 10000, 17 | "digest": "fake-digest", 18 | "digestAlgorithm": "MD-5" 19 | } 20 | ] -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/configuration-filter-parser-test-input-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "deploymentNamespace": "namespace", 3 | "cloudTarget": { 4 | "space": "some-space", 5 | "org": "some-org" 6 | }, 7 | "isNewResourceType": true, 8 | "resourceParameters": { 9 | "provider-nid": "mta", 10 | "provider-id": "test:foo", 11 | "version": "0.1.0", 12 | "provider-namespace": "namespace", 13 | "target": { 14 | "space": "some-space", 15 | "org": "some-org" 16 | }, 17 | "filter": { 18 | "foo": "bar", 19 | "baz": "cux" 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/configuration-entries.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": 55, 4 | "providerNid": "mta", 5 | "providerId": "mta-1:provided-dependency-1", 6 | "providerVersion": "0.1.0", 7 | "targetSpace": { 8 | "space":"test", 9 | "org": "test" 10 | }, 11 | "content": "foo" 12 | }, 13 | { 14 | "id": 66, 15 | "providerNid": "mta", 16 | "providerId": "mta-1:provided-dependency-2", 17 | "providerVersion": "0.1.0", 18 | "targetSpace": { 19 | "space":"test", 20 | "org": "test" 21 | }, 22 | "content": "bar" 23 | } 24 | ] -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/util/ConfigurationEntriesUtil.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.persistence.util; 2 | 3 | public final class ConfigurationEntriesUtil { 4 | 5 | private ConfigurationEntriesUtil() { 6 | } 7 | 8 | private static final String PROVIDER_NAMESPACE_DEFAULT_VALUE = "default"; 9 | 10 | public static boolean providerNamespaceIsEmpty(String providerNamespace, boolean considerNullAsEmpty) { 11 | return (considerNullAsEmpty && providerNamespace == null) || PROVIDER_NAMESPACE_DEFAULT_VALUE.equals(providerNamespace); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /multiapps-controller-core-test/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | open module org.cloudfoundry.multiapps.controller.core.test { 2 | 3 | exports org.cloudfoundry.multiapps.controller.core.test; 4 | 5 | requires transitive org.cloudfoundry.multiapps.mta; 6 | 7 | requires org.apache.httpcomponents.client5.httpclient5; 8 | requires org.apache.httpcomponents.core5.httpcore5; 9 | requires org.cloudfoundry.multiapps.common; 10 | requires org.cloudfoundry.multiapps.common.test; 11 | requires org.junit.jupiter.api; 12 | requires org.mockito; 13 | 14 | requires static java.compiler; 15 | requires static org.immutables.value; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/FileStorageException.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.persistence.services; 2 | 3 | public class FileStorageException extends Exception { 4 | 5 | private static final long serialVersionUID = -4798385554251279267L; 6 | 7 | public FileStorageException(Throwable cause) { 8 | super(cause); 9 | } 10 | 11 | public FileStorageException(String message) { 12 | super(message); 13 | } 14 | 15 | public FileStorageException(String message, Throwable cause) { 16 | super(message, cause); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/main/java/org/cloudfoundry/multiapps/controller/process/util/SchemaVersionUtils.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.process.util; 2 | 3 | import java.util.Collections; 4 | import java.util.List; 5 | import java.util.function.Function; 6 | 7 | public class SchemaVersionUtils { 8 | 9 | private static final int MAJOR_SCHEMA_VERSION_THREE = 3; 10 | 11 | public static List getEntityData(T entity, Function versionGetter, Function> dataGetter) { 12 | return versionGetter.apply(entity) < MAJOR_SCHEMA_VERSION_THREE ? Collections.emptyList() : dataGetter.apply(entity); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/CustomLongStringType.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.web.configuration; 2 | 3 | import org.flowable.variable.api.types.ValueFields; 4 | import org.flowable.variable.service.impl.types.LongStringType; 5 | 6 | public class CustomLongStringType extends LongStringType { 7 | 8 | public CustomLongStringType(int minLength) { 9 | super(minLength); 10 | } 11 | 12 | @Override 13 | public void setValue(Object value, ValueFields valueFields) { 14 | super.setValue(value, valueFields); 15 | valueFields.setCachedValue(value); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v2/configuration-filter-parser-test-input-03.json: -------------------------------------------------------------------------------- 1 | { 2 | "deploymentNamespace": "namespace", 3 | "cloudTarget": { 4 | "space": "some-space", 5 | "org": "some-org" 6 | }, 7 | "isNewResourceType": true, 8 | "resourceParameters": { 9 | "provider-nid": "mta", 10 | "provider-id": "test:foo", 11 | "version": "0.1.0", 12 | "provider-namespace": "different-namespace", 13 | "target": { 14 | "space": "some-different-space", 15 | "org": "some-different-org" 16 | }, 17 | "filter": { 18 | "foo": "bar", 19 | "baz": "cux" 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/java/org/cloudfoundry/multiapps/controller/api/model/MessageType.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.api.model; 2 | 3 | import jakarta.xml.bind.annotation.XmlEnum; 4 | import jakarta.xml.bind.annotation.XmlType; 5 | 6 | @XmlType(name = "") 7 | @XmlEnum(MessageType.class) 8 | public enum MessageType { 9 | 10 | INFO, ERROR, WARNING, EXT, TASK_STARTUP; 11 | 12 | public static MessageType fromValue(String v) { 13 | for (MessageType b : MessageType.values()) { 14 | if (b.name() 15 | .equals(v)) { 16 | return b; 17 | } 18 | } 19 | return null; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/services/FileContentConsumer.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.persistence.services; 2 | 3 | import java.io.IOException; 4 | import java.io.InputStream; 5 | 6 | /** 7 | * An interface for consuming the content of a file. 8 | * 9 | */ 10 | public interface FileContentConsumer { 11 | 12 | /** 13 | * Consume the content of a file. 14 | * 15 | * @param inputStream an input stream representing the file content 16 | * @throws IOException in case of read/write error 17 | */ 18 | void consume(InputStream inputStream) throws IOException; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/configuration/UserProviderConfiguration.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.web.configuration; 2 | 3 | import org.cloudfoundry.multiapps.controller.core.auditlogging.UserInfoProvider; 4 | import org.cloudfoundry.multiapps.controller.web.util.SecurityContextUtil; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | @Configuration 9 | public class UserProviderConfiguration { 10 | 11 | @Bean 12 | public UserInfoProvider buildUserInfoProvider() { 13 | return SecurityContextUtil::getUserInfo; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/Upload.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | import org.immutables.value.Value; 4 | 5 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 6 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 7 | import org.cloudfoundry.multiapps.controller.client.facade.Nullable; 8 | 9 | @Value.Immutable 10 | @JsonSerialize(as = ImmutableUpload.class) 11 | @JsonDeserialize(as = ImmutableUpload.class) 12 | public interface Upload { 13 | 14 | Status getStatus(); 15 | 16 | @Nullable 17 | ErrorDetails getErrorDetails(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/CloudDomain.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | import org.immutables.value.Value; 4 | 5 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 6 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 7 | 8 | @Value.Immutable 9 | @JsonSerialize(as = ImmutableCloudDomain.class) 10 | @JsonDeserialize(as = ImmutableCloudDomain.class) 11 | public abstract class CloudDomain extends CloudEntity implements Derivable { 12 | 13 | @Override 14 | public CloudDomain derive() { 15 | return this; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/deployed-mta-13.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "id": "test", 4 | "version": "0.1.0" 5 | }, 6 | "applications": [ 7 | { 8 | "moduleName": "a", 9 | "name": "a", 10 | "boundMtaServices": [], 11 | "providedDependencyNames": [] 12 | }, 13 | { 14 | "moduleName": "b", 15 | "name": "b", 16 | "boundMtaServices": [], 17 | "providedDependencyNames": [] 18 | }, 19 | { 20 | "moduleName": "c", 21 | "name": "c", 22 | "boundMtaServices": [], 23 | "providedDependencyNames": [] 24 | } 25 | ], 26 | "services": [] 27 | } -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/security/UriAuthorizationFilter.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.web.security; 2 | 3 | import java.io.IOException; 4 | 5 | import jakarta.servlet.http.HttpServletRequest; 6 | import jakarta.servlet.http.HttpServletResponse; 7 | 8 | public interface UriAuthorizationFilter { 9 | 10 | String getUriRegex(); 11 | 12 | /** 13 | * @return Whether or not the request should be forwarded to the rest of the filter chain and eventually to the appropriate handler. 14 | */ 15 | boolean ensureUserIsAuthorized(HttpServletRequest request, HttpServletResponse response) throws IOException; 16 | } 17 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/resolvers/v2/mtad.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: 2.0.0 2 | ID: com.sap.example.mta 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: foo 7 | type: foo 8 | properties: 9 | test_1: ~{bar/baz} 10 | test_2: ~{bar/baz}...~{plugins/name} 11 | test_3: ~{plugins/name} 12 | requires: 13 | - name: plugins 14 | list: plugins 15 | parameters: 16 | managed: true 17 | - name: bar 18 | - name: bar 19 | type: bar 20 | provides: 21 | - name: bar 22 | properties: 23 | baz: YO 24 | 25 | resources: 26 | - name: plugins 27 | type: configuration 28 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/InstanceState.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | import org.cloudfoundry.client.v3.processes.ProcessState; 4 | 5 | public enum InstanceState { 6 | CRASHED, DOWN, RUNNING, STARTING, UNKNOWN; 7 | 8 | public static InstanceState valueOfWithDefault(ProcessState state) { 9 | if (state == null) { 10 | return UNKNOWN; 11 | } 12 | try { 13 | return InstanceState.valueOf(state.getValue()); 14 | } catch (IllegalArgumentException e) { 15 | return InstanceState.UNKNOWN; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/resources/ongoing-operations-resource-test-output-2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "processId": "100", 4 | "processType": "deploy", 5 | "startedAt": "10:11:12", 6 | "spaceId": "testProcessSpaceId", 7 | "mtaId": "testMtaId", 8 | "user": "testUser", 9 | "acquiredLock": false, 10 | "state": "SLP_TASK_STATE_RUNNING" 11 | }, 12 | { 13 | "processId": "200", 14 | "processType": "undeploy", 15 | "startedAt": "10:11:12", 16 | "spaceId": "testProcessSpaceId", 17 | "mtaId": "testMtaId", 18 | "user": "testUser", 19 | "acquiredLock": false, 20 | "state": "SLP_TASK_STATE_RUNNING" 21 | } 22 | ] -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/adapters/ApplicationLogsResponse.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.adapters; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import com.fasterxml.jackson.annotation.JsonRootName; 5 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 6 | import org.immutables.value.Value; 7 | 8 | import java.util.List; 9 | 10 | @Value.Immutable 11 | @JsonRootName("envelopes") 12 | @JsonDeserialize(as = ImmutableApplicationLogsResponse.class) 13 | public interface ApplicationLogsResponse { 14 | 15 | @JsonProperty("batch") 16 | List getLogs(); 17 | } 18 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/DockerInfo.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | import org.immutables.value.Value; 4 | 5 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 6 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 7 | import org.cloudfoundry.multiapps.controller.client.facade.Nullable; 8 | 9 | @Value.Immutable 10 | @JsonSerialize(as = ImmutableDockerInfo.class) 11 | @JsonDeserialize(as = ImmutableDockerInfo.class) 12 | public interface DockerInfo { 13 | 14 | String getImage(); 15 | 16 | @Nullable 17 | DockerCredentials getCredentials(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/devxwebide/services.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "isOptional": false, 4 | "isManaged": false, 5 | "name": "uaa", 6 | "v3Metadata": { 7 | "annotations": { 8 | "mta_id": "com.sap.devx.webide", 9 | "mta_version": "1.0.0", 10 | "mta_resource": "{\"name\":\"uaa\"}" 11 | }, 12 | "labels": { 13 | "mta_id": "33940e667a1d39f2c6fe8b2f658f9f40" 14 | } 15 | }, 16 | "resourceName": "uaa", 17 | "credentials": {}, 18 | "tags": [], 19 | "shouldSkipParametersUpdate": false, 20 | "shouldSkipTagsUpdate": false, 21 | "shouldSkipPlanUpdate": false, 22 | "shouldSkipSyslogUrlUpdate": false 23 | } 24 | ] -------------------------------------------------------------------------------- /multiapps-controller-api/src/main/java/org/cloudfoundry/multiapps/controller/api/model/parameters/IntegerParameterConverter.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.api.model.parameters; 2 | 3 | import java.text.MessageFormat; 4 | 5 | import org.cloudfoundry.multiapps.common.SLException; 6 | 7 | public class IntegerParameterConverter implements ParameterConverter { 8 | 9 | @Override 10 | public Integer convert(Object value) { 11 | try { 12 | return Integer.valueOf(String.valueOf(value)); 13 | } catch (NumberFormatException e) { 14 | throw new SLException(e, MessageFormat.format("Parameter value is not integer {0}", value)); 15 | } 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/expander/expanded-properties-01.json: -------------------------------------------------------------------------------- 1 | { 2 | "credentials_1": "~{foo/user}|~{foo/pass}", 3 | "credentials_2": [ 4 | "~{bar.0/user}|~{bar.0/pass}" 5 | ], 6 | "credentials_3": { 7 | "pass": "~{foo/pass}", 8 | "user": "~{foo/user}" 9 | }, 10 | "credentials_4": { 11 | "pass": [ 12 | "~{bar.0/pass}" 13 | ], 14 | "user": [ 15 | "~{bar.0/user}" 16 | ] 17 | }, 18 | "name_1": "~{foo/name}", 19 | "name_2": [ 20 | "~{bar.0/name}" 21 | ], 22 | "test": "test", 23 | "url_1": "${protocol}://~{foo/name}.com", 24 | "url_2": [ 25 | "${protocol}://~{bar.0/name}.com" 26 | ] 27 | } -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/resources/ongoing-operations-resource-test-output-3.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "processId": "100", 4 | "processType": "blue-green-deploy", 5 | "startedAt": "10:11:12", 6 | "spaceId": "testProcessSpaceId", 7 | "mtaId": "testMtaId", 8 | "user": "testUser", 9 | "acquiredLock": false, 10 | "state": "SLP_TASK_STATE_ERROR" 11 | }, 12 | { 13 | "processId": "200", 14 | "processType": "deploy", 15 | "startedAt": "10:11:12", 16 | "spaceId": "testProcessSpaceId", 17 | "mtaId": "testMtaId", 18 | "user": "testUser", 19 | "acquiredLock": false, 20 | "state": "SLP_TASK_STATE_RUNNING" 21 | } 22 | ] -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/services-to-create-01.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "isOptional" : false, 3 | "isManaged" : true, 4 | "name" : "resource-1", 5 | "credentials" : { }, 6 | "tags" : [ ], 7 | "shouldSkipParametersUpdate" : false, 8 | "shouldSkipTagsUpdate" : false, 9 | "shouldSkipPlanUpdate" : false, 10 | "shouldSkipSyslogUrlUpdate": false 11 | }, { 12 | "isOptional" : false, 13 | "isManaged" : true, 14 | "name" : "resource-2", 15 | "credentials" : { }, 16 | "tags" : [ ], 17 | "shouldSkipParametersUpdate" : false, 18 | "shouldSkipTagsUpdate" : false, 19 | "shouldSkipPlanUpdate" : false, 20 | "shouldSkipSyslogUrlUpdate": false 21 | } ] -------------------------------------------------------------------------------- /multiapps-controller-web/src/main/java/org/cloudfoundry/multiapps/controller/web/monitoring/MetricsMBean.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.web.monitoring; 2 | 3 | public interface MetricsMBean { 4 | 5 | long getUsedContainerSpace(); 6 | 7 | int getRunningJobExecutorThreads(); 8 | 9 | int getTotalJobExecutorThreads(); 10 | 11 | int getRunningAsyncExecutorThreads(); 12 | 13 | int getTotalAsyncExecutorThreads(); 14 | 15 | int getRunningCloudFoundryClientThreads(); 16 | 17 | int getTotalCloudFoundryClientThreads(); 18 | 19 | int getCurrentJobExecutorQueueSize(); 20 | 21 | int getFileToUploadQueueSize(); 22 | 23 | int getFileToUploadFromUrlQueueSize(); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/resources/ongoing-operations-resource-test-output-4.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "processId": "300", 4 | "processType": "blue-green-deploy", 5 | "startedAt": "10:11:12", 6 | "spaceId": "testProcessSpaceId", 7 | "mtaId": "testMtaId", 8 | "user": "testUser", 9 | "acquiredLock": false, 10 | "state": "SLP_TASK_STATE_ABORTED" 11 | }, 12 | { 13 | "processId": "400", 14 | "processType": "undeploy", 15 | "startedAt": "10:11:12", 16 | "spaceId": "testProcessSpaceId", 17 | "mtaId": "testMtaId", 18 | "user": "testUser", 19 | "acquiredLock": false, 20 | "state": "SLP_TASK_STATE_FINISHED" 21 | } 22 | ] -------------------------------------------------------------------------------- /multiapps-controller-web/src/test/resources/org/cloudfoundry/multiapps/controller/web/resources/ongoing-operations-resource-test-output-7.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "processId": "300", 4 | "processType": "undeploy", 5 | "startedAt": "10:11:12", 6 | "spaceId": "testProcessSpaceId", 7 | "mtaId": "testMtaId", 8 | "user": "testUser", 9 | "acquiredLock": false, 10 | "state": "SLP_TASK_STATE_RUNNING" 11 | }, 12 | { 13 | "processId": "400", 14 | "processType": "blue-green-deploy", 15 | "startedAt": "10:11:12", 16 | "spaceId": "testProcessSpaceId", 17 | "mtaId": "testMtaId", 18 | "user": "testUser", 19 | "acquiredLock": false, 20 | "state": "SLP_TASK_STATE_RUNNING" 21 | } 22 | ] -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/auditlogging/model/ConfigurationChangeActions.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.auditlogging.model; 2 | 3 | public enum ConfigurationChangeActions { 4 | 5 | CONFIGURATION_CREATE("configuration-create"), 6 | CONFIGURATION_UPDATE("configuration-update"), 7 | CONFIGURATION_DELETE("configuration-delete"); 8 | 9 | private final String configurationAction; 10 | 11 | ConfigurationChangeActions(String configurationAction) { 12 | this.configurationAction = configurationAction; 13 | } 14 | 15 | public String getConfigurationChangeAction() { 16 | return this.configurationAction; 17 | } 18 | } -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/mta/devxwebide/mtad.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "2.0.0" 2 | ID: com.sap.devx.webide 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: webide 7 | type: javascript.nodejs 8 | requires: 9 | - name: uaa 10 | - name: sapui5 11 | group: destinations 12 | properties: 13 | name: sapui5 14 | url: ~{url} 15 | - name: che 16 | group: destinations 17 | properties: 18 | name: che 19 | url: ~{url} 20 | 21 | resources: 22 | - name: uaa 23 | type: org.cloudfoundry.existing-service 24 | 25 | - name: sapui5 26 | properties: 27 | url: 28 | 29 | - name: che 30 | properties: 31 | url: 32 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/test/resources/org/cloudfoundry/multiapps/controller/core/helpers/v3/mtad-02.yaml: -------------------------------------------------------------------------------- 1 | _schema-version: "3" 2 | ID: mta-1 3 | version: 1.0.0 4 | 5 | modules: 6 | - name: framework 7 | type: javascript.nodejs 8 | requires: 9 | - name: service-1 10 | 11 | resources: 12 | - name: service-1 13 | type: org.cloudfoundry.user-provided-service 14 | requires: 15 | - name: plugins 16 | list: plugins 17 | properties: 18 | plugin_name: ~{plugin_name} 19 | url: ~{url} 20 | 21 | - name: plugins 22 | type: configuration 23 | parameters: 24 | filter: 25 | type: com.acme.plugin 26 | properties: 27 | foo: bar 28 | baz: qux -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/deployed-mta-07.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "id": "test", 4 | "version": "0.1.0" 5 | }, 6 | "applications": [ 7 | { 8 | "moduleName": "a", 9 | "name": "namespace.a", 10 | "boundMtaServices": [], 11 | "providedDependencyNames": [] 12 | }, 13 | { 14 | "moduleName": "b", 15 | "name": "namespace.b", 16 | "boundMtaServices": [], 17 | "providedDependencyNames": [] 18 | }, 19 | { 20 | "moduleName": "c", 21 | "name": "namespace.c", 22 | "boundMtaServices": [], 23 | "providedDependencyNames": [] 24 | } 25 | ], 26 | "services": [] 27 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/util/deployed-mta-03.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "id": "com.sap.sample.mta.consumer" 4 | }, 5 | "applications": [ 6 | { 7 | "moduleName": "app-1", 8 | "name": "app-1", 9 | "metadata": { 10 | "createdAt": "2019-04-04T00:00:00" 11 | } 12 | }, 13 | { 14 | "moduleName": "app-2", 15 | "name": "app-2", 16 | "metadata": { 17 | "createdAt": "2019-04-05T00:00:00" 18 | } 19 | }, 20 | { 21 | "moduleName": "app-3", 22 | "name": "app-3", 23 | "metadata": { 24 | "createdAt": "2019-04-06T00:00:00" 25 | } 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/InstanceInfo.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 4 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 5 | import org.cloudfoundry.multiapps.controller.client.facade.Nullable; 6 | import org.immutables.value.Value; 7 | 8 | @Value.Immutable 9 | @JsonSerialize(as = ImmutableInstanceInfo.class) 10 | @JsonDeserialize(as = ImmutableInstanceInfo.class) 11 | public interface InstanceInfo { 12 | 13 | int getIndex(); 14 | 15 | InstanceState getState(); 16 | 17 | @Nullable 18 | Boolean isRoutable(); 19 | } 20 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/cf/detect/AppSuffixDeterminer.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.cf.detect; 2 | 3 | public class AppSuffixDeterminer { 4 | 5 | private final boolean keepOriginalNamesAfterDeploy; 6 | private final boolean isAfterResumePhase; 7 | 8 | public AppSuffixDeterminer(boolean keepOriginalNamesAfterDeploy, boolean isAfterResumePhase) { 9 | this.keepOriginalNamesAfterDeploy = keepOriginalNamesAfterDeploy; 10 | this.isAfterResumePhase = isAfterResumePhase; 11 | } 12 | 13 | public boolean shouldAppendApplicationSuffix() { 14 | return keepOriginalNamesAfterDeploy && isAfterResumePhase; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/determine-actions-create-or-update-services-step-input-10-update-credentials.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "name": "service-1", 4 | "label": "uaa", 5 | "plan": "test", 6 | "credentials": { 7 | "user": "service-key-user", 8 | "password": "service-key-password" 9 | }, 10 | "tags": [] 11 | }, 12 | "existingService": { 13 | "name": "service-1", 14 | "label": "uaa", 15 | "plan": "test", 16 | "credentials": { 17 | "user": "otherUser", 18 | "password": "otherPass" 19 | }, 20 | "metadata": {"guid": "400bfc4d-5fce-4a41-bae7-765345e1ce27"}, 21 | "tags": [] 22 | }, 23 | "shouldUpdateServiceParameters": true 24 | } -------------------------------------------------------------------------------- /multiapps-controller-process/src/test/resources/org/cloudfoundry/multiapps/controller/process/steps/determine-actions-create-or-update-services-step-input-7-update-credentials.json: -------------------------------------------------------------------------------- 1 | { 2 | "service": { 3 | "name": "service-1", 4 | "label": "uaa", 5 | "plan": "test", 6 | "credentials": { 7 | "user": "service-key-user", 8 | "password": "service-key-password" 9 | }, 10 | "tags": [] 11 | }, 12 | "existingService": { 13 | "name": "service-1", 14 | "label": "uaa", 15 | "plan": "test", 16 | "credentials": { 17 | "user": "otherUser", 18 | "password": "otherPass" 19 | }, 20 | "metadata": {"guid": "beeb5e8d-4ab9-46ee-9205-455a278743f0"}, 21 | "tags": [] 22 | }, 23 | "shouldUpdateServiceParameters": true 24 | } -------------------------------------------------------------------------------- /multiapps-controller-client/src/main/java/org/cloudfoundry/multiapps/controller/client/facade/domain/CloudOrganization.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.client.facade.domain; 2 | 3 | import org.immutables.value.Value; 4 | 5 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 6 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 7 | 8 | @Value.Immutable 9 | @JsonSerialize(as = ImmutableCloudOrganization.class) 10 | @JsonDeserialize(as = ImmutableCloudOrganization.class) 11 | public abstract class CloudOrganization extends CloudEntity implements Derivable { 12 | 13 | @Override 14 | public CloudOrganization derive() { 15 | return this; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /multiapps-controller-core/src/main/java/org/cloudfoundry/multiapps/controller/core/application/health/model/ApplicationHealthResult.java: -------------------------------------------------------------------------------- 1 | package org.cloudfoundry.multiapps.controller.core.application.health.model; 2 | 3 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 4 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 5 | import org.immutables.value.Value; 6 | 7 | @Value.Immutable 8 | @JsonSerialize(as = ImmutableApplicationHealthResult.class) 9 | @JsonDeserialize(as = ImmutableApplicationHealthResult.class) 10 | public interface ApplicationHealthResult { 11 | 12 | Status getStatus(); 13 | 14 | Boolean hasIncreasedLocks(); 15 | 16 | enum Status { 17 | UP, DOWN 18 | } 19 | 20 | } 21 | --------------------------------------------------------------------------------