kubecontrol 0.1.5 → 0.2.5
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/Gemfile.lock +2 -2
- data/lib/kubecontrol/client.rb +19 -8
- data/lib/kubecontrol/pod.rb +1 -0
- data/lib/kubecontrol/service.rb +18 -0
- data/lib/kubecontrol/version.rb +1 -1
- data/spec/kubecontrol/pod_spec.rb +1 -0
- data/spec/kubecontrol/service_spec.rb +49 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 707a8841200476fc3adf97d63d744169629cf6a03993a43e8c771d73a6a4c80a
|
4
|
+
data.tar.gz: 715c7157780f9e909e0a3cc2dfdc15a3c948dbc79529de91c4fc2504309a4d89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a748ff7cf8eafcca984455fa9590db79edad8b44014c425b9a607e8521b48d7dbd24ff3db070e13862968d8c636b826ae25081fdfe4ad039a4c305cda1bbdad
|
7
|
+
data.tar.gz: 2197d756a9568cc3ff3d7a7f1e589a08d93905d08b2ea97d485c026d5b54d25931c1d86ccaf90305e140fbabbee7e13e1b3eb3ab321f1210d352d585d574471a
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/lib/kubecontrol/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'open3'
|
2
2
|
require_relative 'pod'
|
3
|
+
require_relative 'service'
|
3
4
|
|
4
5
|
module Kubecontrol
|
5
6
|
class Client
|
@@ -12,25 +13,35 @@ module Kubecontrol
|
|
12
13
|
end
|
13
14
|
|
14
15
|
def pods
|
15
|
-
|
16
|
-
return [] if get_pods_result.empty?
|
17
|
-
|
18
|
-
pods_array = get_pods_result.split
|
19
|
-
pods_array.shift 5 # remove output table headers
|
20
|
-
pods_array.each_slice(5).map do |pod_data|
|
21
|
-
Pod.new(*pod_data, namespace, self)
|
22
|
-
end
|
16
|
+
get_resource(Pod, 5)
|
23
17
|
end
|
24
18
|
|
25
19
|
def find_pod_by_name(name_regex)
|
26
20
|
pods.find { |pod| pod.name.match?(name_regex) }
|
27
21
|
end
|
28
22
|
|
23
|
+
def services
|
24
|
+
get_resource(Service, 6)
|
25
|
+
end
|
26
|
+
|
29
27
|
def kubectl_command(command)
|
30
28
|
stdout_data, stderr_data, status = Open3.capture3("kubectl -n #{namespace} #{command}")
|
31
29
|
exit_code = status.exitstatus
|
32
30
|
|
33
31
|
[stdout_data, stderr_data, exit_code]
|
34
32
|
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def get_resource(klass, number_of_columns)
|
37
|
+
get_result, _stderr, _exit_code = kubectl_command("get #{klass::RESOURCE_NAME}")
|
38
|
+
return [] if get_result.empty?
|
39
|
+
|
40
|
+
resources_array = get_result.split
|
41
|
+
resources_array.shift number_of_columns # remove output table headers
|
42
|
+
resources_array.each_slice(number_of_columns).map do |resource_data|
|
43
|
+
klass.new(*resource_data, namespace, self)
|
44
|
+
end
|
45
|
+
end
|
35
46
|
end
|
36
47
|
end
|
data/lib/kubecontrol/pod.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
module Kubecontrol
|
2
|
+
class Service
|
3
|
+
RESOURCE_NAME = 'services'.freeze
|
4
|
+
|
5
|
+
attr_reader :name, :age, :type, :cluster_ip, :external_ip, :ports, :namespace, :client
|
6
|
+
|
7
|
+
def initialize(name, type, cluster_ip, external_ip, ports, age, namespace, client)
|
8
|
+
@name = name
|
9
|
+
@age = age
|
10
|
+
@type = type
|
11
|
+
@cluster_ip = cluster_ip
|
12
|
+
@external_ip = external_ip
|
13
|
+
@ports = ports
|
14
|
+
@namespace = namespace
|
15
|
+
@client = client
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/kubecontrol/version.rb
CHANGED
@@ -0,0 +1,49 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
require_relative '../../lib/kubecontrol/service'
|
3
|
+
|
4
|
+
RSpec.describe Kubecontrol::Service do
|
5
|
+
let(:service_name) { 'foo_service' }
|
6
|
+
let(:service_age) { '2d' }
|
7
|
+
let(:service_type) { 'ClusterIP' }
|
8
|
+
let(:service_cluster_ip) { '172.20.0.1' }
|
9
|
+
let(:service_external_ip) { '<none>' }
|
10
|
+
let(:service_ports) { '443/TCP' }
|
11
|
+
let(:namespace) { 'default' }
|
12
|
+
let(:client) { Kubecontrol::Client.new }
|
13
|
+
|
14
|
+
describe '#initialize' do
|
15
|
+
subject { Kubecontrol::Service.new(service_name, service_type, service_cluster_ip, service_external_ip, service_ports, service_age, namespace, client) }
|
16
|
+
|
17
|
+
it 'sets the service name field' do
|
18
|
+
expect(subject.name).to eq service_name
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'sets the service age field' do
|
22
|
+
expect(subject.age).to eq service_age
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'sets the service type field' do
|
26
|
+
expect(subject.type).to eq service_type
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'sets the service cluster ip field' do
|
30
|
+
expect(subject.cluster_ip).to eq service_cluster_ip
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'sets the service external ip field' do
|
34
|
+
expect(subject.external_ip).to eq service_external_ip
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'sets the service ports field' do
|
38
|
+
expect(subject.ports).to eq service_ports
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'sets the service namespace' do
|
42
|
+
expect(subject.namespace).to eq namespace
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'sets the client' do
|
46
|
+
expect(subject.client).to eq client
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kubecontrol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marco Adkins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -91,9 +91,11 @@ files:
|
|
91
91
|
- lib/kubecontrol.rb
|
92
92
|
- lib/kubecontrol/client.rb
|
93
93
|
- lib/kubecontrol/pod.rb
|
94
|
+
- lib/kubecontrol/service.rb
|
94
95
|
- lib/kubecontrol/version.rb
|
95
96
|
- spec/kubecontrol/client_spec.rb
|
96
97
|
- spec/kubecontrol/pod_spec.rb
|
98
|
+
- spec/kubecontrol/service_spec.rb
|
97
99
|
- spec/kubecontrol_spec.rb
|
98
100
|
- spec/spec_helper.rb
|
99
101
|
homepage: https://github.com/madkin10/kubecontrol
|