CLOUDSTACK-8590 - Refactoring NiciraNVP resource

   - Adding NiciraNvpCreateLogicalRouterCommandWrapper
   - Adding NiciraNvpDeleteLogicalSwitchPortCommandWrapper
   - Adding NiciraNvpFindLogicalSwitchPortCommandWrapper
   - Adding NiciraNvpUpdateLogicalSwitchPortCommandWrapper
   - Decoupling private methods from NiciraNvpResource

Signed-off-by: wilderrodrigues <[email protected]>


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/master
Commit: b54126918b4c4c620e08b0215dce9bd8da8715fd
Parents: b4ce81a
Author: wilderrodrigues <[email protected]>
Authored: Tue Jun 30 11:18:58 2015 +0200
Committer: wilderrodrigues <[email protected]>
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

Reply via email to