cps-property-generator 0.2.9 → 0.2.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -0
- data/lib/generator/generator.rb +10 -5
- data/lib/generator/globals.rb +5 -0
- data/lib/generator/service.rb +18 -0
- data/lib/helpers/helpers.rb +6 -2
- data/lib/linter/globals_linter.rb +0 -1
- data/lib/linter/services_linter.rb +2 -2
- data/spec/lib/global_spec.rb +2 -2
- data/spec/lib/service_spec.rb +10 -8
- data/spec/resources/globals/accounts/123456789012/environments/my-test-env1.yml +6 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a12e63415fcbfbc360f04c1ce217d564967bf238
|
4
|
+
data.tar.gz: 6e616720fb9bd8141bfabf2c8ca3a9f2321c7df5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d52f2a744a776a4452bb06ed0576085a6705519953ccc41bf3518937f2108592536de120376deb4a91fbc21f7d34d2019ffc89a71636293513406bd05d46daca
|
7
|
+
data.tar.gz: 6aa00b4d1e44f4ce1fea9e78807df5df41c51ddbce4335bad4bda12e60f4ac655d2aca7f1c52603b4b36209c2563bea6243bd28e346c6be95de75a4bf5c0d8fb
|
data/README.md
CHANGED
@@ -77,6 +77,21 @@ touch globals.yml
|
|
77
77
|
1. Create a folder called `environments` inside your folder named after your account.
|
78
78
|
2. Inside the `environments` folder create a yaml file named after the environment you would like to define globals for. Only environments defined in your config are supported. The environment must also be mapped in the config to the account the sharing the same name as the folder the environment global yaml file lives in.
|
79
79
|
3. In the newly created environment's yaml file you may define your globals.
|
80
|
+
###### Encrypted Properties in Environment Globals
|
81
|
+
If you would like to pass in an encrypted property to all services in a given environment, you can pass in ckrt encrypted values by having an `encrypted` block in your environment global file.
|
82
|
+
```yaml
|
83
|
+
property_name_1: value
|
84
|
+
property_name_2: value
|
85
|
+
encrypted:
|
86
|
+
encrypted_property_1:
|
87
|
+
$ssm:
|
88
|
+
region: region
|
89
|
+
encrypted: encrypted_value
|
90
|
+
encrypted_property_2:
|
91
|
+
$ssm:
|
92
|
+
region: region
|
93
|
+
encrypted: encrypted_value
|
94
|
+
```
|
80
95
|
|
81
96
|
##### Step 3: Creating your service definitions
|
82
97
|
Service definitions have the highest level of supersedence and will overwrite matching global definitions.
|
data/lib/generator/generator.rb
CHANGED
@@ -30,7 +30,7 @@ module PropertyGenerator
|
|
30
30
|
service_instance.service
|
31
31
|
service_instance.interpolate
|
32
32
|
|
33
|
-
out = PropertyGenerator.writer(service, service_instance.service, @configs, @output_path)
|
33
|
+
out = PropertyGenerator.writer(service, service_instance.service, @configs, @output_path, service_instance.additional_options)
|
34
34
|
(output << out).flatten!
|
35
35
|
end
|
36
36
|
output
|
@@ -46,10 +46,15 @@ module PropertyGenerator
|
|
46
46
|
upload_account = config['upload_account']
|
47
47
|
upload_region = config['upload_region']
|
48
48
|
upload_bucket = config['upload_bucket']
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
|
50
|
+
upload_out = out.select { |file| file.include?("#{upload_account}") && file.include?("#{upload_region}") }
|
51
|
+
upload_out.each_slice(20) do |file_slice|
|
52
|
+
file_slice.map do |file|
|
53
|
+
Thread.new do
|
54
|
+
file_region = file.split("/")[-2]
|
55
|
+
PropertyGenerator.sync(upload_region, upload_account, upload_bucket, file, file_region)
|
56
|
+
end
|
57
|
+
end.each(&:join)
|
53
58
|
end
|
54
59
|
end
|
55
60
|
|
data/lib/generator/globals.rb
CHANGED
@@ -41,6 +41,11 @@ module PropertyGenerator
|
|
41
41
|
@environments.each do |env|
|
42
42
|
next unless File.exists?("#{@project_path}/globals/accounts/#{account}/environments/#{env}.yml")
|
43
43
|
data[account][env] = YAML.load_file("#{@project_path}/globals/accounts/#{account}/environments/#{env}.yml")
|
44
|
+
unless data[account][env]['encrypted'].nil?
|
45
|
+
encrypted = data[account][env]['encrypted'].dup
|
46
|
+
not_encrypted = data[account][env].reject { |k,_| k == 'encrypted' }
|
47
|
+
data[account][env] = not_encrypted.merge(encrypted)
|
48
|
+
end
|
44
49
|
end
|
45
50
|
end
|
46
51
|
data
|
data/lib/generator/service.rb
CHANGED
@@ -10,6 +10,8 @@ module PropertyGenerator
|
|
10
10
|
@environments = config.environments
|
11
11
|
@globals = globals
|
12
12
|
@environment_configs = config.environment_configs
|
13
|
+
@configmapname = service_data['configname'].nil? ? nil : service_data['configname']
|
14
|
+
set_additional_options
|
13
15
|
set_service
|
14
16
|
end
|
15
17
|
|
@@ -18,10 +20,26 @@ module PropertyGenerator
|
|
18
20
|
@service = merge_service_with_globals(@globals, service_data, @environments)
|
19
21
|
end
|
20
22
|
|
23
|
+
def set_additional_options
|
24
|
+
@additional_options = {}
|
25
|
+
@additional_options['configname'] = @service_data['configname'].nil? ? nil : @service_data['configname']
|
26
|
+
@additional_options['stringdata'] = @service_data['stringdata'].nil? ? nil : @service_data['stringdata']
|
27
|
+
@additional_options['configlabels'] = @service_data['configlabels'].nil? ? nil : @service_data['configlabels']
|
28
|
+
@additional_options['secretlabels'] = @service_data['secretlabels'].nil? ? nil : @service_data['secretlabels']
|
29
|
+
end
|
30
|
+
|
31
|
+
def additional_options
|
32
|
+
@additional_options
|
33
|
+
end
|
34
|
+
|
21
35
|
def service
|
22
36
|
@service
|
23
37
|
end
|
24
38
|
|
39
|
+
def configmap_name
|
40
|
+
@configmapname
|
41
|
+
end
|
42
|
+
|
25
43
|
def interpolate
|
26
44
|
environments = @environments
|
27
45
|
#read in config
|
data/lib/helpers/helpers.rb
CHANGED
@@ -54,14 +54,18 @@ module PropertyGenerator
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
-
def writer(service_name, finalized, configs, output_path)
|
57
|
+
def writer(service_name, finalized, configs, output_path, additional_options)
|
58
58
|
output = []
|
59
59
|
envs = configs.environments
|
60
60
|
environmental_configs = configs.environment_configs
|
61
61
|
envs.each do | env|
|
62
62
|
account = environmental_configs[env]["account"]
|
63
63
|
region = environmental_configs[env]["region"]
|
64
|
-
|
64
|
+
hash = { "properties" => finalized[env] }
|
65
|
+
['configname', 'stringdata', 'configlabels', 'secretlabels'].each do |setting|
|
66
|
+
hash[setting] = additional_options[setting] if [setting] unless additional_options[setting].nil?
|
67
|
+
end
|
68
|
+
json = JSON.pretty_generate(hash)
|
65
69
|
#IF users are specifing a vpc then we will drop property files under the dir that corresponds to the vpc
|
66
70
|
if environmental_configs[env].key?("vpc") && !environmental_configs[env]["vpc"].nil?
|
67
71
|
vpc_dir = "#{output_path}/#{account}/#{region}/#{environmental_configs[env]["vpc"]}"
|
@@ -48,7 +48,7 @@ module PropertyGenerator
|
|
48
48
|
|
49
49
|
def services_have_accepted_keys
|
50
50
|
status = {status: 'pass', error: ''}
|
51
|
-
accepted_keys = ['default', 'environments', 'encrypted']
|
51
|
+
accepted_keys = ['default', 'environments', 'encrypted', 'configname', 'stringdata', 'configlabels', 'secretlabels']
|
52
52
|
services_with_unacceptable_keys = []
|
53
53
|
@services.each do |path, loaded|
|
54
54
|
loaded.keys.each do |service_key|
|
@@ -59,7 +59,7 @@ module PropertyGenerator
|
|
59
59
|
end
|
60
60
|
if services_with_unacceptable_keys != []
|
61
61
|
status[:status] = 'fail'
|
62
|
-
status[:error] = "Service files: #{services_with_unacceptable_keys} have keys other than 'default', 'environments', or '
|
62
|
+
status[:error] = "Service files: #{services_with_unacceptable_keys} have keys other than 'default', 'environments', 'encrypted', 'configname', 'stringdata' 'configlabels' or 'secretlabels'"
|
63
63
|
end
|
64
64
|
status
|
65
65
|
end
|
data/spec/lib/global_spec.rb
CHANGED
@@ -16,11 +16,11 @@ module PropertyGenerator
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should read the environment globals' do
|
19
|
-
expect(global.get_environment_globals).to eq({123456789012=>{'my-test-env1'=>{'my_env'=>'my-test-env1'}}})
|
19
|
+
expect(global.get_environment_globals).to eq({123456789012=>{'my-test-env1'=>{'my_env'=>'my-test-env1', 'test_encrypted' => { '$ssm' => { 'region' => 'region', 'encrypted' => 'encrypted_value' }}}}})
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'should condense the globals accurately' do
|
23
|
-
expect(global.condense_globals).to eq({'my-test-env1'=>{'foo' => 'bar', 'my_account'=>123456789012, 'my_env'=>'my-test-env1'},
|
23
|
+
expect(global.condense_globals).to eq({'my-test-env1'=>{'foo' => 'bar', 'my_account'=>123456789012, 'my_env'=>'my-test-env1', 'test_encrypted' => { '$ssm' => { 'region' => 'region', 'encrypted' => 'encrypted_value' }}},
|
24
24
|
'my-test-env2' => {'foo' => 'bar'}})
|
25
25
|
end
|
26
26
|
|
data/spec/lib/service_spec.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
|
-
require
|
2
|
-
require_relative
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require
|
1
|
+
require "spec_helper"
|
2
|
+
require_relative "../../lib/generator/service"
|
3
|
+
require_relative "../../lib/generator/globals"
|
4
|
+
require_relative "../../lib/generator/config"
|
5
|
+
require "pp"
|
6
6
|
module PropertyGenerator
|
7
7
|
describe Service do
|
8
8
|
subject(:config) {PropertyGenerator::Config.new(File.expand_path("./spec/resources"))}
|
9
9
|
subject(:globals) {PropertyGenerator::Globals.new(File.expand_path("./spec/resources"), config)}
|
10
|
-
subject(:service) {described_class.new(YAML.load_file(
|
10
|
+
subject(:service) {described_class.new(YAML.load_file("./spec/resources/services/my-microservice-1.yml"), config, globals.globals)}
|
11
11
|
|
12
|
-
it
|
12
|
+
it "Parses and condenses a service\"s defaults and environment definitions" do
|
13
13
|
expect(service.service).to eq({"my-test-env1"=> {"foo"=>"bar",
|
14
14
|
"my_account"=>123456789012,
|
15
15
|
"my_env"=>"my-test-env1",
|
16
|
+
"test_encrypted" => { "$ssm" => { "region" => "region", "encrypted" => "encrypted_value" }},
|
16
17
|
"database.host"=>"my.database.{domain}",
|
17
18
|
"database.port"=>3306},
|
18
19
|
"my-test-env2"=> {"foo"=>"bar",
|
@@ -20,10 +21,11 @@ module PropertyGenerator
|
|
20
21
|
"database.port"=>3306}})
|
21
22
|
end
|
22
23
|
|
23
|
-
it
|
24
|
+
it "Tests interpolations work for a service" do
|
24
25
|
expect(service.interpolate).to eq({"my-test-env1"=> {"foo"=>"bar",
|
25
26
|
"my_account"=>123456789012,
|
26
27
|
"my_env"=>"my-test-env1",
|
28
|
+
"test_encrypted" => { "$ssm" => { "region" => "region", "encrypted" => "encrypted_value" }},
|
27
29
|
"database.host"=>"my.database.my1.com",
|
28
30
|
"database.port"=>3306},
|
29
31
|
"my-test-env2"=> {"foo"=>"bar",
|