Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package org.cloudfoundry.operations;

import org.cloudfoundry.client.CloudFoundryClient;
import org.cloudfoundry.operations.advanced.Advanced;
import org.cloudfoundry.operations.applications.Applications;
import org.cloudfoundry.operations.buildpacks.Buildpacks;
Expand Down Expand Up @@ -66,7 +67,9 @@ public interface CloudFoundryOperations {
* Main entry point to the Cloud Foundry Domains Operations API
*
* @return the Cloud Foundry Domains Operations API
* @deprecated use {@link CloudFoundryClient#domainsV3()} instead.
*/
@Deprecated
Domains domains();

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,15 @@ public Buildpacks buildpacks() {
@Override
@Value.Derived
public Domains domains() {
return new DefaultDomains(getCloudFoundryClientPublisher(), getRoutingClientPublisher());
CloudFoundryClient cloudFoundryClient = getCloudFoundryClient();
if (cloudFoundryClient == null) {
throw new IllegalStateException("CloudFoundryClient must be set");
}
RoutingClient routingClient = getRoutingClient();
if (routingClient == null) {
throw new IllegalStateException("RoutingClient must be set");
}
return new DefaultDomains(cloudFoundryClient, routingClient);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,129 +45,99 @@

public final class DefaultDomains implements Domains {

private final Mono<CloudFoundryClient> cloudFoundryClient;
private final CloudFoundryClient cloudFoundryClient;

private final Mono<RoutingClient> routingClient;
private final RoutingClient routingClient;

public DefaultDomains(
Mono<CloudFoundryClient> cloudFoundryClient, Mono<RoutingClient> routingClient) {
public DefaultDomains(CloudFoundryClient cloudFoundryClient, RoutingClient routingClient) {
this.cloudFoundryClient = cloudFoundryClient;
this.routingClient = routingClient;
}

/**
* @deprecated use {@link DefaultDomains(CloudFoundryClient, RoutingClient)} instead.
*/
@Deprecated
public DefaultDomains(
Mono<CloudFoundryClient> cloudFoundryClient, Mono<RoutingClient> routingClient) {
this.cloudFoundryClient = cloudFoundryClient.block();
this.routingClient = routingClient.block();
}

@Deprecated
@Override
public Mono<Void> create(CreateDomainRequest request) {
return this.cloudFoundryClient
.flatMap(
cloudFoundryClient ->
Mono.zip(
Mono.just(cloudFoundryClient),
getOrganizationId(
cloudFoundryClient, request.getOrganization())))
.flatMap(
function(
(cloudFoundryClient, organizationId) ->
requestCreateDomain(
cloudFoundryClient,
request.getDomain(),
organizationId)))
return getOrganizationId(request.getOrganization())
.flatMap(organizationId -> requestCreateDomain(request.getDomain(), organizationId))
.then()
.transform(OperationsLogging.log("Create Domain"))
.checkpoint();
}

@Deprecated
@Override
public Mono<Void> createShared(CreateSharedDomainRequest request) {
if (request.getRouterGroup() == null) {
return this.cloudFoundryClient
.flatMap(
cloudFoundryClient ->
requestCreateSharedDomain(
cloudFoundryClient, request.getDomain(), null))
return requestCreateSharedDomain(request.getDomain(), null)
.then()
.transform(OperationsLogging.log("Create Shared Domain"))
.checkpoint();
} else {
return Mono.zip(this.cloudFoundryClient, this.routingClient)
.flatMap(
function(
(cloudFoundryClient, routingClient) ->
Mono.zip(
Mono.just(cloudFoundryClient),
getRouterGroupId(
routingClient,
request.getRouterGroup()))))
return getRouterGroupId(routingClient, request.getRouterGroup())
.flatMap(
function(
(cloudFoundryClient, routerGroupId) ->
requestCreateSharedDomain(
cloudFoundryClient,
request.getDomain(),
routerGroupId)))
routerGroupId ->
requestCreateSharedDomain(request.getDomain(), routerGroupId))
.then()
.transform(OperationsLogging.log("Create Shared Domain"))
.checkpoint();
}
}

@Deprecated
@Override
public Flux<Domain> list() {
return this.cloudFoundryClient
.flatMapMany(
cloudFoundryClient ->
requestListPrivateDomains(cloudFoundryClient)
.map(DefaultDomains::toDomain)
.mergeWith(
requestListSharedDomains(cloudFoundryClient)
.map(DefaultDomains::toDomain)))
return requestListPrivateDomains()
.map(DefaultDomains::toDomain)
.mergeWith(requestListSharedDomains().map(DefaultDomains::toDomain))
.transform(OperationsLogging.log("List Domains"))
.checkpoint();
}

@Deprecated
@Override
public Flux<RouterGroup> listRouterGroups() {
return this.routingClient
.flatMapMany(DefaultDomains::requestListRouterGroups)
return requestListRouterGroups(routingClient)
.flatMapIterable(ListRouterGroupsResponse::getRouterGroups)
.map(DefaultDomains::toRouterGroup)
.transform(OperationsLogging.log("List Router Groups"))
.checkpoint();
}

@Deprecated
@Override
public Mono<Void> share(ShareDomainRequest request) {
return this.cloudFoundryClient
.flatMap(
cloudFoundryClient ->
Mono.zip(
Mono.just(cloudFoundryClient),
getPrivateDomainId(cloudFoundryClient, request.getDomain()),
getOrganizationId(
cloudFoundryClient, request.getOrganization())))
.flatMap(function(DefaultDomains::requestAssociateOrganizationPrivateDomainRequest))
return Mono.zip(
getPrivateDomainId(request.getDomain()),
getOrganizationId(request.getOrganization()))
.flatMap(function(this::requestAssociateOrganizationPrivateDomainRequest))
.then()
.transform(OperationsLogging.log("Share Domain"))
.checkpoint();
}

@Deprecated
@Override
public Mono<Void> unshare(UnshareDomainRequest request) {
return this.cloudFoundryClient
.flatMap(
cloudFoundryClient ->
Mono.zip(
Mono.just(cloudFoundryClient),
getPrivateDomainId(cloudFoundryClient, request.getDomain()),
getOrganizationId(
cloudFoundryClient, request.getOrganization())))
.flatMap(function(DefaultDomains::requestRemoveOrganizationPrivateDomainRequest))
return Mono.zip(
getPrivateDomainId(request.getDomain()),
getOrganizationId(request.getOrganization()))
.flatMap(function(this::requestRemoveOrganizationPrivateDomainRequest))
.transform(OperationsLogging.log("Unshare Domain"))
.checkpoint();
}

private static Mono<OrganizationResource> getOrganization(
CloudFoundryClient cloudFoundryClient, String organization) {
return requestOrganizations(cloudFoundryClient, organization)
private Mono<OrganizationResource> getOrganization(String organization) {
return requestOrganizations(organization)
.single()
.onErrorResume(
NoSuchElementException.class,
Expand All @@ -176,14 +146,12 @@ private static Mono<OrganizationResource> getOrganization(
"Organization %s does not exist", organization));
}

private static Mono<String> getOrganizationId(
CloudFoundryClient cloudFoundryClient, String organization) {
return getOrganization(cloudFoundryClient, organization).map(ResourceUtils::getId);
private Mono<String> getOrganizationId(String organization) {
return getOrganization(organization).map(ResourceUtils::getId);
}

private static Mono<PrivateDomainResource> getPrivateDomain(
CloudFoundryClient cloudFoundryClient, String domain) {
return requestListPrivateDomains(cloudFoundryClient, domain)
private Mono<PrivateDomainResource> getPrivateDomain(String domain) {
return requestListPrivateDomains(domain)
.single()
.onErrorResume(
NoSuchElementException.class,
Expand All @@ -192,9 +160,8 @@ private static Mono<PrivateDomainResource> getPrivateDomain(
"Private domain %s does not exist", domain));
}

private static Mono<String> getPrivateDomainId(
CloudFoundryClient cloudFoundryClient, String domain) {
return getPrivateDomain(cloudFoundryClient, domain).map(ResourceUtils::getId);
private Mono<String> getPrivateDomainId(String domain) {
return getPrivateDomain(domain).map(ResourceUtils::getId);
}

private static Mono<String> getRouterGroupId(RoutingClient routingClient, String routerGroup) {
Expand All @@ -205,10 +172,10 @@ private static Mono<String> getRouterGroupId(RoutingClient routingClient, String
.map(org.cloudfoundry.routing.v1.routergroups.RouterGroup::getRouterGroupId);
}

private static Mono<AssociateOrganizationPrivateDomainResponse>
private Mono<AssociateOrganizationPrivateDomainResponse>
requestAssociateOrganizationPrivateDomainRequest(
CloudFoundryClient cloudFoundryClient, String domainId, String organizationId) {
return cloudFoundryClient
String domainId, String organizationId) {
return this.cloudFoundryClient
.organizations()
.associatePrivateDomain(
AssociateOrganizationPrivateDomainRequest.builder()
Expand All @@ -217,9 +184,9 @@ private static Mono<String> getRouterGroupId(RoutingClient routingClient, String
.build());
}

private static Mono<CreatePrivateDomainResponse> requestCreateDomain(
CloudFoundryClient cloudFoundryClient, String domain, String organizationId) {
return cloudFoundryClient
private Mono<CreatePrivateDomainResponse> requestCreateDomain(
String domain, String organizationId) {
return this.cloudFoundryClient
.privateDomains()
.create(
CreatePrivateDomainRequest.builder()
Expand All @@ -228,9 +195,9 @@ private static Mono<CreatePrivateDomainResponse> requestCreateDomain(
.build());
}

private static Mono<CreateSharedDomainResponse> requestCreateSharedDomain(
CloudFoundryClient cloudFoundryClient, String domain, String routerGroupId) {
return cloudFoundryClient
private Mono<CreateSharedDomainResponse> requestCreateSharedDomain(
String domain, String routerGroupId) {
return this.cloudFoundryClient
.sharedDomains()
.create(
org.cloudfoundry.client.v2.shareddomains.CreateSharedDomainRequest.builder()
Expand All @@ -239,11 +206,10 @@ private static Mono<CreateSharedDomainResponse> requestCreateSharedDomain(
.build());
}

private static Flux<PrivateDomainResource> requestListPrivateDomains(
CloudFoundryClient cloudFoundryClient, String domain) {
private Flux<PrivateDomainResource> requestListPrivateDomains(String domain) {
return PaginationUtils.requestClientV2Resources(
page ->
cloudFoundryClient
this.cloudFoundryClient
.privateDomains()
.list(
ListPrivateDomainsRequest.builder()
Expand All @@ -252,11 +218,10 @@ private static Flux<PrivateDomainResource> requestListPrivateDomains(
.build()));
}

private static Flux<PrivateDomainResource> requestListPrivateDomains(
CloudFoundryClient cloudFoundryClient) {
private Flux<PrivateDomainResource> requestListPrivateDomains() {
return PaginationUtils.requestClientV2Resources(
page ->
cloudFoundryClient
this.cloudFoundryClient
.privateDomains()
.list(ListPrivateDomainsRequest.builder().page(page).build()));
}
Expand All @@ -270,20 +235,18 @@ private static Mono<ListRouterGroupsResponse> requestListRouterGroups(
.build());
}

private static Flux<SharedDomainResource> requestListSharedDomains(
CloudFoundryClient cloudFoundryClient) {
private Flux<SharedDomainResource> requestListSharedDomains() {
return PaginationUtils.requestClientV2Resources(
page ->
cloudFoundryClient
this.cloudFoundryClient
.sharedDomains()
.list(ListSharedDomainsRequest.builder().page(page).build()));
}

private static Flux<OrganizationResource> requestOrganizations(
CloudFoundryClient cloudFoundryClient, String organization) {
private Flux<OrganizationResource> requestOrganizations(String organization) {
return PaginationUtils.requestClientV2Resources(
page ->
cloudFoundryClient
this.cloudFoundryClient
.organizations()
.list(
ListOrganizationsRequest.builder()
Expand All @@ -292,9 +255,9 @@ private static Flux<OrganizationResource> requestOrganizations(
.build()));
}

private static Mono<Void> requestRemoveOrganizationPrivateDomainRequest(
CloudFoundryClient cloudFoundryClient, String domainId, String organizationId) {
return cloudFoundryClient
private Mono<Void> requestRemoveOrganizationPrivateDomainRequest(
String domainId, String organizationId) {
return this.cloudFoundryClient
.organizations()
.removePrivateDomain(
RemoveOrganizationPrivateDomainRequest.builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,19 @@ public interface Domains {
*
* @param request The Create Domain request
* @return a completion indicator
* @deprecated use {@link #createV3} instead
*/
@Deprecated
Mono<Void> create(CreateDomainRequest request);

/**
* Create a new shared domain
*
* @param request the Create Shared Domain request
* @return a completion indicator
* @deprecated use {@link #createV3} instead
*/
@Deprecated
Mono<Void> createShared(CreateSharedDomainRequest request);

/**
Expand All @@ -59,14 +63,18 @@ public interface Domains {
*
* @param request The Share Domain request
* @return a completion indicator
* @deprecated use {@link #update} instead.
*/
@Deprecated
Mono<Void> share(ShareDomainRequest request);

/**
* Unshare a private domain
*
* @param request The Unshare Domain request
* @return a completion indicator
* @deprecated use {@link #update} instead.
*/
@Deprecated
Mono<Void> unshare(UnshareDomainRequest request);
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ final class DefaultCloudFoundryOperationsTest extends AbstractOperationsTest {
DefaultCloudFoundryOperations.builder()
.cloudFoundryClient(this.cloudFoundryClient)
.dopplerClient(this.dopplerClient)
.routingClient(this.routingClient)
.organization(TEST_ORGANIZATION_NAME)
.space(TEST_SPACE_NAME)
.uaaClient(this.uaaClient)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
final class DefaultDomainsTest extends AbstractOperationsTest {

private final DefaultDomains domains =
new DefaultDomains(Mono.just(this.cloudFoundryClient), Mono.just(this.routingClient));
new DefaultDomains(this.cloudFoundryClient, this.routingClient);

@Test
void createDomain() {
Expand Down