brpm_content 0.1.38 → 0.1.39

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzFkN2I5ODM4MTViMDQzNTBlZDY3NjAzMDVlZWMxNmE2ZDQzY2JmYg==
4
+ MGJiMjY3NDAzOWU5ZGY3YmQyNjM3ODM1MzdiYTA0MzdhZmQ3ZDA1Mg==
5
5
  data.tar.gz: !binary |-
6
- NDE0MzM1YmY1NWFhZmI3ODI5NmVkNzg3MmZjNzNiNzM3ZDcwOTUzZA==
6
+ NzM4YzA0Mjc1Mzg4NWRkNGY5YjQwMWUwMTdlMWMzZGM0MWFiYmFhNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NjJjZGVlNjgwZGI0NmQ3MThkZmJkN2I1NWFjNmUwM2VhYmI2ZDMzMzE0Nzhk
10
- NDA1YzQ1MTM1ODVmYzJlY2IwNjkyMzNlNTUzNDM4MDI4NTA5N2JmMmExYThk
11
- OWY5YjJhNDRhZTI2ODc1MzZlNmQ4ZmJjYWRlMDlmN2JjMTNiMzc=
9
+ MzZjMDkyZDU0NmNkYmZhOWI5ZjkzMDQ5NTQ4ZTNhMzRlMGJlYjI3MjFjM2Mz
10
+ ZTQ2Yjk3YWRkYTc5ZGMxYjY1YzI1MjdkYWQ2YjdjOTM4NWJjYzA0ZWQyZWEw
11
+ MGZmNmY1MWIzZmQ2NDY3MWU0MmQ3ZjgwOGExNmYwMjY5ZWI2NTg=
12
12
  data.tar.gz: !binary |-
13
- NWViZjdkMWU2YTQzY2JlMDIyZmZmMTY0ODY5M2E4YjEzMjllZDkxMGJmMDAz
14
- NGZjMjllY2EwZDVjMjhmOGQ3Y2I2ZTQyMjMyODdjNTU2N2UwMmM5M2E3Y2Jm
15
- YWZjYjFlODc4NmE5YmM2N2IyODM1ZWFmNjNiNjQ0MjgyNGYwNDM=
13
+ MDI5MzdhYWJlYjU3YTdlNzZhMDU3MDA4ZDc4MmY0NmNlMDZiNjNkMTRmYjdm
14
+ YWU0ZjJiZDdhMzA4ZjI3MTkyYjFmYzhiNmZmMGIyYjQ2YjNhMTVhNmMxYWNm
15
+ YmVkM2FjNTg3YTE0ZTBlOTJkYWEwMzk1M2M2ZWYzNGIwMzIzNzQ=
@@ -122,8 +122,8 @@ class BrpmAuto
122
122
  end
123
123
 
124
124
  gemfile_lock_path = "#{module_gem_path}/Gemfile.lock"
125
- if File.exists?(gemfile_lock_path)
126
- BrpmAuto.log "Found a Gemfile.lock: #{gemfile_lock_path}. Parsing the version numbers for later usage..."
125
+ if File.exists?(gemfile_lock_path) # TODO: decide how to react when multiple gems are 'required', each with a gemfile.lock
126
+ BrpmAuto.log "Found a Gemfile.lock: #{gemfile_lock_path} so parsing the specified version numbers for later usage..."
127
127
  Dir.chdir(File.dirname(gemfile_lock_path)) do
128
128
  @gemfile_lock = Bundler::LockfileParser.new(Bundler.read_file(gemfile_lock_path))
129
129
  end
@@ -232,6 +232,91 @@ class BrpmAuto
232
232
  end
233
233
  end
234
234
 
