You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by wi...@apache.org on 2015/07/08 21:19:52 UTC
[17/50] [abbrv] git commit: updated refs/heads/reporter to 28300b5
CLOUDSTACK-8590 - Refactoring NiciraNVP resource
- Adding NiciraNvpCreateLogicalRouterCommandWrapper
- Adding NiciraNvpDeleteLogicalSwitchPortCommandWrapper
- Adding NiciraNvpFindLogicalSwitchPortCommandWrapper
- Adding NiciraNvpUpdateLogicalSwitchPortCommandWrapper
- Decoupling private methods from NiciraNvpResource
Signed-off-by: wilderrodrigues <wr...@schubergphilis.com>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b5412691
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b5412691
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b5412691
Branch: refs/heads/reporter
Commit: b54126918b4c4c620e08b0215dce9bd8da8715fd
Parents: b4ce81a
Author: wilderrodrigues <wr...@schubergphilis.com>
Authored: Tue Jun 30 11:18:58 2015 +0200
Committer: wilderrodrigues <wr...@schubergphilis.com>
Committed: Wed Jul 1 15:04:57 2015 +0200
----------------------------------------------------------------------
.../network/resource/NiciraNvpResource.java | 153 +------------------
...iraNvpCreateLogicalRouterCommandWrapper.java | 152 ++++++++++++++++++
...vpDeleteLogicalSwitchPortCommandWrapper.java | 4 -
...aNvpFindLogicalSwitchPortCommandWrapper.java | 59 +++++++
...vpUpdateLogicalSwitchPortCommandWrapper.java | 63 ++++++++
5 files changed, 275 insertions(+), 156 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b5412691/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/NiciraNvpResource.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/NiciraNvpResource.java b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/NiciraNvpResource.java
index 1fd19ea..776b512 100644
--- a/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/NiciraNvpResource.java
+++ b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/NiciraNvpResource.java
@@ -19,8 +19,6 @@
package com.cloud.network.resource;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Map;
import javax.naming.ConfigurationException;
@@ -36,38 +34,24 @@ import com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterAnswer;
import com.cloud.agent.api.ConfigurePublicIpsOnLogicalRouterCommand;
import com.cloud.agent.api.ConfigureStaticNatRulesOnLogicalRouterAnswer;
import com.cloud.agent.api.ConfigureStaticNatRulesOnLogicalRouterCommand;
-import com.cloud.agent.api.CreateLogicalRouterAnswer;
-import com.cloud.agent.api.CreateLogicalRouterCommand;
import com.cloud.agent.api.DeleteLogicalRouterAnswer;
import com.cloud.agent.api.DeleteLogicalRouterCommand;
-import com.cloud.agent.api.FindLogicalSwitchPortAnswer;
-import com.cloud.agent.api.FindLogicalSwitchPortCommand;
import com.cloud.agent.api.PingCommand;
import com.cloud.agent.api.StartupCommand;
import com.cloud.agent.api.StartupNiciraNvpCommand;
-import com.cloud.agent.api.UpdateLogicalSwitchPortAnswer;
-import com.cloud.agent.api.UpdateLogicalSwitchPortCommand;
import com.cloud.agent.api.to.PortForwardingRuleTO;
import com.cloud.agent.api.to.StaticNatRuleTO;
import com.cloud.host.Host;
import com.cloud.host.Host.Type;
import com.cloud.network.nicira.ControlClusterStatus;
import com.cloud.network.nicira.DestinationNatRule;
-import com.cloud.network.nicira.L3GatewayAttachment;
-import com.cloud.network.nicira.LogicalRouter;
import com.cloud.network.nicira.LogicalRouterPort;
-import com.cloud.network.nicira.LogicalSwitchPort;
import com.cloud.network.nicira.Match;
import com.cloud.network.nicira.NatRule;
import com.cloud.network.nicira.NiciraNvpApi;
import com.cloud.network.nicira.NiciraNvpApiException;
import com.cloud.network.nicira.NiciraNvpList;
-import com.cloud.network.nicira.NiciraNvpTag;
-import com.cloud.network.nicira.PatchAttachment;
-import com.cloud.network.nicira.RouterNextHop;
-import com.cloud.network.nicira.SingleDefaultRouteImplicitRoutingConfig;
import com.cloud.network.nicira.SourceNatRule;
-import com.cloud.network.nicira.VifAttachment;
import com.cloud.network.utils.CommandRetryUtility;
import com.cloud.resource.ServerResource;
@@ -205,13 +189,7 @@ public class NiciraNvpResource implements ServerResource {
// [TODO] Remove when all the commands are refactored.
}
- if (cmd instanceof UpdateLogicalSwitchPortCommand) {
- return executeRequest((UpdateLogicalSwitchPortCommand)cmd, NUM_RETRIES);
- } else if (cmd instanceof FindLogicalSwitchPortCommand) {
- return executeRequest((FindLogicalSwitchPortCommand)cmd, NUM_RETRIES);
- } else if (cmd instanceof CreateLogicalRouterCommand) {
- return executeRequest((CreateLogicalRouterCommand)cmd, NUM_RETRIES);
- } else if (cmd instanceof DeleteLogicalRouterCommand) {
+ if (cmd instanceof DeleteLogicalRouterCommand) {
return executeRequest((DeleteLogicalRouterCommand)cmd, NUM_RETRIES);
} else if (cmd instanceof ConfigureStaticNatRulesOnLogicalRouterCommand) {
return executeRequest((ConfigureStaticNatRulesOnLogicalRouterCommand)cmd, NUM_RETRIES);
@@ -237,135 +215,6 @@ public class NiciraNvpResource implements ServerResource {
public void setAgentControl(final IAgentControl agentControl) {
}
- private Answer executeRequest(final UpdateLogicalSwitchPortCommand cmd, final int numRetries) {
- final String logicalSwitchUuid = cmd.getLogicalSwitchUuid();
- final String logicalSwitchPortUuid = cmd.getLogicalSwitchPortUuid();
- final String attachmentUuid = cmd.getAttachmentUuid();
-
- try {
- // Tags set to scope cs_account and account name
- final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
- tags.add(new NiciraNvpTag("cs_account", cmd.getOwnerName()));
-
- niciraNvpApi.updateLogicalSwitchPortAttachment(logicalSwitchUuid, logicalSwitchPortUuid, new VifAttachment(attachmentUuid));
- return new UpdateLogicalSwitchPortAnswer(cmd, true, "Attachment for " + logicalSwitchPortUuid + " updated", logicalSwitchPortUuid);
- } catch (final NiciraNvpApiException e) {
- retryUtility.addRetry(cmd, NUM_RETRIES);
- return retryUtility.retry(cmd, UpdateLogicalSwitchPortAnswer.class, e);
- }
- }
-
- private Answer executeRequest(final FindLogicalSwitchPortCommand cmd, final int numRetries) {
- final String logicalSwitchUuid = cmd.getLogicalSwitchUuid();
- final String logicalSwitchPortUuid = cmd.getLogicalSwitchPortUuid();
-
- try {
- final NiciraNvpList<LogicalSwitchPort> ports = niciraNvpApi.findLogicalSwitchPortsByUuid(logicalSwitchUuid, logicalSwitchPortUuid);
- if (ports.getResultCount() == 0) {
- return new FindLogicalSwitchPortAnswer(cmd, false, "Logical switchport " + logicalSwitchPortUuid + " not found", null);
- } else {
- return new FindLogicalSwitchPortAnswer(cmd, true, "Logical switchport " + logicalSwitchPortUuid + " found", logicalSwitchPortUuid);
- }
- } catch (final NiciraNvpApiException e) {
- retryUtility.addRetry(cmd, NUM_RETRIES);
- return retryUtility.retry(cmd, FindLogicalSwitchPortAnswer.class, e);
- }
- }
-
- private Answer executeRequest(final CreateLogicalRouterCommand cmd, final int numRetries) {
- final String routerName = cmd.getName();
- final String gatewayServiceUuid = cmd.getGatewayServiceUuid();
- final String logicalSwitchUuid = cmd.getLogicalSwitchUuid();
-
- final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
- tags.add(new NiciraNvpTag("cs_account", cmd.getOwnerName()));
-
- final String publicNetworkNextHopIp = cmd.getPublicNextHop();
- final String publicNetworkIpAddress = cmd.getPublicIpCidr();
- final String internalNetworkAddress = cmd.getInternalIpCidr();
-
- s_logger.debug("Creating a logical router with external ip " + publicNetworkIpAddress + " and internal ip " + internalNetworkAddress + "on gateway service " +
- gatewayServiceUuid);
-
- try {
- // Create the Router
- LogicalRouter lrc = new LogicalRouter();
- lrc.setDisplayName(truncate(routerName, NAME_MAX_LEN));
- lrc.setTags(tags);
- lrc.setRoutingConfig(new SingleDefaultRouteImplicitRoutingConfig(new RouterNextHop(publicNetworkNextHopIp)));
- lrc = niciraNvpApi.createLogicalRouter(lrc);
-
- // store the switchport for rollback
- LogicalSwitchPort lsp = null;
-
- try {
- // Create the outside port for the router
- LogicalRouterPort lrpo = new LogicalRouterPort();
- lrpo.setAdminStatusEnabled(true);
- lrpo.setDisplayName(truncate(routerName + "-outside-port", NAME_MAX_LEN));
- lrpo.setTags(tags);
- final List<String> outsideIpAddresses = new ArrayList<String>();
- outsideIpAddresses.add(publicNetworkIpAddress);
- lrpo.setIpAddresses(outsideIpAddresses);
- lrpo = niciraNvpApi.createLogicalRouterPort(lrc.getUuid(), lrpo);
-
- // Attach the outside port to the gateway service on the correct VLAN
- final L3GatewayAttachment attachment = new L3GatewayAttachment(gatewayServiceUuid);
- if (cmd.getVlanId() != 0) {
- attachment.setVlanId(cmd.getVlanId());
- }
- niciraNvpApi.updateLogicalRouterPortAttachment(lrc.getUuid(), lrpo.getUuid(), attachment);
-
- // Create the inside port for the router
- LogicalRouterPort lrpi = new LogicalRouterPort();
- lrpi.setAdminStatusEnabled(true);
- lrpi.setDisplayName(truncate(routerName + "-inside-port", NAME_MAX_LEN));
- lrpi.setTags(tags);
- final List<String> insideIpAddresses = new ArrayList<String>();
- insideIpAddresses.add(internalNetworkAddress);
- lrpi.setIpAddresses(insideIpAddresses);
- lrpi = niciraNvpApi.createLogicalRouterPort(lrc.getUuid(), lrpi);
-
- // Create the inside port on the lswitch
- lsp = new LogicalSwitchPort(truncate(routerName + "-inside-port", NAME_MAX_LEN), tags, true);
- lsp = niciraNvpApi.createLogicalSwitchPort(logicalSwitchUuid, lsp);
-
- // Attach the inside router port to the lswitch port with a PatchAttachment
- niciraNvpApi.updateLogicalRouterPortAttachment(lrc.getUuid(), lrpi.getUuid(), new PatchAttachment(lsp.getUuid()));
-
- // Attach the inside lswitch port to the router with a PatchAttachment
- niciraNvpApi.updateLogicalSwitchPortAttachment(logicalSwitchUuid, lsp.getUuid(), new PatchAttachment(lrpi.getUuid()));
-
- // Setup the source nat rule
- final SourceNatRule snr = new SourceNatRule();
- snr.setToSourceIpAddressMin(publicNetworkIpAddress.split("/")[0]);
- snr.setToSourceIpAddressMax(publicNetworkIpAddress.split("/")[0]);
- final Match match = new Match();
- match.setSourceIpAddresses(internalNetworkAddress);
- snr.setMatch(match);
- snr.setOrder(200);
- niciraNvpApi.createLogicalRouterNatRule(lrc.getUuid(), snr);
- } catch (final NiciraNvpApiException e) {
- // We need to destroy the router if we already created it
- // this will also take care of any router ports and rules
- try {
- niciraNvpApi.deleteLogicalRouter(lrc.getUuid());
- if (lsp != null) {
- niciraNvpApi.deleteLogicalSwitchPort(logicalSwitchUuid, lsp.getUuid());
- }
- } catch (final NiciraNvpApiException ex) {
- }
-
- throw e;
- }
-
- return new CreateLogicalRouterAnswer(cmd, true, "Logical Router created (uuid " + lrc.getUuid() + ")", lrc.getUuid());
- } catch (final NiciraNvpApiException e) {
- retryUtility.addRetry(cmd, NUM_RETRIES);
- return retryUtility.retry(cmd, CreateLogicalRouterAnswer.class, e);
- }
- }
-
private Answer executeRequest(final DeleteLogicalRouterCommand cmd, final int numRetries) {
try {
niciraNvpApi.deleteLogicalRouter(cmd.getLogicalRouterUuid());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b5412691/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpCreateLogicalRouterCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpCreateLogicalRouterCommandWrapper.java b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpCreateLogicalRouterCommandWrapper.java
new file mode 100644
index 0000000..1cddf4f
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpCreateLogicalRouterCommandWrapper.java
@@ -0,0 +1,152 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package com.cloud.network.resource.wrapper;
+
+import static com.cloud.network.resource.NiciraNvpResource.NAME_MAX_LEN;
+import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.cloud.agent.api.Answer;
+import com.cloud.agent.api.CreateLogicalRouterAnswer;
+import com.cloud.agent.api.CreateLogicalRouterCommand;
+import com.cloud.network.nicira.L3GatewayAttachment;
+import com.cloud.network.nicira.LogicalRouter;
+import com.cloud.network.nicira.LogicalRouterPort;
+import com.cloud.network.nicira.LogicalSwitchPort;
+import com.cloud.network.nicira.Match;
+import com.cloud.network.nicira.NiciraNvpApi;
+import com.cloud.network.nicira.NiciraNvpApiException;
+import com.cloud.network.nicira.NiciraNvpTag;
+import com.cloud.network.nicira.PatchAttachment;
+import com.cloud.network.nicira.RouterNextHop;
+import com.cloud.network.nicira.SingleDefaultRouteImplicitRoutingConfig;
+import com.cloud.network.nicira.SourceNatRule;
+import com.cloud.network.resource.NiciraNvpResource;
+import com.cloud.network.utils.CommandRetryUtility;
+import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
+
+@ResourceWrapper(handles = CreateLogicalRouterCommand.class)
+public final class NiciraNvpCreateLogicalRouterCommandWrapper extends CommandWrapper<CreateLogicalRouterCommand, Answer, NiciraNvpResource> {
+
+ private static final Logger s_logger = Logger.getLogger(NiciraNvpCreateLogicalRouterCommandWrapper.class);
+
+ @Override
+ public Answer execute(final CreateLogicalRouterCommand command, final NiciraNvpResource niciraNvpResource) {
+ final String routerName = command.getName();
+ final String gatewayServiceUuid = command.getGatewayServiceUuid();
+ final String logicalSwitchUuid = command.getLogicalSwitchUuid();
+
+ final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
+ tags.add(new NiciraNvpTag("cs_account", command.getOwnerName()));
+
+ final String publicNetworkNextHopIp = command.getPublicNextHop();
+ final String publicNetworkIpAddress = command.getPublicIpCidr();
+ final String internalNetworkAddress = command.getInternalIpCidr();
+
+ s_logger.debug("Creating a logical router with external ip " + publicNetworkIpAddress + " and internal ip " + internalNetworkAddress + "on gateway service " +
+ gatewayServiceUuid);
+
+ final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
+
+ try {
+ // Create the Router
+ LogicalRouter lrc = new LogicalRouter();
+ lrc.setDisplayName(niciraNvpResource.truncate(routerName, NAME_MAX_LEN));
+ lrc.setTags(tags);
+ lrc.setRoutingConfig(new SingleDefaultRouteImplicitRoutingConfig(new RouterNextHop(publicNetworkNextHopIp)));
+ lrc = niciraNvpApi.createLogicalRouter(lrc);
+
+ // store the switchport for rollback
+ LogicalSwitchPort lsp = null;
+
+ try {
+ // Create the outside port for the router
+ LogicalRouterPort lrpo = new LogicalRouterPort();
+ lrpo.setAdminStatusEnabled(true);
+ lrpo.setDisplayName(niciraNvpResource.truncate(routerName + "-outside-port", NAME_MAX_LEN));
+ lrpo.setTags(tags);
+ final List<String> outsideIpAddresses = new ArrayList<String>();
+ outsideIpAddresses.add(publicNetworkIpAddress);
+ lrpo.setIpAddresses(outsideIpAddresses);
+ lrpo = niciraNvpApi.createLogicalRouterPort(lrc.getUuid(), lrpo);
+
+ // Attach the outside port to the gateway service on the correct VLAN
+ final L3GatewayAttachment attachment = new L3GatewayAttachment(gatewayServiceUuid);
+ if (command.getVlanId() != 0) {
+ attachment.setVlanId(command.getVlanId());
+ }
+ niciraNvpApi.updateLogicalRouterPortAttachment(lrc.getUuid(), lrpo.getUuid(), attachment);
+
+ // Create the inside port for the router
+ LogicalRouterPort lrpi = new LogicalRouterPort();
+ lrpi.setAdminStatusEnabled(true);
+ lrpi.setDisplayName(niciraNvpResource.truncate(routerName + "-inside-port", NAME_MAX_LEN));
+ lrpi.setTags(tags);
+ final List<String> insideIpAddresses = new ArrayList<String>();
+ insideIpAddresses.add(internalNetworkAddress);
+ lrpi.setIpAddresses(insideIpAddresses);
+ lrpi = niciraNvpApi.createLogicalRouterPort(lrc.getUuid(), lrpi);
+
+ // Create the inside port on the lswitch
+ lsp = new LogicalSwitchPort(niciraNvpResource.truncate(routerName + "-inside-port", NAME_MAX_LEN), tags, true);
+ lsp = niciraNvpApi.createLogicalSwitchPort(logicalSwitchUuid, lsp);
+
+ // Attach the inside router port to the lswitch port with a PatchAttachment
+ niciraNvpApi.updateLogicalRouterPortAttachment(lrc.getUuid(), lrpi.getUuid(), new PatchAttachment(lsp.getUuid()));
+
+ // Attach the inside lswitch port to the router with a PatchAttachment
+ niciraNvpApi.updateLogicalSwitchPortAttachment(logicalSwitchUuid, lsp.getUuid(), new PatchAttachment(lrpi.getUuid()));
+
+ // Setup the source nat rule
+ final SourceNatRule snr = new SourceNatRule();
+ snr.setToSourceIpAddressMin(publicNetworkIpAddress.split("/")[0]);
+ snr.setToSourceIpAddressMax(publicNetworkIpAddress.split("/")[0]);
+ final Match match = new Match();
+ match.setSourceIpAddresses(internalNetworkAddress);
+ snr.setMatch(match);
+ snr.setOrder(200);
+ niciraNvpApi.createLogicalRouterNatRule(lrc.getUuid(), snr);
+ } catch (final NiciraNvpApiException e) {
+ // We need to destroy the router if we already created it
+ // this will also take care of any router ports and rules
+ try {
+ niciraNvpApi.deleteLogicalRouter(lrc.getUuid());
+ if (lsp != null) {
+ niciraNvpApi.deleteLogicalSwitchPort(logicalSwitchUuid, lsp.getUuid());
+ }
+ } catch (final NiciraNvpApiException ex) {
+ }
+
+ throw e;
+ }
+
+ return new CreateLogicalRouterAnswer(command, true, "Logical Router created (uuid " + lrc.getUuid() + ")", lrc.getUuid());
+ } catch (final NiciraNvpApiException e) {
+ final CommandRetryUtility retryUtility = niciraNvpResource.getRetryUtility();
+ retryUtility.addRetry(command, NUM_RETRIES);
+ return retryUtility.retry(command, CreateLogicalRouterAnswer.class, e);
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b5412691/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpDeleteLogicalSwitchPortCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpDeleteLogicalSwitchPortCommandWrapper.java b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpDeleteLogicalSwitchPortCommandWrapper.java
index 834cccb..b8c69f2 100644
--- a/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpDeleteLogicalSwitchPortCommandWrapper.java
+++ b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpDeleteLogicalSwitchPortCommandWrapper.java
@@ -21,8 +21,6 @@ package com.cloud.network.resource.wrapper;
import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
-import org.apache.log4j.Logger;
-
import com.cloud.agent.api.Answer;
import com.cloud.agent.api.DeleteLogicalSwitchPortAnswer;
import com.cloud.agent.api.DeleteLogicalSwitchPortCommand;
@@ -36,8 +34,6 @@ import com.cloud.resource.ResourceWrapper;
@ResourceWrapper(handles = DeleteLogicalSwitchPortCommand.class)
public final class NiciraNvpDeleteLogicalSwitchPortCommandWrapper extends CommandWrapper<DeleteLogicalSwitchPortCommand, Answer, NiciraNvpResource> {
- private static final Logger s_logger = Logger.getLogger(NiciraNvpDeleteLogicalSwitchPortCommandWrapper.class);
-
@Override
public Answer execute(final DeleteLogicalSwitchPortCommand command, final NiciraNvpResource niciraNvpResource) {
final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b5412691/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpFindLogicalSwitchPortCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpFindLogicalSwitchPortCommandWrapper.java b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpFindLogicalSwitchPortCommandWrapper.java
new file mode 100644
index 0000000..40d58fc
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpFindLogicalSwitchPortCommandWrapper.java
@@ -0,0 +1,59 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package com.cloud.network.resource.wrapper;
+
+import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
+
+import com.cloud.agent.api.Answer;
+import com.cloud.agent.api.FindLogicalSwitchPortAnswer;
+import com.cloud.agent.api.FindLogicalSwitchPortCommand;
+import com.cloud.network.nicira.LogicalSwitchPort;
+import com.cloud.network.nicira.NiciraNvpApi;
+import com.cloud.network.nicira.NiciraNvpApiException;
+import com.cloud.network.nicira.NiciraNvpList;
+import com.cloud.network.resource.NiciraNvpResource;
+import com.cloud.network.utils.CommandRetryUtility;
+import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
+
+@ResourceWrapper(handles = FindLogicalSwitchPortCommand.class)
+public final class NiciraNvpFindLogicalSwitchPortCommandWrapper extends CommandWrapper<FindLogicalSwitchPortCommand, Answer, NiciraNvpResource> {
+
+ @Override
+ public Answer execute(final FindLogicalSwitchPortCommand command, final NiciraNvpResource niciraNvpResource) {
+ final String logicalSwitchUuid = command.getLogicalSwitchUuid();
+ final String logicalSwitchPortUuid = command.getLogicalSwitchPortUuid();
+
+ final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
+
+ try {
+ final NiciraNvpList<LogicalSwitchPort> ports = niciraNvpApi.findLogicalSwitchPortsByUuid(logicalSwitchUuid, logicalSwitchPortUuid);
+ if (ports.getResultCount() == 0) {
+ return new FindLogicalSwitchPortAnswer(command, false, "Logical switchport " + logicalSwitchPortUuid + " not found", null);
+ } else {
+ return new FindLogicalSwitchPortAnswer(command, true, "Logical switchport " + logicalSwitchPortUuid + " found", logicalSwitchPortUuid);
+ }
+ } catch (final NiciraNvpApiException e) {
+ final CommandRetryUtility retryUtility = niciraNvpResource.getRetryUtility();
+ retryUtility.addRetry(command, NUM_RETRIES);
+ return retryUtility.retry(command, FindLogicalSwitchPortAnswer.class, e);
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b5412691/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpUpdateLogicalSwitchPortCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpUpdateLogicalSwitchPortCommandWrapper.java b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpUpdateLogicalSwitchPortCommandWrapper.java
new file mode 100644
index 0000000..9f65938
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpUpdateLogicalSwitchPortCommandWrapper.java
@@ -0,0 +1,63 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package com.cloud.network.resource.wrapper;
+
+import static com.cloud.network.resource.NiciraNvpResource.NUM_RETRIES;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.cloud.agent.api.Answer;
+import com.cloud.agent.api.UpdateLogicalSwitchPortAnswer;
+import com.cloud.agent.api.UpdateLogicalSwitchPortCommand;
+import com.cloud.network.nicira.NiciraNvpApi;
+import com.cloud.network.nicira.NiciraNvpApiException;
+import com.cloud.network.nicira.NiciraNvpTag;
+import com.cloud.network.nicira.VifAttachment;
+import com.cloud.network.resource.NiciraNvpResource;
+import com.cloud.network.utils.CommandRetryUtility;
+import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
+
+@ResourceWrapper(handles = UpdateLogicalSwitchPortCommand.class)
+public final class NiciraNvpUpdateLogicalSwitchPortCommandWrapper extends CommandWrapper<UpdateLogicalSwitchPortCommand, Answer, NiciraNvpResource> {
+
+ @Override
+ public Answer execute(final UpdateLogicalSwitchPortCommand command, final NiciraNvpResource niciraNvpResource) {
+ final String logicalSwitchUuid = command.getLogicalSwitchUuid();
+ final String logicalSwitchPortUuid = command.getLogicalSwitchPortUuid();
+ final String attachmentUuid = command.getAttachmentUuid();
+
+ final NiciraNvpApi niciraNvpApi = niciraNvpResource.getNiciraNvpApi();
+
+ try {
+ // Tags set to scope cs_account and account name
+ final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
+ tags.add(new NiciraNvpTag("cs_account", command.getOwnerName()));
+
+ niciraNvpApi.updateLogicalSwitchPortAttachment(logicalSwitchUuid, logicalSwitchPortUuid, new VifAttachment(attachmentUuid));
+ return new UpdateLogicalSwitchPortAnswer(command, true, "Attachment for " + logicalSwitchPortUuid + " updated", logicalSwitchPortUuid);
+ } catch (final NiciraNvpApiException e) {
+ final CommandRetryUtility retryUtility = niciraNvpResource.getRetryUtility();
+ retryUtility.addRetry(command, NUM_RETRIES);
+ return retryUtility.retry(command, UpdateLogicalSwitchPortAnswer.class, e);
+ }
+ }
+}
\ No newline at end of file