seira 0.6.1 → 0.6.2

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: 6e4678426c19be20c111c7b06c0da8fcea3381d488100b14dee5f1533381fdf3
4
- data.tar.gz: 96049728869ff3b29fd216dffea87276197071262b72b7811ee45b7e616ab91a
3
+ metadata.gz: b267c856966fa9d1bc45dbc7bc438409b3d1063f3153a0e73ace8df2e957b9b9
4
+ data.tar.gz: fb3b80730b70076fbd01c42418bd2d20f7890e6bd76d43c64cc75d99c8941440
5
5
  SHA512:
6
- metadata.gz: 36433baa88e5e1b41af9a240c33535b1dff25845eb419958f8a03e7b787f4f5e9693ef6294d12fd50005d168c0a84a14b562b2e6b6bef73f410951b97999cff9
7
- data.tar.gz: eea46f8a1c72c64f366cbe863a2d366e702f1f71cea57f7106490418d7c0cdc9115f976fb4e0eb91e8ff95463e4a3a617c5e1e4075a58cb78d646130b37abf70
6
+ metadata.gz: 1525fe34f26af87c6a39711922c16aa818e1824a1f20e8c10ac202af8432a55008c1f1130a19af64c6c71615bfbd651c9d9287ee75a6f6336a146420d80968ec
7
+ data.tar.gz: ffa5b5331fd8381478b22ecac09f10794f17e3fae9d26442510290f7d5e47ddf5159b538f17835798772ea7a26cb39e4a2cefb2de210ca46c7d333885857dff2
@@ -10,7 +10,7 @@ module Seira
10
10
  class Secrets
11
11
  include Seira::Commands
12
12
 
13
- VALID_ACTIONS = %w[help get set unset list list-decoded].freeze
13
+ VALID_ACTIONS = %w[help get set unset list list-decoded create-secret-container].freeze
14
14
  PGBOUNCER_SECRETS_NAME = 'pgbouncer-secrets'.freeze
15
15
  SUMMARY = "Manage your application's secrets and environment variables.".freeze
16
16
 
@@ -40,6 +40,8 @@ module Seira
40
40
  run_list
41
41
  when 'list-decoded'
42
42
  run_list_decoded
43
+ when 'create-secret-container'
44
+ run_create_secret_container
43
45
  else
44
46
  fail "Unknown command encountered"
45
47
  end
@@ -76,14 +78,17 @@ module Seira
76
78
  def run_help
77
79
  puts SUMMARY
78
80
  puts "\n\n"
79
- puts "Possible actions:\n\n"
81
+ puts "Possible actions to operate on secret contaiers. Default"
82
+ puts "container will be used unless --container=<name> specified:\n\n"
80
83
  puts "get: fetch the value of a secret: `secrets get PASSWORD`"
81
84
  puts "set: set one or more secret values: `secrets set USERNAME=admin PASSWORD=asdf`"
82
85
  puts " to specify a value with spaces: `secrets set LIPSUM=\"Lorem ipsum\"`"
83
86
  puts " to specify a value with newlines: `secrets set RSA_KEY=\"$(cat key.pem)\"`"
84
87
  puts "unset: remove a secret: `secrets unset PASSWORD`"
85
88
  puts "list: list all secret keys and values"
86
- puts "list: list all secret keys and values, and decode from base64"
89
+ puts "list-decoded: list all secret keys and values, and decode from base64"
90
+ puts "\n\n"
91
+ puts "create-secret-container: takes one argument, the name, and creates a new container of secrets (Secret object) with that name"
87
92
  end
88
93
 
89
94
  def validate_single_key
@@ -137,9 +142,17 @@ module Seira
137
142
  end
138
143
  end
139
144
 
145
+ def run_create_secret_container
146
+ secret_name = key
147
+ puts "Creating Kubernetes Secret with name '#{secret_name}'..."
148
+ kubectl("create secret generic #{secret_name}", context: context)
149
+ puts "Secret Object '#{secret_name}' created. You can now set, unset, list secrets in this container Secret object."
150
+ end
151
+
140
152
  # In the normal case the secret we are updating is just main_secret_name,
141
- # but in special cases we may be doing an operation on a different secret
142
- def write_secrets(secrets:, secret_name: main_secret_name)
153
+ # but in special cases we may be doing an operation on a different secret such
154
+ # as use passing --container arg
155
+ def write_secrets(secrets:, secret_name: secret_container_from_args)
143
156
  Dir.mktmpdir do |dir|
144
157
  file_name = "#{dir}/temp-secrets-#{Seira::Cluster.current_cluster}-#{secret_name}.json"
145
158
  File.open(file_name, "w") do |f|
@@ -160,8 +173,9 @@ module Seira
160
173
 
161
174
  # Returns the still-base64encoded secrets hashmap
162
175
  def fetch_current_secrets
163
- json_string = kubectl("get secret #{main_secret_name} -o json", context: context, return_output: true)
176
+ json_string = kubectl("get secret #{secret_container_from_args} -o json", context: context, return_output: true)
164
177
  json = JSON.parse(json_string)
178
+ json['data'] ||= {} # For secret that has no key/values yet, this ensures a consistent experience
165
179
  fail "Unexpected Kind" unless json['kind'] == 'Secret'
166
180
  json
167
181
  end
@@ -170,8 +184,19 @@ module Seira
170
184
  args[0]
171
185
  end
172
186
 
187
+ def secret_container_from_args
188
+ relevant_arg = args.find { |arg| arg.start_with? '--container=' }
189
+
190
+ if relevant_arg
191
+ relevant_arg.split("=")[1]
192
+ else
193
+ main_secret_name
194
+ end
195
+ end
196
+
197
+ # Filter out parameters which start with --
173
198
  def key_value_map
174
- args.map do |arg|
199
+ args.reject { |arg| arg.start_with?("--") }.map do |arg|
175
200
  equals_index = arg.index('=')
176
201
  [arg[0..equals_index - 1], arg[equals_index + 1..-1]]
177
202
  end.to_h
@@ -1,3 +1,3 @@
1
1
  module Seira
2
- VERSION = "0.6.1".freeze
2
+ VERSION = "0.6.2".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Ringwelski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-03 00:00:00.000000000 Z
11
+ date: 2019-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline