cps-property-generator 0.2.7 → 0.2.13

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: 8c538411f403418186287f058c9e9ceb4d054513
4
- data.tar.gz: 76f347bfd52b07b8333ea929345e4b650d8221b8
3
+ metadata.gz: 202188fe59edafc4ddb51f8b4d285dc8a38ede94
4
+ data.tar.gz: 387b7905cfdb7472d09a426fda83f633c41794d7
5
5
  SHA512:
6
- metadata.gz: cdd7d8f5a4cad809bf09d655f026c6c9f12c75e3e28e044a3361bce2eb83748c36512c55668f9b48514b0d085e610d7bf78f3358c81336df93143ecdb7bba5e6
7
- data.tar.gz: 5f7b3911296e18c5715de3f43a09a0104c046dacdc32eee97f191281363cc73aeae817ab467590189bfd2584f7f78716b98176ea06bd0e70e72438c214d2586b
6
+ metadata.gz: cd5b14643b19438c1be8cc65b90c5d4bda7bcf5bd710d1a228396982b41c809a2d0c844930c175dae3026f6eb8c4da20b79477045181d3bbe515f8c15f8c1043
7
+ data.tar.gz: 3002871e1b5f17a67e5a5b38f84781e4147d1dacbbb5bc6f30c02cc8ec5af4c3d8397243a0fe8ac42d31a4a8a9e6d9d5f33e4055436d3478e47d7117a77508f6
@@ -24,7 +24,6 @@ class GeneratorCLI < ::Thor
24
24
  else
25
25
  generator.upload(out, options)
26
26
  end
27
-
28
27
  end
29
28
  end
30
29
 
@@ -15,10 +15,11 @@ module PropertyGenerator
15
15
  @configs = PropertyGenerator::Config.new(project_path)
16
16
  @globals = PropertyGenerator::Globals.new(project_path, @configs)
17
17
  @globals = @globals.globals
18
+ @accounts = @configs.accounts
19
+
18
20
  @output_path = "#{File.expand_path(options['output'])}/properties/#{SecureRandom.hex}"
19
21
  puts "Properties will be output here #{@output_path}"
20
22
  @service_list = PropertyGenerator.read_services(project_path)
21
-
22
23
  end
23
24
 
24
25
  def generate
@@ -29,20 +30,31 @@ module PropertyGenerator
29
30
  service_instance.service
30
31
  service_instance.interpolate
31
32
 
32
- 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)
33
34
  (output << out).flatten!
34
35
  end
35
36
  output
36
37
  end
37
38
 
38
39
  def upload(out, config)
40
+ account = config['upload_account']
41
+
42
+ if !@accounts.include?(account.to_i)
43
+ abort("The specified account (#{account}) is not configured, please add it to config/config.yml")
44
+ end
45
+
39
46
  upload_account = config['upload_account']
40
47
  upload_region = config['upload_region']
41
48
  upload_bucket = config['upload_bucket']
42
- out.each do |file|
43
- next unless file.include?("#{upload_account}") && file.include?("#{upload_region}")
44
- file_region = file.split("/")[-2]
45
- 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)
46
58
  end
47
59
  end
48
60
 
@@ -1,11 +1,17 @@
1
1
  module PropertyGenerator
2
+
2
3
  class Service
4
+ require 'active_support/core_ext/hash'
5
+
3
6
  attr_accessor :service
7
+
4
8
  def initialize(service_data, config, globals)
5
9
  @service_data = service_data
6
10
  @environments = config.environments
7
11
  @globals = globals
8
12
  @environment_configs = config.environment_configs
13
+ @configmapname = service_data['configname'].nil? ? nil : service_data['configname']
14
+ set_additional_options
9
15
  set_service
10
16
  end
11
17
 
@@ -14,10 +20,26 @@ module PropertyGenerator
14
20
  @service = merge_service_with_globals(@globals, service_data, @environments)
15
21
  end
16
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
+
17
35
  def service
18
36
  @service
19
37
  end
20
38
 
39
+ def configmap_name
40
+ @configmapname
41
+ end
42
+
21
43
  def interpolate
22
44
  environments = @environments
23
45
  #read in config
@@ -57,7 +79,7 @@ module PropertyGenerator
57
79
  environment_data = data['environments'][env].dup
58
80
  if data['encrypted']
59
81
  encrypted = data['encrypted'][env].dup unless data['encrypted'][env].nil?
60
- environment_data = data['environments'][env].merge(encrypted) unless encrypted.nil?
82
+ environment_data = data['environments'][env].deep_merge(encrypted) unless encrypted.nil?
61
83
  end
62
84
  if default_clone.nil?
63
85
  merged = environment_data
@@ -85,6 +107,6 @@ module PropertyGenerator
85
107
  output
86
108
  end
87
109
 
88
-
89
110
  end
111
+
90
112
  end
@@ -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
- json = 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?
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 'encrypted'."
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
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.7
4
+ version: 0.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Call
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 4.2.11.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 4.2.11.1
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: terminal-table
43
57
  requirement: !ruby/object:Gem::Requirement