CLOUDSTACK-8590 - Refactoring NiciraNVP resource

   - Adding NiciraNvpCreateLogicalSwitchPortCommandWrapper
   - Removing unsued field from NiciraNvpResourceTest

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/361ab5dd
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/361ab5dd
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/361ab5dd

Branch: refs/heads/master
Commit: 361ab5ddbd138559423f747b1030608633f2af00
Parents: 28c1da9
Author: wilderrodrigues <[email protected]>
Authored: Tue Jun 30 10:22:25 2015 +0200
Committer: wilderrodrigues <[email protected]>
Committed: Wed Jul 1 15:04:57 2015 +0200

----------------------------------------------------------------------
 .../network/resource/NiciraNvpResource.java     | 31 +--------
 .../network/resource/NiciraNvpUtilities.java    | 17 +++++
 ...vpCreateLogicalSwitchPortCommandWrapper.java | 70 ++++++++++++++++++++
 .../network/resource/NiciraNvpResourceTest.java |  2 -
 4 files changed, 88 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/361ab5dd/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 1ab1992..85faf9d 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
@@ -38,8 +38,6 @@ 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.CreateLogicalSwitchPortAnswer;
-import com.cloud.agent.api.CreateLogicalSwitchPortCommand;
 import com.cloud.agent.api.DeleteLogicalRouterAnswer;
 import com.cloud.agent.api.DeleteLogicalRouterCommand;
 import com.cloud.agent.api.DeleteLogicalSwitchPortAnswer;
@@ -209,9 +207,7 @@ public class NiciraNvpResource implements ServerResource {
             // [TODO] Remove when all the commands are refactored.
         }
 
