mirror of
https://github.com/OpenNebula/one.git
synced 2026-11-08 21:16:39 +09:00
157 lines
5.0 KiB
Ruby
Executable File
157 lines
5.0 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
# -------------------------------------------------------------------------- #
|
|
# Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org) #
|
|
# #
|
|
# 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/onehost_helper'
|
|
|
|
cmd=CommandParser::CmdParser.new(ARGV) do
|
|
usage "`onehost` <command> [<args>] [<options>]"
|
|
version OpenNebulaHelper::ONE_VERSION
|
|
|
|
helper = OneHostHelper.new
|
|
|
|
########################################################################
|
|
# Global Options
|
|
########################################################################
|
|
set :option, CommandParser::OPTIONS
|
|
|
|
########################################################################
|
|
# Formatters for arguments
|
|
########################################################################
|
|
set :format, :hostid, OneHostHelper.to_id_desc do |arg|
|
|
helper.to_id(arg)
|
|
end
|
|
|
|
set :format, :hostid_list, OneHostHelper.list_to_id_desc do |arg|
|
|
helper.list_to_id(arg)
|
|
end
|
|
|
|
########################################################################
|
|
# Commands
|
|
########################################################################
|
|
|
|
create_desc = <<-EOT.unindent
|
|
Creates a new Host
|
|
EOT
|
|
|
|
command :create, create_desc, :hostname, :im_mad, :vmm_mad,
|
|
:vnm_mad, [:clusterid, nil] do
|
|
helper.create_resource(options) do |host|
|
|
if args.size == 4
|
|
host.allocate(args[0], args[1], args[2], args[3])
|
|
else
|
|
host.allocate(args[0], args[1], args[2], args[3], args[4].to_i)
|
|
end
|
|
end
|
|
end
|
|
|
|
delete_desc = <<-EOT.unindent
|
|
Deletes the given Host
|
|
EOT
|
|
|
|
command :delete, delete_desc, [:range, :hostid_list] do
|
|
helper.perform_actions(args[0],options,"deleted") do |host|
|
|
host.delete
|
|
end
|
|
end
|
|
|
|
enable_desc = <<-EOT.unindent
|
|
Enables the given Host
|
|
EOT
|
|
|
|
command :enable, enable_desc, [:range,:hostid_list] do
|
|
helper.perform_actions(args[0],options,"enabled") do |host|
|
|
host.enable
|
|
end
|
|
end
|
|
|
|
disable_desc = <<-EOT.unindent
|
|
Disables the given Host
|
|
EOT
|
|
|
|
command :disable, disable_desc, [:range,:hostid_list] do
|
|
helper.perform_actions(args[0],options,"disabled") do |host|
|
|
host.disable
|
|
end
|
|
end
|
|
|
|
update_desc = <<-EOT.unindent
|
|
Launches the system editor to modify and update the template contents
|
|
EOT
|
|
|
|
command :update, update_desc, :hostid do
|
|
helper.perform_action(args[0],options,"updated") do |host|
|
|
str = OpenNebulaHelper.update_template(args[0], host)
|
|
host.update(str)
|
|
end
|
|
end
|
|
|
|
sync_desc = <<-EOT.unindent
|
|
Synchronizes probes in /var/lib/one/remotes ($ONE_LOCATION/var/remotes
|
|
in self-contained installations) with Hosts.
|
|
The copy is performed the next time the Host is monitored
|
|
EOT
|
|
|
|
command :sync, sync_desc do
|
|
if ONE_LOCATION
|
|
FileUtils.touch "#{ONE_LOCATION}/var/remotes"
|
|
else
|
|
FileUtils.touch "/var/lib/one/remotes"
|
|
end
|
|
0
|
|
end
|
|
|
|
list_desc = <<-EOT.unindent
|
|
Lists Hosts in the pool
|
|
EOT
|
|
|
|
command :list, list_desc,
|
|
:options=>CLIHelper::OPTIONS+OpenNebulaHelper::OPTIONS do
|
|
helper.list_pool(options)
|
|
end
|
|
|
|
show_desc = <<-EOT.unindent
|
|
Shows information for the given Host
|
|
EOT
|
|
|
|
command :show, show_desc, :hostid,
|
|
:options=>OpenNebulaHelper::XML do
|
|
helper.show_resource(args[0],options)
|
|
end
|
|
|
|
top_desc = <<-EOT.unindent
|
|
Lists Hosts continuously
|
|
EOT
|
|
|
|
command :top, top_desc,
|
|
:options=>CLIHelper::OPTIONS+OpenNebulaHelper::OPTIONS do
|
|
helper.list_pool(options, true)
|
|
end
|
|
end
|