diff options
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/indirector/status.rb | 3 | ||||
-rw-r--r-- | lib/puppet/indirector/status/local.rb | 7 | ||||
-rw-r--r-- | lib/puppet/indirector/status/rest.rb | 5 | ||||
-rw-r--r-- | lib/puppet/network/http/api/v1.rb | 10 | ||||
-rw-r--r-- | lib/puppet/network/rest_authconfig.rb | 1 | ||||
-rw-r--r-- | lib/puppet/status.rb | 20 |
6 files changed, 45 insertions, 1 deletions
diff --git a/lib/puppet/indirector/status.rb b/lib/puppet/indirector/status.rb new file mode 100644 index 000000000..f40bbc4d8 --- /dev/null +++ b/lib/puppet/indirector/status.rb @@ -0,0 +1,3 @@ +# A stub class, so our constants work. +class Puppet::Indirector::Status +end diff --git a/lib/puppet/indirector/status/local.rb b/lib/puppet/indirector/status/local.rb new file mode 100644 index 000000000..377be89df --- /dev/null +++ b/lib/puppet/indirector/status/local.rb @@ -0,0 +1,7 @@ +require 'puppet/indirector/status' + +class Puppet::Indirector::Status::Local < Puppet::Indirector::Code + def find( *anything ) + return model.new + end +end diff --git a/lib/puppet/indirector/status/rest.rb b/lib/puppet/indirector/status/rest.rb new file mode 100644 index 000000000..22e70429b --- /dev/null +++ b/lib/puppet/indirector/status/rest.rb @@ -0,0 +1,5 @@ +require 'puppet/indirector/status' +require 'puppet/indirector/rest' + +class Puppet::Indirector::Status::Rest < Puppet::Indirector::REST +end 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 diff --git a/lib/puppet/status.rb b/lib/puppet/status.rb new file mode 100644 index 000000000..f587a5a2a --- /dev/null +++ b/lib/puppet/status.rb @@ -0,0 +1,20 @@ +require 'puppet/indirector' + +class Puppet::Status + extend Puppet::Indirector + indirects :status, :terminus_class => :local + + attr :status, true + + def initialize( status = nil ) + @status = status || {"is_alive" => true} + end + + def to_pson + @status.to_pson + end + + def self.from_pson( pson ) + self.new( pson ) + end +end |