Skip to content

Commit 198c709

Browse files
radoslav-tomovanthonydahanne
authored andcommitted
adding security groups v3 create api
adding create security group impl and tests adding get security group api and tests adding get security group impl + test adding list security groups impl + api adding update security group api adding update security group api v3 impl adding security groups delete api v3 impl and tests adding bind running/staging security group v3 api adding bind impl adding unbind security group adding list running/staging api and tests adding create security group test adding integration tests adding integration tests fixing setup/teardown fixing integration tests refactoring integration tests
1 parent 4a8295b commit 198c709

File tree

58 files changed

+3186
-10
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+3186
-10
lines changed

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

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.cloudfoundry.client.v2.routemappings.RouteMappings;
3535
import org.cloudfoundry.client.v2.routes.Routes;
3636
import org.cloudfoundry.client.v2.securitygroups.SecurityGroups;
37+
import org.cloudfoundry.client.v3.securitygroups.SecurityGroupsV3;
3738
import org.cloudfoundry.client.v2.servicebindings.ServiceBindingsV2;
3839
import org.cloudfoundry.client.v2.servicebrokers.ServiceBrokers;
3940
import org.cloudfoundry.client.v2.serviceinstances.ServiceInstances;
@@ -91,6 +92,7 @@
9192
import org.cloudfoundry.reactor.client.v2.routemappings.ReactorRouteMappings;
9293
import org.cloudfoundry.reactor.client.v2.routes.ReactorRoutes;
9394
import org.cloudfoundry.reactor.client.v2.securitygroups.ReactorSecurityGroups;
95+
import org.cloudfoundry.reactor.client.v3.securitygroups.ReactorSecurityGroupsV3;
9496
import org.cloudfoundry.reactor.client.v2.servicebindings.ReactorServiceBindingsV2;
9597
import org.cloudfoundry.reactor.client.v2.servicebrokers.ReactorServiceBrokers;
9698
import org.cloudfoundry.reactor.client.v2.serviceinstances.ReactorServiceInstances;
@@ -151,7 +153,8 @@ public AdminV3 adminV3() {
151153
@Override
152154
@Value.Derived
153155
public ApplicationUsageEvents applicationUsageEvents() {
154-
return new ReactorApplicationUsageEvents(getConnectionContext(), getRootV2(), getTokenProvider(), getRequestTags());
156+
return new ReactorApplicationUsageEvents(getConnectionContext(), getRootV2(), getTokenProvider(),
157+
getRequestTags());
155158
}
156159

157160
@Override
@@ -228,7 +231,8 @@ public Droplets droplets() {
228231
@Override
229232
@Value.Derived
230233
public EnvironmentVariableGroups environmentVariableGroups() {
231-
return new ReactorEnvironmentVariableGroups(getConnectionContext(), getRootV2(), getTokenProvider(), getRequestTags());
234+
return new ReactorEnvironmentVariableGroups(getConnectionContext(), getRootV2(), getTokenProvider(),
235+
getRequestTags());
232236
}
233237

234238
@Override
@@ -270,7 +274,8 @@ public JobsV3 jobsV3() {
270274
@Override
271275
@Value.Derived
272276
public OrganizationQuotaDefinitions organizationQuotaDefinitions() {
273-
return new ReactorOrganizationQuotaDefinitions(getConnectionContext(), getRootV2(), getTokenProvider(), getRequestTags());
277+
return new ReactorOrganizationQuotaDefinitions(getConnectionContext(), getRootV2(), getTokenProvider(),
278+
getRequestTags());
274279
}
275280

276281
@Override
@@ -345,6 +350,12 @@ public SecurityGroups securityGroups() {
345350
return new ReactorSecurityGroups(getConnectionContext(), getRootV2(), getTokenProvider(), getRequestTags());
346351
}
347352

353+
@Override
354+
@Value.Derived
355+
public SecurityGroupsV3 securityGroupsV3() {
356+
return new ReactorSecurityGroupsV3(getConnectionContext(), getRootV3(), getTokenProvider(), getRequestTags());
357+
}
358+
348359
@Override
349360
@Value.Derived
350361
public ServiceBindingsV2 serviceBindingsV2() {
@@ -366,7 +377,7 @@ public ServiceBrokers serviceBrokers() {
366377
@Override
367378
@Value.Derived
368379
public ServiceBrokersV3 serviceBrokersV3() {
369-
return new ReactorServiceBrokersV3(getConnectionContext(), getRootV3(), getTokenProvider(), getRequestTags());
380+
return new ReactorServiceBrokersV3(getConnectionContext(), getRootV3(), getTokenProvider(), getRequestTags());
370381
}
371382

372383
@Override
@@ -396,7 +407,8 @@ public ServiceOfferingsV3 serviceOfferingsV3() {
396407
@Override
397408
@Value.Derived
398409
public ServicePlanVisibilities servicePlanVisibilities() {
399-
return new ReactorServicePlanVisibilities(getConnectionContext(), getRootV2(), getTokenProvider(), getRequestTags());
410+
return new ReactorServicePlanVisibilities(getConnectionContext(), getRootV2(), getTokenProvider(),
411+
getRequestTags());
400412
}
401413

402414
@Override
@@ -432,7 +444,8 @@ public SharedDomains sharedDomains() {
432444
@Override
433445
@Value.Derived
434446
public SpaceQuotaDefinitions spaceQuotaDefinitions() {
435-
return new ReactorSpaceQuotaDefinitions(getConnectionContext(), getRootV2(), getTokenProvider(), getRequestTags());
447+
return new ReactorSpaceQuotaDefinitions(getConnectionContext(), getRootV2(), getTokenProvider(),
448+
getRequestTags());
436449
}
437450

438451
@Override
@@ -468,7 +481,8 @@ public Tasks tasks() {
468481
@Override
469482
@Value.Derived
470483
public UserProvidedServiceInstances userProvidedServiceInstances() {
471-
return new ReactorUserProvidedServiceInstances(getConnectionContext(), getRootV2(), getTokenProvider(), getRequestTags());
484+
return new ReactorUserProvidedServiceInstances(getConnectionContext(), getRootV2(), getTokenProvider(),
485+
getRequestTags());
472486
}
473487

474488
@Override
@@ -483,7 +497,8 @@ public Users users() {
483497
abstract ConnectionContext getConnectionContext();
484498

485499
/**
486-
* Map of http header name and value which will be added to every request to the controller
500+
* Map of http header name and value which will be added to every request to the
501+
* controller
487502
*/
488503
@Value.Default
489504
Map<String, String> getRequestTags() {
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
/*
2+
* Copyright 2013-2023 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5+
* in compliance with the License. You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software distributed under the License
10+
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11+
* or implied. See the License for the specific language governing permissions and limitations under
12+
* the License.
13+
*/
14+
15+
package org.cloudfoundry.reactor.client.v3.securitygroups;
16+
17+
import org.cloudfoundry.client.v3.securitygroups.SecurityGroupsV3;
18+
import org.cloudfoundry.client.v3.securitygroups.CreateSecurityGroupRequest;
19+
import org.cloudfoundry.client.v3.securitygroups.CreateSecurityGroupResponse;
20+
import org.cloudfoundry.client.v3.securitygroups.GetSecurityGroupRequest;
21+
import org.cloudfoundry.client.v3.securitygroups.DeleteSecurityGroupRequest;
22+
import org.cloudfoundry.client.v3.securitygroups.UpdateSecurityGroupRequest;
23+
import org.cloudfoundry.client.v3.securitygroups.GetSecurityGroupResponse;
24+
import org.cloudfoundry.client.v3.securitygroups.UpdateSecurityGroupResponse;
25+
import org.cloudfoundry.client.v3.servicebindings.ServiceBindingsV3;
26+
import org.cloudfoundry.client.v3.securitygroups.ListSecurityGroupsRequest;
27+
import org.cloudfoundry.client.v3.securitygroups.ListSecurityGroupsResponse;
28+
import org.cloudfoundry.client.v3.securitygroups.ListRunningSecurityGroupsRequest;
29+
import org.cloudfoundry.client.v3.securitygroups.ListRunningSecurityGroupsResponse;
30+
import org.cloudfoundry.client.v3.securitygroups.ListStagingSecurityGroupsRequest;
31+
import org.cloudfoundry.client.v3.securitygroups.ListStagingSecurityGroupsResponse;
32+
import org.cloudfoundry.client.v3.securitygroups.BindRunningSecurityGroupRequest;
33+
import org.cloudfoundry.client.v3.securitygroups.BindRunningSecurityGroupResponse;
34+
import org.cloudfoundry.client.v3.securitygroups.BindStagingSecurityGroupRequest;
35+
import org.cloudfoundry.client.v3.securitygroups.BindStagingSecurityGroupResponse;
36+
import org.cloudfoundry.client.v3.securitygroups.UnbindRunningSecurityGroupRequest;
37+
import org.cloudfoundry.client.v3.securitygroups.UnbindStagingSecurityGroupRequest;
38+
import org.cloudfoundry.reactor.ConnectionContext;
39+
import org.cloudfoundry.reactor.TokenProvider;
40+
import org.cloudfoundry.reactor.client.v3.AbstractClientV3Operations;
41+
import reactor.core.publisher.Mono;
42+
import java.util.Map;
43+
44+
/**
45+
* The Reactor-based implementation of {@link ServiceBindingsV3}
46+
*/
47+
public final class ReactorSecurityGroupsV3 extends AbstractClientV3Operations
48+
implements SecurityGroupsV3 {
49+
50+
/**
51+
* Creates an instance
52+
*
53+
* @param connectionContext the {@link ConnectionContext} to use when communicating with the
54+
* server
55+
* @param root the root URI of the server. Typically something like
56+
* {@code https://api.run.pivotal.io}.
57+
* @param tokenProvider the {@link TokenProvider} to use when communicating with the server
58+
* @param requestTags map with custom http headers which will be added to web request
59+
*/
60+
public ReactorSecurityGroupsV3(ConnectionContext connectionContext, Mono<String> root,
61+
TokenProvider tokenProvider, Map<String, String> requestTags) {
62+
super(connectionContext, root, tokenProvider, requestTags);
63+
}
64+
65+
@Override
66+
public Mono<CreateSecurityGroupResponse> create(CreateSecurityGroupRequest request) {
67+
return post(request, CreateSecurityGroupResponse.class,
68+
builder -> builder.pathSegment("security_groups")).checkpoint();
69+
70+
}
71+
72+
@Override
73+
public Mono<GetSecurityGroupResponse> get(GetSecurityGroupRequest request) {
74+
return get(request, GetSecurityGroupResponse.class, builder -> builder
75+
.pathSegment("security_groups", request.getSecurityGroupId()))
76+
.checkpoint();
77+
78+
}
79+
80+
@Override
81+
public Mono<ListSecurityGroupsResponse> list(ListSecurityGroupsRequest request) {
82+
return get(request, ListSecurityGroupsResponse.class,
83+
builder -> builder.pathSegment("security_groups")).checkpoint();
84+
}
85+
86+
@Override
87+
public Mono<UpdateSecurityGroupResponse> update(UpdateSecurityGroupRequest request) {
88+
return patch(request, UpdateSecurityGroupResponse.class, builder -> builder
89+
.pathSegment("security_groups", request.getSecurityGroupId()))
90+
.checkpoint();
91+
}
92+
93+
@Override
94+
public Mono<String> delete(DeleteSecurityGroupRequest request) {
95+
return delete(request, builder -> builder.pathSegment("security_groups",
96+
request.getSecurityGroupId())).checkpoint();
97+
98+
}
99+
100+
@Override
101+
public Mono<BindRunningSecurityGroupResponse> bindRunningSecurityGroup(
102+
BindRunningSecurityGroupRequest request) {
103+
return post(request, BindRunningSecurityGroupResponse.class,
104+
builder -> builder.pathSegment("security_groups",
105+
request.getSecurityGroupId(), "relationships",
106+
"running_spaces")).checkpoint();
107+
}
108+
109+
@Override
110+
public Mono<BindStagingSecurityGroupResponse> bindStagingSecurityGroup(
111+
BindStagingSecurityGroupRequest request) {
112+
return post(request, BindStagingSecurityGroupResponse.class,
113+
builder -> builder.pathSegment("security_groups",
114+
request.getSecurityGroupId(), "relationships",
115+
"staging_spaces")).checkpoint();
116+
}
117+
118+
@Override
119+
public Mono<Void> unbindStagingSecurityGroup(UnbindStagingSecurityGroupRequest request) {
120+
return delete(request, Void.class,
121+
builder -> builder.pathSegment("security_groups",
122+
request.getSecurityGroupId(), "relationships",
123+
"staging_spaces", request.getSpaceId()))
124+
.checkpoint();
125+
}
126+
127+
@Override
128+
public Mono<Void> unbindRunningSecurityGroup(UnbindRunningSecurityGroupRequest request) {
129+
return delete(request, Void.class,
130+
builder -> builder.pathSegment("security_groups",
131+
request.getSecurityGroupId(), "relationships",
132+
"running_spaces", request.getSpaceId()))
133+
.checkpoint();
134+
}
135+
136+
@Override
137+
public Mono<ListRunningSecurityGroupsResponse> listRunning(
138+
ListRunningSecurityGroupsRequest request) {
139+
return get(request, ListRunningSecurityGroupsResponse.class,
140+
builder -> builder.pathSegment("spaces", request.getSpaceId(),
141+
"running_security_groups")).checkpoint();
142+
}
143+
144+
@Override
145+
public Mono<ListStagingSecurityGroupsResponse> listStaging(
146+
ListStagingSecurityGroupsRequest request) {
147+
return get(request, ListStagingSecurityGroupsResponse.class,
148+
builder -> builder.pathSegment("spaces", request.getSpaceId(),
149+
"staging_security_groups")).checkpoint();
150+
}
151+
}

0 commit comments

Comments
 (0)