From 0ccdc15cfcc7e11329d9d41eb16d8e63fddb44e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Tue, 23 Dec 2014 20:04:15 +0100 Subject: [PATCH] Add rpcinterface extensions support --- README.md | 15 ++++++++++++++- attributes/default.rb | 1 + recipes/default.rb | 7 +++++++ templates/default/supervisord.conf.erb | 7 +++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bd42c17..2482319 100644 --- a/README.md +++ b/README.md @@ -32,13 +32,26 @@ Attributes ```text [ctlplugin:serialrestart] supervisor.ctl_factory = supervisorserialrestart.controllerplugin:make_serialrestart_controllerplugin - ``` + ``` Which can be achieved using ```ruby node.default['supervisor']['ctlplugins'] = ({ 'serialrestart'=> 'supervisorserialrestart.controllerplugin:make_serialrestart_controllerplugin' }) ``` +- `node['supervisor']['rpcplugins']` - entries for `rpcinterface` extensions. + For instance, to install [twiddler](https://pypi.python.org/pypi/supervisor-twiddler), you'd manually add this to your config: + + ```text + [rpcinterface:twiddler] + supervisor.rpcinterface_factory = supervisor_twiddler.rpcinterface:make_twiddler_rpcinterface + ``` + Which can be achieved using + ```ruby + node.default['supervisor']['rpcplugins'] = ({ + 'twiddler'=> 'supervisor_twiddler.rpcinterface:make_twiddler_rpcinterface' + }) + ``` Resources/Providers diff --git a/attributes/default.rb b/attributes/default.rb index d4ab44f..c3a962a 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -38,3 +38,4 @@ default['supervisor']['minprocs'] = 200 default['supervisor']['socket_file'] = '/var/run/supervisor.sock' default['supervisor']['ctlplugins'] = {} +default['supervisor']['rpcplugins'] = {} diff --git a/recipes/default.rb b/recipes/default.rb index ee8af2d..5d91afd 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -31,6 +31,13 @@ version node['supervisor']['version'] if node['supervisor']['version'] end +# If rpcplugins are presented, try to install them +node['supervisor']['rpcplugins'].each_key do |k| + python_pip "supervisor_#{k}" do + action :upgrade + end +end + directory node['supervisor']['dir'] do owner "root" group "root" diff --git a/templates/default/supervisord.conf.erb b/templates/default/supervisord.conf.erb index e576fa4..4f76a72 100644 --- a/templates/default/supervisord.conf.erb +++ b/templates/default/supervisord.conf.erb @@ -40,6 +40,13 @@ minprocs = <%= @supervisord_minprocs %> [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface +<% @node['supervisor']['rpcplugins'] && @node['supervisor']['rpcplugins'].each do |k,v| %> + +[rpcinterface:<%=k%>] +supervisor.rpcinterface_factory = <%=v%> + +<%end%> + [supervisorctl] serverurl=unix:///var/run//supervisor.sock ; use a unix:// URL for a unix socket