Updated Branches:
  refs/heads/nicira-l3support bfc8da108 -> dd68a0033

Persist the uuid of the logical router once created

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

Branch: refs/heads/nicira-l3support
Commit: dd68a0033858a03138d3e9d035843afb4d4d65a9
Parents: af77912
Author: Hugo Trippaers <[email protected]>
Authored: Thu Sep 27 22:16:11 2012 -0700
Committer: Hugo Trippaers <[email protected]>
Committed: Thu Sep 27 22:16:11 2012 -0700

----------------------------------------------------------------------
 client/tomcatconf/components.xml.in                |    1 +
 .../cloud/network/NiciraNvpRouterMappingVO.java    |   79 +++++++++++++++
 .../network/dao/NiciraNvpRouterMappingDao.java     |    9 ++
 .../network/dao/NiciraNvpRouterMappingDaoImpl.java |   30 ++++++
 .../cloud/network/element/NiciraNvpElement.java    |   36 +++++--
 setup/db/create-schema.sql                         |    9 ++
 6 files changed, 154 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dd68a003/client/tomcatconf/components.xml.in
----------------------------------------------------------------------
diff --git a/client/tomcatconf/components.xml.in 
b/client/tomcatconf/components.xml.in
index 5730b83..2953eb7 100755
--- a/client/tomcatconf/components.xml.in
+++ b/client/tomcatconf/components.xml.in
@@ -179,6 +179,7 @@ under the License.
         <dao name="OvsTunnelAccountDao" 
class="com.cloud.network.ovs.dao.OvsTunnelNetworkDaoImpl" singleton="false"/>
         <dao name="NiciraNvpDao" 
class="com.cloud.network.dao.NiciraNvpDaoImpl" singleton="false"/>
         <dao name="NiciraNvpNicMappingDao" 
class="com.cloud.network.dao.NiciraNvpNicMappingDaoImpl" singleton="false"/>
+        <dao name="NiciraNvpRouterMappingDao" 
class="com.cloud.network.dao.NiciraNvpRouterMappingDaoImpl" singleton="false"/>
         <dao name="ElasticLbVmMapDao" 
class="com.cloud.network.lb.dao.ElasticLbVmMapDaoImpl" singleton="false"/>
     </management-server>
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dd68a003/plugins/network-elements/nicira-nvp/src/com/cloud/network/NiciraNvpRouterMappingVO.java
----------------------------------------------------------------------
diff --git 
a/plugins/network-elements/nicira-nvp/src/com/cloud/network/NiciraNvpRouterMappingVO.java
 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/NiciraNvpRouterMappingVO.java
