mirror of
https://github.com/OpenNebula/one.git
synced 2026-11-09 22:14:13 +09:00
Feature #3175: New onesecgroup command
This commit is contained in:
1 parent
00990b33a1
commit
6fbbef6b60
10 files changed
+578
-5
No files matched your search
+10
-3
@@ -601,6 +601,7 @@ BIN_FILES="src/nebula/oned \
|
||||
src/cli/onezone \
|
||||
src/cli/oneflow \
|
||||
src/cli/oneflow-template \
|
||||
src/cli/onesecgroup \
|
||||
src/onedb/onedb \
|
||||
src/mad/utils/tty_expect \
|
||||
share/scripts/one"
|
||||
@@ -1258,6 +1259,8 @@ RUBY_OPENNEBULA_LIB_FILES="src/oca/ruby/opennebula/acl_pool.rb \
|
||||
src/oca/ruby/opennebula/image.rb \
|
||||
src/oca/ruby/opennebula/pool_element.rb \
|
||||
src/oca/ruby/opennebula/pool.rb \
|
||||
src/oca/ruby/opennebula/security_group_pool.rb \
|
||||
src/oca/ruby/opennebula/security_group.rb \
|
||||
src/oca/ruby/opennebula/system.rb \
|
||||
src/oca/ruby/opennebula/template_pool.rb \
|
||||
src/oca/ruby/opennebula/template.rb \
|
||||
@@ -1420,7 +1423,8 @@ ONE_CLI_LIB_FILES="src/cli/one_helper/onegroup_helper.rb \
|
||||
src/cli/one_helper/onedatastore_helper.rb \
|
||||
src/cli/one_helper/onecluster_helper.rb \
|
||||
src/cli/one_helper/onezone_helper.rb \
|
||||
src/cli/one_helper/oneacct_helper.rb"
|
||||
src/cli/one_helper/oneacct_helper.rb \
|
||||
src/cli/one_helper/onesecgroup_helper.rb"
|
||||
|
||||
CLI_BIN_FILES="src/cli/onevm \
|
||||
src/cli/onehost \
|
||||
@@ -1435,7 +1439,8 @@ CLI_BIN_FILES="src/cli/onevm \
|
||||
src/cli/onezone \
|
||||
src/cli/oneflow \
|
||||
src/cli/oneflow-template \
|
||||
src/cli/oneacct"
|
||||
src/cli/oneacct \
|
||||
src/cli/onesecgroup"
|
||||
|
||||
CLI_CONF_FILES="src/cli/etc/onegroup.yaml \
|
||||
src/cli/etc/onehost.yaml \
|
||||
@@ -1448,7 +1453,8 @@ CLI_CONF_FILES="src/cli/etc/onegroup.yaml \
|
||||
src/cli/etc/onedatastore.yaml \
|
||||
src/cli/etc/onecluster.yaml \
|
||||
src/cli/etc/onezone.yaml \
|
||||
src/cli/etc/oneacct.yaml"
|
||||
src/cli/etc/oneacct.yaml \
|
||||
src/cli/etc/onesecgroup.yaml"
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Sunstone files
|
||||
@@ -1793,6 +1799,7 @@ MAN_FILES="share/man/oneacct.1.gz \
|
||||
share/man/onezone.1.gz \
|
||||
share/man/oneflow.1.gz \
|
||||
share/man/oneflow-template.1.gz \
|
||||
share/man/onesecgroup.1.gz \
|
||||
share/man/econe-allocate-address.1.gz \
|
||||
share/man/econe-associate-address.1.gz \
|
||||
share/man/econe-attach-volume.1.gz \
|
||||
|
||||
@@ -61,6 +61,9 @@ env.Man('onevnet')
|
||||
env.Man('onegroup')
|
||||
env.Man('onezone')
|
||||
|
||||
# TODO
|
||||
#env.Man('onesecgroup')
|
||||
|
||||
env.Man('oneflow')
|
||||
env.Man('oneflow-template')
|
||||
|
||||
@@ -211,7 +211,7 @@ module CLIHelper
|
||||
pool=@data.keys.first
|
||||
return print_table(nil, options) if !pool
|
||||
|
||||
element=pool.split('_').first
|
||||
element=pool.split('_')[0..-2].join('_')
|
||||
|
||||
pool_data=@data.dsearch("#{pool}/#{element}")
|
||||
pool_data=[pool_data].flatten if pool_data
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
:ID:
|
||||
:desc: ONE identifier for the Security Group
|
||||
:size: 4
|
||||
|
||||
:NAME:
|
||||
:desc: Name of the Security Group
|
||||
:size: 27
|
||||
:left: true
|
||||
|
||||
:USER:
|
||||
:desc: Username of the Security Group owner
|
||||
:size: 15
|
||||
:left: true
|
||||
|
||||
:GROUP:
|
||||
:desc: Group of the Security Group
|
||||
:size: 15
|
||||
:left: true
|
||||
|
||||
:default:
|
||||
- :ID
|
||||
- :USER
|
||||
- :GROUP
|
||||
- :NAME
|
||||
@@ -0,0 +1,96 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs #
|
||||
# #
|
||||
# Licensed 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. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
require 'one_helper'
|
||||
|
||||
class OneSecurityGroupHelper < OpenNebulaHelper::OneHelper
|
||||
def self.rname
|
||||
"SECURITY_GROUP"
|
||||
end
|
||||
|
||||
def self.conf_file
|
||||
"onesecgroup.yaml"
|
||||
end
|
||||
|
||||
def format_pool(options)
|
||||
config_file = self.class.table_conf
|
||||
|
||||
table = CLIHelper::ShowTable.new(config_file, self) do
|
||||
column :ID, "ONE identifier for the Security Group", :size=>4 do |d|
|
||||
d["ID"]
|
||||
end
|
||||
|
||||
column :NAME, "Name of the Security Group", :left, :size=>27 do |d|
|
||||
d["NAME"]
|
||||
end
|
||||
|
||||
column :USER, "Username of the Security Group owner", :left,
|
||||
:size=>15 do |d|
|
||||
helper.user_name(d, options)
|
||||
end
|
||||
|
||||
column :GROUP, "Group of the Security Group", :left, :size=>15 do |d|
|
||||
helper.group_name(d, options)
|
||||
end
|
||||
|
||||
default :ID, :USER, :GROUP, :NAME
|
||||
end
|
||||
|
||||
table
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def factory(id=nil)
|
||||
if id
|
||||
OpenNebula::SecurityGroup.new_with_id(id, @client)
|
||||
else
|
||||
xml=OpenNebula::SecurityGroup.build_xml
|
||||
OpenNebula::SecurityGroup.new(xml, @client)
|
||||
end
|
||||
end
|
||||
|
||||
def factory_pool(user_flag=-2)
|
||||
OpenNebula::SecurityGroupPool.new(@client, user_flag)
|
||||
end
|
||||
|
||||
def format_resource(secgroup, options = {})
|
||||
str="%-15s: %-20s"
|
||||
str_h1="%-80s"
|
||||
|
||||
CLIHelper.print_header(
|
||||
str_h1 % "SECURITY GROUP #{secgroup['ID']} INFORMATION")
|
||||
puts str % ["ID", secgroup.id.to_s]
|
||||
puts str % ["NAME", secgroup.name]
|
||||
puts str % ["USER", secgroup['UNAME']]
|
||||
puts str % ["GROUP", secgroup['GNAME']]
|
||||
|
||||
CLIHelper.print_header(str_h1 % "PERMISSIONS",false)
|
||||
|
||||
["OWNER", "GROUP", "OTHER"].each { |e|
|
||||
mask = "---"
|
||||
mask[0] = "u" if secgroup["PERMISSIONS/#{e}_U"] == "1"
|
||||
mask[1] = "m" if secgroup["PERMISSIONS/#{e}_M"] == "1"
|
||||
mask[2] = "a" if secgroup["PERMISSIONS/#{e}_A"] == "1"
|
||||
|
||||
puts str % [e, mask]
|
||||
}
|
||||
puts
|
||||
|
||||
CLIHelper.print_header(str_h1 % "TEMPLATE CONTENTS",false)
|
||||
puts secgroup.template_str
|
||||
end
|
||||
end
|
||||
Executable
+198
@@ -0,0 +1,198 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs #
|
||||
# #
|
||||
# Licensed 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. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
ONE_LOCATION=ENV["ONE_LOCATION"]
|
||||
|
||||
if !ONE_LOCATION
|
||||
RUBY_LIB_LOCATION="/usr/lib/one/ruby"
|
||||
else
|
||||
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby"
|
||||
end
|
||||
|
||||
$: << RUBY_LIB_LOCATION
|
||||
$: << RUBY_LIB_LOCATION+"/cli"
|
||||
|
||||
require 'command_parser'
|
||||
require 'one_helper/onesecgroup_helper'
|
||||
|
||||
cmd=CommandParser::CmdParser.new(ARGV) do
|
||||
usage "`onesecgroup` <command> [<args>] [<options>]"
|
||||
version OpenNebulaHelper::ONE_VERSION
|
||||
|
||||
helper = OneSecurityGroupHelper.new
|
||||
|
||||
before_proc do
|
||||
helper.set_client(options)
|
||||
end
|
||||
|
||||
########################################################################
|
||||
# Global Options
|
||||
########################################################################
|
||||
set :option, CommandParser::OPTIONS+OpenNebulaHelper::CLIENT_OPTIONS
|
||||
|
||||
list_options = CLIHelper::OPTIONS
|
||||
list_options << OpenNebulaHelper::XML
|
||||
list_options << OpenNebulaHelper::NUMERIC
|
||||
list_options << OpenNebulaHelper::DESCRIBE
|
||||
|
||||
########################################################################
|
||||
# Formatters for arguments
|
||||
########################################################################
|
||||
set :format, :groupid, OpenNebulaHelper.rname_to_id_desc("GROUP") do |arg|
|
||||
OpenNebulaHelper.rname_to_id(arg, "GROUP")
|
||||
end
|
||||
|
||||
set :format, :userid, OpenNebulaHelper.rname_to_id_desc("USER") do |arg|
|
||||
OpenNebulaHelper.rname_to_id(arg, "USER")
|
||||
end
|
||||
|
||||
set :format, :secgroupid, OneSecurityGroupHelper.to_id_desc do |arg|
|
||||
helper.to_id(arg)
|
||||
end
|
||||
|
||||
set :format, :secgroupid_list, OneSecurityGroupHelper.list_to_id_desc do |arg|
|
||||
helper.list_to_id(arg)
|
||||
end
|
||||
|
||||
set :format, :filterflag, OneSecurityGroupHelper.filterflag_to_i_desc do |arg|
|
||||
helper.filterflag_to_i(arg)
|
||||
end
|
||||
|
||||
########################################################################
|
||||
# Commands
|
||||
########################################################################
|
||||
|
||||
create_desc = <<-EOT.unindent
|
||||
Creates a new Security Group from the given description
|
||||
EOT
|
||||
|
||||
command :create, create_desc, :file do
|
||||
helper.create_resource(options) do |obj|
|
||||
begin
|
||||
template = File.read(args[0])
|
||||
|
||||
obj.allocate(template)
|
||||
rescue => e
|
||||
STDERR.puts e.messsage
|
||||
exit -1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
clone_desc = <<-EOT.unindent
|
||||
Creates a new Security Group from an existing one
|
||||
EOT
|
||||
|
||||
command :clone, clone_desc, :secgroupid, :name do
|
||||
helper.perform_action(args[0],options,"cloned") do |obj|
|
||||
res = obj.clone(args[1])
|
||||
|
||||
if !OpenNebula.is_error?(res)
|
||||
puts "ID: #{res}"
|
||||
else
|
||||
puts res.message
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
delete_desc = <<-EOT.unindent
|
||||
Deletes the given Security Group
|
||||
EOT
|
||||
|
||||
command :delete, delete_desc, [:range, :secgroupid_list] do
|
||||
helper.perform_actions(args[0],options,"deleted") do |obj|
|
||||
obj.delete
|
||||
end
|
||||
end
|
||||
|
||||
chgrp_desc = <<-EOT.unindent
|
||||
Changes the Security Group's group
|
||||
EOT
|
||||
|
||||
command :chgrp, chgrp_desc,[:range, :secgroupid_list], :groupid do
|
||||
helper.perform_actions(args[0],options,"Group changed") do |obj|
|
||||
obj.chown(-1, args[1].to_i)
|
||||
end
|
||||
end
|
||||
|
||||
chown_desc = <<-EOT.unindent
|
||||
Changes the Security Group's owner and group
|
||||
EOT
|
||||
|
||||
command :chown, chown_desc, [:range, :secgroupid_list], :userid,
|
||||
[:groupid,nil] do
|
||||
gid = args[2].nil? ? -1 : args[2].to_i
|
||||
helper.perform_actions(args[0],options,"Owner/Group changed") do |obj|
|
||||
obj.chown(args[1].to_i, gid)
|
||||
end
|
||||
end
|
||||
|
||||
chmod_desc = <<-EOT.unindent
|
||||
Changes the Security Group permissions
|
||||
EOT
|
||||
|
||||
command :chmod, chmod_desc, [:range, :secgroupid_list], :octet do
|
||||
helper.perform_actions(args[0],options, "Permissions changed") do |t|
|
||||
t.chmod_octet(args[1])
|
||||
end
|
||||
end
|
||||
|
||||
update_desc = <<-EOT.unindent
|
||||
Update the template contents. If a path is not provided the editor will
|
||||
be launched to modify the current content.
|
||||
EOT
|
||||
|
||||
command :update, update_desc, :secgroupid, [:file, nil],
|
||||
:options=>OpenNebulaHelper::APPEND do
|
||||
helper.perform_action(args[0],options,"modified") do |obj|
|
||||
if options[:append]
|
||||
str = OpenNebulaHelper.append_template(args[0], obj, args[1])
|
||||
else
|
||||
str = OpenNebulaHelper.update_template(args[0], obj, args[1])
|
||||
end
|
||||
|
||||
obj.update(str, options[:append])
|
||||
end
|
||||
end
|
||||
|
||||
rename_desc = <<-EOT.unindent
|
||||
Renames the Security Group
|
||||
EOT
|
||||
|
||||
command :rename, rename_desc, :secgroupid, :name do
|
||||
helper.perform_action(args[0],options,"renamed") do |o|
|
||||
o.rename(args[1])
|
||||
end
|
||||
end
|
||||
|
||||
list_desc = <<-EOT.unindent
|
||||
Lists Security Group in the pool
|
||||
EOT
|
||||
|
||||
command :list, list_desc, [:filterflag, nil], :options=>list_options do
|
||||
helper.list_pool(options, false, args[0])
|
||||
end
|
||||
|
||||
show_desc = <<-EOT.unindent
|
||||
Shows information for the given Security Group
|
||||
EOT
|
||||
|
||||
command :show, show_desc, :secgroupid, :options=>OpenNebulaHelper::XML do
|
||||
helper.show_resource(args[0],options)
|
||||
end
|
||||
end
|
||||
@@ -51,6 +51,8 @@ require 'opennebula/document'
|
||||
require 'opennebula/document_pool'
|
||||
require 'opennebula/zone'
|
||||
require 'opennebula/zone_pool'
|
||||
require 'opennebula/security_group'
|
||||
require 'opennebula/security_group_pool'
|
||||
require 'opennebula/system'
|
||||
|
||||
module OpenNebula
|
||||
|
||||
@@ -25,7 +25,7 @@ module OpenNebula
|
||||
alias_method :each_with_xpath, :each
|
||||
|
||||
PAGINATED_POOLS=%w{VM_POOL IMAGE_POOL TEMPLATE_POOL VN_POOL
|
||||
DOCUMENT_POOL}
|
||||
DOCUMENT_POOL SECGROUP_POOL}
|
||||
|
||||
protected
|
||||
#pool:: _String_ XML name of the root element
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs #
|
||||
# #
|
||||
# Licensed 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. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
|
||||
require 'opennebula/pool_element'
|
||||
|
||||
module OpenNebula
|
||||
class SecurityGroup < PoolElement
|
||||
#######################################################################
|
||||
# Constants and Class Methods
|
||||
#######################################################################
|
||||
|
||||
|
||||
SECGROUP_METHODS = {
|
||||
:allocate => "secgroup.allocate",
|
||||
:info => "secgroup.info",
|
||||
:update => "secgroup.update",
|
||||
:delete => "secgroup.delete",
|
||||
:chown => "secgroup.chown",
|
||||
:chmod => "secgroup.chmod",
|
||||
:clone => "secgroup.clone",
|
||||
:rename => "secgroup.rename"
|
||||
}
|
||||
|
||||
# Creates a SecurityGroup description with just its identifier
|
||||
# this method should be used to create plain SecurityGroup objects.
|
||||
# @param pe_id [Integer] the id of the object
|
||||
def SecurityGroup.build_xml(pe_id=nil)
|
||||
if pe_id
|
||||
obj_xml = "<SECURITY_GROUP><ID>#{pe_id}</ID></SECURITY_GROUP>"
|
||||
else
|
||||
obj_xml = "<SECURITY_GROUP></SECURITY_GROUP>"
|
||||
end
|
||||
|
||||
XMLElement.build_xml(obj_xml,'SECURITY_GROUP')
|
||||
end
|
||||
|
||||
# Class constructor
|
||||
def initialize(xml, client)
|
||||
super(xml,client)
|
||||
|
||||
@client = client
|
||||
end
|
||||
|
||||
#######################################################################
|
||||
# XML-RPC Methods for the SecurityGroup Object
|
||||
#######################################################################
|
||||
|
||||
# Retrieves the information of the given SecurityGroup.
|
||||
def info()
|
||||
super(SECGROUP_METHODS[:info], 'SECURITY_GROUP')
|
||||
end
|
||||
|
||||
alias_method :info!, :info
|
||||
|
||||
# Allocates a new SecurityGroup in OpenNebula
|
||||
#
|
||||
# @param description [String] The contents of the SecurityGroup.
|
||||
#
|
||||
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
||||
# otherwise
|
||||
def allocate(description)
|
||||
super(SECGROUP_METHODS[:allocate], description)
|
||||
end
|
||||
|
||||
# Deletes the SecurityGroup
|
||||
def delete()
|
||||
super(SECGROUP_METHODS[:delete])
|
||||
end
|
||||
|
||||
# Replaces the securitygroup contents
|
||||
#
|
||||
# @param new_securitygroup [String] New securitygroup contents
|
||||
# @param append [true, false] True to append new attributes instead of
|
||||
# replace the whole securitygroup
|
||||
#
|
||||
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
||||
# otherwise
|
||||
def update(new_securitygroup, append=false)
|
||||
super(SECGROUP_METHODS[:update], new_securitygroup, append ? 1 : 0)
|
||||
end
|
||||
|
||||
# Changes the owner/group
|
||||
#
|
||||
# @param uid [Integer] the new owner id. Set to -1 to leave the current one
|
||||
# @param gid [Integer] the new group id. Set to -1 to leave the current one
|
||||
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
||||
# otherwise
|
||||
def chown(uid, gid)
|
||||
super(SECGROUP_METHODS[:chown], uid, gid)
|
||||
end
|
||||
|
||||
# Changes the SecurityGroup permissions.
|
||||
#
|
||||
# @param octet [String] Permissions octed , e.g. 640
|
||||
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
||||
# otherwise
|
||||
def chmod_octet(octet)
|
||||
super(SECGROUP_METHODS[:chmod], octet)
|
||||
end
|
||||
|
||||
# Changes the SecurityGroup permissions.
|
||||
# Each [Integer] argument must be 1 to allow, 0 deny, -1 do not change
|
||||
#
|
||||
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
||||
# otherwise
|
||||
def chmod(owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u,
|
||||
other_m, other_a)
|
||||
super(SECGROUP_METHODS[:chmod], owner_u, owner_m, owner_a, group_u,
|
||||
group_m, group_a, other_u, other_m, other_a)
|
||||
end
|
||||
|
||||
# Clones this SecurityGroup into a new one
|
||||
#
|
||||
# @param [String] name for the new SecurityGroup.
|
||||
#
|
||||
# @return [Integer, OpenNebula::Error] The new SecurityGroup ID in case
|
||||
# of success, Error otherwise
|
||||
def clone(name)
|
||||
return Error.new('ID not defined') if !@pe_id
|
||||
|
||||
rc = @client.call(SECGROUP_METHODS[:clone], @pe_id, name)
|
||||
|
||||
return rc
|
||||
end
|
||||
|
||||
# Renames this SecurityGroup
|
||||
#
|
||||
# @param name [String] New name for the SecurityGroup.
|
||||
#
|
||||
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
||||
# otherwise
|
||||
def rename(name)
|
||||
return call(SECGROUP_METHODS[:rename], @pe_id, name)
|
||||
end
|
||||
|
||||
#######################################################################
|
||||
# Helpers to get SecurityGroup information
|
||||
#######################################################################
|
||||
|
||||
# Returns the group identifier
|
||||
# [return] _Integer_ the element's group ID
|
||||
def gid
|
||||
self['GID'].to_i
|
||||
end
|
||||
|
||||
def owner_id
|
||||
self['UID'].to_i
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,78 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2014, OpenNebula Project (OpenNebula.org), C12G Labs #
|
||||
# #
|
||||
# Licensed 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. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
|
||||
require 'opennebula/pool'
|
||||
|
||||
module OpenNebula
|
||||
class SecurityGroupPool < Pool
|
||||
#######################################################################
|
||||
# Constants and Class attribute accessors
|
||||
#######################################################################
|
||||
|
||||
SECGROUP_POOL_METHODS = {
|
||||
:info => "secgrouppool.info"
|
||||
}
|
||||
|
||||
#######################################################################
|
||||
# Class constructor & Pool Methods
|
||||
#######################################################################
|
||||
|
||||
# +client+ a Client object that represents an XML-RPC connection
|
||||
# +user_id+ used to refer to a Pool with Templates from that user
|
||||
def initialize(client, user_id=-1)
|
||||
super('SECURITY_GROUP_POOL','SECURITY_GROUP',client)
|
||||
|
||||
@user_id = user_id
|
||||
end
|
||||
|
||||
# Factory method to create Template objects
|
||||
def factory(element_xml)
|
||||
OpenNebula::SecurityGroup.new(element_xml,@client)
|
||||
end
|
||||
|
||||
#######################################################################
|
||||
# XML-RPC Methods for the Template Object
|
||||
#######################################################################
|
||||
|
||||
# Retrieves all or part of the objects in the pool.
|
||||
def info(*args)
|
||||
case args.size
|
||||
when 0
|
||||
info_filter(SECGROUP_POOL_METHODS[:info],@user_id,-1,-1)
|
||||
when 3
|
||||
info_filter(SECGROUP_POOL_METHODS[:info],args[0],args[1],args[2])
|
||||
end
|
||||
end
|
||||
|
||||
def info_all()
|
||||
return super(SECGROUP_POOL_METHODS[:info])
|
||||
end
|
||||
|
||||
def info_mine()
|
||||
return super(SECGROUP_POOL_METHODS[:info])
|
||||
end
|
||||
|
||||
def info_group()
|
||||
return super(SECGROUP_POOL_METHODS[:info])
|
||||
end
|
||||
|
||||
alias_method :info!, :info
|
||||
alias_method :info_all!, :info_all
|
||||
alias_method :info_mine!, :info_mine
|
||||
alias_method :info_group!, :info_group
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user