Skip to content

Commit 09f7153

Browse files
Use NSX specific RestClient in API implementation (NiciraNvpApi)
- Simplify public API to return Lists instead of NiciraNvpLists
1 parent c6602ee commit 09f7153

File tree

12 files changed

+539
-617
lines changed

12 files changed

+539
-617
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//
2+
// Licensed to the Apache Software Foundation (ASF) under one
3+
// or more contributor license agreements. See the NOTICE file
4+
// distributed with this work for additional information
5+
// regarding copyright ownership. The ASF licenses this file
6+
// to you under the Apache License, Version 2.0 (the
7+
// "License"); you may not use this file except in compliance
8+
// with the License. You may obtain a copy of the License at
9+
//
10+
// http://www.apache.org/licenses/LICENSE-2.0
11+
//
12+
// Unless required by applicable law or agreed to in writing,
13+
// software distributed under the License is distributed on an
14+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
// KIND, either express or implied. See the License for the
16+
// specific language governing permissions and limitations
17+
// under the License.
18+
//
19+
20+
package com.cloud.network.nicira;
21+
22+
public class NiciraConstants {
23+
24+
public static final String SEC_PROFILE_URI_PREFIX = "/ws.v1/security-profile";
25+
public static final String ACL_URI_PREFIX = "/ws.v1/acl";
26+
public static final String SWITCH_URI_PREFIX = "/ws.v1/lswitch";
27+
public static final String ROUTER_URI_PREFIX = "/ws.v1/lrouter";
28+
public static final String LOGIN_URL = "/ws.v1/login";
29+
public static final String CONTROL_CLUSTER_STATUS_URL = "/ws.v1/control-cluster/status";
30+
31+
public static final String ATTACHMENT_PATH_SEGMENT = "/attachment";
32+
public static final String NAT_PATH_SEGMENT = "/nat";
33+
public static final String LPORT_PATH_SEGMENT = "/lport";
34+
35+
public static final String ATTACHMENT_VIF_UUID_QUERY_PARAMETER_NAME = "attachment_vif_uuid";
36+
public static final String ATTACHMENT_VLAN_PARAMETER = "attachment_vlan";
37+
public static final String ATTACHMENT_GWSVC_UUID_QUERY_PARAMETER = "attachment_gwsvc_uuid";
38+
public static final String WILDCARD_QUERY_PARAMETER = "*";
39+
public static final String UUID_QUERY_PARAMETER = "uuid";
40+
public static final String FIELDS_QUERY_PARAMETER = "fields";
41+
42+
}

plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpApi.java

Lines changed: 179 additions & 144 deletions
Large diffs are not rendered by default.

plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/resource/NiciraNvpResource.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919

2020
package com.cloud.network.resource;
2121

22+
import java.security.KeyManagementException;
23+
import java.security.KeyStoreException;
24+
import java.security.NoSuchAlgorithmException;
2225
import java.util.Map;
2326

2427
import javax.naming.ConfigurationException;
@@ -42,13 +45,16 @@
4245
import com.cloud.network.nicira.SourceNatRule;
4346
import com.cloud.network.utils.CommandRetryUtility;
4447
import com.cloud.resource.ServerResource;
48+
import com.cloud.utils.rest.CloudstackRESTException;
49+
import com.cloud.utils.rest.HttpClientHelper;
4550

