From 08318420324d6819aaa53c9c31c46c7d53f555f6 Mon Sep 17 00:00:00 2001 From: Mark Maglana Date: Sun, 22 Sep 2013 19:31:56 -0700 Subject: [PATCH] Update inheritance DSL to be more explicit Convert the inheritance DSL so that it expects a hash for options which includes an inheritanc key-value pair. This makes the inheritance directive more explicit when someone view's the request file's code. --- lib/aviator/core/request_builder.rb | 8 ++++---- lib/aviator/openstack/compute/v2/admin/list_hosts.rb | 4 +--- test/aviator/core/request_builder_test.rb | 6 +++--- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/aviator/core/request_builder.rb b/lib/aviator/core/request_builder.rb index d69114c..17d24b8 100644 --- a/lib/aviator/core/request_builder.rb +++ b/lib/aviator/core/request_builder.rb @@ -26,8 +26,8 @@ module Aviator class << self - def define_request(root_namespace, request_name, base_hierarchy=[:request], &block) - base_klass = get_request_class(root_namespace, base_hierarchy) + def define_request(root_namespace, request_name, options, &block) + base_klass = get_request_class(root_namespace, options[:inherit]) klass = Class.new(base_klass, &block) @@ -80,8 +80,8 @@ module Aviator class << self - def define_request(request_name, base_hierarchy=[:request], &block) - RequestBuilder.define_request self, request_name, base_hierarchy, &block + def define_request(request_name, options={ inherit: [:request] }, &block) + RequestBuilder.define_request self, request_name, options, &block end end # class << self diff --git a/lib/aviator/openstack/compute/v2/admin/list_hosts.rb b/lib/aviator/openstack/compute/v2/admin/list_hosts.rb index e2de089..d6f3090 100644 --- a/lib/aviator/openstack/compute/v2/admin/list_hosts.rb +++ b/lib/aviator/openstack/compute/v2/admin/list_hosts.rb @@ -1,8 +1,6 @@ module Aviator - base_request = [:openstack, :common, :v2, :public, :base] - - define_request :list_hosts, base_request do + define_request :list_hosts, inherit: [:openstack, :common, :v2, :public, :base] do meta :provider, :openstack meta :service, :compute diff --git a/test/aviator/core/request_builder_test.rb b/test/aviator/core/request_builder_test.rb index 16f974f..aff9d7c 100644 --- a/test/aviator/core/request_builder_test.rb +++ b/test/aviator/core/request_builder_test.rb @@ -84,7 +84,7 @@ class Aviator::Test base[:name] ] - builder.define_request :child_request, base_request do; end + builder.define_request :child_request, inherit: base_request do; end child_req_hierarchy = [ base[:provider], @@ -110,7 +110,7 @@ class Aviator::Test non_existent_base = [:none, :existent, :base] the_method = lambda do - builder.define_request :child, non_existent_base do; end + builder.define_request :child, inherit: non_existent_base do; end end the_method.must_raise Aviator::BaseRequestNotFoundError @@ -161,7 +161,7 @@ class Aviator::Test base_arr = [:openstack, :identity, :v2, :public, :root] child_arr = base_arr.first(base_arr.length - 1) + [:child] - builder.define_request child_arr.last, base_arr do; end + builder.define_request child_arr.last, inherit: base_arr do; end base_klass = base_arr.inject(builder) do |namespace, sym| namespace.const_get(sym.to_s.camelize, false)