cps-property-generator 0.2.10 → 0.2.16

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: e314fd422a95671a8a8b436c13d350cf0c2eb469
4
- data.tar.gz: 7ca938a07e15d3411b7bcd5e9aed9b13004f4b5e
3
+ metadata.gz: 84b92342668cccfdeb1e097c19fdd1641fef1589
4
+ data.tar.gz: d4c5c0bf42cbbec4a3a2203a4fbdd990f88a9a97
5
5
  SHA512:
6
- metadata.gz: d118ae143395ba549dade258fe38dce125a74742f4533407ed3a05e782ca6fffaee5c6791bb98c6c14771bc92a1124ec91de2e5460475572d91b5acd56a01f1d
7
- data.tar.gz: e8720c045795c043c0f932386cf5d7694f7d50c6ef04d5ed374f1478c6f898b37d5e519cc4f5c7c7eb3b851f670cb4f434e50f045eb99c1d81f7e746f89c56cf
6
+ metadata.gz: 4883e4c5fef3a9ea680b6401c9b3629371f16b967ab634a9fb2c041ee60940cab2e16c5469a2191a7964ee947fc80a6b190862aa3b0193caeb22c87be29849ba
7
+ data.tar.gz: 9381609f8a882ade931cb10c438b0fb6b9ad3619e4620d80929b8d52693bb2fdd6d245e65e68ebe805a5108ba444225976c565d82152d18c3eca9c5b5193b0de
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.
@@ -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, service_instance.configmap_name)
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
- out.each do |file|
50
- next unless file.include?("#{upload_account}") && file.include?("#{upload_region}")
51
- file_region = file.split("/")[-2]
52
- PropertyGenerator.sync(upload_region, upload_account, upload_bucket, file, file_region)
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
 
@@ -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
@@ -11,6 +11,7 @@ module PropertyGenerator
11
11
  @globals = globals
12
12
  @environment_configs = config.environment_configs
13
13
  @configmapname = service_data['configname'].nil? ? nil : service_data['configname']
14
+ set_additional_options
14
15
  set_service
15
16
  end
16
17
 
@@ -19,6 +20,18 @@ module PropertyGenerator
19
20
  @service = merge_service_with_globals(@globals, service_data, @environments)
20
21
  end
21
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
+
22
35
  def service
23
36
  @service
24
37
  end
@@ -54,18 +54,18 @@ module PropertyGenerator
54
54
  end
55
55
  end
56
56
 
57
- def writer(service_name, finalized, configs, output_path, configmap_name)
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
- json = if configmap_name
65
- JSON.pretty_generate({"properties" => finalized[env],"configname" => configmap_name})
66
- else
67
- JSON.pretty_generate({"properties" => finalized[env]})
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?
68
67
  end
68
+ json = JSON.pretty_generate(hash)
69
69
  #IF users are specifing a vpc then we will drop property files under the dir that corresponds to the vpc
70
70
  if environmental_configs[env].key?("vpc") && !environmental_configs[env]["vpc"].nil?
71
71
  vpc_dir = "#{output_path}/#{account}/#{region}/#{environmental_configs[env]["vpc"]}"
@@ -14,7 +14,6 @@ module PropertyGenerator
14
14
 
15
15
  def run_globals_tests
16
16
  tests = ['globals_load_as_hashes',
17
- 'globals_have_no_hashes_as_values',
18
17
  'globals_are_defined_for_valid_environemnts',
19
18
  ]
20
19
  results = PropertyGenerator.test_runner(self, tests)
@@ -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', 'configname']
51
+ accepted_keys = ['default', 'environments', 'encrypted', 'configname', 'stringdata', 'configlabels', 'secretlabels', 'label']
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', 'encrypted', or 'configname'."
62
+ status[:error] = "Service files: #{services_with_unacceptable_keys} have keys other than 'default', 'environments', 'encrypted', 'configname', 'stringdata', 'configlabels', 'secretlabels' or 'label'"
63
63
  end
64
64
  status
65
65
  end
@@ -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
 
@@ -1,18 +1,19 @@
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'
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('./spec/resources/services/my-microservice-1.yml'), config, globals.globals)}
10
+ subject(:service) {described_class.new(YAML.load_file("./spec/resources/services/my-microservice-1.yml"), config, globals.globals)}
11
11
 
12
- it 'Parses and condenses a service\'s defaults and environment definitions' do
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 'Tests interpolations work for a service' do
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",
@@ -1 +1,6 @@
1
- my_env: 'my-test-env1'
1
+ my_env: 'my-test-env1'
2
+ encrypted:
3
+ test_encrypted:
4
+ $ssm:
5
+ region: region
6
+ encrypted: encrypted_value
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cps-property-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.10
4
+ version: 0.2.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Call