-        if (cmd instanceof CreateLogicalSwitchPortCommand) {
-            return executeRequest((CreateLogicalSwitchPortCommand)cmd, 
NUM_RETRIES);
-        } else if (cmd instanceof DeleteLogicalSwitchPortCommand) {
+        if (cmd instanceof DeleteLogicalSwitchPortCommand) {
             return executeRequest((DeleteLogicalSwitchPortCommand)cmd, 
NUM_RETRIES);
         } else if (cmd instanceof UpdateLogicalSwitchPortCommand) {
             return executeRequest((UpdateLogicalSwitchPortCommand)cmd, 
NUM_RETRIES);
@@ -245,31 +241,6 @@ public class NiciraNvpResource implements ServerResource {
     public void setAgentControl(final IAgentControl agentControl) {
     }
 
-    private Answer executeRequest(final CreateLogicalSwitchPortCommand cmd, 
final int numRetries) {
-        final String logicalSwitchUuid = cmd.getLogicalSwitchUuid();
-        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()));
-
-            final LogicalSwitchPort logicalSwitchPort = new 
LogicalSwitchPort(attachmentUuid, tags, true);
-            final LogicalSwitchPort newPort = 
niciraNvpApi.createLogicalSwitchPort(logicalSwitchUuid, logicalSwitchPort);
-            try {
-                
niciraNvpApi.updateLogicalSwitchPortAttachment(cmd.getLogicalSwitchUuid(), 
newPort.getUuid(), new VifAttachment(attachmentUuid));
-            } catch (final NiciraNvpApiException ex) {
-                s_logger.warn("modifyLogicalSwitchPort failed after switchport 
was created, removing switchport");
-                
niciraNvpApi.deleteLogicalSwitchPort(cmd.getLogicalSwitchUuid(), 
newPort.getUuid());
-                throw ex; // Rethrow the original exception
-            }
-            return new CreateLogicalSwitchPortAnswer(cmd, true, "Logical 
switch port " + newPort.getUuid() + " created", newPort.getUuid());
-        } catch (final NiciraNvpApiException e) {
-            retryUtility.addRetry(cmd, NUM_RETRIES);
-            return retryUtility.retry(cmd, 
CreateLogicalSwitchPortAnswer.class, e);
-        }
-    }
-
     private Answer executeRequest(final DeleteLogicalSwitchPortCommand cmd, 
final int numRetries) {
         try {
             niciraNvpApi.deleteLogicalSwitchPort(cmd.getLogicalSwitchUuid(), 
cmd.getLogicalSwitchPortUuid());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/361ab5dd/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/NiciraNvpUtilities.java
----------------------------------------------------------------------
diff --git 
a/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/NiciraNvpUtilities.java
 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/NiciraNvpUtilities.java
index 69cacab..f63ca98 100644
--- 
a/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/NiciraNvpUtilities.java
+++ 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/NiciraNvpUtilities.java
@@ -18,7 +18,13 @@
 //
 package com.cloud.network.resource;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import com.cloud.agent.api.CreateLogicalSwitchPortCommand;
 import com.cloud.network.nicira.LogicalSwitch;
+import com.cloud.network.nicira.LogicalSwitchPort;
+import com.cloud.network.nicira.NiciraNvpTag;
 
 public class NiciraNvpUtilities {
 
@@ -39,4 +45,15 @@ public class NiciraNvpUtilities {
         final LogicalSwitch logicalSwitch = new LogicalSwitch();
         return logicalSwitch;
     }
+
+    public LogicalSwitchPort createLogicalSwitchPort(final 
CreateLogicalSwitchPortCommand command) {
+        final String attachmentUuid = command.getAttachmentUuid();
+
+        // Tags set to scope cs_account and account name
+        final List<NiciraNvpTag> tags = new ArrayList<NiciraNvpTag>();
+        tags.add(new NiciraNvpTag("cs_account", command.getOwnerName()));
+
+        final LogicalSwitchPort logicalSwitchPort = new 
LogicalSwitchPort(attachmentUuid, tags, true);
+        return logicalSwitchPort;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/361ab5dd/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpCreateLogicalSwitchPortCommandWrapper.java
----------------------------------------------------------------------
diff --git 
a/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpCreateLogicalSwitchPortCommandWrapper.java
 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpCreateLogicalSwitchPortCommandWrapper.java
new file mode 100644
index 0000000..42a4067
--- /dev/null
+++ 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/resource/wrapper/NiciraNvpCreateLogicalSwitchPortCommandWrapper.java
@@ -0,0 +1,70 @@
+//
+// 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 org.apache.log4j.Logger;
+
+import com.cloud.agent.api.Answer;
+import com.cloud.agent.api.CreateLogicalSwitchPortAnswer;
+import com.cloud.agent.api.CreateLogicalSwitchPortCommand;
+import com.cloud.network.nicira.LogicalSwitchPort;
+import com.cloud.network.nicira.NiciraNvpApi;
+import com.cloud.network.nicira.NiciraNvpApiException;
+import com.cloud.network.nicira.VifAttachment;
+import com.cloud.network.resource.NiciraNvpResource;
+import com.cloud.network.resource.NiciraNvpUtilities;
+import com.cloud.network.utils.CommandRetryUtility;
+import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
+
+@ResourceWrapper(handles =  CreateLogicalSwitchPortCommand.class)
+public final class NiciraNvpCreateLogicalSwitchPortCommandWrapper extends 
CommandWrapper<CreateLogicalSwitchPortCommand, Answer, NiciraNvpResource> {
+
+    private static final Logger s_logger = 
Logger.getLogger(NiciraNvpCreateLogicalSwitchPortCommandWrapper.class);
+
+    @Override
+    public Answer execute(final CreateLogicalSwitchPortCommand command, final 
NiciraNvpResource niciraNvpResource) {
+        final NiciraNvpUtilities niciraNvpUtilities = 
niciraNvpResource.getNiciraNvpUtilities();
+
+        final String logicalSwitchUuid = command.getLogicalSwitchUuid();
+        final String attachmentUuid = command.getAttachmentUuid();
+
+        try {
+            final NiciraNvpApi niciraNvpApi = 
niciraNvpResource.getNiciraNvpApi();
+
+            final LogicalSwitchPort logicalSwitchPort = 
niciraNvpUtilities.createLogicalSwitchPort(command);
+            final LogicalSwitchPort newPort = 
niciraNvpApi.createLogicalSwitchPort(logicalSwitchUuid, logicalSwitchPort);
+            try {
+                
niciraNvpApi.updateLogicalSwitchPortAttachment(command.getLogicalSwitchUuid(), 
newPort.getUuid(), new VifAttachment(attachmentUuid));
+            } catch (final NiciraNvpApiException ex) {
+                s_logger.warn("modifyLogicalSwitchPort failed after switchport 
was created, removing switchport");
+                
niciraNvpApi.deleteLogicalSwitchPort(command.getLogicalSwitchUuid(), 
newPort.getUuid());
+                throw ex; // Rethrow the original exception
+            }
+            return new CreateLogicalSwitchPortAnswer(command, true, "Logical 
switch port " + newPort.getUuid() + " created", newPort.getUuid());
+        } catch (final NiciraNvpApiException e) {
+            final CommandRetryUtility retryUtility = 
niciraNvpResource.getRetryUtility();
+            retryUtility.addRetry(command, NUM_RETRIES);
+            return retryUtility.retry(command, 
CreateLogicalSwitchPortAnswer.class, e);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/361ab5dd/plugins/network-elements/nicira-nvp/test/com/cloud/network/resource/NiciraNvpResourceTest.java
----------------------------------------------------------------------
diff --git 
a/plugins/network-elements/nicira-nvp/test/com/cloud/network/resource/NiciraNvpResourceTest.java
 
b/plugins/network-elements/nicira-nvp/test/com/cloud/network/resource/NiciraNvpResourceTest.java
index b8b81b2..ccee017 100644
--- 
a/plugins/network-elements/nicira-nvp/test/com/cloud/network/resource/NiciraNvpResourceTest.java
+++ 
b/plugins/network-elements/nicira-nvp/test/com/cloud/network/resource/NiciraNvpResourceTest.java
@@ -92,7 +92,6 @@ public class NiciraNvpResourceTest {
     NiciraNvpResource resource;
     Map<String, Object> parameters;
 
-    private NiciraNvpUtilities niciraNvpUtilities;
     private CommandRetryUtility retryUtility;
 
     @Before
@@ -112,7 +111,6 @@ public class NiciraNvpResourceTest {
         parameters.put("zoneId", "blublub");
         parameters.put("adminpass", "adminpass");
 
-        niciraNvpUtilities = NiciraNvpUtilities.getInstance();
         retryUtility = CommandRetryUtility.getInstance();
         retryUtility.setServerResource(resource);
     }

Reply via email to