diff --git a/src/acl/AclRule.cc b/src/acl/AclRule.cc
index 147a392f8e..f17bd43a38 100644
--- a/src/acl/AclRule.cc
+++ b/src/acl/AclRule.cc
@@ -28,7 +28,7 @@ const long long AclRule::CLUSTER_ID = 0x0000000800000000LL;
const long long AclRule::NONE_ID = 0x1000000000000000LL;
-const int AclRule::num_pool_objects = 10;
+const int AclRule::num_pool_objects = 11;
const PoolObjectSQL::ObjectType AclRule::pool_objects[] = {
PoolObjectSQL::VM,
PoolObjectSQL::HOST,
@@ -39,7 +39,8 @@ const PoolObjectSQL::ObjectType AclRule::pool_objects[] = {
PoolObjectSQL::GROUP,
PoolObjectSQL::DATASTORE,
PoolObjectSQL::CLUSTER,
- PoolObjectSQL::DOCUMENT
+ PoolObjectSQL::DOCUMENT,
+ PoolObjectSQL::ZONE
};
const int AclRule::num_auth_operations = 4;
@@ -53,7 +54,7 @@ const AuthRequest::Operation AclRule::auth_operations[] = {
const long long AclRule::INVALID_CLUSTER_OBJECTS =
PoolObjectSQL::VM | PoolObjectSQL::IMAGE | PoolObjectSQL::USER |
PoolObjectSQL::TEMPLATE | PoolObjectSQL::GROUP | PoolObjectSQL::ACL |
- PoolObjectSQL::CLUSTER | PoolObjectSQL::DOCUMENT;
+ PoolObjectSQL::CLUSTER | PoolObjectSQL::DOCUMENT | PoolObjectSQL::ZONE;
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
diff --git a/src/cli/etc/oneacl.yaml b/src/cli/etc/oneacl.yaml
index 3e2fadddb5..aaa6f2a2aa 100644
--- a/src/cli/etc/oneacl.yaml
+++ b/src/cli/etc/oneacl.yaml
@@ -9,9 +9,9 @@
:size: 8
:right: true
-:RES_VHNIUTGDCO:
+:RES_VHNIUTGDCOZ:
:desc: Which resource the rule applies to
- :size: 14
+ :size: 15
:RID:
:desc: Resource ID
@@ -31,7 +31,7 @@
:default:
- :ID
- :USER
-- :RES_VHNIUTGDCO
+- :RES_VHNIUTGDCOZ
- :RID
- :ZONE
- :OPE_UMAC
diff --git a/src/cli/one_helper/oneacl_helper.rb b/src/cli/one_helper/oneacl_helper.rb
index 782fbb5c43..b6690d7f96 100644
--- a/src/cli/one_helper/oneacl_helper.rb
+++ b/src/cli/one_helper/oneacl_helper.rb
@@ -44,7 +44,7 @@ private
def self.resource_mask(str)
resource_type=str.split("/")[0]
- mask = "----------"
+ mask = "-----------"
resource_type.split("+").each{|type|
case type
@@ -68,6 +68,8 @@ private
mask[8] = "C"
when "DOCUMENT"
mask[9] = "O"
+ when "ZONE"
+ mask[10] = "Z"
end
}
mask
@@ -107,8 +109,8 @@ private
d['STRING'].split(" ")[0]
end
- column :RES_VHNIUTGDCO, "Resource to which the rule applies",
- :size => 14 do |d|
+ column :RES_VHNIUTGDCOZ, "Resource to which the rule applies",
+ :size => 15 do |d|
OneAclHelper::resource_mask d['STRING'].split(" ")[1]
end
diff --git a/src/oca/java/src/org/opennebula/client/acl/Acl.java b/src/oca/java/src/org/opennebula/client/acl/Acl.java
index 3b257b387b..fc3658f3ae 100644
--- a/src/oca/java/src/org/opennebula/client/acl/Acl.java
+++ b/src/oca/java/src/org/opennebula/client/acl/Acl.java
@@ -68,6 +68,7 @@ public class Acl extends PoolElement{
tmpResources.put("DATASTORE", 0x0000100000000000L);
tmpResources.put("CLUSTER" , 0x0000200000000000L);
tmpResources.put("DOCUMENT" , 0x0000400000000000L);
+ tmpResources.put("ZONE" , 0x0000800000000000L);
RESOURCES = Collections.unmodifiableMap(tmpResources);
diff --git a/src/oca/ruby/opennebula/acl.rb b/src/oca/ruby/opennebula/acl.rb
index bb037b6bba..b520fdde5d 100644
--- a/src/oca/ruby/opennebula/acl.rb
+++ b/src/oca/ruby/opennebula/acl.rb
@@ -56,7 +56,8 @@ module OpenNebula
"GROUP" => 0x40000000000,
"DATASTORE" => 0x100000000000,
"CLUSTER" => 0x200000000000,
- "DOCUMENT" => 0x400000000000
+ "DOCUMENT" => 0x400000000000,
+ "ZONE" => 0x800000000000
}
RIGHTS =
diff --git a/src/sunstone/public/js/plugins/acls-tab.js b/src/sunstone/public/js/plugins/acls-tab.js
index f99ae91d2d..bd43bd5b29 100644
--- a/src/sunstone/public/js/plugins/acls-tab.js
+++ b/src/sunstone/public/js/plugins/acls-tab.js
@@ -102,6 +102,7 @@ var create_acl_tmpl =
'+tr("Users")+'
\
'+tr("Groups")+'
\
'+tr("Documents")+'
\
+ '+tr("Zones")+'
\
\
\
\
@@ -379,6 +380,9 @@ function parseAclString(string) {
case "DOCUMENT":
resources_str+=tr("Documents")+", ";
break;
+ case "ZONE":
+ resources_str+=tr("Zones")+", ";
+ break;
};
};
//remove ", " from end