kuby-linode 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/kuby-linode.gemspec +0 -1
- data/lib/kuby/linode/client.rb +38 -35
- data/lib/kuby/linode/version.rb +1 -1
- metadata +3 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ef921c80cb878286577fc739b1f7251ca2f65e902ed235b9686e20f8efb9477
|
4
|
+
data.tar.gz: 3e4699bb0037b9698650c090ad0065d6bdd76717e03616803c1670de09b7bda4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a7bc044c46d8af896bae55f0a9085d2a300a085bb6c0e7f960416e8cef5d7e23e1fb67985d2b2ba0e415a5ffc1441a2199149f82e9850384d54a694fddadc83
|
7
|
+
data.tar.gz: 50cfd0daf6a9c20c641898fcd78dc0e227832eebb57b52e9aa691211ee04087b63e5004a91db77fb2804922c4622659800a39379092c5853bd8e607a9307c5e2
|
data/CHANGELOG.md
CHANGED
data/kuby-linode.gemspec
CHANGED
data/lib/kuby/linode/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'base64'
|
2
|
-
require '
|
2
|
+
require 'net/http'
|
3
|
+
require 'uri'
|
3
4
|
|
4
5
|
module Kuby
|
5
6
|
module Linode
|
@@ -24,31 +25,40 @@ module Kuby
|
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
28
|
+
class BearerAuth
|
29
|
+
attr_reader :access_token
|
30
|
+
|
31
|
+
def initialize(access_token:)
|
32
|
+
@access_token = access_token
|
33
|
+
end
|
34
|
+
|
35
|
+
def make_get(path)
|
36
|
+
Net::HTTP::Get.new(path).tap do |request|
|
37
|
+
request['Authorization'] = "Bearer #{access_token}"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
27
42
|
class Client
|
28
43
|
API_URL = 'https://api.linode.com'.freeze
|
29
44
|
KUBECONFIG_PATH = '/v4/lke/clusters/%{cluster_id}/kubeconfig'.freeze
|
30
45
|
|
31
46
|
def self.create(access_token:)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
new(
|
41
|
-
Faraday.new(options) do |faraday|
|
42
|
-
faraday.request(:retry, max: 3)
|
43
|
-
faraday.adapter(:net_http)
|
44
|
-
end
|
45
|
-
)
|
47
|
+
uri = URI(API_URL)
|
48
|
+
|
49
|
+
connection = Net::HTTP.new(uri.host, uri.port).tap do |http|
|
50
|
+
http.use_ssl = true if uri.scheme == 'https'
|
51
|
+
end
|
52
|
+
|
53
|
+
auth = BearerAuth.new(access_token: access_token)
|
54
|
+
new(connection, auth)
|
46
55
|
end
|
47
56
|
|
48
|
-
attr_reader :connection
|
57
|
+
attr_reader :connection, :auth
|
49
58
|
|
50
|
-
def initialize(connection)
|
59
|
+
def initialize(connection, auth)
|
51
60
|
@connection = connection
|
61
|
+
@auth = auth
|
52
62
|
end
|
53
63
|
|
54
64
|
def kubeconfig(cluster_id)
|
@@ -58,32 +68,25 @@ module Kuby
|
|
58
68
|
|
59
69
|
private
|
60
70
|
|
61
|
-
def
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
response = get(url, params)
|
71
|
+
def get_json(path)
|
72
|
+
request = auth.make_get(path)
|
73
|
+
request['Accept'] = 'application/json'
|
74
|
+
response = connection.request(request)
|
75
|
+
potentially_raise_error!(response)
|
67
76
|
JSON.parse(response.body)
|
68
77
|
end
|
69
78
|
|
70
|
-
def act(verb, *args)
|
71
|
-
connection.send(verb, *args).tap do |response|
|
72
|
-
potentially_raise_error!(response)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
79
|
def potentially_raise_error!(response)
|
77
|
-
case response.
|
80
|
+
case response.code.to_i
|
78
81
|
when 401
|
79
|
-
raise UnauthorizedError, "401 Unauthorized: #{response.
|
82
|
+
raise UnauthorizedError, "401 Unauthorized: #{response.message}"
|
80
83
|
when 404
|
81
|
-
raise NotFoundError, "404 Not Found: #{response.
|
84
|
+
raise NotFoundError, "404 Not Found: #{response.message}"
|
82
85
|
else
|
83
86
|
if failure_response?(response)
|
84
87
|
raise ApiError.new(
|
85
|
-
"HTTP #{response.
|
86
|
-
response.
|
88
|
+
"HTTP #{response.code}: #{response.message}, body: #{response.body}",
|
89
|
+
response.code
|
87
90
|
)
|
88
91
|
end
|
89
92
|
end
|
@@ -91,7 +94,7 @@ module Kuby
|
|
91
94
|
|
92
95
|
def failure_response?(response)
|
93
96
|
data = JSON.parse(response.body) rescue {}
|
94
|
-
(response.
|
97
|
+
(response.code.to_i / 100) != 2 || data['message'] == 'failure'
|
95
98
|
end
|
96
99
|
end
|
97
100
|
end
|
data/lib/kuby/linode/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kuby-linode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Dutro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: faraday
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.17'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.17'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: kube-dsl
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -74,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: '0'
|
76
62
|
requirements: []
|
77
|
-
rubygems_version: 3.
|
63
|
+
rubygems_version: 3.2.22
|
78
64
|
signing_key:
|
79
65
|
specification_version: 4
|
80
66
|
summary: Linode provider for Kuby.
|