ruby-kubernetes-controller 0.1.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.
@@ -0,0 +1,182 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'openssl'
4
+ require 'json'
5
+
6
+ require_relative 'generic'
7
+
8
+ module Endpoints
9
+
10
+ include Generic
11
+
12
+ # Create new Endpoint
13
+ def create_new_endpoint(namespace, config)
14
+ extension = "/api/v1/namespaces/#{namespace}/endpoints"
15
+
16
+ uri = prepareURI(@endpoint, extension)
17
+
18
+ request = prepareGenericRequest(uri, @bearer_token, "POST")
19
+ request.content_type = "application/json"
20
+
21
+ if @yaml
22
+ request.body = yaml_file_to_json(config)
23
+ else
24
+ request.body = config
25
+ end
26
+
27
+ req_options = prepareGenericRequestOptions(@ssl, uri)
28
+
29
+ begin
30
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
31
+ http.request(request)
32
+ end
33
+ return response.body
34
+
35
+ rescue Errno::ECONNREFUSED
36
+ raise "Connection for host #{uri.hostname} refused"
37
+ end
38
+ end
39
+
40
+ # Get all Endpoints
41
+ def get_all_endpoints
42
+ extension = "/api/v1/endpoints"
43
+
44
+ uri = prepareURI(@endpoint, extension)
45
+
46
+ request = prepareGenericRequest(uri, @bearer_token, "GET")
47
+
48
+ req_options = prepareGenericRequestOptions(@ssl, uri)
49
+
50
+ begin
51
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
52
+ http.request(request)
53
+ end
54
+ return response.body
55
+
56
+ rescue Errno::ECONNREFUSED
57
+ raise "Connection for host #{uri.hostname} refused"
58
+ end
59
+ end
60
+
61
+ # Get all existing Endpoints in Namespace
62
+ def get_all_namespaced_endpoints(namespace)
63
+ extension = "/api/v1/namespaces/#{namespace}/endpoints"
64
+
65
+ uri = prepareURI(@endpoint, extension)
66
+
67
+ request = prepareGenericRequest(uri, @bearer_token, "GET")
68
+
69
+ req_options = prepareGenericRequestOptions(@ssl, uri)
70
+
71
+ begin
72
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
73
+ http.request(request)
74
+ end
75
+ return response.body
76
+
77
+ rescue Errno::ECONNREFUSED
78
+ raise "Connection for host #{uri.hostname} refused"
79
+ end
80
+ end
81
+
82
+ # Get single Endpoint in Namespace
83
+ def get_single_namespaced_endpoint(namespace, endpoint_name)
84
+ extension = "/api/v1/namespaces/#{namespace}/endpoints/#{endpoint_name}"
85
+
86
+ uri = prepareURI(@endpoint, extension)
87
+
88
+ request = prepareGenericRequest(uri, @bearer_token, "GET")
89
+
90
+ req_options = prepareGenericRequestOptions(@ssl, uri)
91
+
92
+ begin
93
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
94
+ http.request(request)
95
+ end
96
+ return response.body
97
+ rescue Errno::ECONNREFUSED
98
+ raise "Connection for host #{uri.hostname} refused"
99
+ end
100
+ end
101
+
102
+ # Update existing Endpoint in Namespace
103
+ def update_namespaced_endpoint(namespace, endpoint_name, update)
104
+ extension = "/api/v1/namespaces/#{namespace}/endpoints/#{endpoint_name}"
105
+
106
+ uri = prepareURI(@endpoint, extension)
107
+
108
+ request = prepareGenericRequest(uri, @bearer_token, "PUT")
109
+ request.content_type = "application/json"
110
+
111
+ if @yaml
112
+ request.body = yaml_file_to_json(update)
113
+ else
114
+ request.body = update
115
+ end
116
+
117
+ req_options = prepareGenericRequestOptions(@ssl, uri)
118
+
119
+ begin
120
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
121
+ http.request(request)
122
+ end
123
+ return response.body
124
+
125
+ rescue Errno::ECONNREFUSED
126
+ raise "Connection for host #{uri.hostname} refused"
127
+ end
128
+ end
129
+
130
+ # Patch existing Endpoint
131
+ def patch_endpoint(namespace, endpoint_name, patch)
132
+ extension = "/api/v1/namespaces/#{namespace}/endpoints/#{endpoint_name}"
133
+
134
+ uri = prepareURI(@endpoint, extension)
135
+
136
+ request = prepareGenericRequest(uri, @bearer_token, "PATCH")
137
+ request.content_type = "application/json-patch+json"
138
+
139
+ request.body = patch
140
+
141
+ req_options = prepareGenericRequestOptions(@ssl, uri)
142
+
143
+ begin
144
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
145
+ http.request(request)
146
+ end
147
+ return response.body
148
+ rescue Errno::ECONNREFUSED
149
+ raise "Connection for host #{uri.hostname} refused"
150
+ end
151
+ end
152
+
153
+ # Delete existing Endpoint
154
+ def delete_endpoint(namespace, endpoint_name, options = '')
155
+ extension = "/api/v1/namespaces/#{namespace}/endpoints/#{endpoint_name}"
156
+
157
+ uri = prepareURI(@endpoint, extension)
158
+
159
+ request = prepareGenericRequest(uri, @bearer_token, "DELETE")
160
+ request.content_type = "application/json"
161
+
162
+ if @yaml
163
+ request.body = yaml_file_to_json(options)
164
+ else
165
+ request.body = options
166
+ end
167
+
168
+ req_options = prepareGenericRequestOptions(@ssl, uri)
169
+
170
+ begin
171
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
172
+ http.request(request)
173
+ end
174
+ return response.body
175
+
176
+ rescue Errno::ECONNREFUSED
177
+ raise "Connection for host #{uri.hostname} refused"
178
+ end
179
+ end
180
+
181
+ end
182
+
@@ -0,0 +1,70 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'openssl'
4
+ require 'json'
5
+ require 'yaml'
6
+ require 'open-uri'
7
+
8
+ module Generic
9
+ # Create a URI Object
10
+ def prepareURI(endpoint, extension)
11
+ URI.parse("https://#{endpoint}#{extension}")
12
+ end
13
+
14
+ # Prepare a Generic Request Object
15
+ def prepareGenericRequest(uri, bearer_token, type)
16
+ if type == "GET"
17
+ request = Net::HTTP::Get.new(uri)
18
+ elsif type == "PATCH"
19
+ request = Net::HTTP::Patch.new(uri)
20
+ elsif type == "PUT"
21
+ request = Net::HTTP::Put.new(uri)
22
+ elsif type == "POST"
23
+ request = Net::HTTP::Post.new(uri)
24
+ elsif type == "DELETE"
25
+ request = Net::HTTP::Delete.new(uri)
26
+ else
27
+ request = Net::HTTP::Get.new(uri)
28
+ end
29
+ request["Authorization"] = "Bearer #{bearer_token}"
30
+ request["Accept"] = "application/json"
31
+
32
+ request
33
+ end
34
+
35
+ # Prepare a Generic Request Options Object
36
+ def prepareGenericRequestOptions(ssl, uri)
37
+ if !ssl
38
+ req_options = {
39
+ use_ssl: uri.scheme == "https",
40
+ verify_mode: OpenSSL::SSL::VERIFY_NONE,
41
+ }
42
+ else
43
+ req_options = {
44
+ use_ssl: uri.scheme == "https",
45
+ }
46
+ end
47
+
48
+ req_options
49
+ end
50
+
51
+ # Check if entry is a valid JSON string
52
+ def check_valid_json(json)
53
+ !!JSON.parse(json)
54
+ rescue JSON::ParserError => _e
55
+ false
56
+ end
57
+
58
+ # Convert Yaml File to JSON
59
+ def yaml_file_to_json(yaml_file)
60
+ if !check_valid_json(yaml_file)
61
+ if yaml_file != ''
62
+ JSON.pretty_generate(YAML.load(open(yaml_file).read))
63
+ else
64
+ ''
65
+ end
66
+ else
67
+ raise 'JSON entered instead of yaml file for a yaml client'
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,180 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'openssl'
4
+ require 'json'
5
+
6
+ require_relative 'generic'
7
+
8
+ module Ingresses
9
+ include Generic
10
+
11
+ # Create new Ingress
12
+ def create_new_ingress(namespace, config)
13
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/ingresses"
14
+
15
+ uri = prepareURI(@endpoint, extension)
16
+
17
+ request = prepareGenericRequest(uri, @bearer_token, "POST")
18
+ request.content_type = "application/json"
19
+
20
+ if @yaml
21
+ request.body = yaml_file_to_json(config)
22
+ else
23
+ request.body = config
24
+ end
25
+
26
+ req_options = prepareGenericRequestOptions(@ssl, uri)
27
+
28
+ begin
29
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
30
+ http.request(request)
31
+ end
32
+ return response.body
33
+
34
+ rescue Errno::ECONNREFUSED
35
+ raise "Connection for host #{uri.hostname} refused"
36
+ end
37
+ end
38
+
39
+ # Get all Ingresses
40
+ def get_all_ingresses
41
+ extension = "/apis/extensions/v1beta1/ingresses"
42
+
43
+ uri = prepareURI(@endpoint, extension)
44
+
45
+ request = prepareGenericRequest(uri, @bearer_token, "GET")
46
+
47
+ req_options = prepareGenericRequestOptions(@ssl, uri)
48
+
49
+ begin
50
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
51
+ http.request(request)
52
+ end
53
+ return response.body
54
+
55
+ rescue Errno::ECONNREFUSED
56
+ raise "Connection for host #{uri.hostname} refused"
57
+ end
58
+ end
59
+
60
+ # Get all existing Ingresses in Namespace
61
+ def get_all_namespaced_ingresses(namespace)
62
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/ingresses"
63
+
64
+ uri = prepareURI(@endpoint, extension)
65
+
66
+ request = prepareGenericRequest(uri, @bearer_token, "GET")
67
+
68
+ req_options = prepareGenericRequestOptions(@ssl, uri)
69
+
70
+ begin
71
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
72
+ http.request(request)
73
+ end
74
+ return response.body
75
+
76
+ rescue Errno::ECONNREFUSED
77
+ raise "Connection for host #{uri.hostname} refused"
78
+ end
79
+ end
80
+
81
+ # Get single Ingress in Namespace
82
+ def get_single_namespaced_ingress(namespace, ingress_name)
83
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/ingresses/#{ingress_name}"
84
+
85
+ uri = prepareURI(@endpoint, extension)
86
+
87
+ request = prepareGenericRequest(uri, @bearer_token, "GET")
88
+
89
+ req_options = prepareGenericRequestOptions(@ssl, uri)
90
+
91
+ begin
92
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
93
+ http.request(request)
94
+ end
95
+ return response.body
96
+ rescue Errno::ECONNREFUSED
97
+ raise "Connection for host #{uri.hostname} refused"
98
+ end
99
+ end
100
+
101
+ # Update existing Ingress in Namespace
102
+ def update_namespaced_ingress(namespace, ingress_name, update)
103
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/ingresses/#{ingress_name}"
104
+
105
+ uri = prepareURI(@endpoint, extension)
106
+
107
+ request = prepareGenericRequest(uri, @bearer_token, "PUT")
108
+ request.content_type = "application/json"
109
+
110
+ if @yaml
111
+ request.body = yaml_file_to_json(update)
112
+ else
113
+ request.body = update
114
+ end
115
+
116
+ req_options = prepareGenericRequestOptions(@ssl, uri)
117
+
118
+ begin
119
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
120
+ http.request(request)
121
+ end
122
+ return response.body
123
+
124
+ rescue Errno::ECONNREFUSED
125
+ raise "Connection for host #{uri.hostname} refused"
126
+ end
127
+ end
128
+
129
+ # Patch existing Ingress
130
+ def patch_ingress(namespace, ingress_name, patch)
131
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/ingresses/#{ingress_name}"
132
+
133
+ uri = prepareURI(@endpoint, extension)
134
+
135
+ request = prepareGenericRequest(uri, @bearer_token, "PATCH")
136
+ request.content_type = "application/json-patch+json"
137
+
138
+ request.body = patch
139
+
140
+ req_options = prepareGenericRequestOptions(@ssl, uri)
141
+
142
+ begin
143
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
144
+ http.request(request)
145
+ end
146
+ return response.body
147
+ rescue Errno::ECONNREFUSED
148
+ raise "Connection for host #{uri.hostname} refused"
149
+ end
150
+ end
151
+
152
+ # Delete existing Namespace
153
+ def delete_ingress(namespace, ingress_name, options = '')
154
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/ingresses/#{ingress_name}"
155
+
156
+ uri = prepareURI(@endpoint, extension)
157
+
158
+ request = prepareGenericRequest(uri, @bearer_token, "DELETE")
159
+ request.content_type = "application/json"
160
+
161
+ if @yaml
162
+ request.body = yaml_file_to_json(options)
163
+ else
164
+ request.body = options
165
+ end
166
+
167
+ req_options = prepareGenericRequestOptions(@ssl, uri)
168
+
169
+ begin
170
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
171
+ http.request(request)
172
+ end
173
+ return response.body
174
+
175
+ rescue Errno::ECONNREFUSED
176
+ raise "Connection for host #{uri.hostname} refused"
177
+ end
178
+ end
179
+
180
+ end
@@ -0,0 +1,142 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'openssl'
4
+ require 'json'
5
+
6
+ require_relative 'generic'
7
+
8
+ module Namespaces
9
+ include Generic
10
+
11
+ # Create new Namespace
12
+ def create_new_namespace(config)
13
+ extension = "/api/v1/namespaces"
14
+
15
+ uri = prepareURI(@endpoint, extension)
16
+
17
+ request = prepareGenericRequest(uri, @bearer_token, "POST")
18
+ request.content_type = "application/json"
19
+
20
+ if @yaml
21
+ request.body = yaml_file_to_json(config)
22
+ else
23
+ request.body = config
24
+ end
25
+
26
+ req_options = prepareGenericRequestOptions(@ssl, uri)
27
+
28
+ begin
29
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
30
+ http.request(request)
31
+ end
32
+
33
+ return response.body
34
+
35
+ rescue Errno::ECONNREFUSED
36
+ raise "Connection for host #{uri.hostname} refused"
37
+ end
38
+
39
+ end
40
+
41
+ # Get Namespaces
42
+ def get_all_namespaces
43
+ extension = '/api/v1/namespaces'
44
+
45
+ uri = prepareURI(@endpoint, extension)
46
+
47
+ request = prepareGenericRequest(uri, @bearer_token, "GET")
48
+
49
+ req_options = prepareGenericRequestOptions(@ssl, uri)
50
+
51
+ begin
52
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
53
+ http.request(request)
54
+ end
55
+ return response.body
56
+
57
+ rescue Errno::ECONNREFUSED
58
+ raise "Connection for host #{uri.hostname} refused"
59
+ end
60
+ end
61
+
62
+ # Update existing Namespace
63
+ def update_namespace(namespace, update)
64
+ extension = "/api/v1/namespaces/#{namespace}"
65
+
66
+ uri = prepareURI(@endpoint, extension)
67
+
68
+ request = prepareGenericRequest(uri, @bearer_token, "PUT")
69
+ request.content_type = "application/json"
70
+
71
+ if @yaml
72
+ request.body = yaml_file_to_json(update)
73
+ else
74
+ request.body = update
75
+ end
76
+
77
+ req_options = prepareGenericRequestOptions(@ssl, uri)
78
+
79
+ begin
80
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
81
+ http.request(request)
82
+ end
83
+ return response.body
84
+
85
+ rescue Errno::ECONNREFUSED
86
+ raise "Connection for host #{uri.hostname} refused"
87
+ end
88
+ end
89
+
90
+ # Patch existing Namespace
91
+ def patch_namespace(namespace, patch)
92
+ extension = "/api/v1/namespaces/#{namespace}"
93
+
94
+ uri = prepareURI(@endpoint, extension)
95
+
96
+ request = prepareGenericRequest(uri, @bearer_token, "PATCH")
97
+ request.content_type = "application/json-patch+json"
98
+
99
+ request.body = patch
100
+
101
+ req_options = prepareGenericRequestOptions(@ssl, uri)
102
+
103
+ begin
104
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
105
+ http.request(request)
106
+ end
107
+ return response.body
108
+
109
+ rescue Errno::ECONNREFUSED
110
+ raise "Connection for host #{uri.hostname} refused"
111
+ end
112
+ end
113
+
114
+ # Delete existing Namespace
115
+ def delete_namespace(namespace, options = '')
116
+ extension = "/api/v1/namespaces/#{namespace}"
117
+
118
+ uri = prepareURI(@endpoint, extension)
119
+
120
+ request = prepareGenericRequest(uri, @bearer_token, "DELETE")
121
+ request.content_type = "application/json"
122
+
123
+ if @yaml
124
+ request.body = yaml_file_to_json(options)
125
+ else
126
+ request.body = options
127
+ end
128
+
129
+ req_options = prepareGenericRequestOptions(@ssl, uri)
130
+
131
+ begin
132
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
133
+ http.request(request)
134
+ end
135
+ return response.body
136
+
137
+ rescue Errno::ECONNREFUSED
138
+ raise "Connection for host #{uri.hostname} refused"
139
+ end
140
+ end
141
+
142
+ end