Deploy all the backing apps of a given service to a single space
Connected to #133
This commit is contained in:
committed by
Scott Frederick
parent
64f1072a4b
commit
0f703d2ec6
@@ -36,10 +36,9 @@ class CreateInstanceWithTargetAcceptanceTest extends CloudFoundryAcceptanceTest
|
||||
"spring.cloud.appbroker.services[0].plan-name=standard",
|
||||
"spring.cloud.appbroker.services[0].apps[0].name=" + BROKER_SAMPLE_APP_CREATE_WITH_TARGET,
|
||||
"spring.cloud.appbroker.services[0].apps[0].path=classpath:demo.jar",
|
||||
"spring.cloud.appbroker.services[0].apps[0].target.name=SpacePerServiceInstance",
|
||||
"spring.cloud.appbroker.services[0].apps[1].name=" + BROKER_SAMPLE_APP_CREATE_WITH_TARGET_OTHER,
|
||||
"spring.cloud.appbroker.services[0].apps[1].path=classpath:demo.jar",
|
||||
"spring.cloud.appbroker.services[0].apps[1].target.name=SpacePerServiceInstance"
|
||||
"spring.cloud.appbroker.services[0].target.name=SpacePerServiceInstance"
|
||||
})
|
||||
void shouldCreateMultipleAppsInSpace() {
|
||||
// when a service instance is created with targets
|
||||
|
||||
@@ -39,8 +39,8 @@ class UpdateInstanceWithTargetAcceptanceTest extends CloudFoundryAcceptanceTest
|
||||
"spring.cloud.appbroker.services[0].plan-name=standard",
|
||||
"spring.cloud.appbroker.services[0].apps[0].name=" + BROKER_SAMPLE_APP_CREATE_WITH_TARGET,
|
||||
"spring.cloud.appbroker.services[0].apps[0].path=classpath:demo.jar",
|
||||
"spring.cloud.appbroker.services[0].apps[0].target.name=SpacePerServiceInstance",
|
||||
"spring.cloud.appbroker.services[0].apps[0].environment.parameter1=config1"
|
||||
"spring.cloud.appbroker.services[0].apps[0].environment.parameter1=config1",
|
||||
"spring.cloud.appbroker.services[0].target.name=SpacePerServiceInstance"
|
||||
})
|
||||
void shouldCreateAppInTargetWhenAddingNewProperties() {
|
||||
// when a service instance is created
|
||||
|
||||
@@ -34,7 +34,6 @@ public class BackingApplication {
|
||||
private List<ServicesSpec> services;
|
||||
private List<ParametersTransformerSpec> parametersTransformers;
|
||||
private List<CredentialProviderSpec> credentialProviders;
|
||||
private TargetSpec target;
|
||||
|
||||
public BackingApplication(BackingApplication backingApplicationToCopy) {
|
||||
this.name = backingApplicationToCopy.name;
|
||||
@@ -54,7 +53,6 @@ public class BackingApplication {
|
||||
this.credentialProviders = backingApplicationToCopy.credentialProviders == null
|
||||
? new ArrayList<>()
|
||||
: new ArrayList<>(backingApplicationToCopy.credentialProviders);
|
||||
this.target = backingApplicationToCopy.target;
|
||||
}
|
||||
|
||||
private BackingApplication() {
|
||||
@@ -65,8 +63,7 @@ public class BackingApplication {
|
||||
Map<String, String> environment,
|
||||
List<ServicesSpec> services,
|
||||
List<ParametersTransformerSpec> parametersTransformers,
|
||||
List<CredentialProviderSpec> credentialProviders,
|
||||
TargetSpec target) {
|
||||
List<CredentialProviderSpec> credentialProviders) {
|
||||
this.name = name;
|
||||
this.path = path;
|
||||
this.properties = properties;
|
||||
@@ -74,7 +71,6 @@ public class BackingApplication {
|
||||
this.services = services;
|
||||
this.parametersTransformers = parametersTransformers;
|
||||
this.credentialProviders = credentialProviders;
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
@@ -140,15 +136,6 @@ public class BackingApplication {
|
||||
public void setCredentialProviders(List<CredentialProviderSpec> credentialProviders) {
|
||||
this.credentialProviders = credentialProviders;
|
||||
}
|
||||
|
||||
public TargetSpec getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
public void setTarget(TargetSpec target) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public static BackingApplicationBuilder builder() {
|
||||
return new BackingApplicationBuilder();
|
||||
}
|
||||
@@ -168,14 +155,13 @@ public class BackingApplication {
|
||||
Objects.equals(environment, that.environment) &&
|
||||
Objects.equals(services, that.services) &&
|
||||
Objects.equals(parametersTransformers, that.parametersTransformers) &&
|
||||
Objects.equals(credentialProviders, that.credentialProviders) &&
|
||||
Objects.equals(target, that.target);
|
||||
Objects.equals(credentialProviders, that.credentialProviders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int hashCode() {
|
||||
return Objects.hash(name, path, properties, environment, services,
|
||||
parametersTransformers, credentialProviders, target);
|
||||
parametersTransformers, credentialProviders);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -188,7 +174,6 @@ public class BackingApplication {
|
||||
", services=" + services +
|
||||
", parametersTransformers=" + parametersTransformers +
|
||||
", credentialProviders=" + credentialProviders +
|
||||
", target=" + target +
|
||||
'}';
|
||||
}
|
||||
|
||||
@@ -212,7 +197,6 @@ public class BackingApplication {
|
||||
private final List<ServicesSpec> services = new ArrayList<>();
|
||||
private final List<ParametersTransformerSpec> parameterTransformers = new ArrayList<>();
|
||||
private final List<CredentialProviderSpec> credentialProviders = new ArrayList<>();
|
||||
private TargetSpec target;
|
||||
|
||||
BackingApplicationBuilder() {
|
||||
}
|
||||
@@ -262,14 +246,9 @@ public class BackingApplication {
|
||||
return this;
|
||||
}
|
||||
|
||||
public BackingApplicationBuilder target(TargetSpec targetSpec) {
|
||||
this.target = targetSpec;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BackingApplication build() {
|
||||
return new BackingApplication(name, path, properties, environment, services,
|
||||
parameterTransformers, credentialProviders, target);
|
||||
parameterTransformers, credentialProviders);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,15 +24,17 @@ public class BrokeredService {
|
||||
private String planName;
|
||||
private BackingApplications apps;
|
||||
private BackingServices services;
|
||||
private TargetSpec target;
|
||||
|
||||
private BrokeredService() {
|
||||
}
|
||||
|
||||
BrokeredService(String serviceName, String planName, BackingApplications apps, BackingServices services) {
|
||||
BrokeredService(String serviceName, String planName, BackingApplications apps, BackingServices services, TargetSpec target) {
|
||||
this.serviceName = serviceName;
|
||||
this.planName = planName;
|
||||
this.apps = apps;
|
||||
this.services = services;
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public String getServiceName() {
|
||||
@@ -67,6 +69,14 @@ public class BrokeredService {
|
||||
this.services = services;
|
||||
}
|
||||
|
||||
public TargetSpec getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
public void setTarget(TargetSpec target) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public static BrokeredServiceBuilder builder() {
|
||||
return new BrokeredServiceBuilder();
|
||||
}
|
||||
@@ -83,12 +93,13 @@ public class BrokeredService {
|
||||
return Objects.equals(serviceName, that.serviceName) &&
|
||||
Objects.equals(planName, that.planName) &&
|
||||
Objects.equals(apps, that.apps) &&
|
||||
Objects.equals(services, that.services);
|
||||
Objects.equals(services, that.services) &&
|
||||
Objects.equals(target, that.target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int hashCode() {
|
||||
return Objects.hash(serviceName, planName, apps, services);
|
||||
return Objects.hash(serviceName, planName, apps, services, target);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -98,6 +109,7 @@ public class BrokeredService {
|
||||
", planName='" + planName + '\'' +
|
||||
", apps=" + apps +
|
||||
", services=" + services +
|
||||
", target=" + target +
|
||||
'}';
|
||||
}
|
||||
|
||||
@@ -107,6 +119,7 @@ public class BrokeredService {
|
||||
private String planId;
|
||||
private BackingApplications backingApplications;
|
||||
private BackingServices backingServices;
|
||||
private TargetSpec target;
|
||||
|
||||
public BrokeredServiceBuilder serviceName(String id) {
|
||||
this.id = id;
|
||||
@@ -128,8 +141,13 @@ public class BrokeredService {
|
||||
return this;
|
||||
}
|
||||
|
||||
public BrokeredServiceBuilder target(TargetSpec target) {
|
||||
this.target = target;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BrokeredService build() {
|
||||
return new BrokeredService(id, planId, backingApplications, backingServices);
|
||||
return new BrokeredService(id, planId, backingApplications, backingServices, target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,11 +35,11 @@ public class TargetService {
|
||||
}
|
||||
|
||||
public Mono<List<BackingApplication>> add(List<BackingApplication> backingApplications,
|
||||
TargetSpec targetSpec,
|
||||
String serviceInstanceId) {
|
||||
|
||||
return Flux.fromIterable(backingApplications)
|
||||
.flatMap(backingApplication -> {
|
||||
TargetSpec targetSpec = backingApplication.getTarget();
|
||||
if (targetSpec != null) {
|
||||
Target target = locator.getByName(targetSpec.getName(), Collections.emptyMap());
|
||||
return target.apply(backingApplication, serviceInstanceId);
|
||||
|
||||
@@ -66,7 +66,7 @@ public class AppDeploymentCreateServiceInstanceWorkflow
|
||||
.flatMapMany(backingServicesProvisionService::createServiceInstance)
|
||||
.thenMany(
|
||||
getBackingApplicationsForService(request.getServiceDefinition(), request.getPlanId())
|
||||
.flatMap(backingApps -> targetService.add(backingApps, request.getServiceInstanceId()))
|
||||
.flatMap(backingApps -> targetService.add(backingApps, getTargetForService(request.getServiceDefinition(), request.getPlanId()) , request.getServiceInstanceId()))
|
||||
.flatMap(backingApps -> parametersTransformationService.transformParameters(backingApps, request.getParameters()))
|
||||
.flatMap(backingApplications -> credentialProviderService.addCredentials(backingApplications, request.getServiceInstanceId()))
|
||||
.flatMapMany(deploymentService::deploy)
|
||||
|
||||
@@ -63,7 +63,7 @@ public class AppDeploymentDeleteServiceInstanceWorkflow
|
||||
.thenMany(
|
||||
getBackingApplicationsForService(request.getServiceDefinition(), request.getPlanId())
|
||||
.flatMap(backingApplications -> credentialProviderService.deleteCredentials(backingApplications, request.getServiceInstanceId()))
|
||||
.flatMap(backingApps -> targetService.add(backingApps, request.getServiceInstanceId()))
|
||||
.flatMap(backingApps -> targetService.add(backingApps, getTargetForService(request.getServiceDefinition(), request.getPlanId()), request.getServiceInstanceId()))
|
||||
.flatMapMany(deploymentService::undeploy)
|
||||
.doOnRequest(l -> log.info("Undeploying applications {}", brokeredServices))
|
||||
.doOnEach(s -> log.info("Finished undeploying {}", s))
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.springframework.cloud.appbroker.deployer.BackingService;
|
||||
import org.springframework.cloud.appbroker.deployer.BackingServices;
|
||||
import org.springframework.cloud.appbroker.deployer.BrokeredService;
|
||||
import org.springframework.cloud.appbroker.deployer.BrokeredServices;
|
||||
import org.springframework.cloud.appbroker.deployer.TargetSpec;
|
||||
import org.springframework.cloud.servicebroker.model.catalog.ServiceDefinition;
|
||||
|
||||
class AppDeploymentInstanceWorkflow {
|
||||
@@ -42,6 +43,11 @@ class AppDeploymentInstanceWorkflow {
|
||||
.defaultIfEmpty(false);
|
||||
}
|
||||
|
||||
TargetSpec getTargetForService(ServiceDefinition serviceDefinition, String planId) {
|
||||
BrokeredService brokeredService = findBrokeredService(serviceDefinition, planId);
|
||||
return brokeredService == null ? null : brokeredService.getTarget();
|
||||
}
|
||||
|
||||
Mono<List<BackingApplication>> getBackingApplicationsForService(ServiceDefinition serviceDefinition, String planId) {
|
||||
return Mono.defer(() ->
|
||||
Mono.justOrEmpty(findBackingApplications(serviceDefinition, planId)));
|
||||
|
||||
@@ -53,7 +53,7 @@ public class AppDeploymentUpdateServiceInstanceWorkflow
|
||||
|
||||
public Flux<Void> update(UpdateServiceInstanceRequest request) {
|
||||
return getBackingApplicationsForService(request.getServiceDefinition(), request.getPlanId())
|
||||
.flatMap(backingApps -> targetService.add(backingApps, request.getServiceInstanceId()))
|
||||
.flatMap(backingApps -> targetService.add(backingApps, getTargetForService(request.getServiceDefinition(), request.getPlanId()), request.getServiceInstanceId()))
|
||||
.flatMap(backingApps ->
|
||||
parametersTransformationService.transformParameters(backingApps, request.getParameters()))
|
||||
.flatMapMany(deploymentService::deploy)
|
||||
|
||||
@@ -40,11 +40,11 @@ class TargetServiceTest {
|
||||
@Test
|
||||
void shouldAddProperties() {
|
||||
// given an app with a target
|
||||
TargetSpec spacePerServiceInstanceFactory = TargetSpec.builder().name("SpacePerServiceInstance").build();
|
||||
BackingApplication backingApplication = BackingApplication.builder().name("app-name").target(spacePerServiceInstanceFactory).build();
|
||||
TargetSpec targetSpec = TargetSpec.builder().name("SpacePerServiceInstance").build();
|
||||
BackingApplication backingApplication = BackingApplication.builder().name("app-name").build();
|
||||
|
||||
//when add gets called
|
||||
List<BackingApplication> updatedBackingApplications = targetService.add(singletonList(backingApplication), "service-id").block();
|
||||
List<BackingApplication> updatedBackingApplications = targetService.add(singletonList(backingApplication), targetSpec, "service-id").block();
|
||||
|
||||
//then a host and space are added
|
||||
BackingApplication updatedBackingApplication = updatedBackingApplications.get(0);
|
||||
@@ -55,12 +55,12 @@ class TargetServiceTest {
|
||||
@Test
|
||||
void shouldAddPropertiesToAllBackingApps() {
|
||||
// given an app with a target
|
||||
TargetSpec spacePerServiceInstanceFactory = TargetSpec.builder().name("SpacePerServiceInstance").build();
|
||||
BackingApplication backingApplication1 = BackingApplication.builder().name("app-name1").target(spacePerServiceInstanceFactory).build();
|
||||
BackingApplication backingApplication2 = BackingApplication.builder().name("app-name2").target(spacePerServiceInstanceFactory).build();
|
||||
TargetSpec targetSpec = TargetSpec.builder().name("SpacePerServiceInstance").build();
|
||||
BackingApplication backingApplication1 = BackingApplication.builder().name("app-name1").build();
|
||||
BackingApplication backingApplication2 = BackingApplication.builder().name("app-name2").build();
|
||||
|
||||
//when add gets called
|
||||
List<BackingApplication> updatedBackingApplications = targetService.add(Lists.list(backingApplication1, backingApplication2), "service-id").block();
|
||||
List<BackingApplication> updatedBackingApplications = targetService.add(Lists.list(backingApplication1, backingApplication2), targetSpec, "service-id").block();
|
||||
|
||||
//then a host and space are added
|
||||
BackingApplication updatedBackingApplication1 = updatedBackingApplications.get(0);
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.springframework.cloud.appbroker.deployer.BackingServices;
|
||||
import org.springframework.cloud.appbroker.deployer.BackingServicesProvisionService;
|
||||
import org.springframework.cloud.appbroker.deployer.BrokeredService;
|
||||
import org.springframework.cloud.appbroker.deployer.BrokeredServices;
|
||||
import org.springframework.cloud.appbroker.deployer.TargetSpec;
|
||||
import org.springframework.cloud.appbroker.extensions.credentials.CredentialProviderService;
|
||||
import org.springframework.cloud.appbroker.extensions.parameters.ParametersTransformationService;
|
||||
import org.springframework.cloud.appbroker.extensions.targets.TargetService;
|
||||
@@ -70,6 +71,7 @@ class AppDeploymentCreateServiceInstanceWorkflowTest {
|
||||
|
||||
private BackingApplications backingApps;
|
||||
private BackingServices backingServices;
|
||||
private TargetSpec targetSpec;
|
||||
|
||||
private CreateServiceInstanceWorkflow createServiceInstanceWorkflow;
|
||||
|
||||
@@ -107,6 +109,7 @@ class AppDeploymentCreateServiceInstanceWorkflowTest {
|
||||
.planName("plan1")
|
||||
.apps(backingApps)
|
||||
.services(backingServices)
|
||||
.target(targetSpec)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
@@ -170,7 +173,7 @@ class AppDeploymentCreateServiceInstanceWorkflowTest {
|
||||
.verifyComplete();
|
||||
|
||||
final String expectedServiceId = "service-instance-id";
|
||||
verify(targetService).add(backingApps, expectedServiceId);
|
||||
verify(targetService).add(backingApps, targetSpec, expectedServiceId);
|
||||
|
||||
verifyNoMoreInteractionsWithServices();
|
||||
}
|
||||
@@ -193,7 +196,7 @@ class AppDeploymentCreateServiceInstanceWorkflowTest {
|
||||
.willReturn(Mono.just(backingApps));
|
||||
given(this.credentialProviderService.addCredentials(eq(backingApps), eq(request.getServiceInstanceId())))
|
||||
.willReturn(Mono.just(backingApps));
|
||||
given(this.targetService.add(eq(backingApps), eq(request.getServiceInstanceId())))
|
||||
given(this.targetService.add(eq(backingApps), eq(targetSpec), eq(request.getServiceInstanceId())))
|
||||
.willReturn(Mono.just(backingApps));
|
||||
given(this.backingServicesProvisionService.createServiceInstance(eq(backingServices)))
|
||||
.willReturn(Flux.just("my-service-instance"));
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.springframework.cloud.appbroker.deployer.BackingServices;
|
||||
import org.springframework.cloud.appbroker.deployer.BackingServicesProvisionService;
|
||||
import org.springframework.cloud.appbroker.deployer.BrokeredService;
|
||||
import org.springframework.cloud.appbroker.deployer.BrokeredServices;
|
||||
import org.springframework.cloud.appbroker.deployer.TargetSpec;
|
||||
import org.springframework.cloud.appbroker.extensions.credentials.CredentialProviderService;
|
||||
import org.springframework.cloud.appbroker.extensions.targets.TargetService;
|
||||
import org.springframework.cloud.appbroker.service.DeleteServiceInstanceWorkflow;
|
||||
@@ -61,6 +62,7 @@ class AppDeploymentDeleteServiceInstanceWorkflowTest {
|
||||
|
||||
private BackingApplications backingApps;
|
||||
private BackingServices backingServices;
|
||||
private TargetSpec targetSpec;
|
||||
|
||||
private DeleteServiceInstanceWorkflow deleteServiceInstanceWorkflow;
|
||||
|
||||
@@ -98,6 +100,7 @@ class AppDeploymentDeleteServiceInstanceWorkflowTest {
|
||||
.planName("plan1")
|
||||
.apps(backingApps)
|
||||
.services(backingServices)
|
||||
.target(targetSpec)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
@@ -118,7 +121,7 @@ class AppDeploymentDeleteServiceInstanceWorkflowTest {
|
||||
.willReturn(Flux.just("undeployed1", "undeployed2"));
|
||||
given(this.credentialProviderService.deleteCredentials(eq(backingApps), eq(request.getServiceInstanceId())))
|
||||
.willReturn(Mono.just(backingApps));
|
||||
given(this.targetService.add(eq(backingApps), eq("service-instance-id")))
|
||||
given(this.targetService.add(eq(backingApps), eq(targetSpec), eq("service-instance-id")))
|
||||
.willReturn(Mono.just(backingApps));
|
||||
given(this.backingServicesProvisionService.deleteServiceInstance(eq(backingServices)))
|
||||
.willReturn(Flux.just("my-service-instance"));
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.springframework.cloud.appbroker.deployer.BackingApplication;
|
||||
import org.springframework.cloud.appbroker.deployer.BackingApplications;
|
||||
import org.springframework.cloud.appbroker.deployer.BrokeredService;
|
||||
import org.springframework.cloud.appbroker.deployer.BrokeredServices;
|
||||
import org.springframework.cloud.appbroker.deployer.TargetSpec;
|
||||
import org.springframework.cloud.appbroker.extensions.parameters.ParametersTransformationService;
|
||||
import org.springframework.cloud.appbroker.extensions.targets.TargetService;
|
||||
import org.springframework.cloud.servicebroker.model.catalog.Plan;
|
||||
@@ -57,6 +58,7 @@ class AppDeploymentUpdateServiceInstanceWorkflowTest {
|
||||
private TargetService targetService;
|
||||
|
||||
private BackingApplications backingApps;
|
||||
private TargetSpec targetSpec;
|
||||
private AppDeploymentUpdateServiceInstanceWorkflow updateServiceInstanceWorkflow;
|
||||
|
||||
@BeforeEach
|
||||
@@ -79,6 +81,7 @@ class AppDeploymentUpdateServiceInstanceWorkflowTest {
|
||||
.serviceName("service1")
|
||||
.planName("plan1")
|
||||
.apps(backingApps)
|
||||
.target(targetSpec)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
@@ -96,7 +99,7 @@ class AppDeploymentUpdateServiceInstanceWorkflowTest {
|
||||
|
||||
given(this.backingAppDeploymentService.deploy(eq(backingApps)))
|
||||
.willReturn(Flux.just("app1", "app2"));
|
||||
given(this.targetService.add(eq(backingApps), eq("service-instance-id")))
|
||||
given(this.targetService.add(eq(backingApps), eq(targetSpec), eq("service-instance-id")))
|
||||
.willReturn(Mono.just(backingApps));
|
||||
given(this.parametersTransformationService.transformParameters(eq(backingApps), eq(request.getParameters())))
|
||||
.willReturn(Mono.just(backingApps));
|
||||
@@ -121,7 +124,7 @@ class AppDeploymentUpdateServiceInstanceWorkflowTest {
|
||||
.willReturn(Flux.just("app1", "app2"));
|
||||
given(this.parametersTransformationService.transformParameters(eq(backingApps), eq(request.getParameters())))
|
||||
.willReturn(Mono.just(backingApps));
|
||||
given(this.targetService.add(eq(backingApps), eq("service-instance-id")))
|
||||
given(this.targetService.add(eq(backingApps), eq(targetSpec), eq("service-instance-id")))
|
||||
.willReturn(Mono.just(backingApps));
|
||||
|
||||
StepVerifier
|
||||
|
||||
@@ -36,7 +36,7 @@ import static org.springframework.cloud.appbroker.sample.CreateInstanceWithTarge
|
||||
"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].target.name=SpacePerServiceInstance"
|
||||
"spring.cloud.appbroker.services[0].target.name=SpacePerServiceInstance"
|
||||
})
|
||||
class CreateInstanceWithTargetComponentTest extends WiremockComponentTest {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user