kubes_aws 0.2.0 → 0.3.0

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: 5cccbde70946470994346fb2e6464153312e4148518b46747137396682455f62
4
- data.tar.gz: 93c32447c9c48b7feda8fc340022d763736d8d911942e3da10bb7291b8418875
3
+ metadata.gz: 5a00a2ad4b20a5e60f9a74a0c622262ebc28ce370c41576cc732030151fd7a79
4
+ data.tar.gz: b6022d326ecac506d57d74964d7f31e770550cbc2bf1cd303a14bb7a89a88d9e
5
5
  SHA512:
6
- metadata.gz: 8a02025e42e55c83432dd8c3cc23d91078395474cb7ca363317ef4200df1a2747e24841ec02baaadbc6ee6808f39498edd40e9e5331ec4d34c00b87f16f94526
7
- data.tar.gz: 8a9c098dfb2d3285cee9ef8145c71ce7a8a6d36a9e96470a2e6cffbe3e43b9c8f5edd7e3a877e80e7f1eb0d3029687f1ae621d0686e44bc4019ce91c11c7d5c0
6
+ metadata.gz: 161da6b9c641f61d2dbdd30af1c6539f110e118e51b2efa6301f15586a6cbedb383cbf48861c47ad9b55a4a1dcf7ab32f63cd8affc1fb49037ab9a12c77d5496
7
+ data.tar.gz: ef8e6bedb40c1af9529fb0928c024fa1259cf0236c18afaf8a116590a6d292f7f981fc289e69ae96123d8a8d25e72fd5bc999e318e33fd90a3aa7ef4d0f54f2c
@@ -3,6 +3,11 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
5
5
 
6
+ ## [0.3.0] - 2020-11-11
7
+ - [#2](https://github.com/boltops-tools/kubes_aws/pull/2) Config interface and base64_secrets setting
8
+ - fix specs
9
+ - smarter base64 option
10
+
6
11
  ## [0.2.0]
7
12
  - #1 helpers: aws_secret, aws_ssm
8
13
 
@@ -31,4 +31,6 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency "aws_data"
32
32
  spec.add_dependency "memoist"
33
33
  spec.add_dependency "zeitwerk"
34
+
35
+ spec.add_development_dependency "kubes"
34
36
  end
@@ -16,6 +16,25 @@ module KubesAws
16
16
  @@logger = v
17
17
  end
18
18
 
19
+ # Friendlier method configure.
20
+ #
21
+ # .kubes/config/env/dev.rb
22
+ # .kubes/config/plugins/google.rb # also works
23
+ #
24
+ # Example:
25
+ #
26
+ # KubesGoogle.configure do |config|
27
+ # config.hooks.gke_whitelist = true
28
+ # end
29
+ #
30
+ def configure(&block)
31
+ Config.instance.configure(&block)
32
+ end
33
+
34
+ def config
35
+ Config.instance.config
36
+ end
37
+
19
38
  extend self
20
39
  end
21
40
 
@@ -0,0 +1,20 @@
1
+ module KubesAws
2
+ class Config
3
+ include Singleton
4
+
5
+ def defaults
6
+ c = ActiveSupport::OrderedOptions.new
7
+ c.base64_secrets = true
8
+ c
9
+ end
10
+
11
+ @@config = nil
12
+ def config
13
+ @@config ||= defaults
14
+ end
15
+
16
+ def configure
17
+ yield(config)
18
+ end
19
+ end
20
+ end
@@ -5,15 +5,19 @@ class KubesAws::Secrets
5
5
 
6
6
  def initialize(options={})
7
7
  @options = options
8
- @base64 = options[:base64].nil? ? true : options[:base64]
8
+ @base64 = options[:base64]
9
9
  end
10
10
 
11
11
  def fetch(secret_id)
12
12
  value = fetch_value(secret_id)
13
- value = Base64.strict_encode64(value).strip if @base64
13
+ value = Base64.strict_encode64(value).strip if base64?
14
14
  value
15
15
  end
16
16
 
17
+ def base64?
18
+ @base64.nil? ? KubesAws.config.base64_secrets : @base64
19
+ end
20
+
17
21
  def fetch_value(secret_id)
18
22
  secret_value = secrets.get_secret_value(secret_id: secret_id)
19
23
  secret_value.secret_string
@@ -5,18 +5,27 @@ class KubesAws::SSM
5
5
 
6
6
  def initialize(options={})
7
7
  @options = options
8
- @base64 = options[:base64].nil? ? true : options[:base64]
8
+ @base64 = options[:base64]
9
9
  end
10
10
 
11
11
  def fetch(name)
12
- value = fetch_value(name)
13
- value = Base64.strict_encode64(value).strip if @base64
12
+ parameter = fetch_parameter(name)
13
+ value = parameter.value
14
+ value = Base64.strict_encode64(value).strip if base64?(parameter.type)
14
15
  value
15
16
  end
16
17
 
17
- def fetch_value(name)
18
+ def base64?(type)
19
+ if @base64.nil?
20
+ type == "SecureString"
21
+ else
22
+ @base64
23
+ end
24
+ end
25
+
26
+ def fetch_parameter(name)
18
27
  resp = ssm.get_parameter(name: name, with_decryption: true)
19
- resp.parameter.value
28
+ resp.parameter
20
29
  rescue Aws::SSM::Errors::ParameterNotFound => e
21
30
  logger.info "WARN: name #{name} not found".color(:yellow)
22
31
  logger.info e.message
@@ -1,3 +1,3 @@
1
1
  module KubesAws
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kubes_aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-09 00:00:00.000000000 Z
11
+ date: 2020-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: kubes
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  description:
140
154
  email:
141
155
  - tung@boltops.com
@@ -153,6 +167,7 @@ files:
153
167
  - kubes_aws.gemspec
154
168
  - lib/kubes_aws.rb
155
169
  - lib/kubes_aws/autoloader.rb
170
+ - lib/kubes_aws/config.rb
156
171
  - lib/kubes_aws/helpers.rb
157
172
  - lib/kubes_aws/iam_role.rb
158
173
  - lib/kubes_aws/iam_role/prebaked.rb