From 25fa9186aa2e929251c87f31ab6fd97d61aa846b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Thu, 23 Jan 2014 13:02:25 +0100 Subject: [PATCH] Feature #2613: Allow to manage ZONE with acl rules --- src/acl/AclRule.cc | 7 ++++--- src/cli/etc/oneacl.yaml | 6 +++--- src/cli/one_helper/oneacl_helper.rb | 8 +++++--- src/oca/java/src/org/opennebula/client/acl/Acl.java | 1 + src/oca/ruby/opennebula/acl.rb | 3 ++- src/sunstone/public/js/plugins/acls-tab.js | 4 ++++ 6 files changed, 19 insertions(+), 10 deletions(-) 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