Skip to content

Commit a786735

Browse files
adding bind impl
1 parent 4f5437d commit a786735

File tree

6 files changed

+138
-5
lines changed

6 files changed

+138
-5
lines changed

cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/client/v3/securitygroups/ReactorSecurityGroupsV3.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626
import org.cloudfoundry.client.v3.securitygroups.UpdateSecurityGroupResponse;
2727
import org.cloudfoundry.client.v3.securitygroups.ListSecurityGroupsRequest;
2828
import org.cloudfoundry.client.v3.securitygroups.ListSecurityGroupsResponse;
29+
import org.cloudfoundry.client.v3.securitygroups.BindRunningSecurityGroupRequest;
30+
import org.cloudfoundry.client.v3.securitygroups.BindRunningSecurityGroupResponse;
31+
import org.cloudfoundry.client.v3.securitygroups.BindStagingSecurityGroupRequest;
32+
import org.cloudfoundry.client.v3.securitygroups.BindStagingSecurityGroupResponse;
2933
import org.cloudfoundry.reactor.ConnectionContext;
3034
import org.cloudfoundry.reactor.TokenProvider;
3135
import org.cloudfoundry.reactor.client.v3.AbstractClientV3Operations;
@@ -90,4 +94,20 @@ public Mono<String> delete(DeleteSecurityGroupRequest request) {
9094
.checkpoint();
9195

9296
}
97+
98+
@Override
99+
public Mono<BindRunningSecurityGroupResponse> bindRunningSecurityGroup(BindRunningSecurityGroupRequest request) {
100+
return post(request, BindRunningSecurityGroupResponse.class,
101+
builder -> builder.pathSegment("security_groups", request.getSecurityGroupId(), "relationships",
102+
"running_spaces"))
103+
.checkpoint();
104+
}
105+
106+
@Override
107+
public Mono<BindStagingSecurityGroupResponse> bindStagingSecurityGroup(BindStagingSecurityGroupRequest request) {
108+
return post(request, BindStagingSecurityGroupResponse.class,
109+
builder -> builder.pathSegment("security_groups", request.getSecurityGroupId(), "relationships",
110+
"staging_spaces"))
111+
.checkpoint();
112+
}
93113
}

cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/client/v3/securitygroups/ReactorSecurityGroupsV3Test.java

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
import org.cloudfoundry.reactor.TestRequest;
2222
import org.cloudfoundry.reactor.TestResponse;
2323
import org.cloudfoundry.client.v3.securitygroups.Relationships;
24+
import org.cloudfoundry.client.v3.securitygroups.BindStagingSecurityGroupRequest;
25+
import org.cloudfoundry.client.v3.securitygroups.BindStagingSecurityGroupResponse;
26+
import org.cloudfoundry.client.v3.securitygroups.BindRunningSecurityGroupRequest;
27+
import org.cloudfoundry.client.v3.securitygroups.BindRunningSecurityGroupResponse;
2428
import org.cloudfoundry.client.v3.securitygroups.CreateSecurityGroupRequest;
2529
import org.cloudfoundry.client.v3.securitygroups.CreateSecurityGroupResponse;
2630
import org.cloudfoundry.client.v3.securitygroups.SecurityGroupResource;
@@ -377,4 +381,81 @@ public void delete() {
377381
.expectComplete()
378382
.verify(Duration.ofSeconds(5));
379383
}
384+
385+
@Test
386+
public void bindStagingSecurityGroup() {
387+
mockRequest(InteractionContext.builder()
388+
.request(TestRequest.builder()
389+
.method(POST)
390+
.path("/security_groups/b85a788e-671f-4549-814d-e34cdb2f539a/relationships/staging_spaces")
391+
.payload("fixtures/client/v3/security_groups/bind_staging/POST_request.json")
392+
.build())
393+
.response(TestResponse.builder()
394+
.status(OK)
395+
.payload("fixtures/client/v3/security_groups/bind_staging/POST_response.json")
396+
.build())
397+
.build());
398+
this.securityGroups.bindStagingSecurityGroup(BindStagingSecurityGroupRequest.builder()
399+
.securityGroupId("b85a788e-671f-4549-814d-e34cdb2f539a")
400+
.boundSpaces(ToManyRelationship.builder()
401+
.data(Relationship.builder().id("space-guid1").build())
402+
.data(Relationship.builder().id("space-guid2").build())
403+
.build())
404+
.build())
405+
.as(StepVerifier::create)
406+
.expectNext(BindStagingSecurityGroupResponse.builder()
407+
.boundSpaces(ToManyRelationship.builder()
408+
.data(Relationship.builder().id("space-guid1").build())
409+
.data(Relationship.builder().id("space-guid2").build())
410+
.data(Relationship.builder().id("previous-space-guid")
411+
.build())
412+
.build()
413+
414+
)
415+
.link("self", Link.builder()
416+
.href("https://api.example.org/v3/security_groups/b85a788e-671f-4549-814d-e34cdb2f539a/relationships/staging_spaces")
417+
.build())
418+
.build())
419+
.expectComplete()
420+
.verify(Duration.ofSeconds(5));
421+
}
422+
423+
@Test
424+
public void bindRunningSecurityGroup() {
425+
mockRequest(InteractionContext.builder()
426+
.request(TestRequest.builder()
427+
.method(POST)
428+
.path("/security_groups/b85a788e-671f-4549-814d-e34cdb2f539a/relationships/running_spaces")
429+
.payload("fixtures/client/v3/security_groups/bind_running/POST_request.json")
430+
.build())
431+
.response(TestResponse.builder()
432+
.status(OK)
433+
.payload("fixtures/client/v3/security_groups/bind_running/POST_response.json")
434+
.build())
435+
.build());
436+
this.securityGroups.bindRunningSecurityGroup(BindRunningSecurityGroupRequest.builder()
437+
.securityGroupId("b85a788e-671f-4549-814d-e34cdb2f539a")
438+
.boundSpaces(ToManyRelationship.builder()
439+
.data(Relationship.builder().id("space-guid1").build())
440+
.data(Relationship.builder().id("space-guid2").build())
441+
.build())
442+
.build())
443+
.as(StepVerifier::create)
444+
.expectNext(BindRunningSecurityGroupResponse.builder()
445+
.boundSpaces(ToManyRelationship.builder()
446+
.data(Relationship.builder().id("space-guid1").build())
447+
.data(Relationship.builder().id("space-guid2").build())
448+
.data(Relationship.builder().id("previous-space-guid")
449+
.build())
450+
.build()
451+
452+
)
453+
.link("self", Link.builder()
454+
.href("https://api.example.org/v3/security_groups/b85a788e-671f-4549-814d-e34cdb2f539a/relationships/running_spaces")
455+
.build())
456+
.build())
457+
.expectComplete()
458+
.verify(Duration.ofSeconds(5));
459+
}
460+
380461
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"data": [
3+
{
4+
"guid": "space-guid1"
5+
},
6+
{
7+
"guid": "space-guid2"
8+
}
9+
]
10+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"data": [
3+
{
4+
"guid": "space-guid1"
5+
},
6+
{
7+
"guid": "space-guid2"
8+
},
9+
{
10+
"guid": "previous-space-guid"
11+
}
12+
],
13+
"links": {
14+
"self": {
15+
"href": "https://api.example.org/v3/security_groups/b85a788e-671f-4549-814d-e34cdb2f539a/relationships/staging_spaces"
16+
}
17+
}
18+
}

cloudfoundry-client/src/main/java/org/cloudfoundry/client/v3/securitygroups/AbstractBindSecurityGroupResponse.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616

1717
package org.cloudfoundry.client.v3.securitygroups;
1818

19+
import java.util.Map;
20+
21+
import org.cloudfoundry.AllowNulls;
1922
import org.cloudfoundry.Nullable;
23+
import org.cloudfoundry.client.v3.Link;
2024
import org.cloudfoundry.client.v3.ToManyRelationship;
2125

2226
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -33,9 +37,9 @@ public abstract class AbstractBindSecurityGroupResponse {
3337
abstract ToManyRelationship getBoundSpaces();
3438

3539
/**
36-
* When the resource was last updated
40+
* The links
3741
*/
38-
@JsonProperty("updated_at")
39-
@Nullable
40-
public abstract String getUpdatedAt();
42+
@AllowNulls
43+
@JsonProperty("links")
44+
public abstract Map<String, Link> getLinks();
4145
}

cloudfoundry-client/src/main/java/org/cloudfoundry/client/v3/securitygroups/SecurityGroupsV3.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,5 @@ public interface SecurityGroupsV3 {
8888
* @param request the Bind Running Security Group request
8989
* @return the response from the Bind Running Security Group request
9090
*/
91-
Mono<BindStagingSecurityGroupResponse> bindRunningSecurityGroup(BindStagingSecurityGroupRequest request);
91+
Mono<BindRunningSecurityGroupResponse> bindRunningSecurityGroup(BindRunningSecurityGroupRequest request);
9292
}

0 commit comments

Comments
 (0)