mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-16 22:50:10 +03:00
bug #785: Moved ACL creation to Group class in OCA
This commit is contained in:
parent
4342caac1e
commit
f46a01b216
@ -16,12 +16,6 @@
|
||||
|
||||
require 'one_helper'
|
||||
|
||||
if ONE_LOCATION
|
||||
GROUP_DEFAULT=ONE_LOCATION+"/etc/group.default"
|
||||
else
|
||||
GROUP_DEFAULT="/etc/one/group.default"
|
||||
end
|
||||
|
||||
class OneGroupHelper < OpenNebulaHelper::OneHelper
|
||||
def self.rname
|
||||
"GROUP"
|
||||
@ -41,35 +35,11 @@ class OneGroupHelper < OpenNebulaHelper::OneHelper
|
||||
puts "ID: #{group.id.to_s}"
|
||||
end
|
||||
|
||||
exit_code = 0
|
||||
|
||||
puts "Creating default ACL rules from #{GROUP_DEFAULT}" if options[:verbose]
|
||||
File.open(GROUP_DEFAULT).each_line{ |l|
|
||||
next if l.match(/^#/)
|
||||
|
||||
rule = "@#{group.id} #{l}"
|
||||
parse = OpenNebula::Acl.parse_rule(rule)
|
||||
if OpenNebula.is_error?(parse)
|
||||
puts "Error parsing rule #{rule}"
|
||||
puts "Error message" << parse.message
|
||||
exit_code = -1
|
||||
next
|
||||
end
|
||||
exit_code , msg = group.create_acls
|
||||
|
||||
xml = OpenNebula::Acl.build_xml
|
||||
acl = OpenNebula::Acl.new(xml, @client)
|
||||
rc = acl.allocate(*parse)
|
||||
if OpenNebula.is_error?(rc)
|
||||
puts "Error creating rule #{rule}"
|
||||
puts "Error message" << rc.message
|
||||
exit_code = -1
|
||||
next
|
||||
else
|
||||
msg = "ACL_ID: #{acl.id.to_s}"
|
||||
msg << " RULE: #{rule.strip}" if options[:verbose]
|
||||
puts msg
|
||||
end
|
||||
}
|
||||
puts msg
|
||||
|
||||
exit_code
|
||||
end
|
||||
|
@ -30,6 +30,13 @@ module OpenNebula
|
||||
# Flag for requesting connected user's group info
|
||||
SELF = -1
|
||||
|
||||
#Default location for group ACL's
|
||||
if ENV['ONE_LOCATION']
|
||||
GROUP_DEFAULT = ENV['ONE_LOCATION'] + "/etc/group.default"
|
||||
else
|
||||
GROUP_DEFAULT = "/etc/one/group.default"
|
||||
end
|
||||
|
||||
# Creates a Group description with just its identifier
|
||||
# this method should be used to create plain Group objects.
|
||||
# +id+ the id of the user
|
||||
@ -55,6 +62,43 @@ module OpenNebula
|
||||
|
||||
@client = client
|
||||
end
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# Group utils
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
# Creates ACLs for the group. The ACL rules are described in a file
|
||||
def create_acls(filename = GROUP_DEFAULT)
|
||||
if !File.readable?(filename)
|
||||
return -1, "Can not read deafult ACL file for group"
|
||||
end
|
||||
|
||||
msg = String.new
|
||||
|
||||
File.open(filename).each_line{ |l|
|
||||
next if l.match(/^#/)
|
||||
|
||||
rule = "@#{@pe_id} #{l}"
|
||||
parse = OpenNebula::Acl.parse_rule(rule)
|
||||
|
||||
if OpenNebula.is_error?(parse)
|
||||
return -1, "Error parsing rule #{rule}: #{parse.message}"
|
||||
end
|
||||
|
||||
xml = OpenNebula::Acl.build_xml
|
||||
acl = OpenNebula::Acl.new(xml, @client)
|
||||
|
||||
rc = acl.allocate(*parse)
|
||||
|
||||
if OpenNebula.is_error?(rc)
|
||||
return -1, "Error creating rule #{rule}: #{rc.message}"
|
||||
else
|
||||
msg << "ACL_ID: #{acl.id}\n"
|
||||
end
|
||||
}
|
||||
|
||||
return 0, msg
|
||||
end
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# XML-RPC Methods for the Group Object
|
||||
|
@ -16,12 +16,6 @@
|
||||
|
||||
require 'OpenNebulaJSON/JSONUtils'
|
||||
|
||||
if ONE_LOCATION
|
||||
GROUP_DEFAULT=ONE_LOCATION+"/etc/group.default"
|
||||
else
|
||||
GROUP_DEFAULT="/etc/one/group.default"
|
||||
end
|
||||
|
||||
module OpenNebulaJSON
|
||||
class GroupJSON < OpenNebula::Group
|
||||
include JSONUtils
|
||||
@ -34,30 +28,11 @@ module OpenNebulaJSON
|
||||
|
||||
rc_alloc = self.allocate(group_hash['name'])
|
||||
|
||||
#if group allocation was successful
|
||||
#create default ACL rules
|
||||
if !OpenNebula.is_error?(rc_alloc)
|
||||
#create default ACL rules - inspired by cli's onegroup_helper.rb
|
||||
rc_acl, msg = self.create_acls
|
||||
|
||||
File.open(GROUP_DEFAULT).each_line{ |l|
|
||||
next if l.match(/^#/)
|
||||
|
||||
rule = "@#{self.id} #{l}"
|
||||
parse = OpenNebula::Acl.parse_rule(rule)
|
||||
if OpenNebula.is_error?(parse)
|
||||
puts "Error parsing rule #{rule}"
|
||||
puts "Error message" << parse.message
|
||||
next
|
||||
end
|
||||
|
||||
xml = OpenNebula::Acl.build_xml
|
||||
acl = OpenNebula::Acl.new(xml, @client)
|
||||
rc = acl.allocate(*parse)
|
||||
if OpenNebula.is_error?(rc)
|
||||
puts "Error creating rule #{rule}"
|
||||
puts "Error message" << rc.message
|
||||
next
|
||||
end
|
||||
}
|
||||
puts msg if rc_acl == -1
|
||||
end
|
||||
|
||||
return rc_alloc
|
||||
|
Loading…
x
Reference in New Issue
Block a user