4651
public class NiciraNvpResource implements ServerResource {
4752

4853
private static final Logger s_logger = Logger.getLogger(NiciraNvpResource.class);
4954

5055
public static final int NAME_MAX_LEN = 40;
5156
public static final int NUM_RETRIES = 2;
57+
private static final int MAX_REDIRECTS = 5;
5258

5359
private String name;
5460
private String guid;
@@ -58,8 +64,16 @@ public class NiciraNvpResource implements ServerResource {
5864
private NiciraNvpUtilities niciraNvpUtilities;
5965
private CommandRetryUtility retryUtility;
6066

61-
protected NiciraNvpApi createNiciraNvpApi() {
62-
return new NiciraNvpApi();
67+
protected NiciraNvpApi createNiciraNvpApi(final String host, final String username, final String password) throws CloudstackRESTException {
68+
try {
69+
return NiciraNvpApi.create().host(host).username(username).password(password).httpClient(HttpClientHelper.createHttpClient(MAX_REDIRECTS)).build();
70+
} catch (final KeyManagementException e) {
71+
throw new CloudstackRESTException("Could not create HTTP client", e);
72+
} catch (final NoSuchAlgorithmException e) {
73+
throw new CloudstackRESTException("Could not create HTTP client", e);
74+
} catch (final KeyStoreException e) {
75+
throw new CloudstackRESTException("Could not create HTTP client", e);
76+
}
6377
}
6478

6579
@Override
@@ -99,9 +113,11 @@ public boolean configure(final String ignoredName, final Map<String, Object> par
99113
retryUtility = CommandRetryUtility.getInstance();
100114
retryUtility.setServerResource(this);
101115

102-
niciraNvpApi = createNiciraNvpApi();
103-
niciraNvpApi.setControllerAddress(ip);
104-
niciraNvpApi.setAdminCredentials(adminuser, adminpass);
116+
try {
117+
niciraNvpApi = createNiciraNvpApi(ip, adminuser, adminpass);
118+
} catch (final CloudstackRESTException e) {
119+
throw new ConfigurationException("Could not create a Nicira Nvp API client: " + e.getMessage());
120+
}
105121

106122
return true;
107123
}

plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/resource/wrapper/NiciraNvpConfigurePortForwardingRulesCommandWrapper.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
2323

24+
import java.util.List;
25+
2426
import org.apache.log4j.Logger;
2527

2628
import com.cloud.agent.api.Answer;
@@ -30,7 +32,6 @@
3032
import com.cloud.network.nicira.NatRule;
3133
import com.cloud.network.nicira.NiciraNvpApi;
3234
import com.cloud.network.nicira.NiciraNvpApiException;
33-
import com.cloud.network.nicira.NiciraNvpList;
3435
import com.cloud.network.resource.NiciraNvpResource;
3536
import com.cloud.network.utils.CommandRetryUtility;
3637
import com.cloud.resource.CommandWrapper;
@@ -45,7 +46,7 @@ public final class NiciraNvpConfigurePortForwardingRulesCommandWrapper extends C
4546
public Answer execute(final ConfigurePortForwardingRulesOnLogicalRouterCommand command, final NiciraNvpResource niciraNvpResource) {
4647
final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
4748
try {
48-
final NiciraNvpList<NatRule> existingRules = niciraNvpApi.findNatRulesByLogicalRouterUuid(command.getLogicalRouterUuid());
49+
final List<NatRule> existingRules = niciraNvpApi.findNatRulesByLogicalRouterUuid(command.getLogicalRouterUuid());
4950
// Rules of the game (also known as assumptions-that-will-make-stuff-break-later-on)
5051
// A SourceNat rule with a match other than a /32 cidr is assumed to be the "main" SourceNat rule
5152
// Any other SourceNat rule should have a corresponding DestinationNat rule
@@ -66,7 +67,7 @@ public Answer execute(final ConfigurePortForwardingRulesOnLogicalRouterCommand c
6667
NatRule incoming = null;
6768
NatRule outgoing = null;
6869

69-
for (final NatRule storedRule : existingRules.getResults()) {
70+
for (final NatRule storedRule : existingRules) {
7071
if (storedRule.equalsIgnoreUuid(rulepair[1])) {
7172
// The outgoing rule exists
7273
outgoing = storedRule;

plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/resource/wrapper/NiciraNvpConfigurePublicIpsCommandWrapper.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@
2121

2222
import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
2323

24+
import java.util.List;
25+
2426
import com.cloud.agent.api.Answer;
2527
import com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterAnswer;
2628
import com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterCommand;
2729
import com.cloud.network.nicira.LogicalRouterPort;
2830
import com.cloud.network.nicira.NiciraNvpApi;
2931
import com.cloud.network.nicira.NiciraNvpApiException;
30-
import com.cloud.network.nicira.NiciraNvpList;
3132
import com.cloud.network.resource.NiciraNvpResource;
3233
import com.cloud.network.utils.CommandRetryUtility;
3334
import com.cloud.resource.CommandWrapper;
@@ -41,11 +42,11 @@ public Answer execute(final ConfigurePublicIpsOnLogicalRouterCommand command, fi
4142
final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
4243

4344
try {
44-
final NiciraNvpList<LogicalRouterPort> ports = niciraNvpApi.findLogicalRouterPortByGatewayServiceUuid(command.getLogicalRouterUuid(), command.getL3GatewayServiceUuid());
45-
if (ports.getResultCount() != 1) {
45+
final List<LogicalRouterPort> ports = niciraNvpApi.findLogicalRouterPortByGatewayServiceUuid(command.getLogicalRouterUuid(), command.getL3GatewayServiceUuid());
46+
if (ports.size() != 1) {
4647
return new ConfigurePublicIpsOnLogicalRouterAnswer(command, false, "No logical router ports found, unable to set ip addresses");
4748
}
48-
final LogicalRouterPort lrp = ports.getResults().get(0);
49+
final LogicalRouterPort lrp = ports.get(0);
4950
lrp.setIpAddresses(command.getPublicCidrs());
5051
niciraNvpApi.updateLogicalRouterPort(command.getLogicalRouterUuid(), lrp);
5152

plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/resource/wrapper/NiciraNvpConfigureStaticNatRulesCommandWrapper.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
2323

24+
import java.util.List;
25+
2426
import org.apache.log4j.Logger;
2527

2628
import com.cloud.agent.api.Answer;
@@ -30,7 +32,6 @@
3032
import com.cloud.network.nicira.NatRule;
3133
import com.cloud.network.nicira.NiciraNvpApi;
3234
import com.cloud.network.nicira.NiciraNvpApiException;
33-
import com.cloud.network.nicira.NiciraNvpList;
3435
import com.cloud.network.resource.NiciraNvpResource;
3536
import com.cloud.network.utils.CommandRetryUtility;
3637
import com.cloud.resource.CommandWrapper;
@@ -46,7 +47,7 @@ public Answer execute(final ConfigureStaticNatRulesOnLogicalRouterCommand comman
4647
final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
4748

4849
try {
49-
final NiciraNvpList<NatRule> existingRules = niciraNvpApi.findNatRulesByLogicalRouterUuid(command.getLogicalRouterUuid());
50+
final List<NatRule> existingRules = niciraNvpApi.findNatRulesByLogicalRouterUuid(command.getLogicalRouterUuid());
5051
// Rules of the game (also known as assumptions-that-will-make-stuff-break-later-on)
5152
// A SourceNat rule with a match other than a /32 cidr is assumed to be the "main" SourceNat rule
5253
// Any other SourceNat rule should have a corresponding DestinationNat rule
@@ -58,7 +59,7 @@ public Answer execute(final ConfigureStaticNatRulesOnLogicalRouterCommand comman
5859
NatRule incoming = null;
5960
NatRule outgoing = null;
6061

61-
for (final NatRule storedRule : existingRules.getResults()) {
62+
for (final NatRule storedRule : existingRules) {
6263
if (storedRule.equalsIgnoreUuid(rulepair[1])) {
6364
// The outgoing rule exists
6465
outgoing = storedRule;

plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/resource/wrapper/NiciraNvpFindLogicalSwitchPortCommandWrapper.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@
2121

2222
import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
2323

24+
import java.util.List;
25+
2426
import com.cloud.agent.api.Answer;
2527
import com.cloud.agent.api.FindLogicalSwitchPortAnswer;
2628
import com.cloud.agent.api.FindLogicalSwitchPortCommand;
2729
import com.cloud.network.nicira.LogicalSwitchPort;
2830
import com.cloud.network.nicira.NiciraNvpApi;
2931
import com.cloud.network.nicira.NiciraNvpApiException;
30-
import com.cloud.network.nicira.NiciraNvpList;
3132
import com.cloud.network.resource.NiciraNvpResource;
3233
import com.cloud.network.utils.CommandRetryUtility;
3334
import com.cloud.resource.CommandWrapper;
@@ -44,8 +45,8 @@ public Answer execute(final FindLogicalSwitchPortCommand command, final NiciraNv
4445
final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
4546

4647
try {
47-
final NiciraNvpList<LogicalSwitchPort> ports = niciraNvpApi.findLogicalSwitchPortsByUuid(logicalSwitchUuid, logicalSwitchPortUuid);
48-
if (ports.getResultCount() == 0) {
48+
final List<LogicalSwitchPort> ports = niciraNvpApi.findLogicalSwitchPortsByUuid(logicalSwitchUuid, logicalSwitchPortUuid);
49+
if (ports.size() == 0) {
4950
return new FindLogicalSwitchPortAnswer(command, false, "Logical switchport " + logicalSwitchPortUuid + " not found", null);
5051
} else {
5152
return new FindLogicalSwitchPortAnswer(command, true, "Logical switchport " + logicalSwitchPortUuid + " found", logicalSwitchPortUuid);

0 commit comments

Comments
 (0)