environments-list-builder 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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8bffe360af78d91a16d39cc846005da7d71a322
|
4
|
+
data.tar.gz: 38b99640addaf84a77dfd9a4177230d97bd67940
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82d806b20e546257194fa20107d3d316a5c6b60e832aa3412898a918bfbde9748860341d778d578b6f7e54c830f96f4a20c4cc081e419ddb2a18a3a142c9202f
|
7
|
+
data.tar.gz: a589f3446a8b10784400f9cb3ed99d1f9f4376c09c4dc5c860f42873f1066dd32c760ae8ac8b29d05129f01892403b25fd814cc99592e503c314eccc8c1642ce
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
environments-list-builder (0.
|
4
|
+
environments-list-builder (0.3.0)
|
5
5
|
archive-tar-minitar (= 0.5.2)
|
6
6
|
awesome_print
|
7
7
|
aws-sdk (>= 2.0, < 2.1)
|
@@ -24,7 +24,7 @@ PATH
|
|
24
24
|
PATH
|
25
25
|
remote: ../cicd-builder
|
26
26
|
specs:
|
27
|
-
cicd-builder (0.9.
|
27
|
+
cicd-builder (0.9.61)
|
28
28
|
artifactory (>= 2.2.1, < 2.3)
|
29
29
|
awesome_print (>= 1.6, < 2.0)
|
30
30
|
aws-sdk (>= 2.0, < 2.1)
|
@@ -31,15 +31,34 @@ module CiCd
|
|
31
31
|
}
|
32
32
|
end
|
33
33
|
|
34
|
+
# ---------------------------------------------------------------------------------------------------------------
|
35
|
+
def checkEnvironment()
|
36
|
+
@logger.step CLASS+'::'+__method__.to_s
|
37
|
+
# We fake some of the keys that the will need later ...
|
38
|
+
fakes = @default_options[:env_keys].select{|key| key =~ /^(CLASSES|REPO_PRODUCTS|MANIFEST_FILE)/}
|
39
|
+
faked = {}
|
40
|
+
fakes.each do |key|
|
41
|
+
unless ENV.has_key?(key)
|
42
|
+
ENV[key]='faked'
|
43
|
+
faked[key] = true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
ret = super
|
47
|
+
faked.each do |k,_|
|
48
|
+
ENV.delete k
|
49
|
+
@default_options[:env_unused].delete k if @default_options[:env_unused]
|
50
|
+
end
|
51
|
+
@default_options[:env_unused] = @default_options[:env_unused].select{|k| k !~ /^(ARTIFACTORY|AWS_INI)/} if @default_options[:env_unused]
|
52
|
+
ret
|
53
|
+
end
|
54
|
+
|
34
55
|
# ---------------------------------------------------------------------------------------------------------------
|
35
56
|
def setup()
|
36
57
|
$stdout.write("EnvironmentsListBuilder v#{CiCd::Builder::EnvironmentsList::VERSION}\n")
|
37
58
|
@default_options[:env_keys] << %w(
|
38
|
-
REPO_PRODUCTS
|
39
59
|
ARTIFACTORY_RELEASE_REPO
|
40
60
|
ARTIFACTORY_ENVIRONMENTS_MODULE
|
41
61
|
)
|
42
|
-
@default_options[:env_keys] = @default_options[:env_keys].select{|key| key !~ /^CLASSES/}
|
43
62
|
super
|
44
63
|
end
|
45
64
|
|
@@ -26,6 +26,25 @@ module CiCd
|
|
26
26
|
@vars[:return_code]
|
27
27
|
end
|
28
28
|
|
29
|
+
# ---------------------------------------------------------------------------------------------------------------
|
30
|
+
def loadEnvironments(filename,version,changed=false)
|
31
|
+
require 'hashie'
|
32
|
+
@vars[:environments] = {
|
33
|
+
file: filename,
|
34
|
+
version: version,
|
35
|
+
changed: (changed or not File.exists?(filename)),
|
36
|
+
}
|
37
|
+
data = IO.read(filename) rescue '{}'
|
38
|
+
json = begin
|
39
|
+
JSON.parse(data)
|
40
|
+
rescue
|
41
|
+
eval(data)
|
42
|
+
end
|
43
|
+
IO.write(filename, JSON.pretty_generate(json, {indent: "\t", space: ' '})) # Just to be tidy :)
|
44
|
+
@vars[:environments][:data] = Hashie::Mash.new(json)
|
45
|
+
@logger.info "#{ENV['ARTIFACTORY_ENVIRONMENTS_MODULE']}-#{version}"
|
46
|
+
end
|
47
|
+
|
29
48
|
# ---------------------------------------------------------------------------------------------------------------
|
30
49
|
def getLatestEnvironments(oldver=nil)
|
31
50
|
version = @repo.latestArtifactoryVersion(ENV['ARTIFACTORY_ENVIRONMENTS_MODULE'], ENV['ARTIFACTORY_RELEASE_REPO'])
|
@@ -37,23 +56,7 @@ module CiCd
|
|
37
56
|
@logger.error "Too many versions found for #{ENV['ARTIFACTORY_RELEASE_REPO']}/#{ENV['ARTIFACTORY_ENVIRONMENTS_MODULE']}-#{version} during preparation?"
|
38
57
|
@vars[:return_code] = Errors::ARTIFACT_MULTI_MATCH
|
39
58
|
else
|
40
|
-
|
41
|
-
filename = objects[0].download()
|
42
|
-
@vars[:environments] = {
|
43
|
-
file: filename,
|
44
|
-
# artifact: objects[0],
|
45
|
-
version: version,
|
46
|
-
changed: false,
|
47
|
-
}
|
48
|
-
data = IO.read(filename)
|
49
|
-
json = begin
|
50
|
-
JSON.parse(data)
|
51
|
-
rescue
|
52
|
-
eval(data)
|
53
|
-
end
|
54
|
-
IO.write(filename, JSON.pretty_generate(json, {indent: "\t", space: ' '})) # Just to be tidy :)
|
55
|
-
@vars[:environments][:data] = Hashie::Mash.new(json)
|
56
|
-
@logger.info "#{ENV['ARTIFACTORY_ENVIRONMENTS_MODULE']}-#{version}"
|
59
|
+
loadEnvironments(objects[0].download(), version)
|
57
60
|
end
|
58
61
|
else
|
59
62
|
@logger.error "Version not found for #{ENV['ARTIFACTORY_RELEASE_REPO']}/#{ENV['ARTIFACTORY_ENVIRONMENTS_MODULE']}-#{version} during preparation?"
|
@@ -63,8 +66,9 @@ module CiCd
|
|
63
66
|
@logger.info "Alread have the latest version (#{oldver})"
|
64
67
|
end
|
65
68
|
else
|
66
|
-
@logger.
|
67
|
-
@vars[:return_code] = Errors::ARTIFACT_NOT_FOUND
|
69
|
+
@logger.warn "No version found for #{ENV['ARTIFACTORY_RELEASE_REPO']}/#{ENV['ARTIFACTORY_ENVIRONMENTS_MODULE']} during preparation?"
|
70
|
+
# @vars[:return_code] = Errors::ARTIFACT_NOT_FOUND
|
71
|
+
loadEnvironments('/tmp/environments.json', '1', true)
|
68
72
|
end
|
69
73
|
@vars[:return_code]
|
70
74
|
end
|
@@ -97,13 +101,19 @@ module CiCd
|
|
97
101
|
helper.options[:profiles] = ENV['AWS_PROFILES'] if ENV['AWS_PROFILES']
|
98
102
|
helper.prepare_accounts
|
99
103
|
if helper.accounts.size > 0
|
100
|
-
|
101
|
-
|
104
|
+
helper_environments = loadCachedEnvironments()
|
105
|
+
unless helper_environments.size > 0
|
106
|
+
helper.get_environments()
|
107
|
+
helper_environments = helper.environments
|
108
|
+
saveCachedEnvironments(helper_environments)
|
109
|
+
end
|
110
|
+
|
111
|
+
if helper_environments.size > 0
|
102
112
|
getLatestEnvironments(@vars[:environments][:version])
|
103
113
|
if 0 == @vars[:return_code]
|
104
114
|
environments = Hashie::Mash.new(@vars[:environments][:data])
|
105
115
|
exclude_regex = ENV['ENVS_EXCLUDE_REGEX'] || '-repo'
|
106
|
-
|
116
|
+
helper_environments.select{|e,_| e !~ /#{exclude_regex}/ }.each do |envnam,_|
|
107
117
|
environments[envnam] ||= {}
|
108
118
|
end
|
109
119
|
if environments.size != @vars[:environments][:data].size
|
@@ -129,6 +139,32 @@ module CiCd
|
|
129
139
|
|
130
140
|
protected
|
131
141
|
|
142
|
+
CACHE_FILE = '/tmp/aws_cloudformation_environments_stacks.json'
|
143
|
+
# ---------------------------------------------------------------------------------------------------------------
|
144
|
+
def loadCachedEnvironments
|
145
|
+
hash = {}
|
146
|
+
# if File.exists?(CACHE_FILE)
|
147
|
+
# end
|
148
|
+
begin
|
149
|
+
stat = File.stat(CACHE_FILE)
|
150
|
+
age = (Time.now - stat.mtime)
|
151
|
+
@logger.info "Environment stacks cache #{CACHE_FILE} age is #{age}s"
|
152
|
+
if age < 3600
|
153
|
+
hash = JSON.parse(IO.read(CACHE_FILE))
|
154
|
+
else
|
155
|
+
hash = {}
|
156
|
+
end
|
157
|
+
rescue
|
158
|
+
hash = {}
|
159
|
+
end
|
160
|
+
hash
|
161
|
+
end
|
162
|
+
|
163
|
+
# ---------------------------------------------------------------------------------------------------------------
|
164
|
+
def saveCachedEnvironments(environments)
|
165
|
+
IO.write(CACHE_FILE,JSON.pretty_generate(environments,{ indent: "\t", space: ' '}))
|
166
|
+
end
|
167
|
+
|
132
168
|
def prepare_accounts
|
133
169
|
@accounts = []
|
134
170
|
if @options[:iniglob]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: environments-list-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christo De Lange
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: manifest-builder
|