Scott Seago
2009-Apr-02 19:35 UTC
[Ovirt-devel] [PATCH server] Added roles and privileges for the cloud controller.
Signed-off-by: Scott Seago <sseago at redhat.com>
---
src/app/models/privilege.rb | 3 ++
src/app/models/role.rb | 2 +-
.../migrate/038_add_cloud_role.rb} | 35 +++++++++++++-------
src/test/fixtures/privileges.yml | 4 ++
src/test/fixtures/roles.yml | 3 ++
5 files changed, 34 insertions(+), 13 deletions(-)
copy src/{app/models/privilege.rb => db/migrate/038_add_cloud_role.rb} (50%)
diff --git a/src/app/models/privilege.rb b/src/app/models/privilege.rb
index 7a30b8f..18c0f16 100644
--- a/src/app/models/privilege.rb
+++ b/src/app/models/privilege.rb
@@ -31,5 +31,8 @@ class Privilege < ActiveRecord::Base
VM_CONTROL = "vm_control"
VIEW = "view"
+ CLOUD_CREATE = "cloud_create"
+ CLOUD_VIEW = "cloud_view"
+
end
diff --git a/src/app/models/role.rb b/src/app/models/role.rb
index 969fbbe..c850d64 100644
--- a/src/app/models/role.rb
+++ b/src/app/models/role.rb
@@ -30,5 +30,5 @@ class Role < ActiveRecord::Base
ADMIN = "Administrator"
USER = "User"
MONITOR = "Monitor"
-
+ CLOUD_USER = "Cloud User"
end
diff --git a/src/app/models/privilege.rb b/src/db/migrate/038_add_cloud_role.rb
similarity index 50%
copy from src/app/models/privilege.rb
copy to src/db/migrate/038_add_cloud_role.rb
index 7a30b8f..2487f0c 100644
--- a/src/app/models/privilege.rb
+++ b/src/db/migrate/038_add_cloud_role.rb
@@ -17,19 +17,30 @@
# MA 02110-1301, USA. A copy of the GNU General Public License is
# also available at http://www.gnu.org/copyleft/gpl.html.
-class Privilege < ActiveRecord::Base
- has_and_belongs_to_many :roles
+class AddCloudRoles < ActiveRecord::Migration
+ def self.up
+ Role.transaction do
+ role_cloud_user = Role.new({:name => "Cloud User"})
+ role_cloud_user.save!
- validates_presence_of :name
- validates_uniqueness_of :name
-
-
- #default privileges
- PERM_SET = "set_perms"
- PERM_VIEW = "view_perms"
- MODIFY = "modify"
- VM_CONTROL = "vm_control"
- VIEW = "view"
+ priv_cloud_create = Privilege.new({:name => "cloud_create"})
+ priv_cloud_create.save!
+ priv_cloud_view = Privilege.new({:name => "cloud_view"})
+ priv_cloud_view.save!
+ priv_vm_control = Privilege.find_by_name("vm_control")
+ role_cloud_user.privileges = [priv_cloud_view,
+ priv_vm_control,
+ priv_cloud_create]
+ role_cloud_user.save!
+ end
+ end
+ def self.down
+ Role.transaction do
+ Role.find_by_name("Cloud User").destroy
+ Privilege.find_by_name("cloud_create").destroy
+ Privilege.find_by_name("cloud_view").destroy
+ end
+ end
end
diff --git a/src/test/fixtures/privileges.yml b/src/test/fixtures/privileges.yml
index 3f19584..54a24be 100644
--- a/src/test/fixtures/privileges.yml
+++ b/src/test/fixtures/privileges.yml
@@ -8,3 +8,7 @@ vm_control:
name: vm_control
view:
name: view
+cloud_create:
+ name: cloud_create
+cloud_view:
+ name: cloud_view
diff --git a/src/test/fixtures/roles.yml b/src/test/fixtures/roles.yml
index 774158d..e90851d 100644
--- a/src/test/fixtures/roles.yml
+++ b/src/test/fixtures/roles.yml
@@ -10,3 +10,6 @@ user:
monitor:
name: Monitor
privileges: view
+cloud_user:
+ name: Cloud User
+ privileges: cloud_view, vm_control, cloud_create
--
1.6.0.6
Jason Guiditta
2009-Apr-14 20:48 UTC
[Ovirt-devel] [PATCH server] Added roles and privileges for the cloud controller.
One minor fix, inline. On Thu, 2009-04-02 at 19:35 +0000, Scott Seago wrote:> Signed-off-by: Scott Seago <sseago at redhat.com> > diff --git a/src/app/models/privilege.rb b/src/db/migrate/038_add_cloud_role.rb > similarity index 50% > copy from src/app/models/privilege.rb > copy to src/db/migrate/038_add_cloud_role.rb > index 7a30b8f..2487f0c 100644 > --- a/src/app/models/privilege.rb > +++ b/src/db/migrate/038_add_cloud_role.rb > @@ -17,19 +17,30 @@ > # MA 02110-1301, USA. A copy of the GNU General Public License is > # also available at http://www.gnu.org/copyleft/gpl.html. > > -class Privilege < ActiveRecord::Base > - has_and_belongs_to_many :rolesThe class name and filename difference caused this to fail for me, so they just need to be fixed as we discussed in irc, then ACK.> +class AddCloudRoles < ActiveRecord::Migration > + def self.up > + Role.transaction do > + role_cloud_user = Role.new({:name => "Cloud User"}) > +