new file mode 100644
index 0000000..037ba69
--- /dev/null
+++ 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/NiciraNvpRouterMappingVO.java
@@ -0,0 +1,79 @@
+// 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;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name="nicira_nvp_router_map")
+public class NiciraNvpRouterMappingVO {
+       //FIXME the ddl for this table should be in one of the upgrade scripts
+       @Id
+       @GeneratedValue(strategy = GenerationType.IDENTITY)
+       @Column(name="id")
+       private long id;
+       
+       @Column(name="logicalrouter_uuid")
+       private String logicalRouterUuid;
+       
+       @Column(name="network_id")
+       private long networkId;
+       
+       public NiciraNvpRouterMappingVO() {
+       }
+
+       public NiciraNvpRouterMappingVO(String logicalRouterUuid, long 
networkId) {
+               this.logicalRouterUuid = logicalRouterUuid;
+               this.networkId = networkId;
+       }
+       
+       public NiciraNvpRouterMappingVO(long id, String logicalRouterUuid, long 
networkId) {
+               this.id = id;
+               this.logicalRouterUuid = logicalRouterUuid;
+               this.networkId = networkId;
+       }
+
+       public long getId() {
+               return id;
+       }
+
+       public void setId(long id) {
+               this.id = id;
+       }
+
+       public String getLogicalRouterUuid() {
+               return logicalRouterUuid;
+       }
+
+       public void setLogicalRouterUuid(String logicalRouterUuid) {
+               this.logicalRouterUuid = logicalRouterUuid;
+       }
+
+       public long getNetworkId() {
+               return networkId;
+       }
+
+       public void setNetworkId(long networkId) {
+               this.networkId = networkId;
+       }
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dd68a003/plugins/network-elements/nicira-nvp/src/com/cloud/network/dao/NiciraNvpRouterMappingDao.java
----------------------------------------------------------------------
diff --git 
a/plugins/network-elements/nicira-nvp/src/com/cloud/network/dao/NiciraNvpRouterMappingDao.java
 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/dao/NiciraNvpRouterMappingDao.java
new file mode 100644
index 0000000..6fae52e
--- /dev/null
+++ 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/dao/NiciraNvpRouterMappingDao.java
@@ -0,0 +1,9 @@
+package com.cloud.network.dao;
+
+import com.cloud.network.NiciraNvpRouterMappingVO;
+import com.cloud.utils.db.GenericDao;
+
+public interface NiciraNvpRouterMappingDao extends 
GenericDao<NiciraNvpRouterMappingVO, Long> {
+
+       public NiciraNvpRouterMappingVO findByNetworkIdI(long id);
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dd68a003/plugins/network-elements/nicira-nvp/src/com/cloud/network/dao/NiciraNvpRouterMappingDaoImpl.java
----------------------------------------------------------------------
diff --git 
a/plugins/network-elements/nicira-nvp/src/com/cloud/network/dao/NiciraNvpRouterMappingDaoImpl.java
 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/dao/NiciraNvpRouterMappingDaoImpl.java
new file mode 100644
index 0000000..303b760
--- /dev/null
+++ 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/dao/NiciraNvpRouterMappingDaoImpl.java
@@ -0,0 +1,30 @@
+package com.cloud.network.dao;
+
+import javax.ejb.Local;
+
+import com.cloud.network.NiciraNvpRouterMappingVO;
+import com.cloud.utils.db.GenericDaoBase;
+import com.cloud.utils.db.SearchBuilder;
+import com.cloud.utils.db.SearchCriteria;
+import com.cloud.utils.db.SearchCriteria.Op;
+
+@Local(value=NiciraNvpRouterMappingDao.class)
+public class NiciraNvpRouterMappingDaoImpl extends 
GenericDaoBase<NiciraNvpRouterMappingVO, Long> implements 
NiciraNvpRouterMappingDao {
+
+       protected final SearchBuilder<NiciraNvpRouterMappingVO> networkSearch;
+       
+       public NiciraNvpRouterMappingDaoImpl() {
+               networkSearch = createSearchBuilder();
+               networkSearch.and("network_id", 
networkSearch.entity().getNetworkId(), Op.EQ);
+               networkSearch.done();
+       }
+       
+       @Override
+       public NiciraNvpRouterMappingVO findByNetworkIdI(long id) {
+               SearchCriteria<NiciraNvpRouterMappingVO> sc = 
networkSearch.create();
+               sc.setParameters("network_id", id);
+               return findOneBy(sc);
+       }
+       
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dd68a003/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
----------------------------------------------------------------------
diff --git 
a/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
index d781d03..9a220dc 100644
--- 
a/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
+++ 
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
@@ -90,6 +90,7 @@ import com.cloud.network.Networks.BroadcastDomainType;
 import com.cloud.network.NetworkManager;
 import com.cloud.network.NiciraNvpDeviceVO;
 import com.cloud.network.NiciraNvpNicMappingVO;
+import com.cloud.network.NiciraNvpRouterMappingVO;
 import com.cloud.network.PhysicalNetworkServiceProvider;
 import com.cloud.network.PhysicalNetworkVO;
 import com.cloud.network.PublicIpAddress;
@@ -98,6 +99,7 @@ import com.cloud.network.dao.NetworkDao;
 import com.cloud.network.dao.NetworkServiceMapDao;
 import com.cloud.network.dao.NiciraNvpDao;
 import com.cloud.network.dao.NiciraNvpNicMappingDao;
+import com.cloud.network.dao.NiciraNvpRouterMappingDao;
 import com.cloud.network.dao.PhysicalNetworkDao;
 import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
 import com.cloud.network.dao.PhysicalNetworkServiceProviderVO;
@@ -154,6 +156,8 @@ public class NiciraNvpElement extends AdapterBase implements
        @Inject
        NiciraNvpNicMappingDao _niciraNvpNicMappingDao;
        @Inject
+       NiciraNvpRouterMappingDao _niciraNvpRouterMappingDao;
+       @Inject
        NetworkDao _networkDao;
        @Inject
        NetworkManager _networkManager;
@@ -280,7 +284,11 @@ public class NiciraNvpElement extends AdapterBase 
implements
                                                        + 
network.getDisplayText());
                                        return false;
                                }
-
+                               
+                               // Store the uuid so we can easily find it 
during cleanup
+                               NiciraNvpRouterMappingVO routermapping = 
+                                               new 
NiciraNvpRouterMappingVO(cmd.getLogicalSwitchUuid(), network.getId());
+                               
_niciraNvpRouterMappingDao.persist(routermapping);
                        }
                } finally {
                        if (lock != null) {
@@ -446,15 +454,23 @@ public class NiciraNvpElement extends AdapterBase 
implements
 
                        // Deleting the LogicalRouter will also take care of 
all provisioned
                        // nat rules.
-                       /*
-                        * DeleteLogicalRouterCommand cmd = new
-                        * DeleteLogicalRouterCommand(""); 
DeleteLogicalRouterAnswer answer
-                        * = (DeleteLogicalRouterAnswer)
-                        * _agentMgr.easySend(niciraNvpHost.getId(), cmd); if
-                        * (answer.getResult() == false) {
-                        * s_logger.error("Failed to delete LogicalRouter for 
network " +
-                        * network.getDisplayText()); return false; }
-                        */}
+                       NiciraNvpRouterMappingVO routermapping = 
_niciraNvpRouterMappingDao
+                                       .findByNetworkIdI(network.getId());
+                       if (routermapping == null) {
+                               s_logger.error("No logical router uuid found 
for network "
+                                               + network.getDisplayText());
+                               return false;
+                       }
+
+                       DeleteLogicalRouterCommand cmd = new 
DeleteLogicalRouterCommand(routermapping.getLogicalRouterUuid());
+                       DeleteLogicalRouterAnswer answer = 
+                                       (DeleteLogicalRouterAnswer) 
_agentMgr.easySend(niciraNvpHost.getId(), cmd);
+                       if (answer.getResult() == false) {
+                               s_logger.error("Failed to delete LogicalRouter 
for network "
+                                               + network.getDisplayText());
+                               return false;
+                       }
+               }
 
                return true;
        }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dd68a003/setup/db/create-schema.sql
