kcu 0.1.0 → 0.2.0

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
  SHA1:
3
- metadata.gz: edfecd77205f065badcd3985d4a67e30f4ae555c
4
- data.tar.gz: 9e4acb2c539f04faa77a4d4391ba70de5e9bcb61
3
+ metadata.gz: 2ce1f8358a691f2bb4fe73a2d74fe7e9af6775ba
4
+ data.tar.gz: 1e02aa503e1da760686a663153e8de70a9c7b612
5
5
  SHA512:
6
- metadata.gz: 81cb4071c8d2fa7cbc5c7ec459776c568aa398083e91cd4c0dcccdf7031fd8b123128d315477f8bf22d73a0dbd5bcdf56448368959cd8c2878b8e6255f89f74e
7
- data.tar.gz: 3e35866493b1ceb78e82c7e5cf538246277b2cbc297bc05e0b5ace32ed315478d25db06baa67101fea886394780ac9e34cc3b1916f46a00fae0f1ddb648a3ab3
6
+ metadata.gz: b99940b59e086dd9c45a0e1348d24dc830db891113200d813af6246e1dcb4b3d7425885952163d8896d33f0562be239709623cb66837c7d70558637ba1d9c364
7
+ data.tar.gz: e4a4085bef52aef30252a84aea42a57cad5dd8c6426b28e1825b964ba0c400668a480bf6a96040a28020432fe219fa85ff2bd85fa43133a6db85f4e9a63a0b67
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.2.0] -2017-11-26
8
+ ### Added
9
+ - Get a single secret's decoded value
10
+ - Set a single secret's value, given a non-encoded value (yes, we properly encode for you!)
11
+
7
12
  ## [0.1.0] - 2017-11-26
8
13
  ### Added
9
14
  - List secrets of a resource
data/lib/kcu.rb CHANGED
@@ -13,7 +13,13 @@ require "kcu/summary"
13
13
  require "kcu/services/get_resource_namespace_and_name"
14
14
  require "kcu/services/secrets/get_json"
15
15
  require "kcu/services/secrets/decode_data"
16
+ require "kcu/services/secrets/get_entry_value"
17
+ require "kcu/services/secrets/encode_entry_value"
18
+ require "kcu/services/secrets/set_entry_value"
19
+ require "kcu/services/secrets/get_entry_value"
16
20
  require "kcu/actions/list_secret_action"
21
+ require "kcu/actions/get_secret_action"
22
+ require "kcu/actions/set_secret_action"
17
23
  require "kcu/client"
18
24
 
19
25
  Kcu.new.run if $0 == __FILE__
@@ -0,0 +1,17 @@
1
+ module Kcu
2
+ class GetSecretAction
3
+
4
+ extend LightService::Organizer
5
+
6
+ def self.call(resource, entry_name)
7
+ ctx = with(resource: resource, entry_name: entry_name).reduce(
8
+ GetResourceNamespaceAndName,
9
+ Secrets::GetJson,
10
+ Secrets::DecodeData,
11
+ Secrets::GetEntryValue,
12
+ )
13
+ ap ctx.entry_value
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ module Kcu
2
+ class SetSecretAction
3
+
4
+ extend LightService::Organizer
5
+
6
+ def self.call(resource, entry_name, entry_value)
7
+ ctx = with({
8
+ resource: resource,
9
+ entry_name: entry_name,
10
+ entry_value: entry_value,
11
+ }).reduce(
12
+ GetResourceNamespaceAndName,
13
+ Secrets::EncodeEntryValue,
14
+ Secrets::SetEntryValue,
15
+ )
16
+ end
17
+
18
+ end
19
+ end
@@ -18,6 +18,22 @@ module Kcu
18
18
  end
19
19
  end
20
20
 
21
+ command :"secret get" do |c|
22
+ c.syntax = "secret get namespace/secret_name entry_name"
23
+ c.description = "Return decoded value of specified secret"
24
+ c.action do |args, options|
25
+ GetSecretAction.(*args)
26
+ end
27
+ end
28
+
29
+ command :"secret set" do |c|
30
+ c.syntax = "secret set namespace/secret_name entry_name value"
31
+ c.description = "Set an entry in a secret by giving a non-base64 encoded value"
32
+ c.action do |args, options|
33
+ SetSecretAction.(*args)
34
+ end
35
+ end
36
+
21
37
  run!
22
38
  end
23
39
 
@@ -0,0 +1,15 @@
1
+ module Kcu
2
+ module Secrets
3
+ class EncodeEntryValue
4
+
5
+ extend LightService::Action
6
+ expects :entry_value
7
+ promises :encoded_entry_value
8
+
9
+ executed do |c|
10
+ c.encoded_entry_value = Base64.strict_encode64(c.entry_value)
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Kcu
2
+ module Secrets
3
+ class GetEntryValue
4
+
5
+ extend LightService::Action
6
+ expects :decoded_secret_json, :entry_name
7
+ promises :entry_value
8
+
9
+ executed do |c|
10
+ c.entry_value = c.decoded_secret_json["data"][c.entry_name]
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,35 @@
1
+ module Kcu
2
+ module Secrets
3
+ class SetEntryValue
4
+
5
+ extend LightService::Action
6
+ expects(
7
+ :resource_namespace,
8
+ :resource_name,
9
+ :entry_name,
10
+ :encoded_entry_value,
11
+ )
12
+
13
+ executed do |c|
14
+ patch_json = {
15
+ data: {
16
+ c.entry_name => c.encoded_entry_value,
17
+ },
18
+ }.to_json
19
+ shell_command = [
20
+ "kubectl",
21
+ "patch",
22
+ "secret",
23
+ c.resource_name,
24
+ "--namespace=#{c.resource_namespace}",
25
+ ["--patch", "'#{patch_json}'"].join("="),
26
+ ].join(" ")
27
+
28
+ stdout_str, stderr_str, status = Open3.capture3(shell_command)
29
+
30
+ puts stdout_str
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module Kcu
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kcu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ramon Tayag
@@ -117,11 +117,16 @@ files:
117
117
  - bin/setup
118
118
  - kcu.gemspec
119
119
  - lib/kcu.rb
120
+ - lib/kcu/actions/get_secret_action.rb
120
121
  - lib/kcu/actions/list_secret_action.rb
122
+ - lib/kcu/actions/set_secret_action.rb
121
123
  - lib/kcu/client.rb
122
124
  - lib/kcu/services/get_resource_namespace_and_name.rb
123
125
  - lib/kcu/services/secrets/decode_data.rb
126
+ - lib/kcu/services/secrets/encode_entry_value.rb
127
+ - lib/kcu/services/secrets/get_entry_value.rb
124
128
  - lib/kcu/services/secrets/get_json.rb
129
+ - lib/kcu/services/secrets/set_entry_value.rb
125
130
  - lib/kcu/summary.rb
126
131
  - lib/kcu/version.rb
127
132
  homepage: https://github.com/bloom-solutions/kcu