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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d3b0861a2be0e832582ebca9874f945ac8a15ea11c36ad5eb4b657e11718b0f
4
- data.tar.gz: 7349e54ff5ccb3118388c679c6baf8f93e013eedf3cd8cf01bc9f9cb1959dbf9
3
+ metadata.gz: 707a8841200476fc3adf97d63d744169629cf6a03993a43e8c771d73a6a4c80a
4
+ data.tar.gz: 715c7157780f9e909e0a3cc2dfdc15a3c948dbc79529de91c4fc2504309a4d89
5
5
  SHA512:
6
- metadata.gz: 30186f093255bcefc2b6d34dcc06c4bf6bfaf1a297ff53dd3bb8e826705ad9a1144db0d6b8c71f441c9ce0cfe8b8acc1abfb6319cc33e44221b47e75edb81dc6
7
- data.tar.gz: f66cee91c39cd2244a23ae2b3d3b088704fe4665ba169531f33163f3b744c10776d60dfa634b12d00a4116fbd44e45ebf82e6bfb9c01c59fecfd1ba0246e4f6a
6
+ metadata.gz: 5a748ff7cf8eafcca984455fa9590db79edad8b44014c425b9a607e8521b48d7dbd24ff3db070e13862968d8c636b826ae25081fdfe4ad039a4c305cda1bbdad
7
+ data.tar.gz: 2197d756a9568cc3ff3d7a7f1e589a08d93905d08b2ea97d485c026d5b54d25931c1d86ccaf90305e140fbabbee7e13e1b3eb3ab321f1210d352d585d574471a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ # v0.2.5 / 02-18-2020
2
+ - [FEATURE] Kubecontrol::Service
3
+
1
4
  # v0.1.2 / 12-24-2019
2
5
  - [FEATURE] Kubecontrol::Pod#exec
3
6
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kubecontrol (0.1.4)
4
+ kubecontrol (0.2.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -40,4 +40,4 @@ DEPENDENCIES
40
40
  simplecov (~> 0.17)
41
41
 
42
42
  BUNDLED WITH
43
- 2.0.2
43
+ 2.1.4
@@ -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
- get_pods_result, _stderr, _exit_code = kubectl_command('get pods')
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
@@ -1,5 +1,6 @@
1
1
  module Kubecontrol
2
2
  class Pod
3
+ RESOURCE_NAME = 'pods'.freeze
3
4
  RUNNING = 'Running'.freeze
4
5
 
5
6
  attr_reader :name, :ready, :status, :restarts, :age, :namespace, :client
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Kubecontrol
2
- VERSION = '0.1.5'.freeze
2
+ VERSION = '0.2.5'.freeze
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require_relative '../spec_helper'
2
+ require_relative '../../lib/kubecontrol/pod'
2
3
 
3
4
  RSpec.describe Kubecontrol::Pod do
4
5
  let(:pod_name) { 'foo_pod' }
@@ -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.1.5
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-01-20 00:00:00.000000000 Z
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