kubecontrol 0.4.5 → 0.5.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: 947d4bdb94d24c41570d476fe6a57692b26a4c04b44af915dc334c15842f586c
4
- data.tar.gz: abd66e519fd96e3f871e6c57c0593f3fd9894d0762df6f295f4c0d399d354eda
3
+ metadata.gz: 358060485591cee4de44f0924d781ca98dcc5d68e29169543f49d38c9a92bc56
4
+ data.tar.gz: d4d91d701a577d8686793f4967ec4ad8c7493deb72628045dfd39cdba6e49462
5
5
  SHA512:
6
- metadata.gz: 1c678d96f09936c328f11859639d577d7faeba1903d1267ab226f9c2bc4ccce3af168d54ea4dd5b313ee0237987c6e6ac17efbe6249954f181951ce3fff8288d
7
- data.tar.gz: e050203e479656d5d9346611e7f7861c2de85c0102b2c620a769df5e31671febe5a261713b245b4e225a0fb608018ff4438bc6b44bb1ce83e686c0d416cfc9b2
6
+ metadata.gz: b041c46add29ffd259c254513000388f9fb148fef3f67959bd072ac6c90cb7cc6c427ffb5bc4b62e5eef475d08ab99a8e1a94d0820422b600aec921d16c1a8a6
7
+ data.tar.gz: 68ed529b47728cf687262def701ba5093a28f9ea776f17bbc6b88fccda1df5a044cfdc6d0f4025ed878421c9f9eab7048e4d06b91730ff0494a061f309863eef
@@ -1,3 +1,6 @@
1
+ # v0.5.0 / 02-26-2020
2
+ - [FEATURE] Kubecontrol::Secret#data_values
3
+
1
4
  # v0.4.5 / 02-24-2020
2
5
  - [ENHANCEMENT] Kubecontrol::Resources - Move all existing resources(Pod, Deployment, Service, Secret, Stateful Set) into a 'Resources' namespace.
3
6
  - [FEATURE] Kubecontrol::Secret
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kubecontrol (0.4.5)
4
+ kubecontrol (0.5.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -169,6 +169,11 @@ secret.type
169
169
  secret.data
170
170
  secret.age
171
171
  secret.namespace
172
+
173
+ # access secret data values
174
+ secret.data_values
175
+ secret.data_values['user']
176
+ secret.data_values['password']
172
177
  ```
173
178
 
174
179
  ## Development
@@ -1,3 +1,6 @@
1
+ require 'json'
2
+ require "base64"
3
+
1
4
  module Kubecontrol
2
5
  module Resources
3
6
  class Secret
@@ -13,6 +16,18 @@ module Kubecontrol
13
16
  @namespace = namespace
14
17
  @client = client
15
18
  end
19
+
20
+ def data_values
21
+ @data_values ||= begin
22
+ std_out, _std_err, exit_code = @client.kubectl_command("get secret #{@name} -o json")
23
+ if exit_code.zero?
24
+ json_secret = JSON.parse(std_out)
25
+ json_secret['data'].reduce({}) {|h, (k,v)| h[k] = Base64.decode64(v); h }
26
+ else
27
+ {}
28
+ end
29
+ end
30
+ end
16
31
  end
17
32
  end
18
33
  end
@@ -1,3 +1,3 @@
1
1
  module Kubecontrol
2
- VERSION = '0.4.5'.freeze
2
+ VERSION = '0.5.5'.freeze
3
3
  end
@@ -37,4 +37,48 @@ RSpec.describe Kubecontrol::Resources::Secret do
37
37
  expect(subject.client).to eq client
38
38
  end
39
39
  end
40
+
41
+ describe '#data_values' do
42
+ let(:status_code) { 0 }
43
+ let(:key_one) { 'one' }
44
+ let(:value_one) { 'foo' }
45
+ let(:key_two) { 'two' }
46
+ let(:value_two) { 'bar' }
47
+ let(:get_secret_std_out) do
48
+ {
49
+ data: {
50
+ key_one => Base64.encode64(value_one),
51
+ key_two => Base64.encode64(value_two),
52
+ }
53
+ }.to_json
54
+ end
55
+ let(:get_secret_response) { [get_secret_std_out, '', status_code] }
56
+
57
+ subject { secret.data_values }
58
+
59
+ before do
60
+ allow(secret.client).to receive(:kubectl_command).with("get secret #{secret.name} -o json").and_return get_secret_response
61
+ end
62
+
63
+ it 'sends a kubectl request to the command line' do
64
+ expect(secret.client).to receive(:kubectl_command).with("get secret #{secret.name} -o json").and_return get_secret_response
65
+ subject
66
+ end
67
+
68
+ context 'kubectl command is successful' do
69
+ it 'returns an hash of the decoded secret data' do
70
+ result = subject
71
+ expect(result).to be_an_instance_of Hash
72
+ expect(result[key_one]).to eq(value_one)
73
+ expect(result[key_two]).to eq(value_two)
74
+ end
75
+ end
76
+
77
+ context 'kubectl command is unsuccessful' do
78
+ let(:status_code) { 1 }
79
+ it 'returns an empty hash' do
80
+ expect(subject).to eq({})
81
+ end
82
+ end
83
+ end
40
84
  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.5
4
+ version: 0.5.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-02-24 00:00:00.000000000 Z
11
+ date: 2020-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler