Skip to content

Commit 9659146

Browse files
Implement the Space Quota version 3 API (#1320)
1 parent 0960613 commit 9659146

32 files changed

+1977
-6
lines changed

cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/client/_ReactorCloudFoundryClient.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.cloudfoundry.reactor.client;
1818

19+
import jakarta.annotation.PostConstruct;
1920
import org.cloudfoundry.client.CloudFoundryClient;
2021
import org.cloudfoundry.client.v2.applications.ApplicationsV2;
2122
import org.cloudfoundry.client.v2.applicationusageevents.ApplicationUsageEvents;
@@ -34,8 +35,6 @@
3435
import org.cloudfoundry.client.v2.routemappings.RouteMappings;
3536
import org.cloudfoundry.client.v2.routes.Routes;
3637
import org.cloudfoundry.client.v2.securitygroups.SecurityGroups;
37-
import org.cloudfoundry.client.v3.organizationquotadefinitions.OrganizationQuotaDefinitionsV3;
38-
import org.cloudfoundry.client.v3.securitygroups.SecurityGroupsV3;
3938
import org.cloudfoundry.client.v2.servicebindings.ServiceBindingsV2;
4039
import org.cloudfoundry.client.v2.servicebrokers.ServiceBrokers;
4140
import org.cloudfoundry.client.v2.serviceinstances.ServiceInstances;
@@ -60,17 +59,20 @@
6059
import org.cloudfoundry.client.v3.droplets.Droplets;
6160
import org.cloudfoundry.client.v3.isolationsegments.IsolationSegments;
6261
import org.cloudfoundry.client.v3.jobs.JobsV3;
62+
import org.cloudfoundry.client.v3.organizationquotadefinitions.OrganizationQuotaDefinitionsV3;
6363
import org.cloudfoundry.client.v3.organizations.OrganizationsV3;
6464
import org.cloudfoundry.client.v3.packages.Packages;
6565
import org.cloudfoundry.client.v3.processes.Processes;
6666
import org.cloudfoundry.client.v3.resourcematch.ResourceMatchV3;
6767
import org.cloudfoundry.client.v3.roles.RolesV3;
6868
import org.cloudfoundry.client.v3.routes.RoutesV3;
69-
import org.cloudfoundry.client.v3.serviceinstances.ServiceInstancesV3;
69+
import org.cloudfoundry.client.v3.securitygroups.SecurityGroupsV3;
7070
import org.cloudfoundry.client.v3.servicebindings.ServiceBindingsV3;
7171
import org.cloudfoundry.client.v3.servicebrokers.ServiceBrokersV3;
72+
import org.cloudfoundry.client.v3.serviceinstances.ServiceInstancesV3;
7273
import org.cloudfoundry.client.v3.serviceofferings.ServiceOfferingsV3;
7374
import org.cloudfoundry.client.v3.serviceplans.ServicePlansV3;
75+
import org.cloudfoundry.client.v3.spacequotas.SpaceQuotasV3;
7476
import org.cloudfoundry.client.v3.spaces.SpacesV3;
7577
import org.cloudfoundry.client.v3.stacks.StacksV3;
7678
import org.cloudfoundry.client.v3.tasks.Tasks;
@@ -93,8 +95,6 @@
9395
import org.cloudfoundry.reactor.client.v2.routemappings.ReactorRouteMappings;
9496
import org.cloudfoundry.reactor.client.v2.routes.ReactorRoutes;
9597
import org.cloudfoundry.reactor.client.v2.securitygroups.ReactorSecurityGroups;
96-
import org.cloudfoundry.reactor.client.v3.organizationquotadefinitions.ReactorOrganizationQuotaDefinitionsV3;
97-
import org.cloudfoundry.reactor.client.v3.securitygroups.ReactorSecurityGroupsV3;
9898
import org.cloudfoundry.reactor.client.v2.servicebindings.ReactorServiceBindingsV2;
9999
import org.cloudfoundry.reactor.client.v2.servicebrokers.ReactorServiceBrokers;
100100
import org.cloudfoundry.reactor.client.v2.serviceinstances.ReactorServiceInstances;
@@ -119,24 +119,26 @@
119119
import org.cloudfoundry.reactor.client.v3.droplets.ReactorDroplets;
120120
import org.cloudfoundry.reactor.client.v3.isolationsegments.ReactorIsolationSegments;
121121
import org.cloudfoundry.reactor.client.v3.jobs.ReactorJobsV3;
122+
import org.cloudfoundry.reactor.client.v3.organizationquotadefinitions.ReactorOrganizationQuotaDefinitionsV3;
122123
import org.cloudfoundry.reactor.client.v3.organizations.ReactorOrganizationsV3;
123124
import org.cloudfoundry.reactor.client.v3.packages.ReactorPackages;
124125
import org.cloudfoundry.reactor.client.v3.processes.ReactorProcesses;
125126
import org.cloudfoundry.reactor.client.v3.resourcematch.ReactorResourceMatchV3;
126127
import org.cloudfoundry.reactor.client.v3.roles.ReactorRolesV3;
127128
import org.cloudfoundry.reactor.client.v3.routes.ReactorRoutesV3;
129+
import org.cloudfoundry.reactor.client.v3.securitygroups.ReactorSecurityGroupsV3;
128130
import org.cloudfoundry.reactor.client.v3.servicebindings.ReactorServiceBindingsV3;
129131
import org.cloudfoundry.reactor.client.v3.servicebrokers.ReactorServiceBrokersV3;
130132
import org.cloudfoundry.reactor.client.v3.serviceinstances.ReactorServiceInstancesV3;
131133
import org.cloudfoundry.reactor.client.v3.serviceofferings.ReactorServiceOfferingsV3;
132134
import org.cloudfoundry.reactor.client.v3.serviceplans.ReactorServicePlansV3;
135+
import org.cloudfoundry.reactor.client.v3.spacequotas.ReactorSpaceQuotasV3;
133136
import org.cloudfoundry.reactor.client.v3.spaces.ReactorSpacesV3;
134137
import org.cloudfoundry.reactor.client.v3.stacks.ReactorStacksV3;
135138
import org.cloudfoundry.reactor.client.v3.tasks.ReactorTasks;
136139
import org.immutables.value.Value;
137140
import reactor.core.publisher.Mono;
138141

139-
import jakarta.annotation.PostConstruct;
140142
import java.util.Collections;
141143
import java.util.Map;
142144

@@ -457,6 +459,13 @@ public SpaceQuotaDefinitions spaceQuotaDefinitions() {
457459
getRequestTags());
458460
}
459461

