fluke/devops-client/lib/devops-client/handler/stack_template.rb
2015-12-15 18:56:14 +03:00

101 lines
2.7 KiB
Ruby

require "devops-client/handler/handler"
require "devops-client/handler/provider"
require "devops-client/options/stack_template_options"
require "devops-client/output/stack_template"
# require 'devops-client/helpers/select_available'
class StackTemplate < Handler
output_with Output::StackTemplate
def initialize(host, def_options={})
@host, @options = host, def_options
@options_parser = StackTemplateOptions.new(ARGV, def_options)
end
def handle
@options, @args = @options_parser.parse_options_for!(current_command)
case current_command
when :list
list_handler
output
when :show
show_handler
output
when :create
create_handler
when :delete
delete_handler
when :update_url
update_url_handler
end
end
def create_handler
q = {}
q[:provider] = options[:provider] || resources_selector.select_available_provider
q[:id] = options[:id] || enter_parameter(I18n.t('handler.stack_template.create.id'))
filepath = options[:template_file] || enter_parameter(I18n.t('handler.stack_template.create.template_file'))
q[:template_body] = get_file_contents(filepath)
json = JSON.pretty_generate(q)
post_body("/stack_template/#{q[:provider]}", json) if question(I18n.t('handler.stack_template.question.create')){puts json}
end
def list_handler(provider=nil)
provider ||= @options[:given_provider]
@list = get_stack_templates(provider)
end
def get_stack_templates(provider=nil)
if provider
provider_stack_templates(provider)
else
get("/stack_templates")
end
end
def show_handler
r = inspect_parameters @options_parser.show_params, @args[2]
unless r.nil?
@options_parser.invalid_show_command
abort(r)
end
@show = get "/stack_template/#{@args[2]}"
end
def delete_handler
r = inspect_parameters(@options_parser.delete_params, @args[2])
unless r.nil?
@options_parser.invalid_delete_command
abort(r)
end
if question(I18n.t("handler.stack_template.question.delete", name: @args[2]))
delete "/stack_template/#{@args[2]}"
end
end
def update_url_handler
r = inspect_parameters @options_parser.update_url_params, @args[2]
unless r.nil?
@options_parser.invalid_update_url_command
abort(r)
end
stack_template = post "/stack_template/#{@args[2]}/update_template_url"
puts stack_template['template_url']
end
def provider_stack_templates(provider)
if Providers.has_functionality?(provider, :stack_templates)
@provider = true
@list = get("/stack_templates/provider/#{provider}")
else
@options_parser.invalid_list_command
abort()
end
end
end