kubecontrol 0.1.5 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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