diff --git a/api/src/com/cloud/server/ResourceTag.java b/api/src/com/cloud/server/ResourceTag.java
index 85bbcd0827e..ab74d260dc3 100644
--- a/api/src/com/cloud/server/ResourceTag.java
+++ b/api/src/com/cloud/server/ResourceTag.java
@@ -33,7 +33,7 @@ public interface ResourceTag extends ControlledEntity, Identity, InternalIdentit
Nic (false, true),
LoadBalancer (true, false),
PortForwardingRule (true, false),
- FirewallRule (true, false),
+ FirewallRule (true, true),
SecurityGroup (true, false),
PublicIpAddress (true, false),
Project (true, false),
diff --git a/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml b/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
index 3fce43940c7..e811cce2362 100644
--- a/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
+++ b/engine/schema/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml
@@ -203,7 +203,7 @@
-
+
@@ -313,10 +313,10 @@
-
+
diff --git a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java
index 011aa733e95..747d558df54 100644
--- a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java
+++ b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDao.java
@@ -19,5 +19,5 @@ package com.cloud.dc.dao;
import com.cloud.dc.DataCenterDetailVO;
import com.cloud.utils.db.GenericDao;
-public interface DataCenterDetailsDao extends GenericDao, ResourceDetailDao {
+public interface DataCenterDetailsDao extends GenericDao, ResourceDetailsDao {
}
\ No newline at end of file
diff --git a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
index bc0621dacad..1d003ca3574 100644
--- a/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/dc/dao/DataCenterDetailsDaoImpl.java
@@ -26,7 +26,8 @@ import org.apache.cloudstack.framework.config.ScopedConfigStorage;
import com.cloud.dc.DataCenterDetailVO;
@Local(value=DataCenterDetailsDao.class)
-public class DataCenterDetailsDaoImpl extends ResourceDetailDaoBase implements DataCenterDetailsDao, ScopedConfigStorage {
+public class DataCenterDetailsDaoImpl extends ResourceDetailsDaoBase implements DataCenterDetailsDao, ScopedConfigStorage {
+
@Override
public Scope getScope() {
diff --git a/engine/schema/src/com/cloud/dc/dao/ResourceDetailDao.java b/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDao.java
similarity index 93%
rename from engine/schema/src/com/cloud/dc/dao/ResourceDetailDao.java
rename to engine/schema/src/com/cloud/dc/dao/ResourceDetailsDao.java
index e47e6f39d55..fd8f89ca1ad 100644
--- a/engine/schema/src/com/cloud/dc/dao/ResourceDetailDao.java
+++ b/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDao.java
@@ -23,7 +23,7 @@ import org.apache.cloudstack.api.ResourceDetail;
import com.cloud.utils.db.GenericDao;
-public interface ResourceDetailDao extends GenericDao{
+public interface ResourceDetailsDao extends GenericDao{
public R findDetail(long resourceId, String name);
public Map findDetails(long resourceId);
diff --git a/engine/schema/src/com/cloud/dc/dao/ResourceDetailDaoBase.java b/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDaoBase.java
similarity index 96%
rename from engine/schema/src/com/cloud/dc/dao/ResourceDetailDaoBase.java
rename to engine/schema/src/com/cloud/dc/dao/ResourceDetailsDaoBase.java
index 9102a62f704..ba0e5c32793 100644
--- a/engine/schema/src/com/cloud/dc/dao/ResourceDetailDaoBase.java
+++ b/engine/schema/src/com/cloud/dc/dao/ResourceDetailsDaoBase.java
@@ -28,10 +28,10 @@ import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.TransactionLegacy;
-public abstract class ResourceDetailDaoBase extends GenericDaoBase{
+public abstract class ResourceDetailsDaoBase extends GenericDaoBase{
private SearchBuilder AllFieldsSearch;
- public ResourceDetailDaoBase() {
+ public ResourceDetailsDaoBase() {
AllFieldsSearch = createSearchBuilder();
AllFieldsSearch.and("resourceId", AllFieldsSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
AllFieldsSearch.and("name", AllFieldsSearch.entity().getName(), SearchCriteria.Op.EQ);
diff --git a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java
index f79188848a9..ec1b44ce88b 100644
--- a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java
+++ b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDao.java
@@ -16,9 +16,9 @@
// under the License.
package com.cloud.network.dao;
-import com.cloud.dc.dao.ResourceDetailDao;
+import com.cloud.dc.dao.ResourceDetailsDao;
import com.cloud.utils.db.GenericDao;
-public interface NetworkDetailsDao extends GenericDao, ResourceDetailDao {
+public interface NetworkDetailsDao extends GenericDao, ResourceDetailsDao {
}
\ No newline at end of file
diff --git a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
index 7f43f44e070..5306a35f85d 100644
--- a/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/dao/NetworkDetailsDaoImpl.java
@@ -20,11 +20,11 @@ import javax.ejb.Local;
import org.springframework.stereotype.Component;
-import com.cloud.dc.dao.ResourceDetailDaoBase;
+import com.cloud.dc.dao.ResourceDetailsDaoBase;
@Component
@Local(value=NetworkDetailsDao.class)
-public class NetworkDetailsDaoImpl extends ResourceDetailDaoBase implements NetworkDetailsDao {
+public class NetworkDetailsDaoImpl extends ResourceDetailsDaoBase implements NetworkDetailsDao {
@Override
public NetworkDetailVO createDetail(long resourceId, String key, String value) {
diff --git a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java
index ba753b7105f..495ccd53216 100644
--- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java
+++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDao.java
@@ -16,9 +16,9 @@
// under the License.
package com.cloud.service.dao;
-import com.cloud.dc.dao.ResourceDetailDao;
+import com.cloud.dc.dao.ResourceDetailsDao;
import com.cloud.service.ServiceOfferingDetailsVO;
import com.cloud.utils.db.GenericDao;
-public interface ServiceOfferingDetailsDao extends GenericDao, ResourceDetailDao {
+public interface ServiceOfferingDetailsDao extends GenericDao, ResourceDetailsDao {
}
\ No newline at end of file
diff --git a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
index 96f1085e90f..c059ca8f3bc 100644
--- a/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/service/dao/ServiceOfferingDetailsDaoImpl.java
@@ -20,12 +20,12 @@ import javax.ejb.Local;
import org.springframework.stereotype.Component;
-import com.cloud.dc.dao.ResourceDetailDaoBase;
+import com.cloud.dc.dao.ResourceDetailsDaoBase;
import com.cloud.service.ServiceOfferingDetailsVO;
@Component
@Local(value=ServiceOfferingDetailsDao.class)
-public class ServiceOfferingDetailsDaoImpl extends ResourceDetailDaoBase
+public class ServiceOfferingDetailsDaoImpl extends ResourceDetailsDaoBase
implements ServiceOfferingDetailsDao {
@Override
diff --git a/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
index 521f3254747..89147324d17 100644
--- a/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/StoragePoolDetailsDaoImpl.java
@@ -24,10 +24,10 @@ import org.apache.cloudstack.framework.config.ScopedConfigStorage;
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
-import com.cloud.dc.dao.ResourceDetailDaoBase;
+import com.cloud.dc.dao.ResourceDetailsDaoBase;
@Local(value = StoragePoolDetailsDao.class)
-public class StoragePoolDetailsDaoImpl extends ResourceDetailDaoBase implements StoragePoolDetailsDao, ScopedConfigStorage {
+public class StoragePoolDetailsDaoImpl extends ResourceDetailsDaoBase implements StoragePoolDetailsDao, ScopedConfigStorage {
public StoragePoolDetailsDaoImpl() {
}
diff --git a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDao.java b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDao.java
index aa7ce4ba539..818f9ddb7ac 100644
--- a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDao.java
+++ b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDao.java
@@ -16,10 +16,10 @@
// under the License.
package com.cloud.storage.dao;
-import com.cloud.dc.dao.ResourceDetailDao;
+import com.cloud.dc.dao.ResourceDetailsDao;
import com.cloud.storage.VMTemplateDetailVO;
import com.cloud.utils.db.GenericDao;
-public interface VMTemplateDetailsDao extends GenericDao, ResourceDetailDao {
+public interface VMTemplateDetailsDao extends GenericDao, ResourceDetailsDao {
}
diff --git a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
index ad3f1d5dfe4..d4ca38e5f48 100644
--- a/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/VMTemplateDetailsDaoImpl.java
@@ -20,12 +20,12 @@ import javax.ejb.Local;
import org.springframework.stereotype.Component;
-import com.cloud.dc.dao.ResourceDetailDaoBase;
+import com.cloud.dc.dao.ResourceDetailsDaoBase;
import com.cloud.storage.VMTemplateDetailVO;
@Component
@Local(value = VMTemplateDetailsDao.class)
-public class VMTemplateDetailsDaoImpl extends ResourceDetailDaoBase implements VMTemplateDetailsDao {
+public class VMTemplateDetailsDaoImpl extends ResourceDetailsDaoBase implements VMTemplateDetailsDao {
@Override
public VMTemplateDetailVO createDetail(long resourceId, String key, String value) {
diff --git a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDao.java b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDao.java
index 635ca97bce3..a7c7013f462 100644
--- a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDao.java
+++ b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDao.java
@@ -16,10 +16,10 @@
// under the License.
package com.cloud.storage.dao;
-import com.cloud.dc.dao.ResourceDetailDao;
+import com.cloud.dc.dao.ResourceDetailsDao;
import com.cloud.storage.VolumeDetailVO;
import com.cloud.utils.db.GenericDao;
-public interface VolumeDetailsDao extends GenericDao, ResourceDetailDao {
+public interface VolumeDetailsDao extends GenericDao, ResourceDetailsDao {
}
diff --git a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
index 26fdd2f708b..700be46abf6 100644
--- a/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/storage/dao/VolumeDetailsDaoImpl.java
@@ -20,12 +20,12 @@ import javax.ejb.Local;
import org.springframework.stereotype.Component;
-import com.cloud.dc.dao.ResourceDetailDaoBase;
+import com.cloud.dc.dao.ResourceDetailsDaoBase;
import com.cloud.storage.VolumeDetailVO;
@Component
@Local(value=VolumeDetailsDao.class)
-public class VolumeDetailsDaoImpl extends ResourceDetailDaoBase implements VolumeDetailsDao {
+public class VolumeDetailsDaoImpl extends ResourceDetailsDaoBase implements VolumeDetailsDao {
@Override
public VolumeDetailVO createDetail(long resourceId, String key, String value) {
diff --git a/engine/schema/src/com/cloud/vm/dao/NicDetailDao.java b/engine/schema/src/com/cloud/vm/dao/NicDetailsDao.java
similarity index 85%
rename from engine/schema/src/com/cloud/vm/dao/NicDetailDao.java
rename to engine/schema/src/com/cloud/vm/dao/NicDetailsDao.java
index f960ecfe3d0..3835ddc320d 100644
--- a/engine/schema/src/com/cloud/vm/dao/NicDetailDao.java
+++ b/engine/schema/src/com/cloud/vm/dao/NicDetailsDao.java
@@ -16,9 +16,9 @@
// under the License.
package com.cloud.vm.dao;
-import com.cloud.dc.dao.ResourceDetailDao;
+import com.cloud.dc.dao.ResourceDetailsDao;
import com.cloud.utils.db.GenericDao;
import com.cloud.vm.NicDetailVO;
-public interface NicDetailDao extends GenericDao, ResourceDetailDao {
+public interface NicDetailsDao extends GenericDao, ResourceDetailsDao {
}
diff --git a/engine/schema/src/com/cloud/vm/dao/NicDetailDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
similarity index 85%
rename from engine/schema/src/com/cloud/vm/dao/NicDetailDaoImpl.java
rename to engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
index afab4fd5350..0775f7f8013 100644
--- a/engine/schema/src/com/cloud/vm/dao/NicDetailDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/NicDetailsDaoImpl.java
@@ -20,12 +20,12 @@ import javax.ejb.Local;
import org.springframework.stereotype.Component;
-import com.cloud.dc.dao.ResourceDetailDaoBase;
+import com.cloud.dc.dao.ResourceDetailsDaoBase;
import com.cloud.vm.NicDetailVO;
@Component
-@Local (value={NicDetailDao.class})
-public class NicDetailDaoImpl extends ResourceDetailDaoBase implements NicDetailDao {
+@Local (value={NicDetailsDao.class})
+public class NicDetailsDaoImpl extends ResourceDetailsDaoBase implements NicDetailsDao {
@Override
public NicDetailVO createDetail(long resourceId, String key, String value) {
diff --git a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java
index a0249e64ddc..c06e9bb6895 100644
--- a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java
+++ b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java
@@ -16,9 +16,9 @@
// under the License.
package com.cloud.vm.dao;
-import com.cloud.dc.dao.ResourceDetailDao;
+import com.cloud.dc.dao.ResourceDetailsDao;
import com.cloud.utils.db.GenericDao;
import com.cloud.vm.UserVmDetailVO;
-public interface UserVmDetailsDao extends GenericDao, ResourceDetailDao {
+public interface UserVmDetailsDao extends GenericDao, ResourceDetailsDao {
}
diff --git a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
index 28291922c07..45c33cdb38a 100644
--- a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
+++ b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java
@@ -20,12 +20,12 @@ import javax.ejb.Local;
import org.springframework.stereotype.Component;
-import com.cloud.dc.dao.ResourceDetailDaoBase;
+import com.cloud.dc.dao.ResourceDetailsDaoBase;
import com.cloud.vm.UserVmDetailVO;
@Component
@Local(value=UserVmDetailsDao.class)
-public class UserVmDetailsDaoImpl extends ResourceDetailDaoBase implements UserVmDetailsDao {
+public class UserVmDetailsDaoImpl extends ResourceDetailsDaoBase implements UserVmDetailsDao {
@Override
public UserVmDetailVO createDetail(long resourceId, String key, String value) {
diff --git a/engine/schema/src/org/apache/cloudstack/resourcedetail/FirewallRuleDetailVO.java b/engine/schema/src/org/apache/cloudstack/resourcedetail/FirewallRuleDetailVO.java
new file mode 100644
index 00000000000..d7e90e80852
--- /dev/null
+++ b/engine/schema/src/org/apache/cloudstack/resourcedetail/FirewallRuleDetailVO.java
@@ -0,0 +1,72 @@
+// 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 org.apache.cloudstack.resourcedetail;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.apache.cloudstack.api.ResourceDetail;
+
+@Entity
+@Table(name="firewall_rule_details")
+public class FirewallRuleDetailVO implements ResourceDetail{
+ @Id
+ @GeneratedValue(strategy= GenerationType.IDENTITY)
+ @Column(name="id")
+ private long id;
+
+ @Column(name="firewall_rule_id")
+ private long resourceId;
+
+ @Column(name="name")
+ private String name;
+
+ @Column(name="value", length=1024)
+ private String value;
+
+ public FirewallRuleDetailVO() {}
+
+ public FirewallRuleDetailVO(long networkId, String name, String value) {
+ this.resourceId = networkId;
+ this.name = name;
+ this.value = value;
+ }
+
+ @Override
+ public long getId() {
+ return id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public long getResourceId() {
+ return resourceId;
+ }
+}
diff --git a/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDao.java b/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDao.java
new file mode 100644
index 00000000000..eae1d102321
--- /dev/null
+++ b/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDao.java
@@ -0,0 +1,26 @@
+// 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 org.apache.cloudstack.resourcedetail.dao;
+
+import org.apache.cloudstack.resourcedetail.FirewallRuleDetailVO;
+
+import com.cloud.dc.dao.ResourceDetailsDao;
+import com.cloud.utils.db.GenericDao;
+
+public interface FirewallRuleDetailsDao extends GenericDao, ResourceDetailsDao{
+
+}
diff --git a/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java b/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
new file mode 100644
index 00000000000..b235ace21c2
--- /dev/null
+++ b/engine/schema/src/org/apache/cloudstack/resourcedetail/dao/FirewallRuleDetailsDaoImpl.java
@@ -0,0 +1,34 @@
+// 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 org.apache.cloudstack.resourcedetail.dao;
+
+import javax.ejb.Local;
+
+import org.apache.cloudstack.resourcedetail.FirewallRuleDetailVO;
+import org.springframework.stereotype.Component;
+
+import com.cloud.dc.dao.ResourceDetailsDaoBase;
+
+@Component
+@Local (value={FirewallRuleDetailsDao.class})
+public class FirewallRuleDetailsDaoImpl extends ResourceDetailsDaoBase implements FirewallRuleDetailsDao {
+
+ @Override
+ public FirewallRuleDetailVO createDetail(long resourceId, String key, String value) {
+ return new FirewallRuleDetailVO(resourceId, key, value);
+ }
+}
diff --git a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailsDao.java b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailsDao.java
index 846610747a9..7b6d390165c 100644
--- a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailsDao.java
+++ b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDetailsDao.java
@@ -16,7 +16,7 @@
// under the License.
package org.apache.cloudstack.storage.datastore.db;
-import com.cloud.dc.dao.ResourceDetailDao;
+import com.cloud.dc.dao.ResourceDetailsDao;
-public interface PrimaryDataStoreDetailsDao extends ResourceDetailDao {
+public interface PrimaryDataStoreDetailsDao extends ResourceDetailsDao {
}
\ No newline at end of file
diff --git a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java
index f7ef63156f0..2ec04d5846c 100644
--- a/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java
+++ b/engine/schema/src/org/apache/cloudstack/storage/datastore/db/StoragePoolDetailsDao.java
@@ -16,8 +16,8 @@
// under the License.
package org.apache.cloudstack.storage.datastore.db;
-import com.cloud.dc.dao.ResourceDetailDao;
+import com.cloud.dc.dao.ResourceDetailsDao;
import com.cloud.utils.db.GenericDao;
-public interface StoragePoolDetailsDao extends GenericDao, ResourceDetailDao {
+public interface StoragePoolDetailsDao extends GenericDao, ResourceDetailsDao {
}
diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
index a1470a30173..5613931ff4b 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/volume/db/PrimaryDataStoreDetailsDaoImpl.java
@@ -20,10 +20,10 @@ import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDetailVO;
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDetailsDao;
import org.springframework.stereotype.Component;
-import com.cloud.dc.dao.ResourceDetailDaoBase;
+import com.cloud.dc.dao.ResourceDetailsDaoBase;
@Component
-public class PrimaryDataStoreDetailsDaoImpl extends ResourceDetailDaoBase implements
+public class PrimaryDataStoreDetailsDaoImpl extends ResourceDetailsDaoBase implements
PrimaryDataStoreDetailsDao {
@Override
diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java
index 37b9e9c526b..1be6a214a3f 100755
--- a/server/src/com/cloud/api/ApiDBUtils.java
+++ b/server/src/com/cloud/api/ApiDBUtils.java
@@ -126,7 +126,7 @@ import com.cloud.dc.dao.ClusterDao;
import com.cloud.dc.dao.DataCenterDao;
import com.cloud.dc.dao.DataCenterDetailsDao;
import com.cloud.dc.dao.HostPodDao;
-import com.cloud.dc.dao.ResourceDetailDaoBase;
+import com.cloud.dc.dao.ResourceDetailsDaoBase;
import com.cloud.dc.dao.VlanDao;
import com.cloud.domain.DomainVO;
import com.cloud.domain.dao.DomainDao;
diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java
index 85674ea76ff..a7d85cf9368 100644
--- a/server/src/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/com/cloud/api/query/QueryManagerImpl.java
@@ -189,7 +189,7 @@ import com.cloud.vm.DomainRouterVO;
import com.cloud.vm.UserVmVO;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.dao.DomainRouterDao;
-import com.cloud.vm.dao.NicDetailDao;
+import com.cloud.vm.dao.NicDetailsDao;
import com.cloud.vm.dao.UserVmDao;
import com.cloud.vm.dao.UserVmDetailsDao;
@@ -295,7 +295,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
private VolumeDetailsDao _volumeDetailDao;
@Inject
- private NicDetailDao _nicDetailDao;
+ private NicDetailsDao _nicDetailDao;
@Inject
UserVmDetailsDao _userVmDetailDao;
diff --git a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
index 9a61a67ab9c..6d03b2ac2f3 100644
--- a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
+++ b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
@@ -26,12 +26,13 @@ import javax.inject.Inject;
import javax.naming.ConfigurationException;
import org.apache.cloudstack.api.ResourceDetail;
+import org.apache.cloudstack.resourcedetail.dao.FirewallRuleDetailsDao;
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.cloud.dc.dao.DataCenterDetailsDao;
-import com.cloud.dc.dao.ResourceDetailDao;
+import com.cloud.dc.dao.ResourceDetailsDao;
import com.cloud.event.ActionEvent;
import com.cloud.event.EventTypes;
import com.cloud.exception.InvalidParameterValueException;
@@ -47,7 +48,7 @@ import com.cloud.utils.db.DB;
import com.cloud.utils.db.Transaction;
import com.cloud.utils.db.TransactionCallback;
import com.cloud.utils.db.TransactionStatus;
-import com.cloud.vm.dao.NicDetailDao;
+import com.cloud.vm.dao.NicDetailsDao;
import com.cloud.vm.dao.UserVmDetailsDao;
@@ -58,7 +59,7 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
@Inject
VolumeDetailsDao _volumeDetailDao;
@Inject
- NicDetailDao _nicDetailDao;
+ NicDetailsDao _nicDetailDao;
@Inject
UserVmDetailsDao _userVmDetailDao;
@Inject
@@ -73,9 +74,11 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
ServiceOfferingDetailsDao _serviceOfferingDetailsDao;
@Inject
StoragePoolDetailsDao _storageDetailsDao;
+ @Inject
+ FirewallRuleDetailsDao _firewallRuleDetailsDao;
- private static Map> _daoMap=
- new HashMap>();
+ private static Map> _daoMap=
+ new HashMap>();
@Override
@@ -88,6 +91,7 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
_daoMap.put(ResourceObjectType.ServiceOffering, _serviceOfferingDetailsDao);
_daoMap.put(ResourceObjectType.Zone, _dcDetailsDao);
_daoMap.put(ResourceObjectType.Storage, _storageDetailsDao);
+ _daoMap.put(ResourceObjectType.FirewallRule, _firewallRuleDetailsDao);
return true;
}
@@ -148,18 +152,18 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
private class DetailDaoHelper {
private ResourceObjectType resourceType;
- private ResourceDetailDao super ResourceDetail> dao;
+ private ResourceDetailsDao super ResourceDetail> dao;
private DetailDaoHelper(ResourceObjectType resourceType) {
if (!resourceType.resourceMetadataSupport()) {
throw new UnsupportedOperationException("ResourceType " + resourceType + " doesn't support metadata");
}
this.resourceType = resourceType;
- ResourceDetailDao> dao = _daoMap.get(resourceType);
+ ResourceDetailsDao> dao = _daoMap.get(resourceType);
if (dao == null) {
throw new UnsupportedOperationException("ResourceType " + resourceType + " doesn't support metadata");
}
- this.dao = (ResourceDetailDao)_daoMap.get(resourceType);
+ this.dao = (ResourceDetailsDao)_daoMap.get(resourceType);
}
private void addDetail(ResourceDetail detail) {
diff --git a/server/test/com/cloud/metadata/ResourceMetaDataManagerTest.java b/server/test/com/cloud/metadata/ResourceMetaDataManagerTest.java
index ae3cae4f673..84000fc2b70 100644
--- a/server/test/com/cloud/metadata/ResourceMetaDataManagerTest.java
+++ b/server/test/com/cloud/metadata/ResourceMetaDataManagerTest.java
@@ -37,7 +37,7 @@ import com.cloud.exception.ResourceAllocationException;
import com.cloud.server.ResourceTag;
import com.cloud.server.TaggedResourceService;
import com.cloud.storage.dao.VolumeDetailsDao;
-import com.cloud.vm.dao.NicDetailDao;
+import com.cloud.vm.dao.NicDetailsDao;
public class ResourceMetaDataManagerTest {
@@ -47,7 +47,7 @@ public class ResourceMetaDataManagerTest {
@Spy ResourceMetaDataManagerImpl _resourceMetaDataMgr = new ResourceMetaDataManagerImpl();
@Mock VolumeDetailsDao _volumeDetailDao;
@Mock
- NicDetailDao _nicDetailDao;
+ NicDetailsDao _nicDetailDao;
@Mock TaggedResourceService _taggedResourceMgr;
@Before
diff --git a/setup/db/db/schema-421to430.sql b/setup/db/db/schema-421to430.sql
index a858e278ed4..0e788754c12 100644
--- a/setup/db/db/schema-421to430.sql
+++ b/setup/db/db/schema-421to430.sql
@@ -458,3 +458,16 @@ CREATE VIEW `cloud`.`storage_pool_view` AS
`cloud`.`async_job` ON async_job.instance_id = storage_pool.id
and async_job.instance_type = 'StoragePool'
and async_job.job_status = 0;
+
+
+ DROP TABLE IF EXISTS `cloud`.`vm_snapshot_details`;
+
+CREATE TABLE `cloud`.`firewall_rule_details` (
+ `id` bigint unsigned NOT NULL auto_increment,
+ `firewall_rule_id` bigint unsigned NOT NULL COMMENT 'firewall rule id',
+ `name` varchar(255) NOT NULL,
+ `value` varchar(1024) NOT NULL,
+ `display_detail` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'True if detail can be displayed to the end user',
+ PRIMARY KEY (`id`),
+ CONSTRAINT `fk_firewall_rule_details__firewall_rule_id` FOREIGN KEY `fk_firewall_rule_details__firewall_rule_id`(`firewall_rule_id`) REFERENCES `firewall_rules`(`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;