You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2012/05/28 00:30:44 UTC

[39/50] git commit: CS-9919 Support for Nexus Swiches (Cisco Vswitches)

CS-9919 Support for Nexus Swiches (Cisco Vswitches)

Description:

	Missed out a file in previous commit when adding
	the new API getCiscoVSMByClusterId. Stub file was
	added by Sateesh to prevent breakage. Putting the
	file in in this commit plus better exception
	handling.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/f774ef74
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/f774ef74
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/f774ef74

Branch: refs/heads/master
Commit: f774ef7415f751a99fd45ff6265ef50ae53dca80
Parents: 75d0f91
Author: Vijayendra Bhamidipati <vi...@citrix.com>
Authored: Mon May 14 15:18:45 2012 -0700
Committer: Vijayendra Bhamidipati <vi...@citrix.com>
Committed: Fri May 25 17:45:03 2012 -0700

----------------------------------------------------------------------
 .../api/commands/GetCiscoVSMByClusterIdCmd.java    |  135 +++++++++++----
 .../network/element/CiscoNexusVSMElement.java      |    3 +
 2 files changed, 102 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f774ef74/server/src/com/cloud/api/commands/GetCiscoVSMByClusterIdCmd.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/commands/GetCiscoVSMByClusterIdCmd.java b/server/src/com/cloud/api/commands/GetCiscoVSMByClusterIdCmd.java
index 41a903f..0212a8d 100755
--- a/server/src/com/cloud/api/commands/GetCiscoVSMByClusterIdCmd.java
+++ b/server/src/com/cloud/api/commands/GetCiscoVSMByClusterIdCmd.java
@@ -1,36 +1,99 @@
-package com.cloud.api.commands;
-
-import com.cloud.api.BaseCmd;
-import com.cloud.api.ServerApiException;
-import com.cloud.exception.ConcurrentOperationException;
-import com.cloud.exception.InsufficientCapacityException;
-import com.cloud.exception.NetworkRuleConflictException;
-import com.cloud.exception.ResourceAllocationException;
-import com.cloud.exception.ResourceUnavailableException;
-
-public class GetCiscoVSMByClusterIdCmd extends BaseCmd {
-
-    @Override
-    public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public String getCommandName() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public long getEntityOwnerId() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public long getClusterId() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-}
+/**
+ *  Copyright (C) 2011 Citrix Systems, Inc.  All rights reserved.
+ * 
+ * This software is licensed under the GNU General Public License v3 or later.
+ * 
+ * It is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * 
+ */
+
+package com.cloud.api.commands;
+
+import org.apache.log4j.Logger;
+import com.cloud.api.ApiConstants;
+import com.cloud.api.BaseAsyncCmd;
+import com.cloud.api.BaseCmd;
+import com.cloud.api.IdentityMapper;
+import com.cloud.api.Implementation;
+import com.cloud.api.Parameter;
+import com.cloud.api.PlugService;
+import com.cloud.api.ServerApiException;
+import com.cloud.api.response.CiscoNexusVSMResponse;
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.network.CiscoNexusVSMDeviceVO;
+import com.cloud.network.element.CiscoNexusVSMElementService;
+import com.cloud.user.UserContext;
+import com.cloud.utils.exception.CloudRuntimeException;
+
+@Implementation(responseObject=CiscoNexusVSMResponse.class, description="Retrieves a Cisco Nexus 1000v Virtual Switch Manager device associated with a Cluster")
+public class GetCiscoVSMByClusterIdCmd extends BaseCmd {
+
+    public static final Logger s_logger = Logger.getLogger(GetCiscoVSMByClusterIdCmd.class.getName());
+    private static final String s_name = "getciscovsmbyclusteridcmdresponse";
+    @PlugService CiscoNexusVSMElementService _ciscoNexusVSMService;
+
+    /////////////////////////////////////////////////////
+    //////////////// API parameters /////////////////////
+    /////////////////////////////////////////////////////
+
+    @IdentityMapper(entityTableName="cluster")
+    @Parameter(name=ApiConstants.ID, type=CommandType.LONG, required = true, description="Id of the CloudStack cluster in which the Cisco Nexus 1000v VSM appliance.")
+    private long id;
+
+    /////////////////////////////////////////////////////
+    /////////////////// Accessors ///////////////////////
+    /////////////////////////////////////////////////////
+    
+    public long getClusterId() {
+    	return id;
+    }
+
+    /////////////////////////////////////////////////////
+    /////////////// API Implementation///////////////////
+    /////////////////////////////////////////////////////
+
+    // NOTE- The uuid that is sent in during the invocation of the API AddCiscoNexusVSM()
+    // automagically gets translated to the corresponding db id before this execute() method
+    // is invoked. That's the reason why we don't have any uuid-dbid translation code here.
+    @Override
+    public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException {
+        try {
+            CiscoNexusVSMDeviceVO vsmDeviceVO = _ciscoNexusVSMService.getCiscoNexusVSMByClusId(this);
+            if (vsmDeviceVO != null) {
+                CiscoNexusVSMResponse response = _ciscoNexusVSMService.createCiscoNexusVSMResponse(vsmDeviceVO);
+                response.setObjectName("cisconexusvsm");
+                response.setResponseName(getCommandName());
+                this.setResponseObject(response);
+            } else {
+                throw new ServerApiException(BaseAsyncCmd.INTERNAL_ERROR, "Failed to retrieve Cisco Nexus Virtual Switch Manager for the specified cluster due to an internal error.");
+            }
+        }  catch (InvalidParameterValueException invalidParamExcp) {
+            throw new ServerApiException(BaseCmd.PARAM_ERROR, invalidParamExcp.getMessage());
+        } catch (CloudRuntimeException runtimeExcp) {
+            throw new ServerApiException(BaseCmd.INTERNAL_ERROR, runtimeExcp.getMessage());
+        }
+    }
+ 
+    @Override
+    public String getCommandName() {
+        return s_name;
+    }
+
+    @Override
+    public long getEntityOwnerId() {
+        return UserContext.current().getCaller().getId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f774ef74/server/src/com/cloud/network/element/CiscoNexusVSMElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/CiscoNexusVSMElement.java b/server/src/com/cloud/network/element/CiscoNexusVSMElement.java
index d9e7df2..675636b 100644
--- a/server/src/com/cloud/network/element/CiscoNexusVSMElement.java
+++ b/server/src/com/cloud/network/element/CiscoNexusVSMElement.java
@@ -218,6 +218,9 @@ public class CiscoNexusVSMElement extends CiscoNexusVSMDeviceManagerImpl impleme
     @Override
     public CiscoNexusVSMDeviceVO getCiscoNexusVSMByClusId(GetCiscoVSMByClusterIdCmd cmd) {
     	CiscoNexusVSMDeviceVO result = getCiscoVSMbyClusId(cmd.getClusterId());
+    	if (result == null) {
+    		throw new CloudRuntimeException("No Cisco VSM associated with specified Cluster Id");
+    	}
     	return result;
     }