cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kous...@apache.org
Subject [1/4] git commit: refs/heads/cisco-vnmc-api-integration - Added Vmware cluster info along with asa1kv appliance. This is used to select the correct n1kv vsm for configuring the guest network
Date Mon, 04 Mar 2013 05:33:37 GMT
Added Vmware cluster info along with asa1kv appliance.
This is used to select the correct n1kv vsm for configuring the guest network


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

Branch: refs/heads/cisco-vnmc-api-integration
Commit: 32223736c9a52a73a3e401c301cf7dc3534639d2
Parents: deed3cc
Author: Koushik Das <koushik.das@citrix.com>
Authored: Fri Mar 1 00:50:55 2013 +0530
Committer: Koushik Das <koushik.das@citrix.com>
Committed: Fri Mar 1 00:50:55 2013 +0530

----------------------------------------------------------------------
 .../api/commands/AddCiscoAsa1000vResourceCmd.java  |    8 ++
 .../cloud/network/cisco/CiscoAsa1000vDevice.java   |   13 ++--
 .../cloud/network/cisco/CiscoAsa1000vDeviceVO.java |   38 ++++-------
 .../cloud/network/cisco/CiscoVnmcController.java   |   14 ++--
 .../cloud/network/cisco/CiscoVnmcControllerVO.java |   51 ++++----------
 .../cloud/network/cisco/NetworkAsa1000vMap.java    |    6 +-
 .../network/dao/NetworkAsa1000vMapDaoImpl.java     |   24 ++++----
 .../cloud/network/element/CiscoVnmcElement.java    |   35 ++++------
 setup/db/create-schema.sql                         |    8 ++-
 9 files changed, 86 insertions(+), 111 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/32223736/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoAsa1000vResourceCmd.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoAsa1000vResourceCmd.java
b/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoAsa1000vResourceCmd.java
index 686d7d4..971bee5 100755
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoAsa1000vResourceCmd.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoAsa1000vResourceCmd.java
@@ -23,6 +23,7 @@ import org.apache.cloudstack.api.BaseCmd;
 import org.apache.cloudstack.api.Parameter;
 import org.apache.cloudstack.api.PlugService;
 import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.ClusterResponse;
 import org.apache.cloudstack.api.response.PhysicalNetworkResponse;
 import org.apache.log4j.Logger;
 
