From ae2936655c50e369c0150ff4c049cdcf696848a7 Mon Sep 17 00:00:00 2001 From: elijah Date: Fri, 14 Mar 2014 17:45:32 -0700 Subject: added ability to define environment specific provider.json (e.g. provider.production.json) --- lib/leap_cli/config/manager.rb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'lib/leap_cli/config/manager.rb') diff --git a/lib/leap_cli/config/manager.rb b/lib/leap_cli/config/manager.rb index d6cb89e..46d7686 100644 --- a/lib/leap_cli/config/manager.rb +++ b/lib/leap_cli/config/manager.rb @@ -16,7 +16,7 @@ module LeapCli ## ATTRIBUTES ## - attr_reader :services, :tags, :nodes, :provider, :common, :secrets + attr_reader :services, :tags, :nodes, :provider, :providers, :common, :secrets attr_reader :base_services, :base_tags, :base_provider, :base_common # @@ -48,7 +48,7 @@ module LeapCli @base_services = load_all_json(Path.named_path([:service_config, '*'], Path.provider_base), Config::Tag) @base_tags = load_all_json(Path.named_path([:tag_config, '*'], Path.provider_base), Config::Tag) @base_common = load_json(Path.named_path(:common_config, Path.provider_base), Config::Object) - @base_provider = load_json(Path.named_path(:provider_config, Path.provider_base), Config::Object) + @base_provider = load_json(Path.named_path(:provider_config, Path.provider_base), Config::Provider) # load provider provider_path = Path.named_path(:provider_config, @provider_dir) @@ -58,7 +58,7 @@ module LeapCli @tags = load_all_json(Path.named_path([:tag_config, '*'], @provider_dir), Config::Tag) @nodes = load_all_json(Path.named_path([:node_config, '*'], @provider_dir), Config::Node) @common = load_json(common_path, Config::Object) - @provider = load_json(provider_path, Config::Object) + @provider = load_json(provider_path, Config::Provider) @secrets = load_json(Path.named_path(:secrets_config, @provider_dir), Config::Secrets) ### BEGIN HACK @@ -83,8 +83,18 @@ module LeapCli remove_disabled_nodes end - # validate + # load optional environment specific providers validate_provider(@provider) + @providers = {} + environments.each do |env| + if Path.defined?(:provider_env_config) + provider_path = Path.named_path([:provider_env_config, env], @provider_dir) + providers[env] = load_json(provider_path, Config::Provider) + providers[env].inherit_from! @provider + validate_provider(providers[env]) + end + end + end # -- cgit v1.2.3