235
+ ###############################################################################################################################
236
+ # Assure backward compatibility with the ssh_script_header methods when running the automation scripts in a separate process
237
+ def set_property_flag(prop, value = nil)
238
+ acceptable_fields = ["name", "value", "environment", "component", "global", "private"]
239
+ flag = "#------ Block to Set Property ---------------#\n"
240
+ if value.nil?
241
+ flag += set_build_flag_data("properties", prop, acceptable_fields)
242
+ else
243
+ flag += "$$SS_Set_property{#{prop}=>#{value}}$$"
244
+ end
245
+ flag += "\n#------- End Set Property ---------------#\n"
246
+ BrpmAuto.log flag
247
+ flag
248
+ end
249
+
250
+ def set_server_flag(servers)
251
+ # servers = "server_name, env\ncserver2_name, env2"
252
+ acceptable_fields = ["name", "environment", "group"]
253
+ flag = "#------ Block to Set Servers ---------------#\n"
254
+ flag += set_build_flag_data("servers", servers, acceptable_fields)
255
+ flag += "\n#------ End Set Servers ---------------#\n"
256
+ BrpmAuto.log flag
257
+ flag
258
+ end
259
+
260
+ def set_component_flag(components)
261
+ # comps = "comp_name, version\ncomp2_name, version2"
262
+ flag = "#------ Block to Set Components ---------------#\n"
263
+ acceptable_fields = ["name", "version", "environment", "application"]
264
+ flag += set_build_flag_data("components", components, acceptable_fields)
265
+ flag += "\n#------ End Set Components ---------------#\n"
266
+ BrpmAuto.log flag
267
+ flag
268
+ end
269
+
270
+ def set_titles_acceptable?(cur_titles, acceptable_titles)
271
+ cur_titles.each.reject{ |cur| acceptable_titles.include?(cur)}.count == 0
272
+ end
273
+
274
+ def set_build_flag_data(set_item, set_data, acceptable_titles)
275
+ flag = ""; msg = ""
276
+ lines = set_data.split("\n")
277
+ titles = lines[0].split(",").map{ |it| it.strip }
278
+ if set_titles_acceptable?(titles, acceptable_titles)
279
+ flag += "$$SS_Set_#{set_item}{\n"
280
+ flag += "#{titles.join(", ")}\n"
281
+ lines[1..-1].each do |line|
282
+ if line.split(",").count == titles.count
283
+ flag += "#{line}\n"
284
+ else
285
+ msg += "Skipped: #{line}"
286
+ end
287
+ end
288
+ flag += "}$$\n"
289
+ else
290
+ flag += "ERROR - Unable to set #{set_item} - improper format\n"
291
+ end
292
+ flag += msg
293
+ end
294
+
295
+ def set_application_version(prop, value)
296
+ # set_application_flag(app_name, version)
297
+ flag = "#------ Block to Set Application Version ---------------#\n"
298
+ flag += "$$SS_Set_application{#{prop}=>#{value}}$$"
299
+ flag += "\n#------ End Set Application ---------------#\n"
300
+ BrpmAuto.log(flag)
301
+ flag
302
+ end
303
+
304
+ def pack_response(argument_name, response)
305
+ flag = "#------ Block to Set Pack Response ---------------#\n"
306
+ unless argument_name.nil?
307
+ if response.is_a?(Hash)
308
+ # Used for out-table output parameter
309
+ flag += "$$SS_Pack_Response{#{argument_name}@@#{response.to_json}}$$"
310
+ else
311
+ flag += "$$SS_Pack_Response{#{argument_name}=>#{response}}$$"
312
+ end
313
+ end
314
+ flag += "\n#------- End Set Pack Response Block ---------------#\n"
315
+ BrpmAuto.log flag
316
+ flag
317
+ end
318
+ ###############################################################################################################################
319
+
235
320
  private
236
321
 
237
322
  def require_module_internal(module_name, module_version)
@@ -1,4 +1,4 @@
1
- version: 0.1.38
1
+ version: 0.1.39
2
2
 
3
3
  author: Niek Bartholomeus
4
4
  email: niek.bartholomeus@gmail.com
@@ -2,10 +2,15 @@ class ModuleInstaller
2
2
  def install_module(module_name, module_version)
3
3
  BrpmAuto.log "Installing module #{module_name} #{module_version.nil? ? "" : module_version}..."
4
4
 
5
- specs = install_gem(module_name, module_version)
6
- module_spec = specs.find { |spec| spec.name == module_name}
5
+ if true #TODO: support non-gem-install mode
6
+ specs = install_gem(module_name, module_version)
7
+ module_spec = specs.find { |spec| spec.name == module_name}
7
8
 
8
- install_bundle_if_necessary(module_spec)
9
+ install_bundle_if_necessary(module_spec)
10
+ else
11
+ specs = [ Gem::Specification.find_by_name(module_name) ]
12
+ module_spec = specs.find { |spec| spec.name == module_name}
13
+ end
9
14
 
