You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2013/02/13 02:07:01 UTC

[2/50] [abbrv] git commit: refs/heads/vim51_win8 - CLOUDSTACK-1210: Fix pluggable service, apiserver, mgmt server impl, api-discovery

CLOUDSTACK-1210: Fix pluggable service, apiserver, mgmt server impl, api-discovery

- Mgmt server impl is a pluggable service, fix it's method
- Fix getCommands() to return all cmd api classes supported by this mgmt server
- For api-discovery, get commands from pluggable services only, don't use reflections
- Don't use reflections in ApiServer, iterate pluggableservices
- Fix api discovery unit test
- The fix was done automatically using following python program along with
  following step:

1. Get all apis provided by default mgmt server, all of them are in cloud-api now
   cd api/src/org/apache/cloudstack/api/command
   find . >> apis
2. For all apis, generate java code that adds the class to the cmdList arraylist:
   f = open('apis', 'r')
   data = f.read()
   f.close()
   output = ""
   for a in data.split('\n'):
     output += "cmdList.add(%s);" % a.split('/')[-1].replace('.java', '.class')
   # wrote output to a file, copied content to mgmt server impl's getCommands()
   # similarly, fixed import statements using same code, splitting on /

Testing:
Ran apiserver, put breakpoints in ApiServer's init() where classes are processed
Total cmd classes found by reflections (ReflectUtil) = 354
Total cmd classes found by getCommands for all pluggable services = 354

Next, copied the comma separated values for each set to a string in ipython, a & b
set(a).difference(set(b)) returned null.

The above test implies both set of cmd classes found by both methods, i.e. using
reflections and using getCommands() had same set of apis and all were unique.

Conclusion:
The changes are idempotent and don't break api server's cmd class api discovery
processing.

BUG-ID: CLOUDSTACK-1210

Signed-off-by: Rohit Yadav <bh...@apache.org>


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

Branch: refs/heads/vim51_win8
Commit: b59a18d1a1be114405b4cb3aa80b3938058ae664
Parents: 3a0588f
Author: Rohit Yadav <bh...@apache.org>
Authored: Fri Feb 8 16:21:46 2013 +0530
Committer: Rohit Yadav <bh...@apache.org>
Committed: Fri Feb 8 16:48:13 2013 +0530

----------------------------------------------------------------------
 .../discovery/ApiDiscoveryServiceImpl.java         |    4 +-
 .../cloudstack/discovery/ApiDiscoveryTest.java     |    2 +-
 server/src/com/cloud/api/ApiServer.java            |   17 +-
 .../src/com/cloud/server/ManagementServerImpl.java |  392 +++++++++++++--
 4 files changed, 361 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b59a18d1/plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
