kubecontrol 0.4.5 → 0.5.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: 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