165 lines
4.3 KiB
Ruby
165 lines
4.3 KiB
Ruby
require "devops-client/options/common_options"
|
|
|
|
class ServerOptions < CommonOptions
|
|
|
|
commands :add, :bootstrap, :create, :delete, :list, :pause, :reserve, :show, :unpause, :unreserve # :sync,
|
|
|
|
def initialize args, def_options
|
|
super(args, def_options)
|
|
self.header = I18n.t("headers.server")
|
|
self.banner_header = "server"
|
|
self.list_params = ["[chef|ec2|openstack|static]"]
|
|
self.create_params = ["PROJECT_ID", "DEPLOY_ENV"]
|
|
node_params = ["NODE_NAME"]
|
|
self.delete_params = node_params
|
|
self.show_params = node_params
|
|
self.pause_params = node_params
|
|
self.unpause_params = node_params
|
|
self.reserve_params = node_params
|
|
self.unreserve_params = node_params
|
|
self.bootstrap_params = ["INSTANCE_ID"]
|
|
self.add_params = ["PROJECT_ID", "DEPLOY_ENV", "IP", "SSH_USER", "KEY_ID"]
|
|
end
|
|
|
|
def delete_options
|
|
options do |parser, options|
|
|
parser.banner << self.delete_banner
|
|
parser.resource_name = :server
|
|
parser.command_name = :delete
|
|
|
|
parser.recognize_option_value(:instance,
|
|
type: :switch,
|
|
default: 'node',
|
|
switch_value: 'instance',
|
|
option_key: :key
|
|
)
|
|
|
|
parser.recognize_option_value(:no_ask,
|
|
type: :switch,
|
|
default: false,
|
|
switch_value: true
|
|
)
|
|
end
|
|
end
|
|
|
|
def pause_options
|
|
options do |parser, options|
|
|
parser.banner << self.delete_banner
|
|
|
|
parser.recognize_option_value(:instance,
|
|
resource_name: :server,
|
|
command_name: :pause,
|
|
type: :switch,
|
|
default: 'node',
|
|
switch_value: 'instance',
|
|
option_key: :key
|
|
)
|
|
end
|
|
end
|
|
|
|
def unpause_options
|
|
options do |parser, options|
|
|
parser.banner << self.delete_banner
|
|
|
|
parser.recognize_option_value(:instance,
|
|
resource_name: :server,
|
|
command_name: :unpause,
|
|
type: :switch,
|
|
default: 'node',
|
|
switch_value: 'instance',
|
|
option_key: :key
|
|
)
|
|
end
|
|
end
|
|
|
|
def reserve_options
|
|
options do |parser, options|
|
|
parser.banner << self.delete_banner
|
|
|
|
parser.recognize_option_value(:instance,
|
|
resource_name: :server,
|
|
command_name: :reserve,
|
|
type: :switch,
|
|
default: 'node',
|
|
switch_value: 'instance',
|
|
option_key: :key
|
|
)
|
|
end
|
|
end
|
|
|
|
def unreserve_options
|
|
options do |parser, options|
|
|
parser.banner << self.delete_banner
|
|
|
|
parser.recognize_option_value(:instance,
|
|
resource_name: :server,
|
|
command_name: :unreserve,
|
|
type: :switch,
|
|
default: 'node',
|
|
switch_value: 'instance',
|
|
option_key: :key
|
|
)
|
|
end
|
|
end
|
|
|
|
def create_options
|
|
options do |parser, options|
|
|
parser.banner << self.create_banner
|
|
parser.resource_name = :server
|
|
parser.command_name = :create
|
|
|
|
parser.recognize_option_value('without_bootstrap',
|
|
type: :switch,
|
|
switch_value: true,
|
|
option_key: :without_bootstrap,
|
|
i18n_scope: 'create'
|
|
)
|
|
|
|
parser.recognize_option_value(:name, short: '-N')
|
|
parser.recognize_option_value(:force, short: '-f')
|
|
parser.recognize_option_value(:key)
|
|
|
|
parser.recognize_option_value(:groups,
|
|
short: '-G',
|
|
variable: 'GROUP_1,GROUP_2...'
|
|
) do |groups|
|
|
options[:groups] = groups.split(",")
|
|
end
|
|
|
|
parser.recognize_option_value(:private_ip, 'server', short: '-N', i18n_scope: 'create')
|
|
|
|
# it was disabled somewhy
|
|
# parser.on('--public-ip', "Associate public IP with server") do
|
|
# options[:public_ip] = true
|
|
# end
|
|
end
|
|
end
|
|
|
|
def bootstrap_options
|
|
options do |parser, options|
|
|
parser.banner << self.bootstrap_banner
|
|
parser.resource_name = :server
|
|
parser.command_name = :bootstrap
|
|
|
|
parser.recognize_option_value(:name, short: '-N')
|
|
parser.recognize_option_value(:bootstrap_template)
|
|
parser.recognize_option_value(:run_list) do |list|
|
|
options[:run_list] = list.split(",")
|
|
end
|
|
end
|
|
end
|
|
|
|
def add_options
|
|
options do |parser, options|
|
|
parser.banner << self.add_banner
|
|
|
|
parser.recognize_option_value('public-ip', resource_name: :server, command_name: :add, option_key: :public_ip)
|
|
end
|
|
end
|
|
|
|
def delete_banner
|
|
self.banner_header + " delete NODE_NAME [NODE_NAME ...]\n"
|
|
end
|
|
|
|
end
|