From f9a179bb1ec218ee2e676a58de18c76dddfc9b94 Mon Sep 17 00:00:00 2001 From: hirocaster Date: Thu, 26 Mar 2015 19:40:03 +0900 Subject: [PATCH] Add LWRP services watch --- README.md | 5 +++++ providers/services_watch_def.rb | 18 ++++++++++++++++++ resources/services_watch_def.rb | 27 +++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 providers/services_watch_def.rb create mode 100644 resources/services_watch_def.rb diff --git a/README.md b/README.md index 392f9e69..991cc0c1 100644 --- a/README.md +++ b/README.md @@ -411,6 +411,11 @@ the `consul::ui` recipe in your node's `run_list`. handler "chef-client" end +##### Adding services watch + consul_services_watch_def 'services-name' do + handler "chef-client" + end + ##### Adding service watch consul_service_watch_def 'service-name' do passingonly true diff --git a/providers/services_watch_def.rb b/providers/services_watch_def.rb new file mode 100644 index 00000000..9f9506a6 --- /dev/null +++ b/providers/services_watch_def.rb @@ -0,0 +1,18 @@ +use_inline_resources + +action :create do + file new_resource.path do + user node['consul']['service_user'] + group node['consul']['service_group'] + mode 0600 + content new_resource.to_json + + action :create + end +end + +action :delete do + file new_resource.path do + action :delete + end +end diff --git a/resources/services_watch_def.rb b/resources/services_watch_def.rb new file mode 100644 index 00000000..d1fdaf19 --- /dev/null +++ b/resources/services_watch_def.rb @@ -0,0 +1,27 @@ +require 'json' + +actions :create, :delete +default_action :create + +attribute :name, name_attribute: true, required: true, kind_of: String +attribute :handler, required: true, kind_of: String + +def path + ::File.join(node['consul']['config_dir'], "watch-services.json") +end + +def to_json + JSON.pretty_generate(to_hash) +end + +def to_hash + hash = { + watches:[ + { + type: 'services', + handler: handler + } + ] + } + hash +end