----------------------------------------------------------------------
diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql
index 5b6dc04..53e5f08 100755
--- a/setup/db/create-schema.sql
+++ b/setup/db/create-schema.sql
@@ -146,6 +146,7 @@ DROP TABLE IF EXISTS `cloud`.`s2s_vpn_gateway`;
 DROP TABLE IF EXISTS `cloud`.`s2s_vpn_connection`;
 DROP TABLE IF EXISTS `cloud`,`external_nicira_nvp_devices`;
 DROP TABLE IF EXISTS `cloud`,`nicira_nvp_nic_map`;
+DROP TABLE IF EXISTS `cloud`,`nicira_nvp_router_map`;
 
 CREATE TABLE `cloud`.`version` (
   `id` bigint unsigned NOT NULL UNIQUE AUTO_INCREMENT COMMENT 'id',
@@ -2370,5 +2371,13 @@ CREATE TABLE `cloud`.`nicira_nvp_nic_map` (
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+CREATE TABLE `cloud`.`nicira_nvp_router_map` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `logicalrouter_uuid` varchar(255) NOT NULL UNIQUE COMMENT 'nicira uuid of 
logical router',
+  `network_id` bigint unsigned NOT NULL UNIQUE COMMENT 'cloudstack id of the 
network',
+  PRIMARY KEY (`id`),
+  CONSTRAINT `fk_nicira_nvp_router_map__network_id` FOREIGN KEY (`network_id`) 
REFERENCES `networks`(`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
 SET foreign_key_checks = 1;
 

Reply via email to