Skip to content

Commit 4994e5c

Browse files
committed
Merge 101522650-get-security-group-staging-default to master
[Completes #101522650]
2 parents 823f2a1 + 51dd86d commit 4994e5c

File tree

7 files changed

+228
-3
lines changed

7 files changed

+228
-3
lines changed

cloudfoundry-client-spring/src/main/lombok/org/cloudfoundry/spring/client/v2/securitygroups/SpringSecurityGroups.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.cloudfoundry.client.v2.securitygroups.DeleteSecurityGroupRunningDefaultRequest;
2121
import org.cloudfoundry.client.v2.securitygroups.ListSecurityGroupRunningDefaultsRequest;
2222
import org.cloudfoundry.client.v2.securitygroups.ListSecurityGroupRunningDefaultsResponse;
23+
import org.cloudfoundry.client.v2.securitygroups.ListSecurityGroupStagingDefaultsRequest;
24+
import org.cloudfoundry.client.v2.securitygroups.ListSecurityGroupStagingDefaultsResponse;
2325
import org.cloudfoundry.client.v2.securitygroups.SecurityGroups;
2426
import org.cloudfoundry.client.v2.securitygroups.SetSecurityGroupRunningDefaultRequest;
2527
import org.cloudfoundry.client.v2.securitygroups.SetSecurityGroupRunningDefaultResponse;
@@ -61,6 +63,14 @@ public Mono<ListSecurityGroupRunningDefaultsResponse> listRunningDefaults(ListSe
6163
});
6264
}
6365