@@ -56,6 +57,9 @@ public class AddCiscoAsa1000vResourceCmd extends BaseCmd {
     @Parameter(name=ApiConstants.ASA_INSIDE_PORT_PROFILE, type=CommandType.STRING, required
= true, description="Nexus port profile associated with inside interface of ASA 1000v")
     private String inPortProfile;
 
+    @Parameter(name=ApiConstants.CLUSTER_ID, type=CommandType.UUID, entityType = ClusterResponse.class,
required=true, description="the Cluster ID")
+    private Long clusterId;
+
     /////////////////////////////////////////////////////
     /////////////////// Accessors ///////////////////////
     /////////////////////////////////////////////////////
@@ -72,6 +76,10 @@ public class AddCiscoAsa1000vResourceCmd extends BaseCmd {
         return inPortProfile;
     }
 
+    public Long getClusterId() {
+        return clusterId;
+    }
+
     /////////////////////////////////////////////////////
     /////////////// API Implementation///////////////////
     /////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/32223736/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoAsa1000vDevice.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoAsa1000vDevice.java
b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoAsa1000vDevice.java
index b433da6..3c5f682 100755
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoAsa1000vDevice.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoAsa1000vDevice.java
@@ -23,16 +23,17 @@ import com.cloud.org.Grouping;
 
 public interface CiscoAsa1000vDevice extends Grouping, InternalIdentity, Identity {
 
-	 long getId();
+    long getId();
 
-	 String getUuid();
+    String getUuid();
 
-	 void setUuid(String uuid);
+    void setUuid(String uuid);
 
-	 long getPhysicalNetworkId();
+    long getPhysicalNetworkId();
 
-	 String getManagementIp();
+    String getManagementIp();
 
-	 String getInPortProfile();
+    String getInPortProfile();
 
+    long getClusterId();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/32223736/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoAsa1000vDeviceVO.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoAsa1000vDeviceVO.java
b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoAsa1000vDeviceVO.java
index 5871dff..ba85fb1 100755
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoAsa1000vDeviceVO.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoAsa1000vDeviceVO.java
@@ -39,73 +39,63 @@ public class CiscoAsa1000vDeviceVO implements CiscoAsa1000vDevice {
 
     @Column(name="physical_network_id")
     private long physicalNetworkId;
-    
+
     @Column(name="management_ip")
     private String managementIp;
-    
+
     @Column(name="in_Port_profile")
     private String inPortProfile;
 
-    
+    @Column(name="cluster_id")
+    private long clusterId;
+
     public CiscoAsa1000vDeviceVO() {
         this.uuid = UUID.randomUUID().toString();
     }
 
     public CiscoAsa1000vDeviceVO(long physicalNetworkId,
-            String managementIp, String inPortProfile) {
+            String managementIp, String inPortProfile, long clusterId) {
         super();
         this.physicalNetworkId = physicalNetworkId;
         this.managementIp = managementIp;
         this.inPortProfile = inPortProfile;
         this.uuid = UUID.randomUUID().toString();
+        this.clusterId = clusterId;
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getId()
-	 */
     @Override
 	public long getId() {
         return id;
     }
-    
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getUuid()
-	 */
+
     @Override
 	public String getUuid() {
         return uuid;
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#setUuid(java.lang.String)
-	 */
     @Override
 	public void setUuid(String uuid) {
         this.uuid = uuid;
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getPhysicalNetworkId()
-	 */
     @Override
 	public long getPhysicalNetworkId() {
         return physicalNetworkId;
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getProviderName()
-	 */
     @Override
 	public String getManagementIp() {
         return managementIp;
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getDeviceName()
-	 */
     @Override
 	public String getInPortProfile() {
         return inPortProfile;
     }
-    
+
+    @Override
+    public long getClusterId() {
+        return clusterId;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/32223736/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcController.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcController.java
b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcController.java
index 6d6feae..e756165 100644
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcController.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcController.java
@@ -23,18 +23,18 @@ import com.cloud.org.Grouping;
 
 public interface CiscoVnmcController extends Grouping, InternalIdentity, Identity {
 
-	 long getId();
+    long getId();
 
-	 String getUuid();
+    String getUuid();
 
-	 void setUuid(String uuid);
+    void setUuid(String uuid);
 
-	 long getPhysicalNetworkId();
+    long getPhysicalNetworkId();
 
-	 long getHostId();
+    long getHostId();
 
-	 String getProviderName();
+    String getProviderName();
 
-	 String getDeviceName();
+    String getDeviceName();
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/32223736/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcControllerVO.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcControllerVO.java
b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcControllerVO.java
index 69ac135..4207f1d 100644
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcControllerVO.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcControllerVO.java
@@ -33,23 +33,23 @@ public class CiscoVnmcControllerVO implements CiscoVnmcController {
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Column(name="id")
     private long id;
-    
+
     @Column(name="uuid")
     private String uuid;
-    
+
     @Column(name="host_id")
     private long hostId;
-    
+
     @Column(name="physical_network_id")
     private long physicalNetworkId;
-    
+
     @Column(name="provider_name")
     private String providerName;
-    
+
     @Column(name="device_name")
     private String deviceName;
 
-    
+
     public CiscoVnmcControllerVO() {
         this.uuid = UUID.randomUUID().toString();
     }
@@ -64,60 +64,39 @@ public class CiscoVnmcControllerVO implements CiscoVnmcController {
         this.uuid = UUID.randomUUID().toString();
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getId()
-	 */
     @Override
-	public long getId() {
+    public long getId() {
         return id;
     }
-    
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getUuid()
-	 */
+
     @Override
-	public String getUuid() {
+    public String getUuid() {
         return uuid;
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#setUuid(java.lang.String)
-	 */
     @Override
-	public void setUuid(String uuid) {
+    public void setUuid(String uuid) {
         this.uuid = uuid;
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getPhysicalNetworkId()
-	 */
     @Override
-	public long getPhysicalNetworkId() {
+    public long getPhysicalNetworkId() {
         return physicalNetworkId;
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getHostId()
-	 */
     @Override
-	public long getHostId() {
+    public long getHostId() {
         return hostId;
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getProviderName()
-	 */
     @Override
-	public String getProviderName() {
+    public String getProviderName() {
         return providerName;
     }
 
-    /* (non-Javadoc)
-	 * @see com.cloud.network.cisco.CiscoVnmcController#getDeviceName()
-	 */
     @Override
-	public String getDeviceName() {
+    public String getDeviceName() {
         return deviceName;
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/32223736/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/NetworkAsa1000vMap.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/NetworkAsa1000vMap.java
b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/NetworkAsa1000vMap.java
index 6c8647a..2e004dc 100755
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/NetworkAsa1000vMap.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/NetworkAsa1000vMap.java
@@ -22,10 +22,10 @@ import com.cloud.org.Grouping;
 
 public interface NetworkAsa1000vMap extends Grouping, InternalIdentity {
 
-	 long getId();
+    long getId();
 
-	 long getNetworkId();
+    long getNetworkId();
 
-	 long getAsa1000vId();
+    long getAsa1000vId();
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/32223736/plugins/network-elements/cisco-vnmc/src/com/cloud/network/dao/NetworkAsa1000vMapDaoImpl.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/dao/NetworkAsa1000vMapDaoImpl.java
b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/dao/NetworkAsa1000vMapDaoImpl.java
index 95d9286..7326a90 100755
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/dao/NetworkAsa1000vMapDaoImpl.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/dao/NetworkAsa1000vMapDaoImpl.java
@@ -32,27 +32,27 @@ public class NetworkAsa1000vMapDaoImpl extends GenericDaoBase<NetworkAsa1000vMap
     protected final SearchBuilder<NetworkAsa1000vMapVO> asa1000vSearch;
 
     public NetworkAsa1000vMapDaoImpl() {
-    	networkSearch = createSearchBuilder();
-    	networkSearch.and("networkId", networkSearch.entity().getNetworkId(), Op.EQ);
-    	networkSearch.done();
+        networkSearch = createSearchBuilder();
+        networkSearch.and("networkId", networkSearch.entity().getNetworkId(), Op.EQ);
+        networkSearch.done();
 
-    	asa1000vSearch = createSearchBuilder();
-    	asa1000vSearch.and("asa1000vId", asa1000vSearch.entity().getAsa1000vId(), Op.EQ);
-    	asa1000vSearch.done();
+        asa1000vSearch = createSearchBuilder();
+        asa1000vSearch.and("asa1000vId", asa1000vSearch.entity().getAsa1000vId(), Op.EQ);
+        asa1000vSearch.done();
     }
 
-	@Override
-	public NetworkAsa1000vMapVO findByNetworkId(long networkId) {
+    @Override
+    public NetworkAsa1000vMapVO findByNetworkId(long networkId) {
         SearchCriteria<NetworkAsa1000vMapVO> sc = networkSearch.create();
         sc.setParameters("networkId", networkId);
         return findOneBy(sc);
-	}
+    }
 
-	@Override
-	public NetworkAsa1000vMapVO findByAsa1000vId(long asa1000vId) {
+    @Override
+    public NetworkAsa1000vMapVO findByAsa1000vId(long asa1000vId) {
         SearchCriteria<NetworkAsa1000vMapVO> sc = asa1000vSearch.create();
         sc.setParameters("asa1000vId", asa1000vId);
         return findOneBy(sc);
-	}
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/32223736/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java
b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java
index 9639d5b..006874b 100644
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java
@@ -261,24 +261,6 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro
             return false;
         }
 
-        List<ClusterVO> clusters = _clusterDao.listByDcHyType(zone.getId(), "VMware");
-        if (clusters.size() > 1) { //TODO: Actually zone should only have single Vmware
cluster and no other HV clusters as Vnmc/Asa1kv requires N1kv switch
-            s_logger.error("Zone " + zone.getName() + " has multiple Vmware clusters, Cisco
Vnmc device requires that zone has a single Vmware cluster");
-            return false;
-        }
-
-        ClusterVSMMapVO clusterVsmMap = _clusterVsmMapDao.findByClusterId(clusters.get(0).getId());
-        if (clusterVsmMap == null) {
-            s_logger.error("Vmware cluster " + clusters.get(0).getName() + " has no Cisco
Nexus VSM device associated with it");
-            return false;
-        }
-
-        CiscoNexusVSMDeviceVO vsmDevice = _vsmDeviceDao.findById(clusterVsmMap.getVsmId());
-        if (vsmDevice == null) {
-            s_logger.error("Unable to load details of Cisco Nexus VSM device associated with
cluster " + clusters.get(0).getName());
-            return false;
-        }
-
         List<CiscoVnmcControllerVO> devices = _ciscoVnmcDao.listByPhysicalNetwork(network.getPhysicalNetworkId());
         if (devices.isEmpty()) {
             s_logger.error("No Cisco Vnmc device on network " + network.getName());
@@ -314,6 +296,19 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro
                 return false;
             }
 
+            ClusterVO asaCluster = _clusterDao.findById(assignedAsa.getClusterId());
+            ClusterVSMMapVO clusterVsmMap = _clusterVsmMapDao.findByClusterId(assignedAsa.getClusterId());
+            if (clusterVsmMap == null) {
+                s_logger.error("Vmware cluster " + asaCluster.getName() + " has no Cisco
Nexus VSM device associated with it");
+                return false;
+            }
+
+            CiscoNexusVSMDeviceVO vsmDevice = _vsmDeviceDao.findById(clusterVsmMap.getVsmId());
+            if (vsmDevice == null) {
+                s_logger.error("Unable to load details of Cisco Nexus VSM device associated
with cluster " + asaCluster.getName());
+                return false;
+            }
+
             CiscoVnmcControllerVO ciscoVnmcDevice = devices.get(0);
             HostVO ciscoVnmcHost = _hostDao.findById(ciscoVnmcDevice.getHostId());
             _hostDao.loadDetails(ciscoVnmcHost);
@@ -342,7 +337,7 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro
                 s_logger.error("Failed to configure source NAT in Cisco VNMC device for network
" + network.getName());
                 return false;
             }
-            
+
             // associate Asa 1000v instance with logical edge firewall
             if (!associateAsaWithLogicalEdgeFirewall(vlanId, assignedAsa.getManagementIp(),
ciscoVnmcHost.getId())) {
                 s_logger.error("Failed to associate Cisco ASA 1000v (" + assignedAsa.getManagementIp()
+
@@ -765,7 +760,7 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro
             throw new InvalidParameterValueException("Could not find phyical network with
ID: " + physicalNetworkId);
         }
 
-        ciscoAsa1000vResource = new CiscoAsa1000vDeviceVO(physicalNetworkId, cmd.getManagementIp(),
cmd.getInPortProfile());
+        ciscoAsa1000vResource = new CiscoAsa1000vDeviceVO(physicalNetworkId, cmd.getManagementIp(),
cmd.getInPortProfile(), cmd.getClusterId());
         _ciscoAsa1000vDao.persist((CiscoAsa1000vDeviceVO)ciscoAsa1000vResource);
                 
         return ciscoAsa1000vResource;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/32223736/setup/db/create-schema.sql
----------------------------------------------------------------------
diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql
index e883b94..96c535a 100755
--- a/setup/db/create-schema.sql
+++ b/setup/db/create-schema.sql
@@ -2428,7 +2428,7 @@ CREATE TABLE `cloud`.`external_cisco_vnmc_devices` (
   `provider_name` varchar(255) NOT NULL COMMENT 'Service Provider name corresponding to this
cisco vnmc device',
   `device_name` varchar(255) NOT NULL COMMENT 'name of the cisco vnmc device',
   `host_id` bigint unsigned NOT NULL COMMENT 'host id coresponding to the external cisco
vnmc device',
-  PRIMARY KEY  (`id`),
+  PRIMARY KEY (`id`),
   CONSTRAINT `fk_external_cisco_vnmc_devices__host_id` FOREIGN KEY (`host_id`) REFERENCES
`host`(`id`) ON DELETE CASCADE,
   CONSTRAINT `fk_external_cisco_vnmc_devices__physical_network_id` FOREIGN KEY (`physical_network_id`)
REFERENCES `physical_network`(`id`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -2439,8 +2439,10 @@ CREATE TABLE `cloud`.`external_cisco_asa1000v_devices` (
   `physical_network_id` bigint unsigned NOT NULL COMMENT 'id of the physical network in to
which cisco asa1kv device is added',
   `management_ip` varchar(255) UNIQUE NOT NULL COMMENT 'mgmt. ip of cisco asa1kv device',
   `in_port_profile` varchar(255) NOT NULL COMMENT 'inside port profile name of cisco asa1kv
device',
-  PRIMARY KEY  (`id`),
-  CONSTRAINT `fk_external_cisco_asa1000v_devices__physical_network_id` FOREIGN KEY (`physical_network_id`)
REFERENCES `physical_network`(`id`) ON DELETE CASCADE
+  `cluster_id` bigint unsigned NOT NULL COMMENT 'id of the Vmware cluster to which cisco
asa1kv device is attached (cisco n1kv switch)',
+  PRIMARY KEY (`id`),
+  CONSTRAINT `fk_external_cisco_asa1000v_devices__physical_network_id` FOREIGN KEY (`physical_network_id`)
REFERENCES `physical_network`(`id`) ON DELETE CASCADE,
+  CONSTRAINT `fk_external_cisco_asa1000v_devices__cluster_id` FOREIGN KEY (`cluster_id`)
REFERENCES `cluster`(`id`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 CREATE TABLE `cloud`.`network_asa1000v_map` (


Mime
View raw message