From f6b68c800e2f2dd50cbcefe90b73933af028c141 Mon Sep 17 00:00:00 2001 From: Alberto Rios Date: Thu, 25 Oct 2018 17:19:35 +0200 Subject: [PATCH] Adding service instance name to services --- ...nceWithExistingServicesAcceptanceTest.java | 2 +- .../deployer/BackingApplication.java | 12 ++-- .../appbroker/deployer/DeployerClient.java | 4 +- .../appbroker/deployer/ServicesSpec.java | 58 +++++++++++++++++++ .../deployer/DeployerClientTest.java | 14 +++-- ...anceWithExistingServicesComponentTest.java | 4 +- 6 files changed, 79 insertions(+), 15 deletions(-) create mode 100644 spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/ServicesSpec.java diff --git a/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CreateInstanceWithExistingServicesAcceptanceTest.java b/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CreateInstanceWithExistingServicesAcceptanceTest.java index c9e7601..7f295c7 100644 --- a/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CreateInstanceWithExistingServicesAcceptanceTest.java +++ b/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CreateInstanceWithExistingServicesAcceptanceTest.java @@ -21,7 +21,7 @@ class CreateInstanceWithExistingServicesAcceptanceTest extends CloudFoundryAccep "spring.cloud.appbroker.services[0].plan-name=standard", "spring.cloud.appbroker.services[0].apps[0].name=" + BROKER_APP_SERVICES, "spring.cloud.appbroker.services[0].apps[0].path=classpath:demo.jar", - "spring.cloud.appbroker.services[0].apps[0].services[0]=" + SI_1_NAME + "spring.cloud.appbroker.services[0].apps[0].services[0].service-instance-name=" + SI_1_NAME }) void shouldPushAppWithServicesBind() { // given that a service instance of the specified service exists diff --git a/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/BackingApplication.java b/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/BackingApplication.java index 807f43e..33ebb32 100644 --- a/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/BackingApplication.java +++ b/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/BackingApplication.java @@ -31,7 +31,7 @@ public class BackingApplication { private String path; private Map properties; private Map environment; - private List services; + private List services; private List parametersTransformers; private List credentialProviders; private TargetSpec target; @@ -63,7 +63,7 @@ public class BackingApplication { BackingApplication(String name, String path, Map properties, Map environment, - List services, + List services, List parametersTransformers, List credentialProviders, TargetSpec target) { @@ -117,11 +117,11 @@ public class BackingApplication { environment.put(key, value); } - public List getServices() { + public List getServices() { return services; } - public void setServices(List services) { + public void setServices(List services) { this.services = services; } @@ -209,7 +209,7 @@ public class BackingApplication { private String path; private final Map properties = new HashMap<>(); private final Map environment = new HashMap<>(); - private final List services = new ArrayList<>(); + private final List services = new ArrayList<>(); private final List parameterTransformers = new ArrayList<>(); private final List credentialProviders = new ArrayList<>(); private TargetSpec target; @@ -247,7 +247,7 @@ public class BackingApplication { return this; } - public BackingApplicationBuilder services(String... services) { + public BackingApplicationBuilder services(ServicesSpec... services) { this.services.addAll(Arrays.asList(services)); return this; } diff --git a/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/DeployerClient.java b/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/DeployerClient.java index f351031..559c2af 100644 --- a/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/DeployerClient.java +++ b/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/DeployerClient.java @@ -16,6 +16,8 @@ package org.springframework.cloud.appbroker.deployer; +import java.util.stream.Collectors; + import reactor.core.publisher.Mono; import reactor.util.Logger; import reactor.util.Loggers; @@ -36,7 +38,7 @@ public class DeployerClient { .path(backingApplication.getPath()) .properties(backingApplication.getProperties()) .environment(backingApplication.getEnvironment()) - .services(backingApplication.getServices()) + .services(backingApplication.getServices().stream().map(ServicesSpec::getServiceInstanceName).collect(Collectors.toList())) .build()) .doOnRequest(l -> log.info("Deploying application {}", backingApplication.getName())) .doOnSuccess(d -> log.info("Finished deploying application {}", backingApplication.getName())) diff --git a/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/ServicesSpec.java b/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/ServicesSpec.java new file mode 100644 index 0000000..97ccba1 --- /dev/null +++ b/spring-cloud-app-broker-core/src/main/java/org/springframework/cloud/appbroker/deployer/ServicesSpec.java @@ -0,0 +1,58 @@ +/* + * Copyright 2016-2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.appbroker.deployer; + +public class ServicesSpec { + + private String serviceInstanceName; + + private ServicesSpec() { + } + + ServicesSpec(String serviceInstanceName) { + this.serviceInstanceName = serviceInstanceName; + } + + public String getServiceInstanceName() { + return serviceInstanceName; + } + + public void setServiceInstanceName(String serviceInstanceName) { + this.serviceInstanceName = serviceInstanceName; + } + + public static ServicesSpecBuilder builder() { + return new ServicesSpecBuilder(); + } + + public static class ServicesSpecBuilder { + + private String serviceInstanceName; + + ServicesSpecBuilder() { + } + + ServicesSpecBuilder serviceInstanceName(String serviceInstanceName) { + this.serviceInstanceName = serviceInstanceName; + return this; + } + + public ServicesSpec build() { + return new ServicesSpec(serviceInstanceName); + } + } +} diff --git a/spring-cloud-app-broker-core/src/test/java/org/springframework/cloud/appbroker/deployer/DeployerClientTest.java b/spring-cloud-app-broker-core/src/test/java/org/springframework/cloud/appbroker/deployer/DeployerClientTest.java index bb8e7a5..36a1834 100644 --- a/spring-cloud-app-broker-core/src/test/java/org/springframework/cloud/appbroker/deployer/DeployerClientTest.java +++ b/spring-cloud-app-broker-core/src/test/java/org/springframework/cloud/appbroker/deployer/DeployerClientTest.java @@ -105,11 +105,15 @@ class DeployerClientTest { // given setupAppDeployer(); - BackingApplication application = BackingApplication.builder() - .name(APP_NAME) - .path(APP_PATH) - .services("my-db-service") - .build(); + BackingApplication application = + BackingApplication + .builder() + .name(APP_NAME) + .path(APP_PATH) + .services(ServicesSpec.builder() + .serviceInstanceName("my-db-service") + .build()) + .build(); // when StepVerifier.create(deployerClient.deploy(application)) diff --git a/spring-cloud-app-broker-sample/src/test/java/org.springframework.cloud.appbroker/sample/CreateInstanceWithExistingServicesComponentTest.java b/spring-cloud-app-broker-sample/src/test/java/org.springframework.cloud.appbroker/sample/CreateInstanceWithExistingServicesComponentTest.java index 3784bdb..67dfead 100644 --- a/spring-cloud-app-broker-sample/src/test/java/org.springframework.cloud.appbroker/sample/CreateInstanceWithExistingServicesComponentTest.java +++ b/spring-cloud-app-broker-sample/src/test/java/org.springframework.cloud.appbroker/sample/CreateInstanceWithExistingServicesComponentTest.java @@ -38,8 +38,8 @@ import static org.springframework.cloud.appbroker.sample.CreateInstanceWithExist "spring.cloud.appbroker.services[0].plan-name=standard", "spring.cloud.appbroker.services[0].apps[0].path=classpath:demo.jar", "spring.cloud.appbroker.services[0].apps[0].name=" + APP_NAME, - "spring.cloud.appbroker.services[0].apps[0].services[0]=" + SERVICE_INSTANCE_1_NAME, - "spring.cloud.appbroker.services[0].apps[0].services[1]=" + SERVICE_INSTANCE_2_NAME + "spring.cloud.appbroker.services[0].apps[0].services[0].service-instance-name=" + SERVICE_INSTANCE_1_NAME, + "spring.cloud.appbroker.services[0].apps[0].services[1].service-instance-name=" + SERVICE_INSTANCE_2_NAME }) class CreateInstanceWithExistingServicesComponentTest extends WiremockComponentTest {