From f814cd8841dc80c98c1102ad1d6617f136158c71 Mon Sep 17 00:00:00 2001 From: Tomasz Setkowski Date: Sun, 4 Oct 2015 08:43:40 +0000 Subject: [PATCH] support to specify explicit service name other that filename all functionality covered in tests, without this change the case would fail --- libraries/consul_definition.rb | 4 +++- test/spec/libraries/consul_definition_spec.rb | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/libraries/consul_definition.rb b/libraries/consul_definition.rb index 0b1ca817..beb63b4c 100644 --- a/libraries/consul_definition.rb +++ b/libraries/consul_definition.rb @@ -35,7 +35,9 @@ class ConsulDefinition < Chef::Resource attribute(:parameters, option_collector: true, default: {}) def to_json - JSON.pretty_generate(type => parameters.merge(name: name)) + final_parameters = parameters + final_parameters = final_parameters.merge(name: name) if final_parameters[:name].nil? + JSON.pretty_generate(type => final_parameters) end action(:create) do diff --git a/test/spec/libraries/consul_definition_spec.rb b/test/spec/libraries/consul_definition_spec.rb index cabeaaaa..5e99c539 100644 --- a/test/spec/libraries/consul_definition_spec.rb +++ b/test/spec/libraries/consul_definition_spec.rb @@ -29,6 +29,30 @@ end end + context 'service definition with explicit name' do + recipe do + consul_definition 'redis' do + type 'service' + parameters(name: 'myredis', tags: %w{master}, address: '127.0.0.1', port: 6379, interval: '10s') + end + end + + it { is_expected.to create_directory('/etc/consul') } + it do + is_expected.to create_file('/etc/consul/redis.json') + .with(user: 'consul', group: 'consul', mode: '0640') + .with(content: JSON.pretty_generate( + service: { + name: 'myredis', + tags: ['master'], + address: '127.0.0.1', + port: 6379, + interval: '10s' + } + )) + end + end + context 'check definition' do recipe do consul_definition 'web-api' do