You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2014/02/19 15:39:17 UTC
git commit: updated refs/heads/acl-item-cidrs to 00704ee
Repository: cloudstack
Updated Branches:
refs/heads/acl-item-cidrs [created] 00704ee68
network acl item cidrs
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/00704ee6
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/00704ee6
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/00704ee6
Branch: refs/heads/acl-item-cidrs
Commit: 00704ee68c69e3e4ac1461a0ad8ac23b9f547fd1
Parents: 24309f6
Author: Daan Hoogland <da...@onecht.net>
Authored: Wed Feb 19 15:39:12 2014 +0100
Committer: Daan Hoogland <da...@onecht.net>
Committed: Wed Feb 19 15:39:12 2014 +0100
----------------------------------------------------------------------
.../network/vpc/NetworkACLItemCidrsDao.java | 39 ++++++++
.../network/vpc/NetworkACLItemCidrsVO.java | 78 ++++++++++++++++
.../cloud/network/vpc/NetworkACLItemDao.java | 2 +
.../vpc/dao/NetworkACLItemCidrsDaoImpl.java | 94 ++++++++++++++++++++
.../network/vpc/dao/NetworkACLItemDaoImpl.java | 35 ++++++++
5 files changed, 248 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/00704ee6/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsDao.java b/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsDao.java
new file mode 100644
index 0000000..5e49368
--- /dev/null
+++ b/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsDao.java
@@ -0,0 +1,39 @@
+/**
+ * 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.vpc;
+
+import java.util.List;
+
+import com.cloud.utils.db.DB;
+import com.cloud.utils.db.GenericDao;
+
+/**
+ * @author daan
+ *
+ */
+public interface NetworkACLItemCidrsDao extends GenericDao<NetworkACLItemCidrsVO, Long> {
+
+ void persist(long networkACLItemId, List<String> cidrs);
+
+ List<String> getCidrs(long networkACLItemId);
+
+ @DB
+ List<NetworkACLItemCidrsVO> listByNetworkACLItemId(long networkACLItemId);
+
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/00704ee6/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsVO.java b/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsVO.java
new file mode 100644
index 0000000..6acf845
--- /dev/null
+++ b/engine/schema/src/com/cloud/network/vpc/NetworkACLItemCidrsVO.java
@@ -0,0 +1,78 @@
+/**
+ * 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.vpc;
+
+import javax.persistence.Column;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+import org.apache.cloudstack.api.InternalIdentity;
+
+/**
+ * @author daan
+ *
+ */
+public class NetworkACLItemCidrsVO implements InternalIdentity {
+ private static final long serialVersionUID = 7805284475485494754L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private Long id;
+
+ @Column(name = "network_acl_item_id")
+ private long networkACLItemId;
+
+ @Column(name = "cidr")
+ private String cidrList;
+
+ public NetworkACLItemCidrsVO() {
+ }
+
+ public NetworkACLItemCidrsVO(long networkAclItemId, String cidrList) {
+ this.networkACLItemId = networkAclItemId;
+ this.cidrList = cidrList;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.cloudstack.api.InternalIdentity#getId()
+ */
+ @Override
+ public long getId() {
+ return id;
+ }
+
+ public long getNetworkACLItemId() {
+ return networkACLItemId;
+ }
+
+ public String getCidr() {
+ return cidrList;
+ }
+
+ public String getCidrList() {
+ return cidrList;
+ }
+
+ public void setCidrList(String cidrList) {
+ this.cidrList = cidrList;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/00704ee6/engine/schema/src/com/cloud/network/vpc/NetworkACLItemDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/NetworkACLItemDao.java b/engine/schema/src/com/cloud/network/vpc/NetworkACLItemDao.java
index e278485..9ab6365 100644
--- a/engine/schema/src/com/cloud/network/vpc/NetworkACLItemDao.java
+++ b/engine/schema/src/com/cloud/network/vpc/NetworkACLItemDao.java
@@ -34,4 +34,6 @@ public interface NetworkACLItemDao extends GenericDao<NetworkACLItemVO, Long> {
int getMaxNumberByACL(long aclId);
NetworkACLItemVO findByAclAndNumber(long aclId, int number);
+
+ void loadCidrs(NetworkACLItemVO item);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/00704ee6/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemCidrsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemCidrsDaoImpl.java b/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemCidrsDaoImpl.java
new file mode 100644
index 0000000..23c1fa7
--- /dev/null
+++ b/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemCidrsDaoImpl.java
@@ -0,0 +1,94 @@
+/**
+ * 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.vpc.dao;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.ejb.Local;
+
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Component;
+
+import com.cloud.network.vpc.NetworkACLItemCidrsDao;
+import com.cloud.network.vpc.NetworkACLItemCidrsVO;
+import com.cloud.utils.db.GenericDaoBase;
+import com.cloud.utils.db.SearchBuilder;
+import com.cloud.utils.db.SearchCriteria;
+import com.cloud.utils.db.TransactionLegacy;
+
+/**
+ * @author daan
+ *
+ */
+@Component
+@Local(value = NetworkACLItemCidrsDao.class)
+public class NetworkACLItemCidrsDaoImpl extends GenericDaoBase<NetworkACLItemCidrsVO, Long> implements NetworkACLItemCidrsDao {
+ private static final Logger s_logger = Logger.getLogger(NetworkACLItemCidrsDaoImpl.class);
+ protected final SearchBuilder<NetworkACLItemCidrsVO> cidrsSearch;
+
+ protected NetworkACLItemCidrsDaoImpl() {
+ cidrsSearch = createSearchBuilder();
+ cidrsSearch.and("networkAclItemId", cidrsSearch.entity().getNetworkACLItemId(), SearchCriteria.Op.EQ);
+ cidrsSearch.done();
+ }
+
+ /* (non-Javadoc)
+ * @see com.cloud.network.dao.NetworkAclItemCidrsDao#persist(long, java.util.List)
+ */
+ @Override
+ public void persist(long networkACLItemId, List<String> cidrs) {
+ TransactionLegacy txn = TransactionLegacy.currentTxn();
+
+ txn.start();
+ for (String cidr : cidrs) {
+ NetworkACLItemCidrsVO vo = new NetworkACLItemCidrsVO(networkACLItemId, cidr);
+ persist(vo);
+ }
+ txn.commit();
+ }
+
+ /* (non-Javadoc)
+ * @see com.cloud.network.dao.NetworkAclItemCidrsDao#getCidrs(long)
+ */
+ @Override
+ public List<String> getCidrs(long networkACLItemId) {
+ SearchCriteria<NetworkACLItemCidrsVO> sc = cidrsSearch.create();
+ sc.setParameters("firewallRuleId", networkACLItemId);
+
+ List<NetworkACLItemCidrsVO> results = search(sc, null);
+ List<String> cidrs = new ArrayList<String>(results.size());
+ for (NetworkACLItemCidrsVO result : results) {
+ cidrs.add(result.getCidr());
+ }
+
+ return cidrs;
+ }
+
+ @Override
+ public List<NetworkACLItemCidrsVO> listByNetworkACLItemId(long networkACLItemId) {
+ SearchCriteria<NetworkACLItemCidrsVO> sc = cidrsSearch.create();
+ sc.setParameters("firewallRuleId", networkACLItemId);
+
+ List<NetworkACLItemCidrsVO> results = search(sc, null);
+
+ return results;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/00704ee6/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemDaoImpl.java b/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemDaoImpl.java
index 31ff6f2..b581d3e 100644
--- a/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/vpc/dao/NetworkACLItemDaoImpl.java
@@ -19,10 +19,13 @@ package com.cloud.network.vpc.dao;
import java.util.List;
import javax.ejb.Local;
+import javax.inject.Inject;
+import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.cloud.network.vpc.NetworkACLItem.State;
+import com.cloud.network.vpc.NetworkACLItemCidrsDao;
import com.cloud.network.vpc.NetworkACLItemDao;
import com.cloud.network.vpc.NetworkACLItemVO;
import com.cloud.utils.db.DB;
@@ -31,17 +34,22 @@ import com.cloud.utils.db.GenericSearchBuilder;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.SearchCriteria.Op;
+import com.cloud.utils.db.TransactionLegacy;
@Component
@Local(value = NetworkACLItemDao.class)
@DB()
public class NetworkACLItemDaoImpl extends GenericDaoBase<NetworkACLItemVO, Long> implements NetworkACLItemDao {
+ private static final Logger s_logger = Logger.getLogger(NetworkACLItemDaoImpl.class);
protected final SearchBuilder<NetworkACLItemVO> AllFieldsSearch;
protected final SearchBuilder<NetworkACLItemVO> NotRevokedSearch;
protected final SearchBuilder<NetworkACLItemVO> ReleaseSearch;
protected final GenericSearchBuilder<NetworkACLItemVO, Integer> MaxNumberSearch;
+ @Inject
+ protected NetworkACLItemCidrsDao _networkACLItemCidrsDao;
+
protected NetworkACLItemDaoImpl() {
super();
@@ -115,4 +123,31 @@ public class NetworkACLItemDaoImpl extends GenericDaoBase<NetworkACLItemVO, Long
sc.setParameters("number", number);
return findOneBy(sc);
}
+
+ @Override
+ @DB
+ public NetworkACLItemVO persist(NetworkACLItemVO networkAclItem) {
+ TransactionLegacy txn = TransactionLegacy.currentTxn();
+ txn.start();
+
+ NetworkACLItemVO dbNetworkACLItem = super.persist(networkAclItem);
+ saveCidrs(networkAclItem, networkAclItem.getSourceCidrList());
+ loadCidrs(dbNetworkACLItem);
+
+ txn.commit();
+ return dbNetworkACLItem;
+ }
+
+ public void saveCidrs(NetworkACLItemVO networkACLItem, List<String> cidrList) {
+ if (cidrList == null) {
+ return;
+ }
+ _networkACLItemCidrsDao.persist(networkACLItem.getId(), cidrList);
+ }
+
+ @Override
+ public void loadCidrs(NetworkACLItemVO item) {
+ List<String> cidrs = _networkACLItemCidrsDao.getCidrs(item.getId());
+ item.setSourceCidrList(cidrs);
+ }
}