Class: PEClient::Client
- Inherits:
-
Object
- Object
- PEClient::Client
- Defined in:
- lib/pe_client/client.rb
Overview
Client for interacting with PE services
Instance Attribute Summary collapse
-
#api_key ⇒ String
readonly
API key for authentication.
-
#base_url ⇒ String, URI
readonly
Base URL for the PE API.
-
#connection ⇒ Faraday::Connection
readonly
Faraday connection object.
Instance Method Summary collapse
- #activity_v1 ⇒ Resource::ActivityV1
- #activity_v2 ⇒ Resource::ActivityV2
- #code_manager_v1 ⇒ Resource::CodeManagerV1
-
#deep_dup ⇒ PEClient::Client
Create a deep duplicate of the client.
-
#delete(path, body: nil, params: {}, headers: {}) ⇒ Object
HTTP DELETE request.
-
#get(path, params: {}, headers: {}) ⇒ Object
HTTP GET request.
-
#handle_response(response, headers_only: false) ⇒ Object
Handle HTTP response.
-
#head(path, params: {}, headers: {}) ⇒ Hash
HTTP HEAD request.
-
#initialize(api_key:, base_url:, ca_file:, &block) {|Faraday::Connection| ... } ⇒ Client
constructor
A new instance of Client.
- #metrics_v1 ⇒ Resource::MetricsV1
- #metrics_v2 ⇒ Resource::MetricsV2
- #node_classifier_v1 ⇒ Resource::NodeClassifierV1
- #node_inventory_v1 ⇒ Resource::NodeInventoryV1
- #orchestrator_v1 ⇒ Resource::OrchestratorV1
-
#post(path, body: {}, params: {}, headers: {}) ⇒ Object
HTTP POST request.
- #puppet_admin_v1 ⇒ Resource::PuppetAdminV1
- #puppet_ca_v1 ⇒ Resource::PuppetCAV1
- #puppet_db ⇒ Resource::PuppetDB
- #puppet_v3 ⇒ Resource::PuppetV3
-
#put(path, body: {}, params: {}, headers: {}) ⇒ Object
HTTP PUT request.
- #rbac_v1 ⇒ Resource::RBACV1
- #rbac_v2 ⇒ Resource::RBACV2
- #status_v1 ⇒ Resource::StatusV1
Constructor Details
#initialize(api_key:, base_url:, ca_file:, &block) {|Faraday::Connection| ... } ⇒ Client
Returns a new instance of Client.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/pe_client/client.rb', line 36 def initialize(api_key:, base_url:, ca_file:, &block) @api_key = api_key @base_url = base_url.is_a?(URI) ? base_url : URI.parse(base_url) @provisioning_block = block @connection = Faraday.new(url: base_url) do |conn| conn.request :json conn.request :multipart, content_type: "multipart/mixed" conn.response :json, content_type: /\bjson$/ conn.headers["User-Agent"] = "PEClient/#{PEClient::VERSION} Ruby/#{RUBY_VERSION}".freeze conn.headers["X-Authentication"] = @api_key unless @api_key.nil? conn.ssl[:ca_file] = ca_file conn..params_encoder = Faraday::FlatParamsEncoder block&.call(conn) conn.adapter Faraday.default_adapter end end |
Instance Attribute Details
#api_key ⇒ String (readonly)
API key for authentication
27 28 29 |
# File 'lib/pe_client/client.rb', line 27 def api_key @api_key end |
#base_url ⇒ String, URI (readonly)
Base URL for the PE API
27 28 29 |
# File 'lib/pe_client/client.rb', line 27 def base_url @base_url end |
#connection ⇒ Faraday::Connection (readonly)
Faraday connection object
27 28 29 |
# File 'lib/pe_client/client.rb', line 27 def connection @connection end |
Instance Method Details
#activity_v1 ⇒ Resource::ActivityV1
178 179 180 181 |
# File 'lib/pe_client/client.rb', line 178 def activity_v1 require_relative "resources/activity.v1" @activity_v1 ||= Resource::ActivityV1.new(self) end |
#activity_v2 ⇒ Resource::ActivityV2
184 185 186 187 |
# File 'lib/pe_client/client.rb', line 184 def activity_v2 require_relative "resources/activity.v2" @activity_v2 ||= Resource::ActivityV2.new(self) end |
#code_manager_v1 ⇒ Resource::CodeManagerV1
166 167 168 169 |
# File 'lib/pe_client/client.rb', line 166 def code_manager_v1 require_relative "resources/code_manager.v1" @code_manager_v1 ||= Resource::CodeManagerV1.new(self) end |
#deep_dup ⇒ PEClient::Client
Create a deep duplicate of the client
59 60 61 62 63 64 65 66 |
# File 'lib/pe_client/client.rb', line 59 def deep_dup self.class.new( api_key: @api_key.dup, base_url: @base_url.dup, ca_file: @connection.ssl[:ca_file].dup, &@provisioning_block ) end |
#delete(path, body: nil, params: {}, headers: {}) ⇒ Object
HTTP DELETE request
113 114 115 116 117 118 119 120 121 122 |
# File 'lib/pe_client/client.rb', line 113 def delete(path, body: nil, params: {}, headers: {}) if body response = connection.delete(path, params, headers) do |req| req.body = body end handle_response response else handle_response connection.delete(path, params, headers) end end |
#get(path, params: {}, headers: {}) ⇒ Object
HTTP GET request
75 76 77 |
# File 'lib/pe_client/client.rb', line 75 def get(path, params: {}, headers: {}) handle_response connection.get(path, params, headers) end |
#handle_response(response, headers_only: false) ⇒ Object
Handle HTTP response
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 |
# File 'lib/pe_client/client.rb', line 233 def handle_response(response, headers_only: false) case response.status when 204 # No Content headers_only ? response.headers : {} when 200..299 headers_only ? response.headers : response.body when 303 # See Other {"location" => response.headers["Location"]} when 400 raise BadRequestError, response when 401 raise UnauthorizedError, response when 403 raise ForbiddenError, response when 404 raise NotFoundError, response when 409 raise ConflictError, response when 500..599 raise ServerError, response else raise HTTPError, response end end |
#head(path, params: {}, headers: {}) ⇒ Hash
HTTP HEAD request
131 132 133 |
# File 'lib/pe_client/client.rb', line 131 def head(path, params: {}, headers: {}) handle_response connection.head(path, params, headers), headers_only: true end |
#metrics_v1 ⇒ Resource::MetricsV1
190 191 192 193 |
# File 'lib/pe_client/client.rb', line 190 def metrics_v1 require_relative "resources/metrics.v1" @metrics_v1 ||= Resource::MetricsV1.new(self) end |
#metrics_v2 ⇒ Resource::MetricsV2
196 197 198 199 |
# File 'lib/pe_client/client.rb', line 196 def metrics_v2 require_relative "resources/metrics.v2" @metrics_v2 ||= Resource::MetricsV2.new(self) end |
#node_classifier_v1 ⇒ Resource::NodeClassifierV1
154 155 156 157 |
# File 'lib/pe_client/client.rb', line 154 def node_classifier_v1 require_relative "resources/node_classifier.v1" @node_classifier_v1 ||= Resource::NodeClassifierV1.new(self) end |
#node_inventory_v1 ⇒ Resource::NodeInventoryV1
136 137 138 139 |
# File 'lib/pe_client/client.rb', line 136 def node_inventory_v1 require_relative "resources/node_inventory.v1" @node_inventory_v1 ||= Resource::NodeInventoryV1.new(self) end |
#orchestrator_v1 ⇒ Resource::OrchestratorV1
160 161 162 163 |
# File 'lib/pe_client/client.rb', line 160 def orchestrator_v1 require_relative "resources/orchestrator.v1" @orchestrator_v1 ||= Resource::OrchestratorV1.new(self) end |
#post(path, body: {}, params: {}, headers: {}) ⇒ Object
HTTP POST request
87 88 89 90 |
# File 'lib/pe_client/client.rb', line 87 def post(path, body: {}, params: {}, headers: {}) path = "#{path}?#{URI.encode_www_form(params)}" unless params.empty? handle_response connection.post(path, body, headers) end |
#puppet_admin_v1 ⇒ Resource::PuppetAdminV1
202 203 204 205 |
# File 'lib/pe_client/client.rb', line 202 def puppet_admin_v1 require_relative "resources/puppet_admin.v1" @puppet_admin_v1 ||= Resource::PuppetAdminV1.new(self) end |
#puppet_ca_v1 ⇒ Resource::PuppetCAV1
214 215 216 217 |
# File 'lib/pe_client/client.rb', line 214 def puppet_ca_v1 require_relative "resources/puppet_ca.v1" @puppet_ca_v1 ||= Resource::PuppetCAV1.new(self) end |
#puppet_db ⇒ Resource::PuppetDB
220 221 222 223 |
# File 'lib/pe_client/client.rb', line 220 def puppet_db require_relative "resources/puppet_db" @puppet_db ||= Resource::PuppetDB.new(self) end |
#puppet_v3 ⇒ Resource::PuppetV3
208 209 210 211 |
# File 'lib/pe_client/client.rb', line 208 def puppet_v3 require_relative "resources/puppet.v3" @puppet_v3 ||= Resource::PuppetV3.new(self) end |
#put(path, body: {}, params: {}, headers: {}) ⇒ Object
HTTP PUT request
100 101 102 103 |
# File 'lib/pe_client/client.rb', line 100 def put(path, body: {}, params: {}, headers: {}) path = "#{path}?#{URI.encode_www_form(params)}" unless params.empty? handle_response connection.put(path, body, headers) end |
#rbac_v1 ⇒ Resource::RBACV1
142 143 144 145 |
# File 'lib/pe_client/client.rb', line 142 def rbac_v1 require_relative "resources/rbac.v1" @rbac_v1 ||= Resource::RBACV1.new(self) end |
#rbac_v2 ⇒ Resource::RBACV2
148 149 150 151 |
# File 'lib/pe_client/client.rb', line 148 def rbac_v2 require_relative "resources/rbac.v2" @rbac_v2 ||= Resource::RBACV2.new(self) end |
#status_v1 ⇒ Resource::StatusV1
172 173 174 175 |
# File 'lib/pe_client/client.rb', line 172 def status_v1 require_relative "resources/status.v1" @status_v1 ||= Resource::StatusV1.new(self) end |