----------------------------------------------------------------------
diff --git a/plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java b/plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
index 087b166..30123c7 100644
--- a/plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
+++ b/plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
@@ -68,9 +68,7 @@ public class ApiDiscoveryServiceImpl implements ApiDiscoveryService {
         if (s_apiNameDiscoveryResponseMap == null) {
             long startTime = System.nanoTime();
             s_apiNameDiscoveryResponseMap = new HashMap<String, ApiDiscoveryResponse>();
-            //TODO: Fix and use PluggableService to get the classes
-            Set<Class<?>> cmdClasses = ReflectUtil.getClassesWithAnnotation(APICommand.class,
-                    new String[]{"org.apache.cloudstack.api", "com.cloud.api"});
+            Set<Class<?>> cmdClasses = new HashSet<Class<?>>();
             for(PluggableService service: _services)
                 cmdClasses.addAll(service.getCommands());
             cacheResponseMap(cmdClasses);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b59a18d1/plugins/api/discovery/test/org/apache/cloudstack/discovery/ApiDiscoveryTest.java
----------------------------------------------------------------------
diff --git a/plugins/api/discovery/test/org/apache/cloudstack/discovery/ApiDiscoveryTest.java b/plugins/api/discovery/test/org/apache/cloudstack/discovery/ApiDiscoveryTest.java
index 320d20a..afff746 100644
--- a/plugins/api/discovery/test/org/apache/cloudstack/discovery/ApiDiscoveryTest.java
+++ b/plugins/api/discovery/test/org/apache/cloudstack/discovery/ApiDiscoveryTest.java
@@ -83,7 +83,7 @@ public class ApiDiscoveryTest {
     @Test
     public void verifyListApis() throws Exception {
         ListResponse<ApiDiscoveryResponse> responses = (ListResponse<ApiDiscoveryResponse>) _discoveryService.listApis(testUser, null);
-        assertTrue("No. of response items > 1", responses.getCount() > 1);
+        assertTrue("No. of response items > 1", responses.getCount() == 1);
         for (ApiDiscoveryResponse response: responses.getResponses()) {
             assertFalse("API name is empty", response.getName().isEmpty());
             assertFalse("API description is empty", response.getDescription().isEmpty());

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b59a18d1/server/src/com/cloud/api/ApiServer.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java
index e41fcb5..d99d188 100755
--- a/server/src/com/cloud/api/ApiServer.java
+++ b/server/src/com/cloud/api/ApiServer.java
@@ -29,15 +29,7 @@ import java.security.SecureRandom;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TimeZone;
+import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
@@ -64,7 +56,6 @@ import org.apache.cloudstack.api.command.admin.router.ListRoutersCmd;
 import org.apache.cloudstack.api.command.admin.storage.ListStoragePoolsCmd;
 import org.apache.cloudstack.api.command.admin.user.ListUsersCmd;
 import com.cloud.event.ActionEventUtils;
-import com.cloud.utils.ReflectUtil;
 import org.apache.cloudstack.acl.APILimitChecker;
 import org.apache.cloudstack.api.*;
 import org.apache.cloudstack.api.command.user.account.ListAccountsCmd;
@@ -149,7 +140,6 @@ import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.SearchCriteria;
 import com.cloud.utils.db.Transaction;
 
-
 @Component
 public class ApiServer implements HttpRequestHandler {
     private static final Logger s_logger = Logger.getLogger(ApiServer.class.getName());
@@ -165,7 +155,6 @@ public class ApiServer implements HttpRequestHandler {
     @Inject private ConfigurationDao _configDao;
 
     @Inject List<PluggableService> _pluggableServices;
-
     @Inject List<APIChecker> _apiAccessCheckers;
 
     private Account _systemAccount = null;
@@ -219,9 +208,7 @@ public class ApiServer implements HttpRequestHandler {
             }
         }
 
-        Set<Class<?>> cmdClasses = ReflectUtil.getClassesWithAnnotation(APICommand.class,
-                new String[]{"org.apache.cloudstack.api", "com.cloud.api"});
-
+        Set<Class<?>> cmdClasses = new HashSet<Class<?>>();
         for(PluggableService pluggableService: _pluggableServices)
             cmdClasses.addAll(pluggableService.getCommands());
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b59a18d1/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index fd6c876..0943bfc 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -53,40 +53,56 @@ import org.apache.cloudstack.api.ApiConstants;
 
 import com.cloud.event.ActionEventUtils;
 import org.apache.cloudstack.api.BaseUpdateTemplateOrIsoCmd;
-import org.apache.cloudstack.api.command.admin.cluster.ListClustersCmd;
-import org.apache.cloudstack.api.command.admin.config.ListCfgsByCmd;
-import org.apache.cloudstack.api.command.admin.domain.UpdateDomainCmd;
-import org.apache.cloudstack.api.command.admin.host.ListHostsCmd;
-import org.apache.cloudstack.api.command.admin.host.UpdateHostPasswordCmd;
-import org.apache.cloudstack.api.command.admin.pod.ListPodsByCmd;
-import org.apache.cloudstack.api.command.admin.resource.ListAlertsCmd;
-import org.apache.cloudstack.api.command.admin.resource.ListCapacityCmd;
-import org.apache.cloudstack.api.command.admin.resource.UploadCustomCertificateCmd;
-import org.apache.cloudstack.api.command.admin.systemvm.DestroySystemVmCmd;
-import org.apache.cloudstack.api.command.admin.systemvm.ListSystemVMsCmd;
-import org.apache.cloudstack.api.command.admin.systemvm.RebootSystemVmCmd;
-import org.apache.cloudstack.api.command.admin.systemvm.StopSystemVmCmd;
-import org.apache.cloudstack.api.command.admin.systemvm.UpgradeSystemVMCmd;
-import org.apache.cloudstack.api.command.admin.vlan.ListVlanIpRangesCmd;
-import org.apache.cloudstack.api.command.user.address.ListPublicIpAddressesCmd;
-import org.apache.cloudstack.api.command.user.config.ListCapabilitiesCmd;
-import org.apache.cloudstack.api.command.user.guest.ListGuestOsCategoriesCmd;
-import org.apache.cloudstack.api.command.user.guest.ListGuestOsCmd;
-import org.apache.cloudstack.api.command.user.iso.ListIsosCmd;
-import org.apache.cloudstack.api.command.user.iso.UpdateIsoCmd;
-import org.apache.cloudstack.api.command.user.offering.ListDiskOfferingsCmd;
-import org.apache.cloudstack.api.command.user.offering.ListServiceOfferingsCmd;
-import org.apache.cloudstack.api.command.user.ssh.CreateSSHKeyPairCmd;
-import org.apache.cloudstack.api.command.user.ssh.ListSSHKeyPairsCmd;
-import org.apache.cloudstack.api.command.user.ssh.DeleteSSHKeyPairCmd;
-import org.apache.cloudstack.api.command.user.ssh.ListSSHKeyPairsCmd;
-import org.apache.cloudstack.api.command.user.ssh.RegisterSSHKeyPairCmd;
-import org.apache.cloudstack.api.command.user.template.ListTemplatesCmd;
-import org.apache.cloudstack.api.command.user.template.UpdateTemplateCmd;
-import org.apache.cloudstack.api.command.user.vm.GetVMPasswordCmd;
-import org.apache.cloudstack.api.command.user.vmgroup.UpdateVMGroupCmd;
-import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd;
-import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd;
+import org.apache.cloudstack.api.command.admin.account.*;
+import org.apache.cloudstack.api.command.admin.autoscale.*;
+import org.apache.cloudstack.api.command.admin.cluster.*;
+import org.apache.cloudstack.api.command.admin.config.*;
+import org.apache.cloudstack.api.command.admin.domain.*;
+import org.apache.cloudstack.api.command.admin.host.*;
+import org.apache.cloudstack.api.command.admin.ldap.*;
+import org.apache.cloudstack.api.command.admin.network.*;
+import org.apache.cloudstack.api.command.admin.offering.*;
+import org.apache.cloudstack.api.command.admin.pod.*;
+import org.apache.cloudstack.api.command.admin.region.*;
+import org.apache.cloudstack.api.command.admin.resource.*;
+import org.apache.cloudstack.api.command.admin.router.*;
+import org.apache.cloudstack.api.command.admin.storage.*;
+import org.apache.cloudstack.api.command.admin.swift.*;
+import org.apache.cloudstack.api.command.admin.systemvm.*;
+import org.apache.cloudstack.api.command.admin.template.*;
+import org.apache.cloudstack.api.command.admin.usage.*;
+import org.apache.cloudstack.api.command.admin.user.*;
+import org.apache.cloudstack.api.command.admin.vlan.*;
+import org.apache.cloudstack.api.command.admin.vm.*;
+import org.apache.cloudstack.api.command.admin.vpc.*;
+import org.apache.cloudstack.api.command.admin.zone.*;
+import org.apache.cloudstack.api.command.user.account.*;
+import org.apache.cloudstack.api.command.user.address.*;
+import org.apache.cloudstack.api.command.user.autoscale.*;
+import org.apache.cloudstack.api.command.user.config.*;
+import org.apache.cloudstack.api.command.user.event.*;
+import org.apache.cloudstack.api.command.user.firewall.*;
+import org.apache.cloudstack.api.command.user.guest.*;
+import org.apache.cloudstack.api.command.user.iso.*;
+import org.apache.cloudstack.api.command.user.job.*;
+import org.apache.cloudstack.api.command.user.loadbalancer.*;
+import org.apache.cloudstack.api.command.user.nat.*;
+import org.apache.cloudstack.api.command.user.network.*;
+import org.apache.cloudstack.api.command.user.offering.*;
+import org.apache.cloudstack.api.command.user.project.*;
+import org.apache.cloudstack.api.command.user.region.*;
+import org.apache.cloudstack.api.command.user.resource.*;
+import org.apache.cloudstack.api.command.user.securitygroup.*;
+import org.apache.cloudstack.api.command.user.snapshot.*;
+import org.apache.cloudstack.api.command.user.ssh.*;
+import org.apache.cloudstack.api.command.user.tag.*;
+import org.apache.cloudstack.api.command.user.template.*;
+import org.apache.cloudstack.api.command.user.vm.*;
+import org.apache.cloudstack.api.command.user.vmgroup.*;
+import org.apache.cloudstack.api.command.user.volume.*;
+import org.apache.cloudstack.api.command.user.vpc.*;
+import org.apache.cloudstack.api.command.user.vpn.*;
+import org.apache.cloudstack.api.command.user.zone.*;
 import org.apache.cloudstack.api.response.ExtractResponse;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.log4j.Logger;
@@ -1820,7 +1836,313 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
     @Override
     public List<Class<?>> getCommands() {
         List<Class<?>> cmdList = new ArrayList<Class<?>>();
-        //TODO: Add cmd classes
+        cmdList.add(CreateAccountCmd.class);
+        cmdList.add(DeleteAccountCmd.class);
+        cmdList.add(DisableAccountCmd.class);
+        cmdList.add(EnableAccountCmd.class);
+        cmdList.add(LockAccountCmd.class);
+        cmdList.add(UpdateAccountCmd.class);
+        cmdList.add(CreateCounterCmd.class);
+        cmdList.add(DeleteCounterCmd.class);
+        cmdList.add(AddClusterCmd.class);
+        cmdList.add(DeleteClusterCmd.class);
+        cmdList.add(ListClustersCmd.class);
+        cmdList.add(UpdateClusterCmd.class);
+        cmdList.add(ListCfgsByCmd.class);
+        cmdList.add(ListHypervisorCapabilitiesCmd.class);
+        cmdList.add(UpdateCfgCmd.class);
+        cmdList.add(UpdateHypervisorCapabilitiesCmd.class);
+        cmdList.add(CreateDomainCmd.class);
+        cmdList.add(DeleteDomainCmd.class);
+        cmdList.add(ListDomainChildrenCmd.class);
+        cmdList.add(ListDomainsCmd.class);
+        cmdList.add(UpdateDomainCmd.class);
+        cmdList.add(AddHostCmd.class);
+        cmdList.add(AddSecondaryStorageCmd.class);
+        cmdList.add(CancelMaintenanceCmd.class);
+        cmdList.add(DeleteHostCmd.class);
+        cmdList.add(ListHostsCmd.class);
+        cmdList.add(PrepareForMaintenanceCmd.class);
+        cmdList.add(ReconnectHostCmd.class);
+        cmdList.add(UpdateHostCmd.class);
+        cmdList.add(UpdateHostPasswordCmd.class);
+        cmdList.add(LDAPConfigCmd.class);
+        cmdList.add(LDAPRemoveCmd.class);
+        cmdList.add(AddNetworkDeviceCmd.class);
+        cmdList.add(AddNetworkServiceProviderCmd.class);
+        cmdList.add(CreateNetworkOfferingCmd.class);
+        cmdList.add(CreatePhysicalNetworkCmd.class);
+        cmdList.add(CreateStorageNetworkIpRangeCmd.class);
+        cmdList.add(DeleteNetworkDeviceCmd.class);
+        cmdList.add(DeleteNetworkOfferingCmd.class);
+        cmdList.add(DeleteNetworkServiceProviderCmd.class);
+        cmdList.add(DeletePhysicalNetworkCmd.class);
+        cmdList.add(DeleteStorageNetworkIpRangeCmd.class);
+        cmdList.add(ListNetworkDeviceCmd.class);
+        cmdList.add(ListNetworkServiceProvidersCmd.class);
+        cmdList.add(ListPhysicalNetworksCmd.class);
+        cmdList.add(ListStorageNetworkIpRangeCmd.class);
+        cmdList.add(ListSupportedNetworkServicesCmd.class);
+        cmdList.add(UpdateNetworkOfferingCmd.class);
+        cmdList.add(UpdateNetworkServiceProviderCmd.class);
+        cmdList.add(UpdatePhysicalNetworkCmd.class);
+        cmdList.add(UpdateStorageNetworkIpRangeCmd.class);
+        cmdList.add(CreateDiskOfferingCmd.class);
+        cmdList.add(CreateServiceOfferingCmd.class);
+        cmdList.add(DeleteDiskOfferingCmd.class);
+        cmdList.add(DeleteServiceOfferingCmd.class);
+        cmdList.add(UpdateDiskOfferingCmd.class);
+        cmdList.add(UpdateServiceOfferingCmd.class);
+        cmdList.add(CreatePodCmd.class);
+        cmdList.add(DeletePodCmd.class);
+        cmdList.add(ListPodsByCmd.class);
+        cmdList.add(UpdatePodCmd.class);
+        cmdList.add(AddRegionCmd.class);
+        cmdList.add(RemoveRegionCmd.class);
+        cmdList.add(UpdateRegionCmd.class);
+        cmdList.add(ListAlertsCmd.class);
+        cmdList.add(ListCapacityCmd.class);
+        cmdList.add(UploadCustomCertificateCmd.class);
+        cmdList.add(ConfigureVirtualRouterElementCmd.class);
+        cmdList.add(CreateVirtualRouterElementCmd.class);
+        cmdList.add(DestroyRouterCmd.class);
+        cmdList.add(ListRoutersCmd.class);
+        cmdList.add(ListVirtualRouterElementsCmd.class);
+        cmdList.add(RebootRouterCmd.class);
+        cmdList.add(StartRouterCmd.class);
+        cmdList.add(StopRouterCmd.class);
+        cmdList.add(UpgradeRouterCmd.class);
+        cmdList.add(AddS3Cmd.class);
+        cmdList.add(CancelPrimaryStorageMaintenanceCmd.class);
+        cmdList.add(CreateStoragePoolCmd.class);
+        cmdList.add(DeletePoolCmd.class);
+        cmdList.add(ListS3sCmd.class);
+        cmdList.add(ListStoragePoolsCmd.class);
+        cmdList.add(PreparePrimaryStorageForMaintenanceCmd.class);
+        cmdList.add(UpdateStoragePoolCmd.class);
+        cmdList.add(AddSwiftCmd.class);
+        cmdList.add(ListSwiftsCmd.class);
+        cmdList.add(DestroySystemVmCmd.class);
+        cmdList.add(ListSystemVMsCmd.class);
+        cmdList.add(MigrateSystemVMCmd.class);
+        cmdList.add(RebootSystemVmCmd.class);
+        cmdList.add(StartSystemVMCmd.class);
+        cmdList.add(StopSystemVmCmd.class);
+        cmdList.add(UpgradeSystemVMCmd.class);
+        cmdList.add(PrepareTemplateCmd.class);
+        cmdList.add(AddTrafficMonitorCmd.class);
+        cmdList.add(AddTrafficTypeCmd.class);
+        cmdList.add(DeleteTrafficMonitorCmd.class);
+        cmdList.add(DeleteTrafficTypeCmd.class);
+        cmdList.add(GenerateUsageRecordsCmd.class);
+        cmdList.add(GetUsageRecordsCmd.class);
+        cmdList.add(ListTrafficMonitorsCmd.class);
+        cmdList.add(ListTrafficTypeImplementorsCmd.class);
+        cmdList.add(ListTrafficTypesCmd.class);
+        cmdList.add(ListUsageTypesCmd.class);
+        cmdList.add(UpdateTrafficTypeCmd.class);
+        cmdList.add(CreateUserCmd.class);
+        cmdList.add(DeleteUserCmd.class);
+        cmdList.add(DisableUserCmd.class);
+        cmdList.add(EnableUserCmd.class);
+        cmdList.add(GetUserCmd.class);
+        cmdList.add(ListUsersCmd.class);
+        cmdList.add(LockUserCmd.class);
+        cmdList.add(RegisterCmd.class);
+        cmdList.add(UpdateUserCmd.class);
+        cmdList.add(CreateVlanIpRangeCmd.class);
+        cmdList.add(DeleteVlanIpRangeCmd.class);
+        cmdList.add(ListVlanIpRangesCmd.class);
+        cmdList.add(AssignVMCmd.class);
+        cmdList.add(MigrateVMCmd.class);
+        cmdList.add(RecoverVMCmd.class);
+        cmdList.add(CreatePrivateGatewayCmd.class);
+        cmdList.add(CreateVPCOfferingCmd.class);
+        cmdList.add(DeletePrivateGatewayCmd.class);
+        cmdList.add(DeleteVPCOfferingCmd.class);
+        cmdList.add(UpdateVPCOfferingCmd.class);
+        cmdList.add(CreateZoneCmd.class);
+        cmdList.add(DeleteZoneCmd.class);
+        cmdList.add(MarkDefaultZoneForAccountCmd.class);
+        cmdList.add(UpdateZoneCmd.class);
+        cmdList.add(AddAccountToProjectCmd.class);
+        cmdList.add(DeleteAccountFromProjectCmd.class);
+        cmdList.add(ListAccountsCmd.class);
+        cmdList.add(ListProjectAccountsCmd.class);
+        cmdList.add(AssociateIPAddrCmd.class);
+        cmdList.add(DisassociateIPAddrCmd.class);
+        cmdList.add(ListPublicIpAddressesCmd.class);
+        cmdList.add(CreateAutoScalePolicyCmd.class);
+        cmdList.add(CreateAutoScaleVmGroupCmd.class);
+        cmdList.add(CreateAutoScaleVmProfileCmd.class);
+        cmdList.add(CreateConditionCmd.class);
+        cmdList.add(DeleteAutoScalePolicyCmd.class);
+        cmdList.add(DeleteAutoScaleVmGroupCmd.class);
+        cmdList.add(DeleteAutoScaleVmProfileCmd.class);
+        cmdList.add(DeleteConditionCmd.class);
+        cmdList.add(DisableAutoScaleVmGroupCmd.class);
+        cmdList.add(EnableAutoScaleVmGroupCmd.class);
+        cmdList.add(ListAutoScalePoliciesCmd.class);
+        cmdList.add(ListAutoScaleVmGroupsCmd.class);
+        cmdList.add(ListAutoScaleVmProfilesCmd.class);
+        cmdList.add(ListConditionsCmd.class);
+        cmdList.add(ListCountersCmd.class);
+        cmdList.add(UpdateAutoScalePolicyCmd.class);
+        cmdList.add(UpdateAutoScaleVmGroupCmd.class);
+        cmdList.add(UpdateAutoScaleVmProfileCmd.class);
+        cmdList.add(ListCapabilitiesCmd.class);
+        cmdList.add(ListEventsCmd.class);
+        cmdList.add(ListEventTypesCmd.class);
+        cmdList.add(CreateEgressFirewallRuleCmd.class);
+        cmdList.add(CreateFirewallRuleCmd.class);
+        cmdList.add(CreatePortForwardingRuleCmd.class);
+        cmdList.add(DeleteEgressFirewallRuleCmd.class);
+        cmdList.add(DeleteFirewallRuleCmd.class);
+        cmdList.add(DeletePortForwardingRuleCmd.class);
+        cmdList.add(ListEgressFirewallRulesCmd.class);
+        cmdList.add(ListFirewallRulesCmd.class);
+        cmdList.add(ListPortForwardingRulesCmd.class);
+        cmdList.add(UpdatePortForwardingRuleCmd.class);
+        cmdList.add(ListGuestOsCategoriesCmd.class);
+        cmdList.add(ListGuestOsCmd.class);
+        cmdList.add(AttachIsoCmd.class);
+        cmdList.add(CopyIsoCmd.class);
+        cmdList.add(DeleteIsoCmd.class);
+        cmdList.add(DetachIsoCmd.class);
+        cmdList.add(ExtractIsoCmd.class);
+        cmdList.add(ListIsoPermissionsCmd.class);
+        cmdList.add(ListIsosCmd.class);
+        cmdList.add(RegisterIsoCmd.class);
+        cmdList.add(UpdateIsoCmd.class);
+        cmdList.add(UpdateIsoPermissionsCmd.class);
+        cmdList.add(ListAsyncJobsCmd.class);
+        cmdList.add(QueryAsyncJobResultCmd.class);
+        cmdList.add(AssignToLoadBalancerRuleCmd.class);
+        cmdList.add(CreateLBStickinessPolicyCmd.class);
+        cmdList.add(CreateLoadBalancerRuleCmd.class);
+        cmdList.add(DeleteLBStickinessPolicyCmd.class);
+        cmdList.add(DeleteLoadBalancerRuleCmd.class);
+        cmdList.add(ListLBStickinessPoliciesCmd.class);
+        cmdList.add(ListLoadBalancerRuleInstancesCmd.class);
+        cmdList.add(ListLoadBalancerRulesCmd.class);
+        cmdList.add(RemoveFromLoadBalancerRuleCmd.class);
+        cmdList.add(UpdateLoadBalancerRuleCmd.class);
+        cmdList.add(CreateIpForwardingRuleCmd.class);
+        cmdList.add(DeleteIpForwardingRuleCmd.class);
+        cmdList.add(DisableStaticNatCmd.class);
+        cmdList.add(EnableStaticNatCmd.class);
+        cmdList.add(ListIpForwardingRulesCmd.class);
+        cmdList.add(CreateNetworkACLCmd.class);
+        cmdList.add(CreateNetworkCmd.class);
+        cmdList.add(DeleteNetworkACLCmd.class);
+        cmdList.add(DeleteNetworkCmd.class);
+        cmdList.add(ListNetworkACLsCmd.class);
+        cmdList.add(ListNetworkOfferingsCmd.class);
+        cmdList.add(ListNetworksCmd.class);
+        cmdList.add(RestartNetworkCmd.class);
+        cmdList.add(UpdateNetworkCmd.class);
+        cmdList.add(ListDiskOfferingsCmd.class);
+        cmdList.add(ListServiceOfferingsCmd.class);
+        cmdList.add(ActivateProjectCmd.class);
+        cmdList.add(CreateProjectCmd.class);
+        cmdList.add(DeleteProjectCmd.class);
+        cmdList.add(DeleteProjectInvitationCmd.class);
+        cmdList.add(ListProjectInvitationsCmd.class);
+        cmdList.add(ListProjectsCmd.class);
+        cmdList.add(SuspendProjectCmd.class);
+        cmdList.add(UpdateProjectCmd.class);
+        cmdList.add(UpdateProjectInvitationCmd.class);
+        cmdList.add(ListRegionsCmd.class);
+        cmdList.add(GetCloudIdentifierCmd.class);
+        cmdList.add(ListHypervisorsCmd.class);
+        cmdList.add(ListResourceLimitsCmd.class);
+        cmdList.add(UpdateResourceCountCmd.class);
+        cmdList.add(UpdateResourceLimitCmd.class);
+        cmdList.add(AuthorizeSecurityGroupEgressCmd.class);
+        cmdList.add(AuthorizeSecurityGroupIngressCmd.class);
+        cmdList.add(CreateSecurityGroupCmd.class);
+        cmdList.add(DeleteSecurityGroupCmd.class);
+        cmdList.add(ListSecurityGroupsCmd.class);
+        cmdList.add(RevokeSecurityGroupEgressCmd.class);
+        cmdList.add(RevokeSecurityGroupIngressCmd.class);
+        cmdList.add(CreateSnapshotCmd.class);
+        cmdList.add(CreateSnapshotPolicyCmd.class);
+        cmdList.add(DeleteSnapshotCmd.class);
+        cmdList.add(DeleteSnapshotPoliciesCmd.class);
+        cmdList.add(ListSnapshotPoliciesCmd.class);
+        cmdList.add(ListSnapshotsCmd.class);
+        cmdList.add(CreateSSHKeyPairCmd.class);
+        cmdList.add(DeleteSSHKeyPairCmd.class);
+        cmdList.add(ListSSHKeyPairsCmd.class);
+        cmdList.add(RegisterSSHKeyPairCmd.class);
+        cmdList.add(CreateTagsCmd.class);
+        cmdList.add(DeleteTagsCmd.class);
+        cmdList.add(ListTagsCmd.class);
+        cmdList.add(CopyTemplateCmd.class);
+        cmdList.add(CreateTemplateCmd.class);
+        cmdList.add(DeleteTemplateCmd.class);
+        cmdList.add(ExtractTemplateCmd.class);
+        cmdList.add(ListTemplatePermissionsCmd.class);
+        cmdList.add(ListTemplatesCmd.class);
+        cmdList.add(RegisterTemplateCmd.class);
+        cmdList.add(UpdateTemplateCmd.class);
+        cmdList.add(UpdateTemplatePermissionsCmd.class);
+        cmdList.add(AddNicToVMCmd.class);
+        cmdList.add(DeployVMCmd.class);
+        cmdList.add(DestroyVMCmd.class);
+        cmdList.add(GetVMPasswordCmd.class);
+        cmdList.add(ListVMsCmd.class);
+        cmdList.add(RebootVMCmd.class);
+        cmdList.add(RemoveNicFromVMCmd.class);
+        cmdList.add(ResetVMPasswordCmd.class);
+        cmdList.add(ResetVMSSHKeyCmd.class);
+        cmdList.add(RestoreVMCmd.class);
+        cmdList.add(StartVMCmd.class);
+        cmdList.add(StopVMCmd.class);
+        cmdList.add(UpdateDefaultNicForVMCmd.class);
+        cmdList.add(UpdateVMCmd.class);
+        cmdList.add(UpgradeVMCmd.class);
+        cmdList.add(CreateVMGroupCmd.class);
+        cmdList.add(DeleteVMGroupCmd.class);
+        cmdList.add(ListVMGroupsCmd.class);
+        cmdList.add(UpdateVMGroupCmd.class);
+        cmdList.add(AttachVolumeCmd.class);
+        cmdList.add(CreateVolumeCmd.class);
+        cmdList.add(DeleteVolumeCmd.class);
+        cmdList.add(DetachVolumeCmd.class);
+        cmdList.add(ExtractVolumeCmd.class);
+        cmdList.add(ListVolumesCmd.class);
+        cmdList.add(MigrateVolumeCmd.class);
+        cmdList.add(ResizeVolumeCmd.class);
+        cmdList.add(UploadVolumeCmd.class);
+        cmdList.add(CreateStaticRouteCmd.class);
+        cmdList.add(CreateVPCCmd.class);
+        cmdList.add(DeleteStaticRouteCmd.class);
+        cmdList.add(DeleteVPCCmd.class);
+        cmdList.add(ListPrivateGatewaysCmd.class);
+        cmdList.add(ListStaticRoutesCmd.class);
+        cmdList.add(ListVPCOfferingsCmd.class);
+        cmdList.add(ListVPCsCmd.class);
+        cmdList.add(RestartVPCCmd.class);
+        cmdList.add(UpdateVPCCmd.class);
+        cmdList.add(AddVpnUserCmd.class);
+        cmdList.add(CreateRemoteAccessVpnCmd.class);
+        cmdList.add(CreateVpnConnectionCmd.class);
+        cmdList.add(CreateVpnCustomerGatewayCmd.class);
+        cmdList.add(CreateVpnGatewayCmd.class);
+        cmdList.add(DeleteRemoteAccessVpnCmd.class);
+        cmdList.add(DeleteVpnConnectionCmd.class);
+        cmdList.add(DeleteVpnCustomerGatewayCmd.class);
+        cmdList.add(DeleteVpnGatewayCmd.class);
+        cmdList.add(ListRemoteAccessVpnsCmd.class);
+        cmdList.add(ListVpnConnectionsCmd.class);
+        cmdList.add(ListVpnCustomerGatewaysCmd.class);
+        cmdList.add(ListVpnGatewaysCmd.class);
+        cmdList.add(ListVpnUsersCmd.class);
+        cmdList.add(RemoveVpnUserCmd.class);
+        cmdList.add(ResetVpnConnectionCmd.class);
+        cmdList.add(UpdateVpnCustomerGatewayCmd.class);
+        cmdList.add(ListZonesByCmd.class);
         return cmdList;
     }