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,181 @@
1
+
2
+ require 'net/http'
3
+ require 'uri'
4
+ require 'openssl'
5
+ require 'json'
6
+
7
+ require_relative 'generic'
8
+
9
+ module ReplicaSets
10
+ include Generic
11
+
12
+ # Create new ReplicaSet
13
+ def create_new_replicaset(namespace, config)
14
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/replicasets"
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 ReplicaSets
41
+ def get_all_replicasets
42
+ extension = "/apis/extensions/v1beta1/replicasets"
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 ReplicaSets in Namespace
62
+ def get_all_namespaced_replicasets(namespace)
63
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/replicasets"
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 ReplicaSet in Namespace
83
+ def get_single_namespaced_replicaset(namespace, replicaset_name)
84
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/replicasets/#{replicaset_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 ReplicaSet in Namespace
103
+ def update_namespaced_replicaset(namespace, replicaset_name, update)
104
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/replicasets/#{replicaset_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 ReplicaSet
131
+ def patch_replicaset(namespace, replicaset_name, patch)
132
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/replicasets/#{replicaset_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 Namespace
154
+ def delete_replicaset(namespace, replicaset_name, options = '')
155
+ extension = "/apis/extensions/v1beta1/namespaces/#{namespace}/replicasets/#{replicaset_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
@@ -0,0 +1,176 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'openssl'
4
+ require 'json'
5
+
6
+ require_relative 'generic'
7
+
8
+ module Services
9
+ include Generic
10
+
11
+ # Create new Service
12
+ def create_new_service(namespace, config)
13
+ extension = "/api/v1/namespaces/#{namespace}/services"
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 Services
40
+ def get_all_services
41
+ extension = "/api/v1/services"
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 Services in Namespace
61
+ def get_all_namespaced_services(namespace)
62
+ extension = "/api/v1/namespaces/#{namespace}/services"
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 Service in Namespace
82
+ def get_single_namespaced_service(namespace, service_name)
83
+ extension = "/api/v1/namespaces/#{namespace}/services/#{service_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 Service in Namespace
102
+ def update_namespaced_service(namespace, service_name, update)
103
+ extension = "/api/v1/namespaces/#{namespace}/services/#{service_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 Service
130
+ def patch_service(namespace, service_name, patch)
131
+ extension = "/api/v1/namespaces/#{namespace}/services/#{service_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 Service
153
+ def delete_service(namespace, service_name)
154
+ extension = "/api/v1/namespaces/#{namespace}/services/#{service_name}"
155
+
156
+ uri = prepareURI(@endpoint, extension)
157
+
158
+ request = prepareGenericRequest(uri, @bearer_token, "DELETE")
159
+
160
+ req_options = prepareGenericRequestOptions(@ssl, uri)
161
+
162
+ begin
163
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
164
+ http.request(request)
165
+ end
166
+ return response.body
167
+
168
+ rescue Errno::ECONNREFUSED
169
+ raise "Connection for host #{uri.hostname} refused"
170
+ end
171
+ end
172
+
173
+ end
174
+
175
+
176
+
@@ -0,0 +1,4 @@
1
+ # Part of the RubyKubernetesController module
2
+ module RubyKubernetesController
3
+ VERSION = "0.1.0"
4
+ end
@@ -0,0 +1,53 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "ruby-kubernetes-controller/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ruby-kubernetes-controller"
8
+ spec.version = RubyKubernetesController::VERSION
9
+ spec.authors = ["Shivansh Vij (ShivanshVij)", "Matthew Grech (mgrech)", "Zack Livingston (ZackLivingston)"]
10
+ spec.email = ["shivanshvij@outlook.com", "mgrech97@gmaii.com", "15zel@queensu.ca"]
11
+
12
+ spec.summary = %q{Ruby Kubernetes Controller is a Ruby Client Library for interacting with existing Kubernetes Clusters.}
13
+ spec.description = <<-EOF
14
+ The Ruby Kubernetes Controller allows users to interact with the core Kubernetes APIs natively from within their Ruby
15
+ applications. This library is compatible with all leading Kubernetes Instances, including OpenShift Kubernetes,
16
+ Azure Kubernetes Service, Amazon EKS, Google Kubernetes Service, IBM Kubernetes Service, and Rancher Orchestrated Kubernetes.
17
+ This library also supports yaml ingestion for creating, patching, updating, or deleting existing Kubernetes types,
18
+ including Pods, Services, Deployments, Endpoints, and Ingresses. Our documentation also contains complete examples for
19
+ all operation types.
20
+ EOF
21
+ spec.homepage = "https://github.com/IBM/ruby-kubernetes-controller/"
22
+ spec.license = "MIT"
23
+
24
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
25
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
26
+ if spec.respond_to?(:metadata)
27
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
28
+
29
+ spec.metadata["homepage_uri"] = spec.homepage
30
+ spec.metadata["source_code_uri"] = "https://github.com/IBM/ruby-kubernetes-controller/"
31
+ spec.metadata["changelog_uri"] = "https://github.com/IBM/ruby-kubernetes-controller/blob/master/CHANGELOG.md"
32
+ spec.metadata["documentation_uri"] = "https://github.com/IBM/ruby-kubernetes-controller/blob/master/Documentation/DOCUMENTATION.md"
33
+ else
34
+ raise "RubyGems 2.0 or newer is required to protect against " \
35
+ "public gem pushes."
36
+ end
37
+
38
+ # Specify which files should be added to the gem when it is released.
39
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
40
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
41
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
42
+ end
43
+ spec.bindir = "exe"
44
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
45
+ spec.require_paths = ["lib"]
46
+
47
+ spec.add_development_dependency "bundler", "~> 2.0"
48
+ spec.add_development_dependency "rake", "~> 10.0"
49
+ spec.add_development_dependency "minitest", "~> 5.0"
50
+ spec.add_development_dependency "minitest-ci", "~>3.4.0"
51
+
52
+ spec.required_ruby_version = '>= 2.0.0'
53
+ end
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-kubernetes-controller
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Shivansh Vij (ShivanshVij)
8
+ - Matthew Grech (mgrech)
9
+ - Zack Livingston (ZackLivingston)
10
+ autorequire:
11
+ bindir: exe
12
+ cert_chain: []
13
+ date: 2019-06-10 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '2.0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '2.0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rake
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '10.0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '10.0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: minitest
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '5.0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '5.0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: minitest-ci
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: 3.4.0
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: 3.4.0
71
+ description: " The Ruby Kubernetes Controller allows users
72
+ to interact with the core Kubernetes APIs natively from within their Ruby\n applications.
73
+ This library is compatible with all leading Kubernetes Instances, including OpenShift
74
+ Kubernetes, \n Azure Kubernetes Service, Amazon EKS, Google
75
+ Kubernetes Service, IBM Kubernetes Service, and Rancher Orchestrated Kubernetes.
76
+ \n This library also supports yaml ingestion for creating,
77
+ patching, updating, or deleting existing Kubernetes types, \n including
78
+ Pods, Services, Deployments, Endpoints, and Ingresses. Our documentation also contains
79
+ complete examples for \n all operation types.\n"
80
+ email:
81
+ - shivanshvij@outlook.com
82
+ - mgrech97@gmaii.com
83
+ - 15zel@queensu.ca
84
+ executables: []
85
+ extensions: []
86
+ extra_rdoc_files: []
87
+ files:
88
+ - ".circleci/config.yml"
89
+ - ".circleci/setup-rubygems.sh"
90
+ - ".gitignore"
91
+ - CODE_OF_CONDUCT.md
92
+ - Documentation/DOCUMENTATION.md
93
+ - Documentation/serviceaccount.png
94
+ - Documentation/serviceaccount.yaml
95
+ - Gemfile
96
+ - LICENSE.txt
97
+ - README.md
98
+ - Rakefile
99
+ - bin/console
100
+ - bin/setup
101
+ - lib/ruby-kubernetes-controller.rb
102
+ - lib/ruby-kubernetes-controller/client.rb
103
+ - lib/ruby-kubernetes-controller/configmaps.rb
104
+ - lib/ruby-kubernetes-controller/deployments.rb
105
+ - lib/ruby-kubernetes-controller/endpoints.rb
106
+ - lib/ruby-kubernetes-controller/generic.rb
107
+ - lib/ruby-kubernetes-controller/ingresses.rb
108
+ - lib/ruby-kubernetes-controller/namespaces.rb
109
+ - lib/ruby-kubernetes-controller/nodes.rb
110
+ - lib/ruby-kubernetes-controller/persistentvolumeclaims.rb
111
+ - lib/ruby-kubernetes-controller/persistentvolumes.rb
112
+ - lib/ruby-kubernetes-controller/pods.rb
113
+ - lib/ruby-kubernetes-controller/replicasets.rb
114
+ - lib/ruby-kubernetes-controller/services.rb
115
+ - lib/ruby-kubernetes-controller/version.rb
116
+ - ruby-kubernetes-controller.gemspec
117
+ homepage: https://github.com/IBM/ruby-kubernetes-controller/
118
+ licenses:
119
+ - MIT
120
+ metadata:
121
+ allowed_push_host: https://rubygems.org
122
+ homepage_uri: https://github.com/IBM/ruby-kubernetes-controller/
123
+ source_code_uri: https://github.com/IBM/ruby-kubernetes-controller/
124
+ changelog_uri: https://github.com/IBM/ruby-kubernetes-controller/blob/master/CHANGELOG.md
125
+ documentation_uri: https://github.com/IBM/ruby-kubernetes-controller/blob/master/Documentation/DOCUMENTATION.md
126
+ post_install_message:
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 2.0.0
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ requirements: []
141
+ rubygems_version: 3.0.3
142
+ signing_key:
143
+ specification_version: 4
144
+ summary: Ruby Kubernetes Controller is a Ruby Client Library for interacting with
145
+ existing Kubernetes Clusters.
146
+ test_files: []