From 589fc6ff844a8b19b14cc0d6808bed263f057011 Mon Sep 17 00:00:00 2001 From: Anton Chuchkalov Date: Wed, 15 Jul 2015 20:21:23 +0400 Subject: [PATCH] rename stack_template_presets to stack_presets --- .../devops-client/handler/handler_factory.rb | 6 ++-- ...ack_template_preset.rb => stack_preset.rb} | 31 +++++++++-------- .../options/stack_preset_options.rb | 33 +++++++++++++++++++ .../options/stack_template_preset_options.rb | 33 ------------------- ...ack_template_preset.rb => stack_preset.rb} | 6 ++-- devops-client/locales/en.yml | 12 +++---- devops-service/app/devops-api2.rb | 4 +-- .../base.rb | 4 +-- .../factory.rb | 10 +++--- .../postgres_cluster.rb | 2 +- .../postgres_cluster.yml | 0 .../preset_not_found.rb | 0 ...ack_template_preset.rb => stack_preset.rb} | 18 +++++----- ...k_template_presets.rb => stack_presets.rb} | 14 ++++---- devops-service/tests/generate_tests.rb | 2 +- .../tests/stubs/providers/openstack.rb | 8 +++++ .../00_list/stack_template_preset.feature.erb | 6 ++-- 17 files changed, 98 insertions(+), 91 deletions(-) rename devops-client/lib/devops-client/handler/{stack_template_preset.rb => stack_preset.rb} (55%) create mode 100644 devops-client/lib/devops-client/options/stack_preset_options.rb delete mode 100644 devops-client/lib/devops-client/options/stack_template_preset_options.rb rename devops-client/lib/devops-client/output/{stack_template_preset.rb => stack_preset.rb} (77%) rename devops-service/lib/{stack_template_presets => stack_presets}/base.rb (93%) rename devops-service/lib/{stack_template_presets => stack_presets}/factory.rb (56%) rename devops-service/lib/{stack_template_presets => stack_presets}/postgres_cluster.rb (71%) rename devops-service/lib/{stack_template_presets => stack_presets}/postgres_cluster.yml (100%) rename devops-service/lib/{stack_template_presets => stack_presets}/preset_not_found.rb (100%) rename devops-service/routes/v2.0/handlers/{stack_template_preset.rb => stack_preset.rb} (56%) rename devops-service/routes/v2.0/{stack_template_presets.rb => stack_presets.rb} (65%) diff --git a/devops-client/lib/devops-client/handler/handler_factory.rb b/devops-client/lib/devops-client/handler/handler_factory.rb index e1f9d9c..c5b7898 100644 --- a/devops-client/lib/devops-client/handler/handler_factory.rb +++ b/devops-client/lib/devops-client/handler/handler_factory.rb @@ -47,9 +47,9 @@ class HandlerFactory when "stack_template" require "devops-client/handler/stack_template" StackTemplate - when "stack_template_preset" - require "devops-client/handler/stack_template_preset" - StackTemplatePreset + when "stack_preset" + require "devops-client/handler/stack_preset" + StackPreset when "stack" require "devops-client/handler/stack" Stack diff --git a/devops-client/lib/devops-client/handler/stack_template_preset.rb b/devops-client/lib/devops-client/handler/stack_preset.rb similarity index 55% rename from devops-client/lib/devops-client/handler/stack_template_preset.rb rename to devops-client/lib/devops-client/handler/stack_preset.rb index 674284e..427cdfe 100644 --- a/devops-client/lib/devops-client/handler/stack_template_preset.rb +++ b/devops-client/lib/devops-client/handler/stack_preset.rb @@ -1,15 +1,14 @@ require "devops-client/handler/handler" -require "devops-client/options/stack_template_preset_options" -require "devops-client/output/stack_template_preset" -# require 'devops-client/helpers/select_available' +require "devops-client/options/stack_preset_options" +require "devops-client/output/stack_preset" -class StackTemplatePreset < Handler +class StackPreset < Handler - output_with Output::StackTemplatePreset + output_with Output::StackPreset def initialize(host, def_options={}) @host, @options = host, def_options - @options_parser = StackTemplatePresetOptions.new(ARGV, def_options) + @options_parser = StackPresetOptions.new(ARGV, def_options) end def handle @@ -21,8 +20,8 @@ class StackTemplatePreset < Handler when :show show_handler output - when :build - build_handler + when :apply + apply_handler end end @@ -32,29 +31,29 @@ class StackTemplatePreset < Handler @options_parser.invalid_show_command abort(wrong_params) end - @show = get "/stack_template_presets/#{@args[2]}" + @show = get "/stack_presets/#{@args[2]}" end def list_handler - @list = get('/stack_template_presets') + @list = get('/stack_presets') end - def build_handler - wrong_params = inspect_parameters(@options_parser.build_params, @args[2]) + def apply_handler + wrong_params = inspect_parameters(@options_parser.apply_params, @args[2]) if wrong_params - @options_parser.invalid_build_command + @options_parser.invalid_apply_command abort(wrong_params) end params = {} params[:id] = @args[2] params[:provider] = options[:provider] || resources_selector.select_available_provider - params[:stack] = options[:stack] || enter_parameter(I18n.t('handler.stack_template_preset.create.stack')) + params[:stack] = options[:stack] || enter_parameter(I18n.t('handler.stack_preset.create.stack')) - filepath = options[:parameters_file] || enter_parameter(I18n.t('handler.stack_template_preset.create.parameters_file')) + filepath = options[:parameters_file] || enter_parameter(I18n.t('handler.stack_preset.create.parameters_file')) params[:parameters] = JSON.parse(File.read(filepath)) - result = post_body("/stack_template_presets/#{params[:id]}/build_stack_template", JSON.pretty_generate(params)) + result = post_body("/stack_presets/#{params[:id]}/apply", JSON.pretty_generate(params)) end end diff --git a/devops-client/lib/devops-client/options/stack_preset_options.rb b/devops-client/lib/devops-client/options/stack_preset_options.rb new file mode 100644 index 0000000..919e2dc --- /dev/null +++ b/devops-client/lib/devops-client/options/stack_preset_options.rb @@ -0,0 +1,33 @@ +require "devops-client/options/common_options" + +class StackPresetOptions < CommonOptions + + commands :list, :show, :apply + + def initialize args, def_options + super(args, def_options) + self.header = I18n.t("headers.stack_preset") + self.banner_header = "stack_preset" + self.list_params = ["[provider]", "[ec2|openstack]"] + self.show_params = ["STACK"] + self.apply_params = ["PRESET"] + end + + def apply_options + self.options do |parser, options| + parser.banner << self.apply_banner + + parser.recognize_option_value(:provider, 'stack_preset') + parser.recognize_option_value(:stack, 'stack_preset') + parser.recognize_option_value(:parameters_file, 'stack_preset') + end + end + + + extend_options_method :list_options do |options| + if args[2] + options[:given_provider] = args[2] + end + end + +end diff --git a/devops-client/lib/devops-client/options/stack_template_preset_options.rb b/devops-client/lib/devops-client/options/stack_template_preset_options.rb deleted file mode 100644 index 237503d..0000000 --- a/devops-client/lib/devops-client/options/stack_template_preset_options.rb +++ /dev/null @@ -1,33 +0,0 @@ -require "devops-client/options/common_options" - -class StackTemplatePresetOptions < CommonOptions - - commands :list, :show, :build - - def initialize args, def_options - super(args, def_options) - self.header = I18n.t("headers.stack_template_preset") - self.banner_header = "stack_template_preset" - self.list_params = ["[provider]", "[ec2|openstack]"] - self.show_params = ["STACK"] - self.build_params = ["PRESET"] - end - - def build_options - self.options do |parser, options| - parser.banner << self.build_banner - - parser.recognize_option_value(:provider, 'stack_template_preset') - parser.recognize_option_value(:stack, 'stack_template_preset') - parser.recognize_option_value(:parameters_file, 'stack_template_preset') - end - end - - - extend_options_method :list_options do |options| - if args[2] - options[:given_provider] = args[2] - end - end - -end diff --git a/devops-client/lib/devops-client/output/stack_template_preset.rb b/devops-client/lib/devops-client/output/stack_preset.rb similarity index 77% rename from devops-client/lib/devops-client/output/stack_template_preset.rb rename to devops-client/lib/devops-client/output/stack_preset.rb index 6e61349..184c944 100644 --- a/devops-client/lib/devops-client/output/stack_template_preset.rb +++ b/devops-client/lib/devops-client/output/stack_preset.rb @@ -1,11 +1,11 @@ require "devops-client/output/base" module Output - class StackTemplatePreset < Base + class StackPreset < Base def table if outputting_list? - title = I18n.t("output.title.stack_template_preset.list") + title = I18n.t("output.title.stack_preset.list") headers, rows = create_list create_table headers, rows, title, with_num? else @@ -29,7 +29,7 @@ module Output private def create_list - abort(I18n.t("output.not_found.stack_template_preset.list")) if @data.empty? + abort(I18n.t("output.not_found.stack_preset.list")) if @data.empty? fields_to_output = %w(id) diff --git a/devops-client/locales/en.yml b/devops-client/locales/en.yml index a13f9cb..1797aba 100644 --- a/devops-client/locales/en.yml +++ b/devops-client/locales/en.yml @@ -43,7 +43,7 @@ en: user: "User" stack: "Stack" stack_template: "Stack template" - stack_template_preset: "Stack template preset" + stack_preset: "Stack template preset" handler: flavor: list: @@ -118,10 +118,10 @@ en: question: create: "Are you sure to create stack?" delete: "Are you sure to delete stack '%{name}'?" - stack_template_preset: + stack_preset: create: parameters_file: 'Path to file with JSON parameters: ' - stack_template: 'Name of stack template to build: ' + stack: 'Name of stack to create: ' message: choose_list_default: "Choose %{name} (comma separated), like 1,2,3 or empty for default value '%{default}': " choose_list: "Choose %{name} (comma separated), like 1,2,3: " @@ -235,7 +235,7 @@ en: stack_template: list: "Stack Templates" show: "Stack Template" - stack_template_preset: + stack_preset: list: "Stack Template Presets" show: "Stack Template Preset" stack: @@ -272,7 +272,7 @@ en: stack_template: list: "No stack templates found" show: "There isn't such stack template" - stack_template_preset: + stack_preset: list: "No stack template presets found" show: "There isn't such stack template preset" stack: @@ -378,7 +378,7 @@ en: provider: Stack template provider id: Stack template id template_file: Stack template file - stack_template_preset: + stack_preset: parameters_file: Path to file with JSON parameters stack: 'Name of stack to build: ' provider: Stack provider diff --git a/devops-service/app/devops-api2.rb b/devops-service/app/devops-api2.rb index 7635d4c..88eb263 100644 --- a/devops-service/app/devops-api2.rb +++ b/devops-service/app/devops-api2.rb @@ -21,7 +21,7 @@ module Devops require "routes/v2.0/handlers/server" require "routes/v2.0/handlers/stack" require "routes/v2.0/handlers/stack_template" - require "routes/v2.0/stack_template_presets" + require "routes/v2.0/stack_presets" require "routes/v2.0/handlers/report" require 'lib/stubber' @@ -60,7 +60,7 @@ module Devops require "routes/v2.0/bootstrap_templates" require "routes/v2.0/stack" require "routes/v2.0/stack_template" - require "routes/v2.0/handlers/stack_template_preset" + require "routes/v2.0/handlers/stack_preset" require "routes/v2.0/report" routes = Devops::Version2_0::Routes.constants.collect{|s| Devops::Version2_0::Routes.const_get(s)}.select {|const| const.class == Module} diff --git a/devops-service/lib/stack_template_presets/base.rb b/devops-service/lib/stack_presets/base.rb similarity index 93% rename from devops-service/lib/stack_template_presets/base.rb rename to devops-service/lib/stack_presets/base.rb index 3914b62..d19ca77 100644 --- a/devops-service/lib/stack_template_presets/base.rb +++ b/devops-service/lib/stack_presets/base.rb @@ -2,7 +2,7 @@ require 'lib/string_helper' require 'db/mongo/models/stack_template/stack_template_factory' module Devops - module StackTemplatePresets + module StackPresets class Base def id @@ -25,7 +25,7 @@ module Devops end def template_body - @template_body ||= File.read("lib/stack_template_presets/#{id}.#{template_file_extension}") + @template_body ||= File.read("lib/stack_presets/#{id}.#{template_file_extension}") end # some templates may be YAML files diff --git a/devops-service/lib/stack_template_presets/factory.rb b/devops-service/lib/stack_presets/factory.rb similarity index 56% rename from devops-service/lib/stack_template_presets/factory.rb rename to devops-service/lib/stack_presets/factory.rb index f3cb3ad..1bb613e 100644 --- a/devops-service/lib/stack_template_presets/factory.rb +++ b/devops-service/lib/stack_presets/factory.rb @@ -2,15 +2,15 @@ require_relative 'base' require_relative 'postgres_cluster' require_relative 'preset_not_found' -class Devops::StackTemplatePresetsFactory +class Devops::StackPresetsFactory - # find all classes in Devops::StackTemplatePresets modules excluding Base and factory. - # This list can be extended in external gems via defining new classes in Devops::StackTemplatePresets module. + # find all classes in Devops::StackPresets modules excluding Base and factory. + # This list can be extended in external gems via defining new classes in Devops::StackPresets module. def self.list - @list ||= Devops::StackTemplatePresets.constants.select do |class_name| + @list ||= Devops::StackPresets.constants.select do |class_name| class_name != :Base end.map do |class_name| - Devops::StackTemplatePresets.const_get(class_name).new + Devops::StackPresets.const_get(class_name).new end end diff --git a/devops-service/lib/stack_template_presets/postgres_cluster.rb b/devops-service/lib/stack_presets/postgres_cluster.rb similarity index 71% rename from devops-service/lib/stack_template_presets/postgres_cluster.rb rename to devops-service/lib/stack_presets/postgres_cluster.rb index 9f55456..21f165a 100644 --- a/devops-service/lib/stack_template_presets/postgres_cluster.rb +++ b/devops-service/lib/stack_presets/postgres_cluster.rb @@ -1,4 +1,4 @@ -module Devops::StackTemplatePresets +module Devops::StackPresets class PostgresCluster < Base def template_file_extension :yml diff --git a/devops-service/lib/stack_template_presets/postgres_cluster.yml b/devops-service/lib/stack_presets/postgres_cluster.yml similarity index 100% rename from devops-service/lib/stack_template_presets/postgres_cluster.yml rename to devops-service/lib/stack_presets/postgres_cluster.yml diff --git a/devops-service/lib/stack_template_presets/preset_not_found.rb b/devops-service/lib/stack_presets/preset_not_found.rb similarity index 100% rename from devops-service/lib/stack_template_presets/preset_not_found.rb rename to devops-service/lib/stack_presets/preset_not_found.rb diff --git a/devops-service/routes/v2.0/handlers/stack_template_preset.rb b/devops-service/routes/v2.0/handlers/stack_preset.rb similarity index 56% rename from devops-service/routes/v2.0/handlers/stack_template_preset.rb rename to devops-service/routes/v2.0/handlers/stack_preset.rb index 1d71146..376606f 100644 --- a/devops-service/routes/v2.0/handlers/stack_template_preset.rb +++ b/devops-service/routes/v2.0/handlers/stack_preset.rb @@ -1,35 +1,35 @@ require 'json' -require 'lib/stack_template_presets/factory' +require 'lib/stack_presets/factory' module Devops module Version2_0 module Handler - class StackTemplatePreset + class StackPreset def self.get_presets lambda { - # check_privileges("stack_template_presets", "r") - json Devops::StackTemplatePresetsFactory.list.map(&:to_hash) + # check_privileges("stack_presets", "r") + json Devops::StackPresetsFactory.list.map(&:to_hash) } end def self.get_preset lambda { - # check_privileges("stack_template_presets", "r") - json Devops::StackTemplatePresetsFactory.get(params['id']).to_hash + # check_privileges("stack_presets", "r") + json Devops::StackPresetsFactory.get(params['id']).to_hash } end - def self.build_stack_template + def self.apply lambda { - # check_privileges("stack_template_presets", "r") + # check_privileges("stack_presets", "r") check_privileges('stack_template', 'w') attrs = create_object_from_json_body provider, stack_id, parameters = attrs.fetch('provider'), attrs.fetch('stack'), attrs.fetch('parameters') - preset = Devops::StackTemplatePresetsFactory.get(attrs.fetch('id')) + preset = Devops::StackPresetsFactory.get(attrs.fetch('id')) stack = preset.create_stack_from_preset(provider, stack_id, parameters) settings.mongo.stack_insert(stack) diff --git a/devops-service/routes/v2.0/stack_template_presets.rb b/devops-service/routes/v2.0/stack_presets.rb similarity index 65% rename from devops-service/routes/v2.0/stack_template_presets.rb rename to devops-service/routes/v2.0/stack_presets.rb index 8cdb70d..1e34816 100644 --- a/devops-service/routes/v2.0/stack_template_presets.rb +++ b/devops-service/routes/v2.0/stack_presets.rb @@ -1,10 +1,10 @@ module Devops module Version2_0 module Routes - module StackTemplatePresetRoutes + module StackPresetRoutes def self.registered(app) - # Get list of available stack_template_presets + # Get list of available stack_presets # # * *Request* # - method : GET @@ -14,10 +14,10 @@ module Devops # * *Returns* : array of hashes # [ {id: 'preset id', template_preset_body: 'long body'} ] # - app.get_with_headers "/stack_template_presets", :headers => [:accept], &Devops::Version2_0::Handler::StackTemplatePreset.get_presets + app.get_with_headers "/stack_presets", :headers => [:accept], &Devops::Version2_0::Handler::StackPreset.get_presets - # Get information about stack_template_preset + # Get information about stack_preset # # * *Request* # - method : GET @@ -27,7 +27,7 @@ module Devops # * *Returns* : hash # {id: 'preset id', template_preset_body: 'long body'} # - app.get_with_headers "/stack_template_presets/:id", :headers => [:accept], &Devops::Version2_0::Handler::StackTemplatePreset.get_preset + app.get_with_headers "/stack_presets/:id", :headers => [:accept], &Devops::Version2_0::Handler::StackPreset.get_preset # Build stack template from preset @@ -38,7 +38,7 @@ module Devops # - Accept: application/json # - params : # - provider: string - # - stack_template_id: id of stack template to create + # - stack_id: id of stack template to create # - template_attrs: hash with template attributes # # TODO: not stack template, but stack itself @@ -50,7 +50,7 @@ module Devops # template_body: 'long body' # } # - app.post_with_headers "/stack_template_presets/:id/build_stack_template", :headers => [:accept], &Devops::Version2_0::Handler::StackTemplatePreset.build_stack_template + app.post_with_headers "/stack_presets/:id/apply", :headers => [:accept], &Devops::Version2_0::Handler::StackPreset.apply puts "Stack template presets routes initialized" end diff --git a/devops-service/tests/generate_tests.rb b/devops-service/tests/generate_tests.rb index ded4523..e5a0f4d 100755 --- a/devops-service/tests/generate_tests.rb +++ b/devops-service/tests/generate_tests.rb @@ -77,7 +77,7 @@ templates = { #list "templates/api_v2/00_list/flavor.feature.erb" => "features/api_v2/00_list/flavor.feature", - "templates/api_v2/00_list/stack_template_preset.feature.erb" => "features/api_v2/00_list/stack_template_preset.feature", + "templates/api_v2/00_list/stack_preset.feature.erb" => "features/api_v2/00_list/stack_preset.feature", "templates/api_v2/00_list/10_user.feature.erb" => "features/api_v2/00_list/10_user.feature", #create diff --git a/devops-service/tests/stubs/providers/openstack.rb b/devops-service/tests/stubs/providers/openstack.rb index 0247888..8c3159f 100644 --- a/devops-service/tests/stubs/providers/openstack.rb +++ b/devops-service/tests/stubs/providers/openstack.rb @@ -71,4 +71,12 @@ class Provider::Openstack true end + def stack_details + {stack_status: 'stubbed'} + end + + def stack_resources + ['stubbed'] + end + end \ No newline at end of file diff --git a/devops-service/tests/templates/api_v2/00_list/stack_template_preset.feature.erb b/devops-service/tests/templates/api_v2/00_list/stack_template_preset.feature.erb index 52e63fb..77690e4 100644 --- a/devops-service/tests/templates/api_v2/00_list/stack_template_preset.feature.erb +++ b/devops-service/tests/templates/api_v2/00_list/stack_template_preset.feature.erb @@ -1,8 +1,8 @@ -@stack_template_preset +@stack_preset Feature: stack template preset list Scenario: Get list of all stack template presets - When I send GET '/v2.0/stack_template_presets' query + When I send GET '/v2.0/stack_presets' query Then response should be '200' And the Content-Type header should include 'application/json' And the JSON response should be an array @@ -17,7 +17,7 @@ Feature: stack template preset list """ Scenario: Get information about particular stack template preset - When I send GET '/v2.0/stack_template_presets/postgres_cluster' query + When I send GET '/v2.0/stack_presets/postgres_cluster' query Then response should be '200' And the Content-Type header should include 'application/json' And response should be JSON object like: