puppet-rest 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +7 -0
- data/.pryrc +58 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +73 -0
- data/LICENSE.txt +20 -0
- data/README.md +81 -0
- data/Rakefile +3 -0
- data/lib/puppet-rest.rb +43 -0
- data/lib/puppet-rest/db/client.rb +42 -0
- data/lib/puppet-rest/db/config.rb +83 -0
- data/lib/puppet-rest/db/connection.rb +26 -0
- data/lib/puppet-rest/db/connection/fact-names.rb +9 -0
- data/lib/puppet-rest/db/connection/facts.rb +11 -0
- data/lib/puppet-rest/db/connection/nodes.rb +32 -0
- data/lib/puppet-rest/db/connection/resources.rb +11 -0
- data/lib/puppet-rest/db/entities/base.rb +100 -0
- data/lib/puppet-rest/db/entities/fact.rb +9 -0
- data/lib/puppet-rest/db/entities/node.rb +22 -0
- data/lib/puppet-rest/db/entities/resource.rb +12 -0
- data/lib/puppet-rest/db/request.rb +74 -0
- data/lib/puppet-rest/error.rb +42 -0
- data/lib/puppet-rest/identity_map.rb +4 -0
- data/lib/puppet-rest/monkey_patches/array.rb +7 -0
- data/lib/puppet-rest/monkey_patches/enumerable.rb +11 -0
- data/lib/puppet-rest/monkey_patches/hash.rb +49 -0
- data/lib/puppet-rest/monkey_patches/mash.rb +219 -0
- data/lib/puppet-rest/pe/client.rb +42 -0
- data/lib/puppet-rest/pe/config.rb +93 -0
- data/lib/puppet-rest/pe/connection.rb +25 -0
- data/lib/puppet-rest/pe/connection/ca_cert.rb +10 -0
- data/lib/puppet-rest/pe/connection/catalog.rb +10 -0
- data/lib/puppet-rest/pe/connection/node.rb +10 -0
- data/lib/puppet-rest/pe/entities/base.rb +100 -0
- data/lib/puppet-rest/pe/entities/catalog.rb +16 -0
- data/lib/puppet-rest/pe/entities/node.rb +9 -0
- data/lib/puppet-rest/pe/request.rb +77 -0
- data/lib/puppet-rest/response/client_error.rb +33 -0
- data/lib/puppet-rest/response/parse_json.rb +26 -0
- data/lib/puppet-rest/version.rb +3 -0
- data/puppet-rest.gemspec +28 -0
- data/spec/certificates/ca.pem +35 -0
- data/spec/certificates/cert.pem +35 -0
- data/spec/certificates/pk.pem +51 -0
- data/spec/spec_helper.rb +9 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NTFlMDU2MmFhMzE0ZmQxMjk4Y2YyNGMxNjExZmIyNmNlMzhkNWYxMw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YzNmOTVkZTVjY2I1MTM2MzdjNGE4ZmY4MGNlNjk5ODM0MTAyYWQzYQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MmI1ZDkwNzNhOTMwZTc1NjVkMTgwMzE2N2IxNDJmZjdhZmRjNGFkNzlmZmU1
|
10
|
+
NjQ4MjUzMzVjNzg5NjUxMjk1MWEyYTJlYzQzYmY0NTE2MDc2OThmODU0MzAy
|
11
|
+
ZWNmMzY0Yjc5MmYxMDIwMGE2MzZmNDA4YTVlN2JmZjkxMjFmMTA=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
OGUwYzc5OWYxMzhkYzg1MmU5MDYwZjkzZDU3YzQxZGZiNWUzZDQ3NDgxMmY2
|
14
|
+
Y2UzMjhlZWI0OGM4NjE3NGNmYjEwYWNiYTFjNTUxMzBmZWM1NTJmYjM1MmQ3
|
15
|
+
NzE0MGNkOWY4ZTk4ZGE0OGY3ZjE1ZDgxMDVhNGRjNjNlM2M4YjU=
|
data/.gitignore
ADDED
data/.pryrc
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'listen'
|
2
|
+
|
3
|
+
listener = Listen.to('./lib', only: /\.rb$/) do |modified, added, removed|
|
4
|
+
modified.each do |m|
|
5
|
+
puts "[modified] [code] Reloading: #{m} - #{load(m)}"
|
6
|
+
end
|
7
|
+
added.each do |a|
|
8
|
+
puts "[added] [code] Loading: #{a} - #{load(a)}"
|
9
|
+
end
|
10
|
+
puts "[removed] #{removed}" unless removed.empty?
|
11
|
+
end
|
12
|
+
|
13
|
+
listener.start # not blocking
|
14
|
+
#listener.only /\.(rb|yml)$/
|
15
|
+
|
16
|
+
require 'rake'
|
17
|
+
|
18
|
+
load 'Rakefile'
|
19
|
+
|
20
|
+
cert_folder = File.dirname(__FILE__) + '/spec/certificates/'
|
21
|
+
$key = OpenSSL::PKey::RSA.new(IO.binread(cert_folder + 'pk.pem'))
|
22
|
+
$cert = OpenSSL::X509::Certificate.new(IO.binread(cert_folder + 'cert.pem'))
|
23
|
+
$ca_cert = cert_folder + 'ca.pem'
|
24
|
+
|
25
|
+
def get_pe_api
|
26
|
+
PuppetRestClient::PE::Connection.new(
|
27
|
+
:server_url => 'https://learning.puppetlabs.vm:8140',
|
28
|
+
:connection_options => {
|
29
|
+
:request => {
|
30
|
+
:open_timeout => 30
|
31
|
+
},
|
32
|
+
:ssl => {
|
33
|
+
:client_key => $key,
|
34
|
+
:client_cert => $cert,
|
35
|
+
:ca_file => $ca_cert,
|
36
|
+
:verify => true,
|
37
|
+
#Additional options: vendor/jruby/1.9/gems/faraday-0.8.8/lib/faraday/adapter/net_http.rb
|
38
|
+
}
|
39
|
+
}
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
def get_db_api
|
44
|
+
PuppetRestClient::DB::Connection.new(
|
45
|
+
:server_url => 'https://learning.puppetlabs.vm:8081',
|
46
|
+
:connection_options => {
|
47
|
+
:request => {
|
48
|
+
:open_timeout => 30
|
49
|
+
},
|
50
|
+
:ssl => {
|
51
|
+
:client_key => $key,
|
52
|
+
:client_cert => $cert,
|
53
|
+
:ca_file => $ca_cert,
|
54
|
+
:verify => true
|
55
|
+
}
|
56
|
+
}
|
57
|
+
)
|
58
|
+
end
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
puppet-rest (0.0.3)
|
5
|
+
faraday (~> 0.8.8)
|
6
|
+
multi_json
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: http://rubygems.org/
|
10
|
+
specs:
|
11
|
+
activesupport (4.2.4)
|
12
|
+
i18n (~> 0.7)
|
13
|
+
json (~> 1.7, >= 1.7.7)
|
14
|
+
minitest (~> 5.1)
|
15
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
16
|
+
tzinfo (~> 1.1)
|
17
|
+
coderay (1.1.0)
|
18
|
+
diff-lcs (1.2.5)
|
19
|
+
faraday (0.8.11)
|
20
|
+
multipart-post (~> 1.2.0)
|
21
|
+
ffi (1.9.10)
|
22
|
+
i18n (0.7.0)
|
23
|
+
json (1.8.3)
|
24
|
+
listen (3.0.3)
|
25
|
+
rb-fsevent (>= 0.9.3)
|
26
|
+
rb-inotify (>= 0.9)
|
27
|
+
method_source (0.8.2)
|
28
|
+
minitest (5.8.1)
|
29
|
+
multi_json (1.11.2)
|
30
|
+
multipart-post (1.2.0)
|
31
|
+
pry (0.10.3)
|
32
|
+
coderay (~> 1.1.0)
|
33
|
+
method_source (~> 0.8.1)
|
34
|
+
slop (~> 3.4)
|
35
|
+
rake (10.4.2)
|
36
|
+
rb-fsevent (0.9.6)
|
37
|
+
rb-inotify (0.9.5)
|
38
|
+
ffi (>= 0.5.0)
|
39
|
+
rspec (3.3.0)
|
40
|
+
rspec-core (~> 3.3.0)
|
41
|
+
rspec-expectations (~> 3.3.0)
|
42
|
+
rspec-mocks (~> 3.3.0)
|
43
|
+
rspec-core (3.3.2)
|
44
|
+
rspec-support (~> 3.3.0)
|
45
|
+
rspec-expectations (3.3.1)
|
46
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
47
|
+
rspec-support (~> 3.3.0)
|
48
|
+
rspec-mocks (3.3.2)
|
49
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
50
|
+
rspec-support (~> 3.3.0)
|
51
|
+
rspec-support (3.3.0)
|
52
|
+
shoulda (3.5.0)
|
53
|
+
shoulda-context (~> 1.0, >= 1.0.1)
|
54
|
+
shoulda-matchers (>= 1.4.1, < 3.0)
|
55
|
+
shoulda-context (1.2.1)
|
56
|
+
shoulda-matchers (2.8.0)
|
57
|
+
activesupport (>= 3.0.0)
|
58
|
+
slop (3.6.0)
|
59
|
+
thread_safe (0.3.5)
|
60
|
+
tzinfo (1.2.2)
|
61
|
+
thread_safe (~> 0.1)
|
62
|
+
|
63
|
+
PLATFORMS
|
64
|
+
ruby
|
65
|
+
|
66
|
+
DEPENDENCIES
|
67
|
+
listen
|
68
|
+
pry
|
69
|
+
puppet-rest!
|
70
|
+
rake
|
71
|
+
rspec
|
72
|
+
shoulda
|
73
|
+
shoulda-matchers
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2013 CloudHealth Tech
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
Puppet Ruby REST Client
|
2
|
+
========
|
3
|
+
|
4
|
+
Interact with Puppet and PuppetDB through their REST Apis
|
5
|
+
|
6
|
+
Certificates
|
7
|
+
---------
|
8
|
+
|
9
|
+
* On Puppet Master: `sudo puppet cert --generate learning.puppetlabs.vm`
|
10
|
+
* Copy the 3 files to a remote computer:
|
11
|
+
* /etc/puppetlabs/puppet/ssl/private_keys/learning.puppetlabs.vm.pem
|
12
|
+
* /etc/puppetlabs/puppet/ssl/certs/learning.puppetlabs.vm.pem
|
13
|
+
* /etc/puppetlabs/puppet/ssl/certs/ca.pem
|
14
|
+
* Test 2015.02+
|
15
|
+
* Puppet Enterprise
|
16
|
+
* `curl -X GET --cacert ca.pem --cert learning.puppetlabs.vm.cert.pem --key learning.puppetlabs.vm.priv-key.pem -H 'Accept: pson' 'https://learning.puppetlabs.vm:8140/puppet/v3/node/learning.puppetlabs.vm?environment=production'`
|
17
|
+
* PuppetDB
|
18
|
+
* `curl -X GET -H 'Accept: application/json' --cacert ca.pem --cert learning.puppetlabs.vm.cert.pem --key learning.puppetlabs.vm.priv-key.pem 'https://learning.puppetlabs.vm:8081/pdb/query/v4/facts'`
|
19
|
+
* Test Legacy
|
20
|
+
* Puppet Enterprise
|
21
|
+
* `curl -X GET --cacert ca.pem --cert learning.puppetlabs.vm.cert.pem --key learning.puppetlabs.vm.priv-key.pem 'https://learning.puppetlabs.vm:8140/v2/catalogs/learning.puppetlabs.vm'`
|
22
|
+
* PuppetDB
|
23
|
+
* `curl -X GET --cacert ca.pem --cert learning.puppetlabs.vm.cert.pem --key learning.puppetlabs.vm.priv-key.pem 'https://learning.puppetlabs.vm:8081/v2/facts'`
|
24
|
+
|
25
|
+
Configure PuppetDB
|
26
|
+
--------
|
27
|
+
|
28
|
+
* Change PuppetDB Listen Directive
|
29
|
+
* If puppet is not managing puppetdb:
|
30
|
+
* Reference: http://docs.puppetlabs.com/puppetdb/1.3/configure.html#host
|
31
|
+
* Edit /etc/puppetlabs/puppetdb/conf.d/jetty.ini to listen on 0.0.0.0
|
32
|
+
* /etc/init.d/pe-puppetdb restart
|
33
|
+
* Otherwise, change through the puppet portal
|
34
|
+
* Add `listen_host` to `pe_puppetdb` class with value of `0.0.0.0`
|
35
|
+
* Force a puppet run to change in /etc/puppetlabs/puppetdb/conf.d/jetty.ini
|
36
|
+
* If PuppetDB is using its own certs, and not the Puppet Master's:
|
37
|
+
* sudo /opt/puppet/sbin/puppetdb-ssl-setup -f
|
38
|
+
* sudo /etc/init.d/pe-puppetdb restart
|
39
|
+
* (Wait a few min for it to actually restart)
|
40
|
+
* Make sure your ec2 security groups have 8081 open between your internal instances
|
41
|
+
|
42
|
+
Configure Puppet Master
|
43
|
+
--------
|
44
|
+
|
45
|
+
* Edit /etc/puppetlabs/puppet/auth.conf, and change:
|
46
|
+
|
47
|
+
```
|
48
|
+
path ~ ^/catalog/([^/]+)$
|
49
|
+
method find
|
50
|
+
auth yes
|
51
|
+
allow $1
|
52
|
+
```
|
53
|
+
|
54
|
+
to
|
55
|
+
|
56
|
+
<pre>
|
57
|
+
path ~ ^/catalog/([^/]+)$
|
58
|
+
method find
|
59
|
+
auth yes
|
60
|
+
allow $1<b>, aggregator</b>
|
61
|
+
</pre>
|
62
|
+
|
63
|
+
Useful Links
|
64
|
+
---------
|
65
|
+
|
66
|
+
* http://docs.puppetlabs.com/puppetdb/latest/install_from_source.html
|
67
|
+
* http://docs.puppetlabs.com/puppetdb/latest/configure.html#certificate-whitelist
|
68
|
+
* http://docs.puppetlabs.com/puppetdb/1.5/api/query/curl.html
|
69
|
+
* http://docs.puppetlabs.com/guides/inventory_service.html
|
70
|
+
|
71
|
+
About
|
72
|
+
---------
|
73
|
+
|
74
|
+
puppet-rest was inspired by [spice](https://github.com/danryan/spice) and follows its framework.
|
75
|
+
|
76
|
+
Copyright
|
77
|
+
---------
|
78
|
+
|
79
|
+
Copyright (c) 2013 CloudHealth Tech. See LICENSE.txt for further details.
|
80
|
+
|
81
|
+
Puppet, PuppetDB and related trademarks are Copyright (c) 2005-2013 Puppet Labs Inc. Puppet and PuppetDB are released under the Apache 2.0 license.
|
data/Rakefile
ADDED
data/lib/puppet-rest.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'multi_json'
|
3
|
+
|
4
|
+
module PuppetRestClient
|
5
|
+
module PE; end
|
6
|
+
module DB; end
|
7
|
+
end
|
8
|
+
|
9
|
+
require_relative 'puppet-rest/monkey_patches/mash'
|
10
|
+
require_relative 'puppet-rest/monkey_patches/hash'
|
11
|
+
require_relative 'puppet-rest/monkey_patches/array'
|
12
|
+
require_relative 'puppet-rest/monkey_patches/enumerable'
|
13
|
+
|
14
|
+
require_relative 'puppet-rest/version'
|
15
|
+
require_relative 'puppet-rest/error'
|
16
|
+
|
17
|
+
require_relative 'puppet-rest/identity_map'
|
18
|
+
require_relative 'puppet-rest/response/client_error'
|
19
|
+
require_relative 'puppet-rest/response/parse_json'
|
20
|
+
|
21
|
+
require_relative 'puppet-rest/pe/config'
|
22
|
+
require_relative 'puppet-rest/pe/request'
|
23
|
+
require_relative 'puppet-rest/pe/entities/base'
|
24
|
+
require_relative 'puppet-rest/pe/entities/node'
|
25
|
+
require_relative 'puppet-rest/pe/entities/catalog'
|
26
|
+
require_relative 'puppet-rest/pe/connection/node'
|
27
|
+
require_relative 'puppet-rest/pe/connection/catalog'
|
28
|
+
require_relative 'puppet-rest/pe/connection/ca_cert'
|
29
|
+
require_relative 'puppet-rest/pe/connection'
|
30
|
+
require_relative 'puppet-rest/pe/client'
|
31
|
+
|
32
|
+
require_relative 'puppet-rest/db/config'
|
33
|
+
require_relative 'puppet-rest/db/entities/base'
|
34
|
+
require_relative 'puppet-rest/db/entities/node'
|
35
|
+
require_relative 'puppet-rest/db/entities/fact'
|
36
|
+
require_relative 'puppet-rest/db/entities/resource'
|
37
|
+
require_relative 'puppet-rest/db/request'
|
38
|
+
require_relative 'puppet-rest/db/connection/nodes'
|
39
|
+
require_relative 'puppet-rest/db/connection/fact-names'
|
40
|
+
require_relative 'puppet-rest/db/connection/facts'
|
41
|
+
require_relative 'puppet-rest/db/connection/resources'
|
42
|
+
require_relative 'puppet-rest/db/connection'
|
43
|
+
require_relative 'puppet-rest/db/client'
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module PuppetRestClient::DB
|
2
|
+
extend PuppetRestClient::DB::Config
|
3
|
+
|
4
|
+
class << self
|
5
|
+
# Convenience alias for PuppetRestClient::DB::Connection.new
|
6
|
+
#
|
7
|
+
# return [PuppetRestClient::DB::Connection]
|
8
|
+
def new(options=Mash.new)
|
9
|
+
PuppetRestClient::DB::Connection.new(options)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Delegate methods to PuppetRestClient::Connection
|
13
|
+
def method_missing(method, *args, &block)
|
14
|
+
return super unless new.respond_to?(method)
|
15
|
+
new.send(method, *args, &block)
|
16
|
+
end
|
17
|
+
|
18
|
+
def respond_to?(method, include_private=false)
|
19
|
+
new.respond_to?(method, include_private) || super(method, include_private)
|
20
|
+
end
|
21
|
+
|
22
|
+
def read_key_file(path)
|
23
|
+
key_file_path = File.expand_path(path)
|
24
|
+
|
25
|
+
begin
|
26
|
+
raw_key = File.read(key_file_path).strip
|
27
|
+
rescue SystemCallError, IOError => e
|
28
|
+
raise IOError, "Unable to read #{key_file_path}"
|
29
|
+
end
|
30
|
+
|
31
|
+
begin_rsa = '-----BEGIN RSA PRIVATE KEY-----'
|
32
|
+
end_rsa = '-----END RSA PRIVATE KEY-----'
|
33
|
+
|
34
|
+
unless (raw_key =~ /\A#{begin_rsa}$/) && (raw_key =~ /^#{end_rsa}\Z/)
|
35
|
+
msg = "The file #{key_file_path} is not a properly formatted private key.\n"
|
36
|
+
msg << "It must contain '#{begin_rsa}' and '#{end_rsa}'"
|
37
|
+
raise ArgumentError, msg
|
38
|
+
end
|
39
|
+
return OpenSSL::PKey::RSA.new(raw_key)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module PuppetRestClient::DB
|
2
|
+
module Config
|
3
|
+
|
4
|
+
# The default Chef server URL
|
5
|
+
DEFAULT_SERVER_URL = 'http://localhost:8080'
|
6
|
+
|
7
|
+
# The default Spice User-Agent header
|
8
|
+
DEFAULT_USER_AGENT = "PuppetRestClient #{PuppetRestClient::VERSION}"
|
9
|
+
|
10
|
+
# Default connection options
|
11
|
+
DEFAULT_CONNECTION_OPTIONS = {}
|
12
|
+
|
13
|
+
# Default client name
|
14
|
+
DEFAULT_CLIENT_NAME = ''
|
15
|
+
|
16
|
+
# Default key file
|
17
|
+
DEFAULT_CLIENT_KEY = ''
|
18
|
+
|
19
|
+
# Default puppetdb rest api version (e.g. v1, v2, v3, pdb/query/v4)
|
20
|
+
DEFAULT_API_VERSION = 'v2'
|
21
|
+
|
22
|
+
# An array of valid config options
|
23
|
+
VALID_OPTIONS_KEYS = [
|
24
|
+
:server_url,
|
25
|
+
:api_version,
|
26
|
+
:client_name,
|
27
|
+
:client_key,
|
28
|
+
:user_agent,
|
29
|
+
:connection_options,
|
30
|
+
:middleware
|
31
|
+
]
|
32
|
+
|
33
|
+
# Default middleware stack
|
34
|
+
DEFAULT_MIDDLEWARE = Proc.new do |builder|
|
35
|
+
builder.use PuppetRestClient::Response::ParseJSON
|
36
|
+
builder.use PuppetRestClient::Response::ClientError
|
37
|
+
builder.adapter Faraday.default_adapter
|
38
|
+
end
|
39
|
+
|
40
|
+
VALID_OPTIONS_KEYS.each do |key|
|
41
|
+
attr_accessor key
|
42
|
+
end
|
43
|
+
|
44
|
+
# Reset all config options to default when the module is extended
|
45
|
+
def self.extended(base)
|
46
|
+
base.reset
|
47
|
+
end # def self.extended
|
48
|
+
|
49
|
+
# Convenience method to configure PuppetRestClient in a block
|
50
|
+
# @example Configuring PuppetRestClient
|
51
|
+
# PuppetRestClient.setup do |s|
|
52
|
+
# s.server_url = "http://puppetdb.example.com:8081"
|
53
|
+
# s.client_name = "admin"
|
54
|
+
# s.client_key = PuppetRestClient.read_key_file("/path/to/key_file.pem")
|
55
|
+
# end
|
56
|
+
# @yieldparam PuppetRestClient
|
57
|
+
# @yieldreturn PuppetRestClient
|
58
|
+
def setup
|
59
|
+
yield self
|
60
|
+
self
|
61
|
+
end
|
62
|
+
|
63
|
+
# Create an options hash from valid options keys
|
64
|
+
def options
|
65
|
+
options = {}
|
66
|
+
VALID_OPTIONS_KEYS.each{|k| options[k] = send(k)}
|
67
|
+
options
|
68
|
+
end
|
69
|
+
|
70
|
+
# Reset all config options to their defaults
|
71
|
+
def reset
|
72
|
+
self.user_agent = DEFAULT_USER_AGENT
|
73
|
+
self.api_version = DEFAULT_API_VERSION
|
74
|
+
self.server_url = DEFAULT_SERVER_URL
|
75
|
+
self.client_name = DEFAULT_CLIENT_NAME
|
76
|
+
self.client_key = DEFAULT_CLIENT_KEY
|
77
|
+
self.connection_options = DEFAULT_CONNECTION_OPTIONS
|
78
|
+
self.middleware = DEFAULT_MIDDLEWARE
|
79
|
+
self
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|