diff options
author | Jesse Wolfe <jes5199@gmail.com> | 2010-01-21 17:16:38 -0800 |
---|---|---|
committer | test branch <puppet-dev@googlegroups.com> | 2010-02-17 06:50:53 -0800 |
commit | 9acd0b2b6d83881dc529c117637aff63a6c44f8d (patch) | |
tree | 99d1d7939f2cb032d555717d8a90d32719f96691 /lib/puppet/network | |
parent | b581c2348e784ce5d857a4c1c0686399b87cc13f (diff) | |
download | puppet-9acd0b2b6d83881dc529c117637aff63a6c44f8d.tar.gz puppet-9acd0b2b6d83881dc529c117637aff63a6c44f8d.tar.xz puppet-9acd0b2b6d83881dc529c117637aff63a6c44f8d.zip |
Feature #3115 REST-ified status()
This patch re-implements the status() remote procedure as a REST interface.
A running server returns key-value pairs, currently the only implemented
key is "is_alive" which will always be set to true.
Some future tool will consume this by:
Puppet::Status.indirection.terminus_class = :rest
Puppet::Status.find('https://puppet:8140/production/status/default')
Now with unit tests.
plus fixes a typo.
plus integration test and default security setting.
plus tests suggested by Brice.
Signed-off-by: Jesse Wolfe <jes5199@gmail.com>
Diffstat (limited to 'lib/puppet/network')
-rw-r--r-- | lib/puppet/network/http/api/v1.rb | 10 | ||||
-rw-r--r-- | lib/puppet/network/rest_authconfig.rb | 1 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/puppet/network/http/api/v1.rb b/lib/puppet/network/http/api/v1.rb index 13df7c3d0..6a5ff156a 100644 --- a/lib/puppet/network/http/api/v1.rb +++ b/lib/puppet/network/http/api/v1.rb @@ -34,7 +34,7 @@ module Puppet::Network::HTTP::API::V1 end def indirection2uri(request) - indirection = request.method == :search ? request.indirection_name.to_s + "s" : request.indirection_name.to_s + indirection = request.method == :search ? pluralize(request.indirection_name.to_s) : request.indirection_name.to_s "/#{request.environment.to_s}/#{indirection}/#{request.escaped_key}#{request.query_string}" end @@ -50,12 +50,20 @@ module Puppet::Network::HTTP::API::V1 return method end + def pluralize(indirection) + return "statuses" if indirection == "status" + return indirection + "s" + end + def plurality(indirection) # NOTE This specific hook for facts is ridiculous, but it's a *many*-line # fix to not need this, and our goal is to move away from the complication # that leads to the fix being too long. return :singular if indirection == "facts" + # "status" really is singular + return :singular if indirection == "status" + result = (indirection =~ /s$/) ? :plural : :singular indirection.sub!(/s$/, '') if result diff --git a/lib/puppet/network/rest_authconfig.rb b/lib/puppet/network/rest_authconfig.rb index 635ed1b8d..01ed412cd 100644 --- a/lib/puppet/network/rest_authconfig.rb +++ b/lib/puppet/network/rest_authconfig.rb @@ -15,6 +15,7 @@ module Puppet { :acl => "/certificate/ca", :method => :find, :authenticated => false }, { :acl => "/certificate/", :method => :find, :authenticated => false }, { :acl => "/certificate_request", :method => [:find, :save], :authenticated => false }, + { :acl => "/status", :method => [:find], :authenticated => true }, ] def self.main |