10
15
  if brpm_installed_locally?
11
16
  BrpmAuto.log "A BRPM instance is installed locally"
@@ -28,12 +33,12 @@ class ModuleInstaller
28
33
  BrpmAuto.log "Creating an automation error for '******** ERROR ********' if one doesn't exist yet..."
29
34
  create_automation_error_if_not_exists("******** ERROR ********")
30
35
 
31
- module_friendly_name = get_module_friendly_name(module_name)
36
+ module_friendly_name = get_module_friendly_name(module_spec)
32
37
  BrpmAuto.log "Creating an automation category for #{module_friendly_name} if one doesn't exist yet..."
33
38
  create_automation_category_if_not_exists(module_friendly_name)
34
39
 
35
40
  BrpmAuto.log "Installing the automation script wrappers in the local BRPM instance..."
36
- install_auto_script_wrappers(module_spec.gem_dir, module_spec.name)
41
+ install_auto_script_wrappers(module_spec.gem_dir, module_spec.name, module_friendly_name)
37
42
  end
38
43
  end
39
44
  end
@@ -41,13 +46,13 @@ class ModuleInstaller
41
46
  def prepare_brpm_connection
42
47
  brpm_file = File.expand_path("~/.brpm")
43
48
 
44
- config = nil
49
+ brpm_config = nil
45
50
  if File.exists?(brpm_file)
46
- config = YAML.load_file(brpm_file)
51
+ brpm_config = YAML.load_file(brpm_file)
47
52
  end
48
53
 
49
- if config
50
- unless config["brpm_url"] and config["brpm_api_token"]
54
+ if brpm_config
55
+ unless brpm_config["brpm_url"] and brpm_config["brpm_api_token"]
51
56
  BrpmAuto.log "WARNING - Properties brpm_url and/or brpm_api_token don't exist in file ~/.brpm so not installing the automation script wrappers in BRPM. If you want to install them the next time you should add brpm_url and brpm_api_token properties in yaml format in file ~/.brpm."
52
57
  return false
53
58
  end
@@ -64,7 +69,7 @@ class ModuleInstaller
64
69
  return false
65
70
  end
66
71
 
67
- @brpm_rest_client = BrpmRestClient.new(config["brpm_url"], config["brpm_api_token"])
72
+ @brpm_rest_client = BrpmRestClient.new(brpm_config["brpm_url"], brpm_config["brpm_api_token"])
68
73
  true
69
74
  end
70
75
 
@@ -94,13 +99,13 @@ class ModuleInstaller
94
99
  gemfile_lock = File.join(spec.gem_dir, "Gemfile.lock")
95
100
 
96
101
  if File.exists?(gemfile) && File.exists?(gemfile_lock)
97
- BrpmAuto.log "Found a Gemfile.lock so executing command 'bundle install --gemfile #{gemfile}'..."
98
- # %x(bundle install --gemfile #{gemfile})
99
102
  if BrpmAuto.run_from_brpm or BrpmAuto.params.unit_test
100
- result = BrpmAuto.execute_shell("cd #{spec.gem_dir}; export GEM_HOME=#{BrpmAuto.get_gems_root_path}; bundle install")
103
+ command = "cd #{spec.gem_dir}; export GEM_HOME=#{BrpmAuto.get_gems_root_path}; bundle install"
101
104
  else
102
- result = BrpmAuto.execute_shell("cd #{spec.gem_dir}; bundle install")
105
+ command = "cd #{spec.gem_dir}; bundle install"
103
106
  end
107
+ BrpmAuto.log "Found a Gemfile.lock so executing command '#{command}'..."
108
+ result = BrpmAuto.execute_shell(command)
104
109
 
105
110
  BrpmAuto.log result["stdout"] if result["stdout"] and !result["stdout"].empty?
106
111
  unless result["status"] == 0
@@ -129,8 +134,10 @@ class ModuleInstaller
129
134
  ENV["BRPM_HOME"] and !ENV["BRPM_HOME"].empty?
130
135
  end
131
136
 
132
- def get_module_friendly_name(module_name)
133
- "#{module_name.sub("brpm_module_", "").capitalize}"
137
+ def get_module_friendly_name(module_spec)
138
+ module_config = YAML.load_file("#{module_spec.gem_dir}/config.yml")
139
+
140
+ module_config["name"] || "#{module_spec.name.sub("brpm_module_", "").capitalize}"
134
141
  end
