move option classes to DevopsOptionsParser approach
This commit is contained in:
parent
9228193da4
commit
24ea3904c9
@ -11,13 +11,13 @@ class DeployOptions < CommonOptions
|
||||
end
|
||||
|
||||
def deploy_options
|
||||
options do |opts, options|
|
||||
opts.banner << self.banner
|
||||
options do |parser, options|
|
||||
parser.banner << self.banner
|
||||
|
||||
options[:tag] = nil
|
||||
opts.on("--tag TAG1,TAG2...", "Tag names, comma separated list") do |tags|
|
||||
parser.recognize_option_value(:tag, 'deploy', variable_name: 'TAG1,TAG2...') do |tags|
|
||||
options[:tags] = tags.split(",")
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -15,35 +15,14 @@ class ImageOptions < CommonOptions
|
||||
end
|
||||
|
||||
def create_options
|
||||
self.options do |parser, options|
|
||||
parser.banner << self.create_banner
|
||||
|
||||
self.options do |opts, options|
|
||||
opts.banner << self.create_banner
|
||||
|
||||
options[:provider] = nil
|
||||
opts.on("--provider PROVIDER", "Image provider") do |provider|
|
||||
options[:provider] = provider
|
||||
end
|
||||
|
||||
options[:image_id] = nil
|
||||
opts.on("--image IMAGE_ID", "Image identifier") do |image_id|
|
||||
options[:image_id] = image_id
|
||||
end
|
||||
|
||||
options[:ssh_username] = nil
|
||||
opts.on("--ssh_user USER", "SSH user name") do |username|
|
||||
options[:ssh_username] = username
|
||||
end
|
||||
|
||||
options[:bootstrap_template] = nil
|
||||
opts.on("--bootstrap_template TEMPLATE", "Bootstrap template") do |template|
|
||||
options[:bootstrap_template] = template
|
||||
end
|
||||
|
||||
options[:no_bootstrap_template] = false
|
||||
opts.on("--no_bootstrap_template", "Do not specify bootstrap template") do
|
||||
options[:no_bootstrap_template] = true
|
||||
end
|
||||
|
||||
parser.recognize_option_value(:provider, 'image')
|
||||
parser.recognize_option_value(:image_id, 'image')
|
||||
parser.recognize_option_value(:ssh_username, 'image')
|
||||
parser.recognize_option_value(:bootstrap_template, 'image')
|
||||
parser.recognize_option_value(:no_bootstrap_template, 'image', type: :switch, switch_value: true, default: false)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -25,93 +25,68 @@ class ProjectOptions < CommonOptions
|
||||
end
|
||||
|
||||
def create_options
|
||||
self.options do |opts, options|
|
||||
opts.banner << self.create_banner
|
||||
options[:groups] = nil
|
||||
opts.on("--groups GROUP_1,GROUP_2...", I18n.t("options.project.create.groups")) do |groups|
|
||||
self.options do |parser, options|
|
||||
parser.banner << self.create_banner
|
||||
|
||||
parser.recognize_option_value(:groups, 'project', variable: 'GROUP_1,GROUP_2...') do |groups|
|
||||
options[:groups] = groups.split(",")
|
||||
end
|
||||
|
||||
options[:identifier] = nil
|
||||
opts.on("--deploy_env DEPLOY_ID", I18n.t("options.project.create.deploy_env")) do |identifier|
|
||||
options[:identifier] = identifier
|
||||
end
|
||||
|
||||
options[:file] = nil
|
||||
opts.on("-f", "--file FILE", I18n.t("options.project.create.file")) do |file|
|
||||
parser.recognize_option_value(:file, 'project') do |file|
|
||||
abort("File '#{file}' does not exist") unless File.exist?(file)
|
||||
options[:file] = file
|
||||
end
|
||||
|
||||
options[:subnets] = nil
|
||||
opts.on("--subnets SUBNET,SUBNET...", I18n.t("options.project.create.subnets")) do |subnet|
|
||||
options[:subnets] = subnet.split(",")
|
||||
parser.recognize_option_value(:subnets, 'project', variable: 'SUBNET_1,SUBNET_2...') do |subnets|
|
||||
options[:subnets] = subnets.split(",")
|
||||
end
|
||||
|
||||
options[:flavor] = nil
|
||||
opts.on("--flavor FLAVOR", I18n.t("options.project.create.flavor")) do |flavor|
|
||||
options[:flavor] = flavor
|
||||
end
|
||||
|
||||
options[:image] = nil
|
||||
opts.on("--image IMAGE_ID", I18n.t("options.project.create.image")) do |image|
|
||||
options[:image] = image
|
||||
end
|
||||
|
||||
options[:run_list] = nil
|
||||
opts.on("--run_list RUN_LIST", I18n.t("options.project.create.run_list")) do |run_list|
|
||||
options[:run_list] = run_list
|
||||
end
|
||||
|
||||
options[:users] = nil
|
||||
opts.on("--users USER,USER...", I18n.t("options.project.create.users")) do |users|
|
||||
parser.recognize_option_value(:users, 'project', variable: 'USER_1,USER_2...') do |users|
|
||||
options[:users] = Set.new(users.split(","))
|
||||
end
|
||||
|
||||
options[:provider] = nil
|
||||
opts.on("--provider PROVIDER", I18n.t("options.project.create.provider")) do |provider|
|
||||
options[:provider] = provider
|
||||
end
|
||||
parser.recognize_option_value(:deploy_env, 'project', option_key: :identifier)
|
||||
parser.recognize_option_value(:flavor, 'project')
|
||||
parser.recognize_option_value(:image, 'project')
|
||||
parser.recognize_option_value(:run_list, 'project')
|
||||
parser.recognize_option_value(:provider, 'project')
|
||||
parser.recognize_option_value(:no_expires, 'project', type: :switch, switch_value: true, default: false)
|
||||
parser.recognize_option_value(:expires, 'project')
|
||||
|
||||
options[:no_expires] = false
|
||||
opts.on("--no_expires", I18n.t("options.project.create.no_expires")) do
|
||||
options[:no_expires] = true
|
||||
end
|
||||
|
||||
options[:expires] = nil
|
||||
opts.on("--expires EXPIRES", I18n.t("options.project.create.expires")) do |e|
|
||||
options[:expires] = e
|
||||
end
|
||||
# TODO:
|
||||
# support short options names
|
||||
#
|
||||
# options[:file] = nil
|
||||
# parser.on("-f", "--file FILE", I18n.t("options.project.create.file")) do |file|
|
||||
# abort("File '#{file}' does not exist") unless File.exist?(file)
|
||||
# options[:file] = file
|
||||
# end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def user_add_options
|
||||
self.options do |opts, options|
|
||||
opts.banner << self.user_add_banner
|
||||
options[:deploy_env] = nil
|
||||
opts.on("--deploy_env ENV", I18n.t("options.project.user_add.deploy_env")) do |env|
|
||||
options[:deploy_env] = env
|
||||
end
|
||||
self.options do |parser, options|
|
||||
parser.banner << self.user_add_banner
|
||||
|
||||
parser.recognize_option_value(:deploy_env, 'project', i18n_scope: 'user_add')
|
||||
end
|
||||
end
|
||||
|
||||
def user_delete_options
|
||||
self.options do |opts, options|
|
||||
opts.banner << self.user_delete_banner
|
||||
options[:deploy_env] = nil
|
||||
opts.on("--deploy_env ENV", I18n.t("options.project.user_delete.deploy_env")) do |env|
|
||||
options[:deploy_env] = env
|
||||
end
|
||||
self.options do |parser, options|
|
||||
parser.banner << self.user_delete_banner
|
||||
|
||||
parser.recognize_option_value(:deploy_env, 'project', i18n_scope: 'user_delete')
|
||||
end
|
||||
end
|
||||
|
||||
def deploy_options
|
||||
options do |opts, options|
|
||||
opts.banner << self.deploy_banner
|
||||
options[:servers] = nil
|
||||
opts.on("--servers SERVERS", I18n.t("options.project.deploy.servers")) do |l|
|
||||
options[:servers] = l.split(",")
|
||||
options do |parser, options|
|
||||
parser.banner << self.deploy_banner
|
||||
|
||||
parser.recognize_option_value(:servers, 'project', i18n_scope: 'deploy') do |servers|
|
||||
options[:servers] = servers.split(",")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -16,10 +16,11 @@ class ScriptOptions < CommonOptions
|
||||
end
|
||||
|
||||
def run_options
|
||||
options do |opts, options|
|
||||
opts.banner << self.delete_banner
|
||||
opts.on("--params PARAMS", I18n.t("options.script.run.params")) do |p|
|
||||
options[:params] = p.split(",")
|
||||
options do |parser, options|
|
||||
parser.banner << self.delete_banner
|
||||
|
||||
parser.recognize_option_value(:params, 'script') do |params|
|
||||
options[:params] = params.split(",")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -22,117 +22,130 @@ class ServerOptions < CommonOptions
|
||||
end
|
||||
|
||||
def delete_options
|
||||
options do |opts, options|
|
||||
opts.banner << self.delete_banner
|
||||
options[:key] = "node"
|
||||
opts.on('--instance', "Delete node by instance id") do
|
||||
options[:key] = "instance"
|
||||
end
|
||||
options do |parser, options|
|
||||
parser.banner << self.delete_banner
|
||||
|
||||
parser.recognize_option_value(:instance, 'server',
|
||||
type: :switch,
|
||||
default: 'node',
|
||||
switch_value: 'instance',
|
||||
option_key: :key,
|
||||
i18n_scope: 'delete'
|
||||
)
|
||||
|
||||
parser.recognize_option_value(:no_ask, 'server',
|
||||
type: :switch,
|
||||
default: false,
|
||||
switch_value: true,
|
||||
i18n_scope: 'delete'
|
||||
)
|
||||
|
||||
options[:no_ask] = false
|
||||
opts.on("--no_ask", "Don't ask for permission for server deletion") do
|
||||
options[:no_ask] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def pause_options
|
||||
options do |opts, options|
|
||||
opts.banner << self.delete_banner
|
||||
options[:key] = "node"
|
||||
opts.on('--instance', "Pause server by instance id") do
|
||||
options[:key] = "instance"
|
||||
end
|
||||
options do |parser, options|
|
||||
parser.banner << self.delete_banner
|
||||
|
||||
parser.recognize_option_value(:instance, 'server',
|
||||
type: :switch,
|
||||
default: 'node',
|
||||
switch_value: 'instance',
|
||||
option_key: :key,
|
||||
i18n_scope: 'pause'
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def unpause_options
|
||||
options do |opts, options|
|
||||
opts.banner << self.delete_banner
|
||||
options[:key] = "node"
|
||||
opts.on('--instance', "Unpause server by instance id") do
|
||||
options[:key] = "instance"
|
||||
end
|
||||
options do |parser, options|
|
||||
parser.banner << self.delete_banner
|
||||
|
||||
parser.recognize_option_value(:instance, 'server',
|
||||
type: :switch,
|
||||
default: 'node',
|
||||
switch_value: 'instance',
|
||||
option_key: :key,
|
||||
i18n_scope: 'unpause'
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def reserve_options
|
||||
options do |opts, options|
|
||||
opts.banner << self.delete_banner
|
||||
options[:key] = "node"
|
||||
opts.on('--instance', "Reserve server by instance id") do
|
||||
options[:key] = "instance"
|
||||
end
|
||||
options do |parser, options|
|
||||
parser.banner << self.delete_banner
|
||||
|
||||
parser.recognize_option_value(:instance, 'server',
|
||||
type: :switch,
|
||||
default: 'node',
|
||||
switch_value: 'instance',
|
||||
option_key: :key,
|
||||
i18n_scope: 'reserve'
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def unreserve_options
|
||||
options do |opts, options|
|
||||
opts.banner << self.delete_banner
|
||||
options[:key] = "node"
|
||||
opts.on('--instance', "Unreserve server by instance id") do
|
||||
options[:key] = "instance"
|
||||
end
|
||||
options do |parser, options|
|
||||
parser.banner << self.delete_banner
|
||||
|
||||
parser.recognize_option_value(:instance, 'server',
|
||||
type: :switch,
|
||||
default: 'node',
|
||||
switch_value: 'instance',
|
||||
option_key: :key,
|
||||
i18n_scope: 'unreserve'
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def create_options
|
||||
options do |opts, options|
|
||||
opts.banner << self.create_banner
|
||||
opts.on('--without-bootstrap', "Run server without bootsraping phase") do
|
||||
options[:without_bootstrap] = true
|
||||
end
|
||||
|
||||
=begin
|
||||
opts.on('--public-ip', "Associate public IP with server") do
|
||||
options[:public_ip] = true
|
||||
end
|
||||
=end
|
||||
|
||||
opts.on("-N", "--name NAME", "Set node name") do |n|
|
||||
options[:name] = n
|
||||
end
|
||||
|
||||
opts.on("-G", "--groups X,Y,Z", "The security groups for this server") do |g|
|
||||
options[:groups] = g.split(",")
|
||||
end
|
||||
|
||||
opts.on("-f", "--force", "Cancel rollback operation on error") do |f|
|
||||
options[:force] = true
|
||||
end
|
||||
|
||||
opts.on("--key KEY", "Use another key for the server") do |k|
|
||||
options[:key] = k
|
||||
options do |parser, options|
|
||||
parser.banner << self.create_banner
|
||||
|
||||
parser.recognize_option_value('without-bootstrap', 'server',
|
||||
type: :switch,
|
||||
switch_value: true,
|
||||
option_key: :without_bootstrap,
|
||||
i18n_scope: 'create'
|
||||
)
|
||||
|
||||
parser.recognize_option_value(:name, 'server', short: '-N', i18n_scope: 'create')
|
||||
parser.recognize_option_value(:force, 'server', short: '-f', i18n_scope: 'create')
|
||||
parser.recognize_option_value(:key, 'server', i18n_scope: 'create')
|
||||
|
||||
parser.recognize_option_value(:groups, 'server',
|
||||
short: '-G',
|
||||
variable: 'GROUP_1,GROUP_2...',
|
||||
i18n_scope: 'create'
|
||||
) do |groups|
|
||||
options[:groups] = groups.split(",")
|
||||
end
|
||||
|
||||
# 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 |opts, options|
|
||||
opts.banner << self.bootstrap_banner
|
||||
options do |parser, options|
|
||||
parser.banner << self.bootstrap_banner
|
||||
|
||||
opts.on("-N", "--name NAME", "Set chef name") do |n|
|
||||
options[:name] = n
|
||||
end
|
||||
|
||||
opts.on("--bootstrap_template TEMPLATE", "Bootstrap template") do |template|
|
||||
options[:bootstrap_template] = template
|
||||
end
|
||||
|
||||
opts.on("--run_list LIST", "Comma separated list like 'role[my_role],recipe[my_recipe]'") do |list|
|
||||
parser.recognize_option_value(:name, 'server', short: '-N', i18n_scope: 'bootstrap')
|
||||
parser.recognize_option_value(:bootstrap_template, 'server', i18n_scope: 'bootstrap')
|
||||
parser.recognize_option_value(:run_list, 'server', i18n_scope: 'bootstrap') do |list|
|
||||
options[:run_list] = list.split(",")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def add_options
|
||||
options do |opts, options|
|
||||
opts.banner << self.add_banner
|
||||
options do |parser, options|
|
||||
parser.banner << self.add_banner
|
||||
|
||||
opts.on('--public-ip PUBLIC_IP', "Specify public IP for the server") do |ip|
|
||||
options[:public_ip] = ip
|
||||
end
|
||||
parser.recognize_option_value('public-ip', 'server', i18n_scope: 'add', option_key: :public_ip)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -15,14 +15,10 @@ class UserOptions < CommonOptions
|
||||
end
|
||||
|
||||
def create_options
|
||||
self.options do |opts, options|
|
||||
opts.banner << self.create_banner
|
||||
|
||||
options[:new_password] = nil
|
||||
opts.on("--password PASSWORD", "New user password") do |p|
|
||||
options[:new_password] = p
|
||||
end
|
||||
self.options do |parser, options|
|
||||
parser.banner << self.create_banner
|
||||
|
||||
parser.recognize_option_value(:new_password, 'user')
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -269,3 +269,70 @@ en:
|
||||
script:
|
||||
run:
|
||||
params: "Script arguments (comma separated list)"
|
||||
descriptions:
|
||||
deploy:
|
||||
tag: 'Tag names, comma separated list'
|
||||
image:
|
||||
provider: Image provider
|
||||
image_id: Image identifier
|
||||
ssh_username: SSH user name
|
||||
bootstrap_template: Bootstrap template
|
||||
no_bootstrap_template: Do not specify bootstrap template
|
||||
project:
|
||||
groups: "Security groups (comma separated list)"
|
||||
deploy_env: "Deploy environment identifier"
|
||||
file: "File in JSON with project settings"
|
||||
subnets: "Subnets identifiers for deploy environment (ec2 - only one subnet, openstack - comma separated list)"
|
||||
flavor: "Specify flavor for the project environment"
|
||||
image: "Specify image identifier for the project environment"
|
||||
run_list: "Additional recipes and roles (comma separated), like recipe[mycookbook::myrecipe],role[myrole]"
|
||||
users: "Users list (comma separated) for deploy environment control"
|
||||
provider: "Provider - 'ec2' or 'openstack'"
|
||||
no_expires: "Without expiry time"
|
||||
expires: "Expiry time (5m, 3h, 2d, 1w, etc)"
|
||||
user_add:
|
||||
deploy_env: "Add user to deploy environment"
|
||||
user_delete:
|
||||
deploy_env: "Delete user from deploy environment"
|
||||
deploy:
|
||||
servers: "Servers list (comma separated) for deploy"
|
||||
script:
|
||||
params: Script arguments (comma separated list)
|
||||
server:
|
||||
delete:
|
||||
instance: Delete node by instance id
|
||||
no_ask: Don't ask for permission for server deletion
|
||||
pause:
|
||||
instance: Pause server by instance id
|
||||
unpause:
|
||||
instance: Unpause server by instance id
|
||||
reserve:
|
||||
instance: Reserve server by instance id
|
||||
unreserve:
|
||||
instance: Unreserve server by instance id
|
||||
create:
|
||||
without-bootstrap: 'Run server without bootsraping phase'
|
||||
name: Set node name
|
||||
groups: The security groups for this server
|
||||
force: Cancel rollback operation on error
|
||||
key: User another key for server
|
||||
bootstrap:
|
||||
name: Set chef name
|
||||
bootstrap_template: Bootstrap template
|
||||
run_list: "Comma separated list like 'role[my_role],recipe[my_recipe]'"
|
||||
add:
|
||||
public-ip: 'Specify public IP for the server'
|
||||
stack:
|
||||
provider: Stack provider
|
||||
id: Stack id
|
||||
deploy_env: Deploy env
|
||||
project: Stack project
|
||||
stack_template: Stack template
|
||||
parameters: Parameters hash as single quoted JSON string
|
||||
stack_template:
|
||||
provider: Stack template provider
|
||||
id: Stack template id
|
||||
template_file: Stack template file
|
||||
user:
|
||||
new_password: New user password
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user