462+
@Override
463+
@Value.Derived
464+
public SpaceQuotasV3 spaceQuotasV3() {
465+
return new ReactorSpaceQuotasV3(getConnectionContext(), getRootV3(), getTokenProvider(),
466+
getRequestTags());
467+
}
468+
460469
@Override
461470
@Value.Derived
462471
public Spaces spaces() {
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*
2+
* Copyright 2013-2025 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.cloudfoundry.reactor.client.v3.spacequotas;
18+
19+
import java.util.Map;
20+
import org.cloudfoundry.client.v3.spacequotas.*;
21+
import org.cloudfoundry.client.v3.spacequotas.CreateSpaceQuotaResponse;
22+
import org.cloudfoundry.reactor.ConnectionContext;
23+
import org.cloudfoundry.reactor.TokenProvider;
24+
import org.cloudfoundry.reactor.client.v3.AbstractClientV3Operations;
25+
import reactor.core.publisher.Mono;
26+
27+
/**
28+
* The Reactor-based implementation of {@link ReactorSpaceQuotasV3}
29+
*/
30+
public class ReactorSpaceQuotasV3 extends AbstractClientV3Operations implements SpaceQuotasV3 {
31+
32+
/**
33+
* Creates an instance
34+
*
35+
* @param connectionContext the {@link ConnectionContext} to use when communicating with the server
36+
* @param root the root URI of the server. Typically, something like {@code https://api.run.pivotal.io}.
37+
* @param tokenProvider the {@link TokenProvider} to use when communicating with the server
38+
* @param requestTags map with custom http headers which will be added to web request
39+
*/
40+
public ReactorSpaceQuotasV3(
41+
ConnectionContext connectionContext,
42+
Mono<String> root,
43+
TokenProvider tokenProvider,
44+
Map<String, String> requestTags) {
45+
super(connectionContext, root, tokenProvider, requestTags);
46+
}
47+
48+
@Override
49+
public Mono<CreateSpaceQuotaResponse> create(CreateSpaceQuotaRequest request) {
50+
return post(
51+
request,
52+
CreateSpaceQuotaResponse.class,
53+
builder -> builder.pathSegment("space_quotas"))
54+
.checkpoint();
55+
}
56+
57+
@Override
58+
public Mono<GetSpaceQuotaResponse> get(GetSpaceQuotaRequest request) {
59+
return get(
60+
request,
61+
GetSpaceQuotaResponse.class,
62+
builder -> builder.pathSegment("space_quotas", request.getSpaceQuotaId()))
63+
.checkpoint();
64+
}
65+
66+
@Override
67+
public Mono<ListSpaceQuotasResponse> list(ListSpaceQuotasRequest request) {
68+
return get(
69+
request,
70+
ListSpaceQuotasResponse.class,
71+
builder -> builder.pathSegment("space_quotas"))
72+
.checkpoint();
73+
}
74+
75+
@Override
76+
public Mono<UpdateSpaceQuotaResponse> update(UpdateSpaceQuotaRequest request) {
77+
return patch(
78+
request,
79+
UpdateSpaceQuotaResponse.class,
80+
builder -> builder.pathSegment("space_quotas", request.getSpaceQuotaId()))
81+
.checkpoint();
82+
}
83+
84+
@Override
85+
public Mono<String> delete(DeleteSpaceQuotaRequest request) {
86+
return delete(
87+
request,
88+
builder -> builder.pathSegment("space_quotas", request.getSpaceQuotaId()))
89+
.checkpoint();
90+
}
91+
}

0 commit comments

Comments
 (0)