66+
@Override
67+
public Mono<ListSecurityGroupStagingDefaultsResponse> listStagingDefaults(ListSecurityGroupStagingDefaultsRequest request) {
68+
return get(request, ListSecurityGroupStagingDefaultsResponse.class, builder -> {
69+
builder.pathSegment("v2", "config", "staging_security_groups");
70+
QueryBuilder.augment(builder, request);
71+
});
72+
}
73+
6474
@Override
6575
public Mono<SetSecurityGroupRunningDefaultResponse> setRunningDefault(SetSecurityGroupRunningDefaultRequest request) {
6676
return put(request, SetSecurityGroupRunningDefaultResponse.class, builder -> builder.pathSegment("v2", "config", "running_security_groups", request.getSecurityGroupRunningDefaultId()));

cloudfoundry-client-spring/src/test/java/org/cloudfoundry/spring/client/v2/securitygroups/SpringSecurityGroupsTest.java

Lines changed: 59 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.cloudfoundry.client.v2.securitygroups.DeleteSecurityGroupRunningDefaultRequest;
2121
import org.cloudfoundry.client.v2.securitygroups.ListSecurityGroupRunningDefaultsRequest;
2222
import org.cloudfoundry.client.v2.securitygroups.ListSecurityGroupRunningDefaultsResponse;
23+
import org.cloudfoundry.client.v2.securitygroups.ListSecurityGroupStagingDefaultsRequest;
24+
import org.cloudfoundry.client.v2.securitygroups.ListSecurityGroupStagingDefaultsResponse;
2325
import org.cloudfoundry.client.v2.securitygroups.SecurityGroupEntity;
2426
import org.cloudfoundry.client.v2.securitygroups.SecurityGroupResource;
2527
import org.cloudfoundry.client.v2.securitygroups.SetSecurityGroupRunningDefaultRequest;
@@ -35,7 +37,7 @@
3537

3638
public final class SpringSecurityGroupsTest {
3739

38-
public static final class Delete extends AbstractApiTest<DeleteSecurityGroupRunningDefaultRequest, Void> {
40+
public static final class DeleteRunning extends AbstractApiTest<DeleteSecurityGroupRunningDefaultRequest, Void> {
3941

4042
private final SpringSecurityGroups securityGroups = new SpringSecurityGroups(this.restTemplate, this.root, PROCESSOR_GROUP);
4143

@@ -70,7 +72,7 @@ protected Mono<Void> invoke(DeleteSecurityGroupRunningDefaultRequest request) {
7072

7173
}
7274

73-
public static final class List extends AbstractApiTest<ListSecurityGroupRunningDefaultsRequest, ListSecurityGroupRunningDefaultsResponse> {
75+
public static final class ListRunning extends AbstractApiTest<ListSecurityGroupRunningDefaultsRequest, ListSecurityGroupRunningDefaultsResponse> {
7476

7577
private final SpringSecurityGroups securityGroups = new SpringSecurityGroups(this.restTemplate, this.root, PROCESSOR_GROUP);
7678

@@ -124,7 +126,61 @@ protected Mono<ListSecurityGroupRunningDefaultsResponse> invoke(ListSecurityGrou
124126

125127
}
126128

127-
public static final class Set extends AbstractApiTest<SetSecurityGroupRunningDefaultRequest, SetSecurityGroupRunningDefaultResponse> {
129+
public static final class ListStaging extends AbstractApiTest<ListSecurityGroupStagingDefaultsRequest, ListSecurityGroupStagingDefaultsResponse> {
130+
131+
private final SpringSecurityGroups securityGroups = new SpringSecurityGroups(this.restTemplate, this.root, PROCESSOR_GROUP);
132+
133+
@Override
134+
protected ListSecurityGroupStagingDefaultsRequest getInvalidRequest() {
135+
return null;
136+
}
137+
138+
@Override
139+
protected RequestContext getRequestContext() {
140+
return new RequestContext()
141+
.method(GET).path("/v2/config/staging_security_groups")
142+
.status(OK)
143+
.responsePayload("fixtures/client/v2/config/GET_staging_security_groups_response.json");
144+
}
145+
146+
@Override
147+
protected ListSecurityGroupStagingDefaultsResponse getResponse() {
148+
return ListSecurityGroupStagingDefaultsResponse.builder()
149+
.totalPages(1)
150+
.totalResults(1)
151+
.resource(SecurityGroupResource.builder()
152+
.metadata(Resource.Metadata.builder()
153+
.createdAt("2016-04-16T01:23:52Z")
154+
.id("c0bb3afb-ae01-4af0-96cf-a5b0d2dca894")
155+
.url("/v2/config/staging_security_groups/c0bb3afb-ae01-4af0-96cf-a5b0d2dca894")
156+
.build())
157+
.entity(SecurityGroupEntity.builder()
158+
.name("name-570")
159+
.rule(SecurityGroupEntity.RuleEntity.builder()
160+
.destination("198.41.191.47/1")
161+
.ports("8080")
162+
.protocol("udp")
163+
.build())
164+
.runningDefault(false)
165+
.stagingDefault(true)
166+
.build())
167+
.build())
168+
.build();
169+
}
170+
171+
@Override
172+
protected ListSecurityGroupStagingDefaultsRequest getValidRequest() throws Exception {
173+
return ListSecurityGroupStagingDefaultsRequest.builder().build();
174+
}
175+
176+
@Override
177+
protected Mono<ListSecurityGroupStagingDefaultsResponse> invoke(ListSecurityGroupStagingDefaultsRequest request) {
178+
return this.securityGroups.listStagingDefaults(request);
179+
}
180+
181+
}
182+
183+
public static final class SetRunning extends AbstractApiTest<SetSecurityGroupRunningDefaultRequest, SetSecurityGroupRunningDefaultResponse> {
128184

129185
private final SpringSecurityGroups securityGroups = new SpringSecurityGroups(this.restTemplate, this.root, PROCESSOR_GROUP);
130186

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"total_results": 1,
3+
"total_pages": 1,
4+
"prev_url": null,
5+
"next_url": null,
6+
"resources": [
7+
{
8+
"metadata": {
9+
"guid": "c0bb3afb-ae01-4af0-96cf-a5b0d2dca894",
10+
"url": "/v2/config/staging_security_groups/c0bb3afb-ae01-4af0-96cf-a5b0d2dca894",
11+
"created_at": "2016-04-16T01:23:52Z",
12+
"updated_at": null
13+
},
14+
"entity": {
15+
"name": "name-570",
16+
"rules": [
17+
{
18+
"protocol": "udp",
19+
"ports": "8080",
20+
"destination": "198.41.191.47/1"
21+
}
22+
],
23+
"running_default": false,
24+
"staging_default": true
25+
}
26+
}
27+
]
28+
}

cloudfoundry-client/src/main/java/org/cloudfoundry/client/v2/securitygroups/SecurityGroups.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ public interface SecurityGroups {
3838
*/
3939
Mono<ListSecurityGroupRunningDefaultsResponse> listRunningDefaults(ListSecurityGroupRunningDefaultsRequest request);
4040

41+
/**
42+
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/security_group_staging_defaults/return_the_security_groups_used_for_staging.html">List Staging Security Groups</a> request.
43+
*
44+
* @param request the list staging security groups request
45+
* @return the response from the list staging security groups request
46+
*/
47+
Mono<ListSecurityGroupStagingDefaultsResponse> listStagingDefaults(ListSecurityGroupStagingDefaultsRequest request);
48+
4149
/**
4250
* Makes the <a href="http://apidocs.cloudfoundry.org/latest-release/security_group_running_defaults/set_a_security_group_as_a_default_for_running_apps.html">Set a Security Group as a default for
4351
* running Apps</a> request.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* Copyright 2013-2016 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.client.v2.securitygroups;
18+
19+
import lombok.Builder;
20+
import lombok.Data;
21+
import lombok.EqualsAndHashCode;
22+
import lombok.ToString;
23+
import org.cloudfoundry.Validatable;
24+
import org.cloudfoundry.ValidationResult;
25+
import org.cloudfoundry.client.v2.PaginatedRequest;
26+
27+
/**
28+
* The request payload for the List Staging Security Groups operation
29+
*/
30+
@Data
31+
@EqualsAndHashCode(callSuper = true)
32+
@ToString(callSuper = true)
33+
public final class ListSecurityGroupStagingDefaultsRequest extends PaginatedRequest implements Validatable {
34+
35+
@Builder
36+
ListSecurityGroupStagingDefaultsRequest(OrderDirection orderDirection, Integer page, Integer resultsPerPage) {
37+
super(orderDirection, page, resultsPerPage);
38+
}
39+
40+
@Override
41+
public ValidationResult isValid() {
42+
return ValidationResult.builder().build();
43+
}
44+
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* Copyright 2013-2016 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.client.v2.securitygroups;
18+
19+
import com.fasterxml.jackson.annotation.JsonProperty;
20+
import lombok.Builder;
21+
import lombok.Data;
22+
import lombok.EqualsAndHashCode;
23+
import lombok.Singular;
24+
import lombok.ToString;
25+
import org.cloudfoundry.client.v2.PaginatedResponse;
26+
27+
import java.util.List;
28+
29+
/**
30+
* The response payload for the List Staging Security Groups operation
31+
*/
32+
@Data
33+
@EqualsAndHashCode(callSuper = true)
34+
@ToString(callSuper = true)
35+
public final class ListSecurityGroupStagingDefaultsResponse extends PaginatedResponse<SecurityGroupResource> {
36+
37+
@Builder
38+
ListSecurityGroupStagingDefaultsResponse(@JsonProperty("next_url") String nextUrl,
39+
@JsonProperty("prev_url") String previousUrl,
40+
@JsonProperty("resources") @Singular List<SecurityGroupResource> resources,
41+
@JsonProperty("total_pages") Integer totalPages,
42+
@JsonProperty("total_results") Integer totalResults) {
43+
44+
super(nextUrl, previousUrl, resources, totalPages, totalResults);
45+
}
46+
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* Copyright 2013-2016 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.client.v2.securitygroups;
18+
19+
import org.cloudfoundry.ValidationResult;
20+
import org.junit.Assert;
21+
import org.junit.Test;
22+
23+
public final class ListSecurityGroupStagingDefaultsRequestTest {
24+
25+
@Test
26+
public void isValid() {
27+
Assert.assertEquals(ValidationResult.Status.VALID,
28+
ListSecurityGroupStagingDefaultsRequest.builder().build().isValid().getStatus());
29+
}
30+
31+
}

0 commit comments

Comments
 (0)