mirror of
https://github.com/OpenNebula/one.git
synced 2025-02-28 17:57:22 +03:00
Feature #4215: Virtual Router pool in ruby oca and CLI
This commit is contained in:
parent
c5b19f45df
commit
64ebcdd5c3
18
install.sh
18
install.sh
@ -584,6 +584,7 @@ BIN_FILES="src/nebula/oned \
|
||||
src/cli/oneflow-template \
|
||||
src/cli/onesecgroup \
|
||||
src/cli/onevdc \
|
||||
src/cli/onevrouter \
|
||||
src/cli/onevcenter \
|
||||
src/onedb/onedb \
|
||||
src/mad/utils/tty_expect \
|
||||
@ -1376,7 +1377,9 @@ RUBY_OPENNEBULA_LIB_FILES="src/oca/ruby/opennebula/acl_pool.rb \
|
||||
src/oca/ruby/opennebula/xml_pool.rb \
|
||||
src/oca/ruby/opennebula/xml_utils.rb \
|
||||
src/oca/ruby/opennebula/zone_pool.rb \
|
||||
src/oca/ruby/opennebula/zone.rb"
|
||||
src/oca/ruby/opennebula/zone.rb \
|
||||
src/oca/ruby/opennebula/virtual_router_pool.rb \
|
||||
src/oca/ruby/opennebula/virtual_router.rb"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Common Cloud Files
|
||||
@ -1526,7 +1529,8 @@ ONE_CLI_LIB_FILES="src/cli/one_helper/onegroup_helper.rb \
|
||||
src/cli/one_helper/onezone_helper.rb \
|
||||
src/cli/one_helper/onevdc_helper.rb \
|
||||
src/cli/one_helper/oneacct_helper.rb \
|
||||
src/cli/one_helper/onesecgroup_helper.rb"
|
||||
src/cli/one_helper/onesecgroup_helper.rb \
|
||||
src/cli/one_helper/onevrouter_helper.rb"
|
||||
|
||||
CLI_BIN_FILES="src/cli/onevm \
|
||||
src/cli/onehost \
|
||||
@ -1544,7 +1548,8 @@ CLI_BIN_FILES="src/cli/onevm \
|
||||
src/cli/oneacct \
|
||||
src/cli/onesecgroup \
|
||||
src/cli/oneshowback \
|
||||
src/cli/onevdc"
|
||||
src/cli/onevdc \
|
||||
src/cli/onevrouter"
|
||||
|
||||
CLI_CONF_FILES="src/cli/etc/onegroup.yaml \
|
||||
src/cli/etc/onehost.yaml \
|
||||
@ -1560,7 +1565,8 @@ CLI_CONF_FILES="src/cli/etc/onegroup.yaml \
|
||||
src/cli/etc/oneacct.yaml \
|
||||
src/cli/etc/onesecgroup.yaml \
|
||||
src/cli/etc/oneshowback.yaml \
|
||||
src/cli/etc/onevdc.yaml"
|
||||
src/cli/etc/onevdc.yaml \
|
||||
src/cli/etc/onevrouter.yaml"
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Sunstone files
|
||||
@ -1603,7 +1609,8 @@ SUNSTONE_MODELS_JSON_FILES="src/sunstone/models/OpenNebulaJSON/HostJSON.rb \
|
||||
src/sunstone/models/OpenNebulaJSON/VirtualNetworkJSON.rb \
|
||||
src/sunstone/models/OpenNebulaJSON/ZoneJSON.rb \
|
||||
src/sunstone/models/OpenNebulaJSON/SecurityGroupJSON.rb \
|
||||
src/sunstone/models/OpenNebulaJSON/VdcJSON.rb"
|
||||
src/sunstone/models/OpenNebulaJSON/VdcJSON.rb \
|
||||
src/sunstone/models/OpenNebulaJSON/VirtualRouterJSON.rb"
|
||||
|
||||
SUNSTONE_VIEWS_FILES="src/sunstone/views/index.erb \
|
||||
src/sunstone/views/login.erb \
|
||||
@ -1831,6 +1838,7 @@ MAN_FILES="share/man/oneacct.1.gz \
|
||||
share/man/oneflow-template.1.gz \
|
||||
share/man/onesecgroup.1.gz \
|
||||
share/man/onevdc.1.gz \
|
||||
share/man/onevrouter.1.gz \
|
||||
share/man/econe-allocate-address.1.gz \
|
||||
share/man/econe-associate-address.1.gz \
|
||||
share/man/econe-attach-volume.1.gz \
|
||||
|
@ -64,6 +64,7 @@ env.Man('onezone')
|
||||
env.Man('onevcenter')
|
||||
env.Man('onesecgroup')
|
||||
env.Man('onevdc')
|
||||
env.Man('onevrouter')
|
||||
|
||||
env.Man('oneflow')
|
||||
env.Man('oneflow-template')
|
||||
|
25
src/cli/etc/onevrouter.yaml
Normal file
25
src/cli/etc/onevrouter.yaml
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
:ID:
|
||||
:desc: ONE identifier for the Virtual Router
|
||||
:size: 4
|
||||
|
||||
:NAME:
|
||||
:desc: Name of the Virtual Router
|
||||
:size: 27
|
||||
:left: true
|
||||
|
||||
:USER:
|
||||
:desc: Username of the Virtual Router owner
|
||||
:size: 15
|
||||
:left: true
|
||||
|
||||
:GROUP:
|
||||
:desc: Group of the Virtual Router
|
||||
:size: 15
|
||||
:left: true
|
||||
|
||||
:default:
|
||||
- :ID
|
||||
- :USER
|
||||
- :GROUP
|
||||
- :NAME
|
116
src/cli/one_helper/onevrouter_helper.rb
Normal file
116
src/cli/one_helper/onevrouter_helper.rb
Normal file
@ -0,0 +1,116 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
|
||||
# #
|
||||
# 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 OneVirtualRouterHelper < OpenNebulaHelper::OneHelper
|
||||
def self.rname
|
||||
"VROUTER"
|
||||
end
|
||||
|
||||
def self.conf_file
|
||||
"onevrouter.yaml"
|
||||
end
|
||||
|
||||
def show_resource(id, options)
|
||||
resource = retrieve_resource(id)
|
||||
|
||||
if !options[:extended].nil?
|
||||
rc = resource.info(options[:extended])
|
||||
else
|
||||
rc = resource.info
|
||||
end
|
||||
|
||||
return -1, rc.message if OpenNebula.is_error?(rc)
|
||||
|
||||
if options[:xml]
|
||||
return 0, resource.to_xml(true)
|
||||
else
|
||||
format_resource(resource, options)
|
||||
return 0
|
||||
end
|
||||
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 Virtual Router", :size=>4 do |d|
|
||||
d["ID"]
|
||||
end
|
||||
|
||||
column :NAME, "Name of the Virtual Router", :left, :size=>27 do |d|
|
||||
d["NAME"]
|
||||
end
|
||||
|
||||
column :USER, "Username of the Virtual Router owner", :left,
|
||||
:size=>15 do |d|
|
||||
helper.user_name(d, options)
|
||||
end
|
||||
|
||||
column :GROUP, "Group of the Virtual Router", :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::VirtualRouter.new_with_id(id, @client)
|
||||
else
|
||||
xml=OpenNebula::VirtualRouter.build_xml
|
||||
OpenNebula::VirtualRouter.new(xml, @client)
|
||||
end
|
||||
end
|
||||
|
||||
def factory_pool(user_flag=-2)
|
||||
OpenNebula::VirtualRouterPool.new(@client, user_flag)
|
||||
end
|
||||
|
||||
def format_resource(obj, options = {})
|
||||
str="%-15s: %-20s"
|
||||
str_h1="%-80s"
|
||||
|
||||
CLIHelper.print_header(
|
||||
str_h1 % "VIRTUAL ROUTER #{obj['ID']} INFORMATION")
|
||||
puts str % ["ID", obj.id.to_s]
|
||||
puts str % ["NAME", obj.name]
|
||||
puts str % ["USER", obj['UNAME']]
|
||||
puts str % ["GROUP", obj['GNAME']]
|
||||
puts
|
||||
|
||||
CLIHelper.print_header(str_h1 % "PERMISSIONS",false)
|
||||
|
||||
["OWNER", "GROUP", "OTHER"].each { |e|
|
||||
mask = "---"
|
||||
mask[0] = "u" if obj["PERMISSIONS/#{e}_U"] == "1"
|
||||
mask[1] = "m" if obj["PERMISSIONS/#{e}_M"] == "1"
|
||||
mask[2] = "a" if obj["PERMISSIONS/#{e}_A"] == "1"
|
||||
|
||||
puts str % [e, mask]
|
||||
}
|
||||
puts
|
||||
|
||||
CLIHelper.print_header(str_h1 % "TEMPLATE CONTENTS",false)
|
||||
puts obj.template_str
|
||||
end
|
||||
end
|
@ -160,7 +160,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
||||
end
|
||||
|
||||
delete_desc = <<-EOT.unindent
|
||||
Deletes the given Image
|
||||
Deletes the given Template
|
||||
EOT
|
||||
|
||||
command :delete, delete_desc, [:range, :templateid_list] do
|
||||
|
210
src/cli/onevrouter
Executable file
210
src/cli/onevrouter
Executable file
@ -0,0 +1,210 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
|
||||
# #
|
||||
# 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/onevrouter_helper'
|
||||
require 'one_helper/onevm_helper'
|
||||
|
||||
cmd=CommandParser::CmdParser.new(ARGV) do
|
||||
usage "`onevrouter` <command> [<args>] [<options>]"
|
||||
version OpenNebulaHelper::ONE_VERSION
|
||||
|
||||
helper = OneVirtualRouterHelper.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, :vrouterid, OneVirtualRouterHelper.to_id_desc do |arg|
|
||||
helper.to_id(arg)
|
||||
end
|
||||
|
||||
set :format, :vrouterid_list, OneVirtualRouterHelper.list_to_id_desc do |arg|
|
||||
helper.list_to_id(arg)
|
||||
end
|
||||
|
||||
set :format, :filterflag, OneVirtualRouterHelper.filterflag_to_i_desc do |arg|
|
||||
helper.filterflag_to_i(arg)
|
||||
end
|
||||
|
||||
########################################################################
|
||||
# Commands
|
||||
########################################################################
|
||||
|
||||
create_desc = <<-EOT.unindent
|
||||
Creates a new Virtual Router 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
|
||||
|
||||
# TODO: implement or remove
|
||||
=begin
|
||||
clone_desc = <<-EOT.unindent
|
||||
Creates a new Virtual Router from an existing one
|
||||
EOT
|
||||
|
||||
command :clone, clone_desc, :vrouterid, :name do
|
||||
helper.perform_action(args[0],options,"cloned") do |t|
|
||||
res = t.clone(args[1])
|
||||
|
||||
if !OpenNebula.is_error?(res)
|
||||
puts "ID: #{res}"
|
||||
else
|
||||
puts res.message
|
||||
end
|
||||
end
|
||||
end
|
||||
=end
|
||||
|
||||
delete_desc = <<-EOT.unindent
|
||||
Deletes the given Virtual Router
|
||||
EOT
|
||||
|
||||
command :delete, delete_desc, [:range, :vrouterid_list] do
|
||||
helper.perform_actions(args[0],options,"deleted") do |obj|
|
||||
obj.delete
|
||||
end
|
||||
end
|
||||
|
||||
chgrp_desc = <<-EOT.unindent
|
||||
Changes the Virtual Router group
|
||||
EOT
|
||||
|
||||
command :chgrp, chgrp_desc,[:range, :vrouterid_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 Virtual Router owner and group
|
||||
EOT
|
||||
|
||||
command :chown, chown_desc, [:range, :vrouterid_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 Virtual Router permissions
|
||||
EOT
|
||||
|
||||
command :chmod, chmod_desc, [:range, :vrouterid_list], :octet do
|
||||
helper.perform_actions(args[0],options, "Permissions changed") do |obj|
|
||||
obj.chmod_octet(args[1])
|
||||
end
|
||||
end
|
||||
|
||||
update_desc = <<-EOT.unindent
|
||||
Update the Virtual Router contents. If a path is not provided the editor
|
||||
will be launched to modify the current content.
|
||||
EOT
|
||||
|
||||
command :update, update_desc, :vrouterid, [: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 Virtual Router
|
||||
EOT
|
||||
|
||||
command :rename, rename_desc, :vrouterid, :name do
|
||||
helper.perform_action(args[0],options,"renamed") do |obj|
|
||||
obj.rename(args[1])
|
||||
end
|
||||
end
|
||||
|
||||
list_desc = <<-EOT.unindent
|
||||
Lists the Virtual Routers 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 Virtual Router
|
||||
EOT
|
||||
|
||||
command :show, show_desc, :secgroupid, :options=>OpenNebulaHelper::XML do
|
||||
helper.show_resource(args[0],options)
|
||||
end
|
||||
|
||||
top_desc = <<-EOT.unindent
|
||||
Lists Virtual Routers continuously
|
||||
EOT
|
||||
|
||||
command :top, top_desc, [:filterflag, nil], :options=>list_options do
|
||||
helper.list_pool(options, true, args[0])
|
||||
end
|
||||
end
|
@ -56,6 +56,8 @@ require 'opennebula/security_group_pool'
|
||||
require 'opennebula/vdc'
|
||||
require 'opennebula/vdc_pool'
|
||||
require 'opennebula/system'
|
||||
require 'opennebula/virtual_router'
|
||||
require 'opennebula/virtual_router_pool'
|
||||
|
||||
module OpenNebula
|
||||
|
||||
|
167
src/oca/ruby/opennebula/virtual_router.rb
Normal file
167
src/oca/ruby/opennebula/virtual_router.rb
Normal file
@ -0,0 +1,167 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
|
||||
# #
|
||||
# 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 VirtualRouter < PoolElement
|
||||
#######################################################################
|
||||
# Constants and Class Methods
|
||||
#######################################################################
|
||||
|
||||
VIRTUAL_ROUTER_METHODS = {
|
||||
:allocate => "vrouter.allocate",
|
||||
:info => "vrouter.info",
|
||||
:update => "vrouter.update",
|
||||
:delete => "vrouter.delete",
|
||||
:chown => "vrouter.chown",
|
||||
:chmod => "vrouter.chmod",
|
||||
# TODO: remove or implement
|
||||
# :clone => "vrouter.clone",
|
||||
:rename => "vrouter.rename"
|
||||
}
|
||||
|
||||
# Creates a VirtualRouter description with just its identifier
|
||||
# this method should be used to create plain VirtualRouter objects.
|
||||
# +id+ the id of the user
|
||||
#
|
||||
# Example:
|
||||
# vrouter = VirtualRouter.new(VirtualRouter.build_xml(3),rpc_client)
|
||||
#
|
||||
def VirtualRouter.build_xml(pe_id=nil)
|
||||
if pe_id
|
||||
obj_xml = "<VROUTER><ID>#{pe_id}</ID></VROUTER>"
|
||||
else
|
||||
obj_xml = "<VROUTER></VROUTER>"
|
||||
end
|
||||
|
||||
XMLElement.build_xml(obj_xml,'VROUTER')
|
||||
end
|
||||
|
||||
# Class constructor
|
||||
def initialize(xml, client)
|
||||
super(xml,client)
|
||||
|
||||
@client = client
|
||||
end
|
||||
|
||||
#######################################################################
|
||||
# XML-RPC Methods for the VirtualRouter Object
|
||||
#######################################################################
|
||||
|
||||
# Retrieves the information of the given Virtual Router
|
||||
def info()
|
||||
super(VIRTUAL_ROUTER_METHODS[:info], 'VROUTER')
|
||||
end
|
||||
|
||||
alias_method :info!, :info
|
||||
|
||||
# Allocates a new VirtualRouter in OpenNebula
|
||||
#
|
||||
# @param description [String] The contents of the VirtualRouter.
|
||||
#
|
||||
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
||||
# otherwise
|
||||
def allocate(description)
|
||||
super(VIRTUAL_ROUTER_METHODS[:allocate], description)
|
||||
end
|
||||
|
||||
# Deletes the VirtualRouter
|
||||
def delete()
|
||||
super(VIRTUAL_ROUTER_METHODS[:delete])
|
||||
end
|
||||
|
||||
# Replaces the template contents
|
||||
#
|
||||
# @param new_template [String] New template contents
|
||||
# @param append [true, false] True to append new attributes instead of
|
||||
# replace the whole template
|
||||
#
|
||||
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
||||
# otherwise
|
||||
def update(new_template, append=false)
|
||||
super(VIRTUAL_ROUTER_METHODS[:update], new_template, 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(VIRTUAL_ROUTER_METHODS[:chown], uid, gid)
|
||||
end
|
||||
|
||||
# Changes the VirtualRouter 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(VIRTUAL_ROUTER_METHODS[:chmod], octet)
|
||||
end
|
||||
|
||||
# Changes the VirtualRouter 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(VIRTUAL_ROUTER_METHODS[:chmod], owner_u, owner_m, owner_a, group_u,
|
||||
group_m, group_a, other_u, other_m, other_a)
|
||||
end
|
||||
=begin
|
||||
# Clones this VirtualRouter into a new one
|
||||
#
|
||||
# @param [String] name for the new VirtualRouter.
|
||||
#
|
||||
# @return [Integer, OpenNebula::Error] The new VirtualRouter ID in case
|
||||
# of success, Error otherwise
|
||||
def clone(name)
|
||||
return Error.new('ID not defined') if !@pe_id
|
||||
|
||||
rc = @client.call(VIRTUAL_ROUTER_METHODS[:clone], @pe_id, name)
|
||||
|
||||
return rc
|
||||
end
|
||||
=end
|
||||
# Renames this VirtualRouter
|
||||
#
|
||||
# @param name [String] New name for the VirtualRouter.
|
||||
#
|
||||
# @return [nil, OpenNebula::Error] nil in case of success, Error
|
||||
# otherwise
|
||||
def rename(name)
|
||||
return call(VIRTUAL_ROUTER_METHODS[:rename], @pe_id, name)
|
||||
end
|
||||
|
||||
#######################################################################
|
||||
# Helpers to get VirtualRouter 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
|
79
src/oca/ruby/opennebula/virtual_router_pool.rb
Normal file
79
src/oca/ruby/opennebula/virtual_router_pool.rb
Normal file
@ -0,0 +1,79 @@
|
||||
# -------------------------------------------------------------------------- #
|
||||
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
|
||||
# #
|
||||
# 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 VirtualRouterPool < Pool
|
||||
#######################################################################
|
||||
# Constants and Class attribute accessors
|
||||
#######################################################################
|
||||
|
||||
|
||||
VIRTUAL_ROUTER_POOL_METHODS = {
|
||||
:info => "vrouterpool.info"
|
||||
}
|
||||
|
||||
#######################################################################
|
||||
# Class constructor & Pool Methods
|
||||
#######################################################################
|
||||
|
||||
# +client+ a Client object that represents an XML-RPC connection
|
||||
# +user_id+ used to refer to a Pool with Virtual Routers from that user
|
||||
def initialize(client, user_id=-1)
|
||||
super('VROUTER_POOL','VROUTER',client)
|
||||
|
||||
@user_id = user_id
|
||||
end
|
||||
|
||||
# Factory method to create Virtual Router objects
|
||||
def factory(element_xml)
|
||||
OpenNebula::VirtualRouter.new(element_xml,@client)
|
||||
end
|
||||
|
||||
#######################################################################
|
||||
# XML-RPC Methods for the Virtual Router Object
|
||||
#######################################################################
|
||||
|
||||
# Retrieves all or part of the Virtual Routers in the pool.
|
||||
def info(*args)
|
||||
case args.size
|
||||
when 0
|
||||
info_filter(VIRTUAL_ROUTER_POOL_METHODS[:info],@user_id,-1,-1)
|
||||
when 3
|
||||
info_filter(VIRTUAL_ROUTER_POOL_METHODS[:info],args[0],args[1],args[2])
|
||||
end
|
||||
end
|
||||
|
||||
def info_all()
|
||||
return super(VIRTUAL_ROUTER_POOL_METHODS[:info])
|
||||
end
|
||||
|
||||
def info_mine()
|
||||
return super(VIRTUAL_ROUTER_POOL_METHODS[:info])
|
||||
end
|
||||
|
||||
def info_group()
|
||||
return super(VIRTUAL_ROUTER_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
|
Loading…
x
Reference in New Issue
Block a user