Class: Puppet::Provider::Rbac_api
- Inherits:
-
Puppet::Provider
- Object
- Puppet::Provider
- Puppet::Provider::Rbac_api
- Defined in:
- lib/puppet/provider/rbac_api.rb
Constant Summary collapse
- CONFIGFILE =
"#{Puppet.settings[:confdir]}/classifier.yaml"
Class Method Summary collapse
- .build_auth(uri) ⇒ Object
- .delete_response(endpoint) ⇒ Object
- .fetch_redirect(uri_str, limit = 10) ⇒ Object
- .get_response(endpoint) ⇒ Object
- .make_uri(path, prefix = '/rbac-api/v1') ⇒ Object
- .post_response(endpoint, request_body) ⇒ Object
- .put_response(endpoint, request_body) ⇒ Object
Class Method Details
.build_auth(uri) ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/puppet/provider/rbac_api.rb', line 16 def self.build_auth(uri) https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true https.ssl_version = :TLSv1 https.ca_file = Puppet.settings[:localcacert] https.key = OpenSSL::PKey::RSA.new(File.read(Puppet.settings[:hostprivkey])) https.cert = OpenSSL::X509::Certificate.new(File.read(Puppet.settings[:hostcert])) https.verify_mode = OpenSSL::SSL::VERIFY_PEER https end |
.delete_response(endpoint) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/puppet/provider/rbac_api.rb', line 70 def self.delete_response(endpoint) uri = make_uri(endpoint) https = build_auth(uri) Puppet.debug "RBAC API: DELETE #{uri.request_uri}" request = Net::HTTP::Delete.new(uri.request_uri) request['Content-Type'] = "application/json" res = https.request(request) if res.code != "200" raise Puppet::Error, "An RBAC API error occured: HTTP #{res.code}, #{res.body}" end end |
.fetch_redirect(uri_str, limit = 10) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/puppet/provider/rbac_api.rb', line 32 def self.fetch_redirect(uri_str, limit = 10) raise ArgumentError, 'HTTP redirection has reached the limit beyond 10' if limit == 0 uri = make_uri(uri_str, nil) https = build_auth(uri) Puppet.debug "RBAC API: REDIRECT #{uri.request_uri}" request = Net::HTTP::Get.new(uri.request_uri) res = https.request(request) case res when Net::HTTPSuccess then res when Net::HTTPRedirection then fetch_redirect(res['location'], limit - 1) else raise Puppet::Error, "An RBAC API error occured: HTTP #{res.code}, #{res.to_hash.inspect}" end end |
.get_response(endpoint) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/puppet/provider/rbac_api.rb', line 52 def self.get_response(endpoint) uri = make_uri(endpoint) https = build_auth(uri) Puppet.debug "RBAC API: GET #{uri.request_uri}" request = Net::HTTP::Get.new(uri.request_uri) request['Content-Type'] = "application/json" res = https.request(request) if res.code != "200" raise Puppet::Error, "An RBAC API error occured: HTTP #{res.code}, #{res.body}" end res_body = JSON.parse(res.body) res_body end |
.make_uri(path, prefix = '/rbac-api/v1') ⇒ Object
27 28 29 30 |
# File 'lib/puppet/provider/rbac_api.rb', line 27 def self.make_uri(path, prefix = '/rbac-api/v1') uri = URI.parse("https://#{@config['server']}:#{@config['port']}#{prefix}#{path}") uri end |
.post_response(endpoint, request_body) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/puppet/provider/rbac_api.rb', line 99 def self.post_response(endpoint, request_body) limit = 10 uri = make_uri(endpoint) https = build_auth(uri) Puppet.debug "RBAC API: POST #{uri.request_uri}" request = Net::HTTP::Post.new(uri.request_uri) request['Content-Type'] = "application/json" request.body = request_body.to_json res = https.request(request) case res when Net::HTTPSuccess then res when Net::HTTPRedirection then fetch_redirect(res['location'], limit - 1) else raise Puppet::Error, "An RBAC API error occured: HTTP #{res.code}, #{res.to_hash.inspect}" end end |
.put_response(endpoint, request_body) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/puppet/provider/rbac_api.rb', line 84 def self.put_response(endpoint, request_body) uri = make_uri(endpoint) https = build_auth(uri) Puppet.debug "RBAC API: PUT #{uri.request_uri}" request = Net::HTTP::Put.new(uri.request_uri) request['Content-Type'] = "application/json" request.body = request_body.to_json res = https.request(request) if res.code != "200" raise Puppet::Error, "An RBAC API error occured: HTTP #{res.code}, #{res.body}" end end |