135
142
 
136
143
  def create_automation_error_if_not_exists(automation_error)
@@ -158,7 +165,7 @@ class ModuleInstaller
158
165
  end
159
166
  end
160
167
 
161
- def install_auto_script_wrappers(module_path, module_name)
168
+ def install_auto_script_wrappers(module_path, module_name, module_friendly_name)
162
169
  BrpmAuto.log "Retrieving the integration servers..."
163
170
  integration_servers = @brpm_rest_client.get_project_servers
164
171
 
@@ -172,7 +179,7 @@ class ModuleInstaller
172
179
 
173
180
  resource_automation_script_paths.each do |auto_script_path|
174
181
  begin
175
- install_auto_script_wrapper(auto_script_path, "ResourceAutomation", module_name, integration_servers)
182
+ install_auto_script_wrapper(auto_script_path, "ResourceAutomation", module_name, module_friendly_name, integration_servers)
176
183
  rescue Exception => e
177
184
  failed_scripts << auto_script_path
178
185
  BrpmAuto.log_error(e)
@@ -190,7 +197,7 @@ class ModuleInstaller
190
197
 
191
198
  automation_script_paths.each do |auto_script_path|
192
199
  begin
193
- install_auto_script_wrapper(auto_script_path, "Automation", module_name, integration_servers)
200
+ install_auto_script_wrapper(auto_script_path, "Automation", module_name, module_friendly_name, integration_servers)
194
201
  rescue Exception => e
195
202
  failed_scripts << auto_script_path
196
203
  BrpmAuto.log_error(e)
@@ -209,7 +216,7 @@ class ModuleInstaller
209
216
  end
210
217
  end
211
218
 
212
- def install_auto_script_wrapper(auto_script_path, automation_type, module_name, integration_servers)
219
+ def install_auto_script_wrapper(auto_script_path, automation_type, module_name, module_friendly_name, integration_servers)
213
220
  auto_script_name = File.basename(auto_script_path, ".rb")
214
221
  BrpmAuto.log "Installing the wrapper script for resource automation #{auto_script_name}..."
215
222
 
@@ -251,7 +258,6 @@ class ModuleInstaller
251
258
  wrapper_script_content += "\n"
252
259
  wrapper_script_content += get_script_executor_template(automation_type, module_name, auto_script_name)
253
260
 
254
- module_friendly_name = get_module_friendly_name(module_name)
255
261
  if auto_script_config["automation_category"]
256
262
  automation_category = auto_script_config["automation_category"]
257
263
  create_automation_category_if_not_exists(automation_category)
@@ -298,16 +304,21 @@ class ModuleInstaller
298
304
  include_position_attribute = true
299
305
  end
300
306
 
307
+ input_params = auto_script_params.select do |_, param|
308
+ type = param["type"] || "in"
309
+ ! type.start_with?("out")
310
+ end
311
+
301
312
  module_version_param = {}
302
313
  module_version_param["name"] = "module_version"
303
314
  module_version_param["required"] = false
304
- module_version_param["position"] = "A#{auto_script_params.size + 1}:C#{auto_script_params.size + 1}" if include_position_attribute
315
+ module_version_param["position"] = "A#{auto_script_params.size + 1}:C#{input_params.size + 1}" if include_position_attribute
305
316
  auto_script_params["module_version"] = module_version_param
306
317
 
307
318
  framework_version_param = {}
308
319
  framework_version_param["name"] = "framework_version"
309
320
  framework_version_param["required"] = false
310
- framework_version_param["position"] = "A#{auto_script_params.size + 1}:C#{auto_script_params.size + 1}" if include_position_attribute
321
+ framework_version_param["position"] = "A#{auto_script_params.size + 1}:C#{input_params.size + 1}" if include_position_attribute
311
322
  auto_script_params["framework_version"] = framework_version_param
312
323
  end
313
324
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brpm_content
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.38
4
+ version: 0.1.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Niek Bartholomeus
8
8
  autorequire:
9
9
  bindir: modules/framework/bin
10
10
  cert_chain: []
11
- date: 2015-07-24 00:00:00.000000000 Z
11
+ date: 2015-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client