brpm_content 0.1.16

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.
Files changed (267) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +38 -0
  3. data/.travis.yml +14 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE +21 -0
  6. data/README.md +308 -0
  7. data/Rakefile +24 -0
  8. data/TO_BE_MIGRATED.txt +8 -0
  9. data/architecture.png +0 -0
  10. data/brpm_content.gemspec +31 -0
  11. data/customers/demo/integrations/brpm/process_event_handler_event.rb +183 -0
  12. data/customers/demo/integrations/jenkins/spec/api/applications_spec.rb +89 -0
  13. data/customers/demo/integrations/jenkins/spec/api/plans_spec.rb +69 -0
  14. data/customers/demo/integrations/jenkins/spec/api/requests_spec.rb +57 -0
  15. data/customers/demo/integrations/jenkins/spec/spec_helper.rb +33 -0
  16. data/customers/demo/integrations/jira/process_webhook_event.rb +33 -0
  17. data/customers/demo/jira_mappings.rb +29 -0
  18. data/infrastructure/integrations/event_handler.rb +62 -0
  19. data/infrastructure/integrations/webhook_receiver.rb +49 -0
  20. data/infrastructure/shell_scripts/backup_database.sh +19 -0
  21. data/infrastructure/shell_scripts/create_bl_package.sh +34 -0
  22. data/infrastructure/shell_scripts/create_release_request.sh +34 -0
  23. data/infrastructure/shell_scripts/ddns.sh +10 -0
  24. data/infrastructure/shell_scripts/install_brpm.sh +63 -0
  25. data/infrastructure/shell_scripts/install_content_module.sh +66 -0
  26. data/infrastructure/shell_scripts/install_content_repo.sh +60 -0
  27. data/infrastructure/shell_scripts/install_module_from_gem.sh +80 -0
  28. data/infrastructure/shell_scripts/maintenance.sh +4 -0
  29. data/infrastructure/shell_scripts/patch_brpm.sh +90 -0
  30. data/infrastructure/shell_scripts/restore_database.sh +33 -0
  31. data/infrastructure/shell_scripts/run_event_handler.cmd +16 -0
  32. data/infrastructure/shell_scripts/run_event_handler.sh +20 -0
  33. data/infrastructure/shell_scripts/run_webhook_receiver.cmd +14 -0
  34. data/infrastructure/shell_scripts/run_webhook_receiver.sh +15 -0
  35. data/infrastructure/shell_scripts/update_content_repo.sh +21 -0
  36. data/infrastructure/silent_install_options_4.6.txt +93 -0
  37. data/infrastructure/silent_install_options_upgrade_4.6.txt +92 -0
  38. data/infrastructure/smtp_settings.rb +42 -0
  39. data/infrastructure/ssh_script_header_additions.rb +21 -0
  40. data/modules/ansible/automations/execute_role.rb +3 -0
  41. data/modules/ansible/automations/execute_role.txt +12 -0
  42. data/modules/ansible/config.yml +5 -0
  43. data/modules/ansible/lib/ansible.rb +41 -0
  44. data/modules/atrium_orchestrator/automations/execute_workflow.rb +12 -0
  45. data/modules/atrium_orchestrator/automations/execute_workflow.txt +25 -0
  46. data/modules/atrium_orchestrator/automations/reserve_ip_address.rb +22 -0
  47. data/modules/atrium_orchestrator/automations/reserve_ip_address.txt +21 -0
  48. data/modules/atrium_orchestrator/config.yml +7 -0
  49. data/modules/atrium_orchestrator/lib/ao_soap_client.rb +94 -0
  50. data/modules/bladelogic/automations/create_package.rb +29 -0
  51. data/modules/bladelogic/automations/create_package.txt +26 -0
  52. data/modules/bladelogic/automations/deploy_package.rb +137 -0
  53. data/modules/bladelogic/automations/deploy_package.txt +53 -0
  54. data/modules/bladelogic/config.yml +7 -0
  55. data/modules/bladelogic/lib/bl_rest/bsa_rest_client.rb +65 -0
  56. data/modules/bladelogic/lib/bl_soap/blpackage.rb +43 -0
  57. data/modules/bladelogic/lib/bl_soap/bsa_soap_base.rb +118 -0
  58. data/modules/bladelogic/lib/bl_soap/bsa_soap_client.rb +34 -0
  59. data/modules/bladelogic/lib/bl_soap/compliance_job.rb +155 -0
  60. data/modules/bladelogic/lib/bl_soap/deploy_job.rb +48 -0
  61. data/modules/bladelogic/lib/bl_soap/depot_group.rb +47 -0
  62. data/modules/bladelogic/lib/bl_soap/job.rb +376 -0
  63. data/modules/bladelogic/lib/bl_soap/job_group.rb +72 -0
  64. data/modules/bladelogic/lib/bl_soap/job_management.rb +22 -0
  65. data/modules/bladelogic/lib/bl_soap/job_result.rb +12 -0
  66. data/modules/bladelogic/lib/bl_soap/job_run.rb +271 -0
  67. data/modules/bladelogic/lib/bl_soap/login.rb +47 -0
  68. data/modules/bladelogic/lib/bl_soap/nsh_script_job.rb +14 -0
  69. data/modules/bladelogic/lib/bl_soap/patch_catalog.rb +178 -0
  70. data/modules/bladelogic/lib/bl_soap/patch_remediation_job.rb +137 -0
  71. data/modules/bladelogic/lib/bl_soap/patching_job.rb +250 -0
  72. data/modules/bladelogic/lib/bl_soap/server.rb +12 -0
  73. data/modules/bladelogic/lib/bl_soap/template.rb +13 -0
  74. data/modules/bladelogic/lib/bl_soap/utility.rb +99 -0
  75. data/modules/bladelogic/resource_automations/select_job.rb +33 -0
  76. data/modules/bladelogic/resource_automations/select_job.txt +15 -0
  77. data/modules/bladelogic/tests/create_package_spec.rb +28 -0
  78. data/modules/bladelogic/tests/deploy_package_spec.rb +23 -0
  79. data/modules/bladelogic/tests/spec_helper.rb +82 -0
  80. data/modules/brpm/automations/create_release_from_excel.rb +34 -0
  81. data/modules/brpm/automations/create_release_from_excel.txt +5 -0
  82. data/modules/brpm/automations/create_release_request.rb +100 -0
  83. data/modules/brpm/automations/create_release_request.txt +5 -0
  84. data/modules/brpm/automations/create_request.rb +73 -0
  85. data/modules/brpm/automations/create_request.txt +23 -0
  86. data/modules/brpm/automations/promote_request.rb +197 -0
  87. data/modules/brpm/automations/promote_request.txt +24 -0
  88. data/modules/brpm/automations/select_application_version.rb +22 -0
  89. data/modules/brpm/automations/select_application_version.txt +17 -0
  90. data/modules/brpm/automations/select_component_version.rb +12 -0
  91. data/modules/brpm/automations/select_component_version.txt +5 -0
  92. data/modules/brpm/automations/select_request_template.rb +6 -0
  93. data/modules/brpm/automations/select_request_template.txt +13 -0
  94. data/modules/brpm/automations/wait_for_step_in_other_request.rb +11 -0
  95. data/modules/brpm/automations/wait_for_step_in_other_request.txt +13 -0
  96. data/modules/brpm/automations/wait_till_promoted_request_is_completed.rb +9 -0
  97. data/modules/brpm/automations/wait_till_promoted_request_is_completed.txt +5 -0
  98. data/modules/brpm/config.yml +6 -0
  99. data/modules/brpm/lib/brpm_request.rb +207 -0
  100. data/modules/brpm/lib/brpm_rest.rb +312 -0
  101. data/modules/brpm/lib/brpm_rest_client.rb +1501 -0
  102. data/modules/brpm/resource_automations/select_application.rb +16 -0
  103. data/modules/brpm/resource_automations/select_application.txt +5 -0
  104. data/modules/brpm/resource_automations/select_environment.rb +14 -0
  105. data/modules/brpm/resource_automations/select_environment.txt +5 -0
  106. data/modules/brpm/resource_automations/select_request_template.rb +16 -0
  107. data/modules/brpm/resource_automations/select_request_template.txt +5 -0
  108. data/modules/brpm/resource_automations/select_step_in_request.rb +33 -0
  109. data/modules/brpm/resource_automations/select_step_in_request.txt +5 -0
  110. data/modules/brpm/sample_applications/e-finance.json +0 -0
  111. data/modules/brpm/tests/create_release_request_spec.rb +66 -0
  112. data/modules/brpm/tests/create_request_spec.rb +84 -0
  113. data/modules/brpm/tests/select_application_version_spec.rb +47 -0
  114. data/modules/brpm/tests/spec_helper.rb +63 -0
  115. data/modules/docker_brpm/automations/create_brpm_instance_input_params.rb +10 -0
  116. data/modules/docker_brpm/automations/create_brpm_instance_input_params.txt +17 -0
  117. data/modules/docker_brpm/automations/create_brpm_instance_one_shot.rb +60 -0
  118. data/modules/docker_brpm/automations/create_brpm_instance_one_shot.txt +14 -0
  119. data/modules/docker_brpm/automations/create_brpm_instance_show_results.rb +23 -0
  120. data/modules/docker_brpm/automations/create_brpm_instance_show_results.txt +13 -0
  121. data/modules/docker_brpm/automations/create_database.rb +24 -0
  122. data/modules/docker_brpm/automations/create_database.txt +3 -0
  123. data/modules/docker_brpm/automations/create_environment.rb +14 -0
  124. data/modules/docker_brpm/automations/create_environment.txt +3 -0
  125. data/modules/docker_brpm/automations/create_image_for_application.rb +23 -0
  126. data/modules/docker_brpm/automations/create_image_for_application.txt +6 -0
  127. data/modules/docker_brpm/automations/create_image_for_brpm_application_input_params.rb +7 -0
  128. data/modules/docker_brpm/automations/create_image_for_brpm_application_input_params.txt +8 -0
  129. data/modules/docker_brpm/automations/create_image_for_brpm_database_creator_input_params.rb +7 -0
  130. data/modules/docker_brpm/automations/create_image_for_brpm_database_creator_input_params.txt +8 -0
  131. data/modules/docker_brpm/automations/create_image_for_database_creator.rb +21 -0
  132. data/modules/docker_brpm/automations/create_image_for_database_creator.txt +6 -0
  133. data/modules/docker_brpm/automations/create_installed_component_for_application.rb +11 -0
  134. data/modules/docker_brpm/automations/create_installed_component_for_application.txt +3 -0
  135. data/modules/docker_brpm/automations/create_installed_component_for_database.rb +7 -0
  136. data/modules/docker_brpm/automations/create_installed_component_for_database.txt +3 -0
  137. data/modules/docker_brpm/automations/create_installed_component_for_database_creator.rb +8 -0
  138. data/modules/docker_brpm/automations/create_installed_component_for_database_creator.txt +3 -0
  139. data/modules/docker_brpm/automations/create_installed_component_for_utilities.rb +7 -0
  140. data/modules/docker_brpm/automations/create_installed_component_for_utilities.txt +3 -0
  141. data/modules/docker_brpm/automations/create_version_tags_for_component_in_all_envs.rb +13 -0
  142. data/modules/docker_brpm/automations/create_version_tags_for_component_in_all_envs.txt +6 -0
  143. data/modules/docker_brpm/automations/delete_brpm_instance.rb +38 -0
  144. data/modules/docker_brpm/automations/delete_brpm_instance.txt +8 -0
  145. data/modules/docker_brpm/automations/execute_test_run_in_jenkins.rb +43 -0
  146. data/modules/docker_brpm/automations/execute_test_run_in_jenkins.txt +13 -0
  147. data/modules/docker_brpm/automations/execute_test_run_in_jenkins_show_results.rb +5 -0
  148. data/modules/docker_brpm/automations/execute_test_run_in_jenkins_show_results.txt +9 -0
  149. data/modules/docker_brpm/automations/launch_create_image_for_brpm_application_request.rb +27 -0
  150. data/modules/docker_brpm/automations/launch_create_image_for_brpm_application_request.txt +3 -0
  151. data/modules/docker_brpm/automations/launch_test_run_request.rb +30 -0
  152. data/modules/docker_brpm/automations/launch_test_run_request.txt +14 -0
  153. data/modules/docker_brpm/automations/release_brpm_input_params.rb +7 -0
  154. data/modules/docker_brpm/automations/release_brpm_input_params.txt +8 -0
  155. data/modules/docker_brpm/automations/run_application_container.rb +27 -0
  156. data/modules/docker_brpm/automations/run_application_container.txt +3 -0
  157. data/modules/docker_brpm/automations/run_database_container.rb +14 -0
  158. data/modules/docker_brpm/automations/run_database_container.txt +3 -0
  159. data/modules/docker_brpm/automations/stop_application_container.rb +11 -0
  160. data/modules/docker_brpm/automations/stop_application_container.txt +3 -0
  161. data/modules/docker_brpm/automations/stop_database_container.rb +11 -0
  162. data/modules/docker_brpm/automations/stop_database_container.txt +3 -0
  163. data/modules/docker_brpm/automations/test_rest_api.rb +18 -0
  164. data/modules/docker_brpm/automations/test_rest_api.txt +3 -0
  165. data/modules/docker_brpm/automations/upgrade_database.rb +19 -0
  166. data/modules/docker_brpm/automations/upgrade_database.txt +8 -0
  167. data/modules/docker_brpm/config.yml +8 -0
  168. data/modules/docker_brpm/lib/docker.rb +39 -0
  169. data/modules/docker_brpm/lib/git.rb +16 -0
  170. data/modules/docker_brpm/sample_applications/dockerizedbrpm.json +0 -0
  171. data/modules/email/automations/send_notification.rb +48 -0
  172. data/modules/email/automations/send_notification.txt +27 -0
  173. data/modules/email/config.yml +6 -0
  174. data/modules/framework/automations/direct_execute.rb +10 -0
  175. data/modules/framework/automations/direct_execute.txt +16 -0
  176. data/modules/framework/automations/install_module.rb +13 -0
  177. data/modules/framework/automations/install_module.txt +16 -0
  178. data/modules/framework/bin/brpm_install +106 -0
  179. data/modules/framework/bin/event_handler +63 -0
  180. data/modules/framework/bin/webhook_receiver +49 -0
  181. data/modules/framework/brpm_auto.rb +307 -0
  182. data/modules/framework/brpm_framework.rb +88 -0
  183. data/modules/framework/brpm_script_executor.rb +146 -0
  184. data/modules/framework/config.yml +7 -0
  185. data/modules/framework/config/customer_include.rb +26 -0
  186. data/modules/framework/config/server.yml +3 -0
  187. data/modules/framework/customer_include_default.rb +25 -0
  188. data/modules/framework/lib/logging/brpm_logger.rb +39 -0
  189. data/modules/framework/lib/logging/logger_base.rb +36 -0
  190. data/modules/framework/lib/logging/simple_logger.rb +27 -0
  191. data/modules/framework/lib/params/all_params.rb +80 -0
  192. data/modules/framework/lib/params/integration_settings.rb +27 -0
  193. data/modules/framework/lib/params/params.rb +172 -0
  194. data/modules/framework/lib/params/params_base.rb +81 -0
  195. data/modules/framework/lib/params/request_params.rb +38 -0
  196. data/modules/framework/lib/resource_framework.rb +211 -0
  197. data/modules/framework/lib/rest_api.rb +155 -0
  198. data/modules/framework/lib/semaphore.rb +79 -0
  199. data/modules/framework/lib/utilities.rb +317 -0
  200. data/modules/framework/lib/version_control/git.rb +192 -0
  201. data/modules/framework/lib/version_control/svn.rb +221 -0
  202. data/modules/framework/log.html +39 -0
  203. data/modules/framework/tests/all_params_spec.rb +116 -0
  204. data/modules/framework/tests/brpm_auto_spec.rb +84 -0
  205. data/modules/framework/tests/customer_include/config/customer_include.rb +10 -0
  206. data/modules/framework/tests/customer_include/config/server.yml +3 -0
  207. data/modules/framework/tests/customer_include_spec.rb +29 -0
  208. data/modules/framework/tests/local_jirb.rb +15 -0
  209. data/modules/framework/tests/params_spec.rb +172 -0
  210. data/modules/framework/tests/request_params_spec.rb +86 -0
  211. data/modules/framework/tests/server_yaml_spec.rb +19 -0
  212. data/modules/framework/tests/spec_helper.rb +42 -0
  213. data/modules/framework/transport/dispatch_baa.rb +355 -0
  214. data/modules/framework/transport/dispatch_base.rb +345 -0
  215. data/modules/framework/transport/dispatch_nsh.rb +248 -0
  216. data/modules/framework/transport/dispatch_ssh.rb +154 -0
  217. data/modules/framework/transport/transport_baa.rb +1095 -0
  218. data/modules/framework/transport/transport_nsh.rb +359 -0
  219. data/modules/framework/transport/transport_ssh.rb +220 -0
  220. data/modules/framework/write_to.rb +1 -0
  221. data/modules/jenkins/automations/create_release.rb +4 -0
  222. data/modules/jenkins/automations/create_release.txt +23 -0
  223. data/modules/jenkins/automations/f2_downloadJenkinsArtifact.rb +126 -0
  224. data/modules/jenkins/config.yml +7 -0
  225. data/modules/jenkins/lib/jenkins.rb +300 -0
  226. data/modules/jenkins/resource_automations/f2_rsc_jenkinsJobs.rb +58 -0
  227. data/modules/jira/automations/add_comment.rb +4 -0
  228. data/modules/jira/automations/add_comment.txt +23 -0
  229. data/modules/jira/automations/create_release.rb +4 -0
  230. data/modules/jira/automations/create_release.txt +23 -0
  231. data/modules/jira/automations/delete_release.rb +4 -0
  232. data/modules/jira/automations/delete_release.txt +23 -0
  233. data/modules/jira/automations/transition_issue.rb +4 -0
  234. data/modules/jira/automations/transition_issue.txt +23 -0
  235. data/modules/jira/automations/transition_issues_for_request.rb +29 -0
  236. data/modules/jira/automations/transition_issues_for_request.txt +20 -0
  237. data/modules/jira/automations/transition_issues_for_run.rb +26 -0
  238. data/modules/jira/automations/transition_issues_for_run.txt +20 -0
  239. data/modules/jira/automations/update_release.rb +4 -0
  240. data/modules/jira/automations/update_release.txt +26 -0
  241. data/modules/jira/config.yml +7 -0
  242. data/modules/jira/lib/jira_rest_client.rb +185 -0
  243. data/modules/jira/tests/create_read_update_delete_release_spec.rb +39 -0
  244. data/modules/jira/tests/spec_helper.rb +39 -0
  245. data/modules/jira/tests/transition_issue_spec.rb +32 -0
  246. data/modules/patch_process_management/automations/execute_job/script.rb +105 -0
  247. data/modules/patch_process_management/automations/execute_job/wrapper.txt +39 -0
  248. data/modules/patch_process_management/automations/patch_analysis/script.rb +107 -0
  249. data/modules/patch_process_management/automations/patch_analysis/wrapper.txt +33 -0
  250. data/modules/patch_process_management/automations/patch_readiness/script.rb +89 -0
  251. data/modules/patch_process_management/automations/patch_readiness/wrapper.txt +33 -0
  252. data/modules/patch_process_management/automations/patch_remediation/script.rb +217 -0
  253. data/modules/patch_process_management/automations/patch_remediation/wrapper.txt +40 -0
  254. data/modules/patch_process_management/config.yml +10 -0
  255. data/modules/teamcity/automations/trigger_build.rb +4 -0
  256. data/modules/teamcity/automations/trigger_build.txt +14 -0
  257. data/modules/teamcity/config.yml +7 -0
  258. data/modules/teamcity/lib/teamcity_rest_client.rb +17 -0
  259. data/modules/teamcity/tests/spec_helper.rb +34 -0
  260. data/modules/teamcity/tests/trigger_build_spec.rb +27 -0
  261. data/modules/windows/automations/deploy_directory_over_windows_shares/script.rb +87 -0
  262. data/modules/windows/automations/deploy_directory_over_windows_shares/wrapper.txt +29 -0
  263. data/modules/windows/automations/deploy_file_over_windows_shares/script.rb +31 -0
  264. data/modules/windows/automations/deploy_file_over_windows_shares/wrapper.txt +24 -0
  265. data/modules/windows/config.yml +6 -0
  266. data/modules/windows/lib/samba.rb +29 -0
  267. metadata +397 -0
@@ -0,0 +1,10 @@
1
+ def get_customer_include_params
2
+ params = {}
3
+ params["key1"] = "value1"
4
+
5
+ params
6
+ end
7
+
8
+ def my_custom_method(a, b)
9
+ a + b
10
+ end
@@ -0,0 +1,3 @@
1
+ # This file should be located in BRPM_HOME/config
2
+ # See the README for more information on how to use this file
3
+ key2: "value2"
@@ -0,0 +1,29 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe 'Customer include' do
4
+ before(:each) do
5
+ cleanup_request_params
6
+ end
7
+
8
+ it 'should get the parameters' do
9
+ input_params = get_default_params
10
+ input_params["home_dir"] = "#{File.dirname(__FILE__)}/customer_include"
11
+
12
+ BrpmAuto.setup(input_params)
13
+
14
+ params = BrpmAuto.params
15
+
16
+ expect(params).to have_key("key1")
17
+ expect(params["key1"]).to eql("value1")
18
+ end
19
+
20
+ it 'should execute a custom method' do
21
+ input_params = get_default_params
22
+ input_params["home_dir"] = "#{File.dirname(__FILE__)}/customer_include"
23
+
24
+ BrpmAuto.setup(input_params)
25
+
26
+ expect(defined?(my_custom_method)).to eql("method")
27
+ expect(my_custom_method("a", "b")).to eql("ab")
28
+ end
29
+ end
@@ -0,0 +1,15 @@
1
+ require 'fileutils'
2
+ rlm_base_path = "/Users/brady/Documents/dev_rpm/brpm_brady/brpm/branches/rpm-sustaining/Portal"
3
+ #rlm_base_path = "/opt/bmc/rlm4"
4
+ script_support = "#{rlm_base_path}/lib/script_support"
5
+ persist = "/Users/brady/Documents/dev_rpm/brpm_content/modules/framework"
6
+ FileUtils.cd script_support, :verbose => true
7
+ require "#{script_support}/ssh_script_header"
8
+
9
+ input_file = "#{rlm_base_path}/public/automation_results/request/Sales-Billing/1304/step_3722/sshinput_6_1433379304.txt"
10
+
11
+ script_params = params = load_input_params(input_file)
12
+ Token = "a56d64cbcffcce91d306670489fa4cf51b53316c"
13
+
14
+ require "#{persist}/brpm_framework.rb"
15
+ @rest = BrpmRest.new(@rpm.params.brpm_url)
@@ -0,0 +1,172 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe 'Params' do
4
+ before(:each) do
5
+ cleanup_request_params
6
+ end
7
+
8
+ it 'should get a param' do
9
+ input_params = get_default_params
10
+ input_params["key1"] = "value1"
11
+
12
+ BrpmAuto.setup(input_params)
13
+ params = BrpmAuto.params
14
+
15
+ expect(params).to have_key("key1")
16
+ expect(params["key1"]).to eql("value1")
17
+ end
18
+
19
+ it 'should resolve a tokenized param' do
20
+ input_params = get_default_params
21
+ input_params["key1"] = "value1"
22
+ input_params["tokenized_key"] = "The value is rpm{key1}!"
23
+
24
+ BrpmAuto.setup(input_params)
25
+ params = BrpmAuto.params
26
+
27
+ expect(params).to have_key("tokenized_key")
28
+ expect(params["tokenized_key"]).to eql("The value is value1!")
29
+ end
30
+
31
+ it 'should get a param via its dedicated method' do
32
+ input_params = get_default_params
33
+ input_params["request_id"] = "123456"
34
+
35
+ BrpmAuto.setup(input_params)
36
+ params = BrpmAuto.params
37
+
38
+ expect(params.request_id).to eql("123456")
39
+ end
40
+
41
+ it 'should get the servers' do
42
+ input_params = get_default_params
43
+
44
+ input_params["server1000_name"] = "server1"
45
+ input_params["server1001_dns"] = "server1.com"
46
+ input_params["server1002_ip_address"] = "192.168.1.1"
47
+ input_params["server1003_os_platform"] = "linux"
48
+
49
+ input_params["server2000_name"] = "server2"
50
+ input_params["server2001_dns"] = "server2.com"
51
+ input_params["server2002_ip_address"] = "192.168.1.2"
52
+ input_params["server2003_os_platform"] = "linux"
53
+
54
+ BrpmAuto.setup(input_params)
55
+ params = BrpmAuto.params
56
+
57
+ expect(params.servers.count).to eql(2)
58
+
59
+ expect(params.servers).to have_key("server1")
60
+
61
+ expect(params.servers["server1"]).to have_key("dns")
62
+ expect(params.servers["server1"]["dns"]).to eql("server1.com")
63
+ expect(params.servers["server1"]).to have_key("ip_address")
64
+ expect(params.servers["server1"]["ip_address"]).to eql("192.168.1.1")
65
+ expect(params.servers["server1"]).to have_key("os_platform")
66
+ expect(params.servers["server1"]["os_platform"]).to eql("linux")
67
+
68
+ expect(params.servers).to have_key("server2")
69
+ end
70
+
71
+ it 'should get the servers by os platform' do
72
+ input_params = get_default_params
73
+
74
+ input_params["server1000_name"] = "server1"
75
+ input_params["server1003_os_platform"] = "linux"
76
+
77
+ input_params["server2000_name"] = "server2"
78
+ input_params["server2003_os_platform"] = "linux"
79
+
80
+ input_params["server3000_name"] = "server3"
81
+ input_params["server3003_os_platform"] = "windows"
82
+
83
+ BrpmAuto.setup(input_params)
84
+ params = BrpmAuto.params
85
+
86
+ linux_servers = params.get_servers_by_os_platform("linux")
87
+ expect(linux_servers.count).to eql(2)
88
+
89
+ windows_servers = params.get_servers_by_os_platform("windows")
90
+ expect(windows_servers.count).to eql(1)
91
+
92
+ windows_servers = params.get_servers_by_os_platform("xxx")
93
+ expect(windows_servers.count).to eql(0)
94
+ end
95
+
96
+ it 'should get a server property' do
97
+ input_params = get_default_params
98
+
99
+ input_params["server1000_name"] = "server1"
100
+ input_params["server1003_property1"] = "value1"
101
+
102
+ BrpmAuto.setup(input_params)
103
+ params = BrpmAuto.params
104
+
105
+ expect(params.get_server_property("server1", "property1")).to eql("value1")
106
+ end
107
+
108
+ it 'should get an encrypted param' do
109
+ input_params = get_default_params
110
+
111
+ #trick it into thinking that it is run from BRPM
112
+ input_params["run_key"] = "123"
113
+ input_params["automation_results_dir"] = input_params["output_dir"]
114
+ input_params["request_id"] = "123"
115
+ input_params["step_id"] = "123"
116
+
117
+ input_params["key1_encrypt"] = "brpm_encrypted"
118
+ input_params["key2_enc"] = "brpm_encrypted"
119
+
120
+ BrpmAuto.setup(input_params)
121
+ params = BrpmAuto.params
122
+
123
+ expect(params["key1"]).to eql("brpm")
124
+ expect(params["key2"]).to eql("brpm")
125
+ end
126
+
127
+ it 'should get a param by the get method' do
128
+ input_params = get_default_params
129
+ input_params["key1"] = "value1"
130
+
131
+ BrpmAuto.setup(input_params)
132
+ params = BrpmAuto.params
133
+
134
+ expect(params.get("key1")).to eql("value1")
135
+ end
136
+
137
+ it 'should add a param by the add method' do
138
+ BrpmAuto.setup(get_default_params)
139
+ params = BrpmAuto.params
140
+
141
+ params.add("key1", "value1")
142
+
143
+ expect(params["key1"]).to eql("value1")
144
+ end
145
+
146
+ it 'should find or add a param' do
147
+ input_params = get_default_params
148
+ input_params["key1"] = "value1"
149
+
150
+ BrpmAuto.setup(input_params)
151
+ params = BrpmAuto.params
152
+
153
+ expect(params.find_or_add("key1", "value1-bis")).to eql("value1")
154
+ expect(params.count).to eql(input_params.count)
155
+
156
+ expect(params.find_or_add("key2", "value2")).to eql("value2")
157
+ expect(params.count).to eql(input_params.count + 1)
158
+ expect(params["key2"]).to eql("value2")
159
+ end
160
+
161
+ it 'should calculate the REST request id' do
162
+ input_params = get_default_params
163
+ input_params["request_id"] = "1234"
164
+
165
+ BrpmAuto.setup(input_params)
166
+ params = BrpmAuto.params
167
+
168
+ expect(params.rest_request_id).to eql("234")
169
+ end
170
+ end
171
+
172
+
@@ -0,0 +1,86 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe 'Request params' do
4
+ before(:each) do
5
+ cleanup_request_params
6
+ end
7
+
8
+ it 'should get a param' do
9
+ input_request_params = {}
10
+ input_request_params["key1"] = "value1"
11
+ set_request_params(input_request_params)
12
+
13
+ BrpmAuto.setup(get_default_params)
14
+ request_params = BrpmAuto.request_params
15
+
16
+ expect(request_params).to have_key("key1")
17
+ expect(request_params["key1"]).to eql("value1")
18
+ end
19
+
20
+ it 'should resolve a tokenized param' do
21
+ input_request_params = {}
22
+ input_request_params["key1"] = "value1"
23
+ input_request_params["tokenized_key"] = "The value is rpm{key1}!"
24
+ set_request_params(input_request_params)
25
+
26
+ BrpmAuto.setup(get_default_params)
27
+ request_params = BrpmAuto.request_params
28
+
29
+ expect(request_params).to have_key("tokenized_key")
30
+ expect(request_params["tokenized_key"]).to eql("The value is value1!")
31
+ end
32
+
33
+ it 'should get a param by the get method' do
34
+ input_request_params = {}
35
+ input_request_params["key1"] = "value1"
36
+ set_request_params(input_request_params)
37
+
38
+ BrpmAuto.setup(get_default_params)
39
+ request_params = BrpmAuto.request_params
40
+
41
+ expect(request_params).to have_key("key1")
42
+ expect(request_params.get("key1")).to eql("value1")
43
+ end
44
+
45
+ it 'should add a param using []=' do
46
+ BrpmAuto.setup(get_default_params)
47
+ request_params = BrpmAuto.request_params
48
+
49
+ request_params["key1"] = "value1"
50
+
51
+ output_request_params = get_request_params
52
+
53
+ expect(output_request_params).to have_key("key1")
54
+ expect(output_request_params["key1"]).to eql("value1")
55
+ end
56
+
57
+ it 'should add a param by the add method' do
58
+ BrpmAuto.setup(get_default_params)
59
+ request_params = BrpmAuto.request_params
60
+
61
+ request_params.add("key1", "value1")
62
+
63
+ output_request_params = get_request_params
64
+
65
+ expect(output_request_params).to have_key("key1")
66
+ expect(output_request_params["key1"]).to eql("value1")
67
+ end
68
+
69
+ it 'should find or add a param' do
70
+ input_request_params = {}
71
+ input_request_params["key1"] = "value1"
72
+ set_request_params(input_request_params)
73
+
74
+ BrpmAuto.setup(get_default_params)
75
+ request_params = BrpmAuto.request_params
76
+
77
+ expect(request_params.find_or_add("key1", "value1-bis")).to eql("value1")
78
+ expect(request_params.count).to eql(1)
79
+
80
+ expect(request_params.find_or_add("key2", "value2")).to eql("value2")
81
+ expect(request_params.count).to eql(2)
82
+ expect(request_params["key2"]).to eql("value2")
83
+ end
84
+ end
85
+
86
+
@@ -0,0 +1,19 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe 'Server yaml' do
4
+ before(:each) do
5
+ cleanup_request_params
6
+ end
7
+
8
+ it 'should get the parameters' do
9
+ input_params = get_default_params
10
+ input_params["home_dir"] = "#{File.dirname(__FILE__)}/customer_include"
11
+
12
+ BrpmAuto.setup(input_params)
13
+
14
+ params = BrpmAuto.params
15
+
16
+ expect(params).to have_key("key2")
17
+ expect(params["key2"]).to eql("value2")
18
+ end
19
+ end
@@ -0,0 +1,42 @@
1
+ require 'fileutils'
2
+ require_relative "../brpm_auto"
3
+
4
+ FileUtils.mkdir_p "/tmp/brpm_content"
5
+
6
+ def setup_brpm_auto
7
+ BrpmAuto.setup(get_default_params)
8
+ end
9
+
10
+ def get_default_params
11
+ params = {}
12
+ params['also_log_to_console'] = 'true'
13
+ params['output_dir'] = "/tmp/brpm_content"
14
+
15
+ params
16
+ end
17
+
18
+ def set_request_params(request_params)
19
+ File.open("/tmp/brpm_content/request_data.json", "w") do |file|
20
+ file.puts(request_params.to_json)
21
+ end
22
+ end
23
+
24
+ def get_request_params
25
+ if File.exist?("/tmp/brpm_content/request_data.json")
26
+ json = File.read("/tmp/brpm_content/request_data.json")
27
+ JSON.parse(json)
28
+ else
29
+ {}
30
+ end
31
+ end
32
+
33
+ def cleanup_request_params
34
+ request_params_file = "/tmp/brpm_content/request_data.json"
35
+ File.delete(request_params_file) if File.exist?(request_params_file)
36
+ end
37
+
38
+ def decrypt_string_with_prefix(input) # mocked method
39
+ return nil if input.nil? || !input.kind_of?(String)
40
+
41
+ input.gsub("_encrypted", "")
42
+ end
@@ -0,0 +1,355 @@
1
+ # dispatch_srun.rb
2
+ # Module for action dispatch with nsh protocol
3
+ libDir = File.expand_path(File.dirname(__FILE__))
4
+ require "#{libDir}/dispatch_base"
5
+
6
+
7
+ class DispatchBAA < DispatchBase
8
+ # Initialize the class
9
+ #
10
+ # ==== Attributes
11
+ #
12
+ # * +baa_object+ - handle to an BAA object
13
+ # * +options+ - hash of options to use, send "output_file" to point to the logging file
14
+ # * +test_mode+ - true/false to simulate commands instead of running them
15
+ #
16
+ def initialize(baa_object, options = {}, compat_options = {})
17
+ self.extend Utilities
18
+ if options.has_key?("SS_output_dir")
19
+ BrpmAuto.log "Load for this class has changed, no longer necessary to send params as 2nd argument"
20
+ options = compat_options
21
+ end
22
+ @baa = baa_object
23
+ @verbose = get_option(options, "verbose", false)
24
+ @output_dir = get_param("SS_output_dir")
25
+ end
26
+
27
+ # Packages passed references in BAA using a component template
28
+ # --- note: artifacts all need to reside on the same server
29
+ # --- note: end a directory path with a / or it will be treated as a file
30
+
31
+ # ==== Attributes
32
+ #
33
+ # * +artifact_list+ - array of file/nsh paths
34
+ # * +group_path+ - path in Blade to store package
35
+ # * +artifacts+ - array of file/nsh paths
36
+ # * +options+ - hash of options, includes:
37
+ # package_name - to override default package name (component_request_id_version),
38
+ # group_path - to override default group_path (app/version/component),
39
+ # transfer_properties - hash of properties to transfer
40
+ # version - to override use of component version
41
+ #
42
+ # ==== Returns
43
+ #
44
+ # * hash - {package_id, status, template_db_key, stagin_server}
45
+ def package_artifacts(artifact_list, options = {})
46
+ version = get_option(options,"version", get_param("step_version"))
47
+ package_name = get_option(options, "package_name", default_item_name(version))
48
+ group_path = get_option(options, "group_path", default_group_path(version))
49
+ transfer_properties = get_option(options, "transfer_properties", {})
50
+ path_property_name = get_option(options, "BAA_PATH_PROPERTY", "BAA_BASE_PATH")
51
+ path_property_value = get_option(transfer_properties, path_property_name, nil)
52
+ path_property = "#{path_property_name}=#{path_property_value}"
53
+ message_box "Packaging Files via BAA"
54
+ log "\t StagingPath: #{group_path}"
55
+ result = {"status" => "ERROR", "group_path" => group_path, "package_name" => package_name}
56
+ artifact_hash = {}
57
+ artifact_list.each{|l| artifact_hash[l] = l.end_with?("/") ? "directory" : "file" }
58
+ pair = split_nsh_path(artifact_hash.keys.first)
59
+ raise "Command_Failed: no staging server in artifacts" if pair[0].length < 2
60
+ staging_server = pair[0]
61
+ result["staging_server"] = staging_server
62
+ group_id = @baa.ensure_group_path(group_path, "Template")
63
+ templates_in_path = @baa.get_group_items(group_path, "Template", true, options)
64
+ cur_templates = templates_in_path.map{|l| l["name"] }
65
+ if cur_templates.include?(package_name)
66
+ log "#=> Component Template exists: #{package_name}"
67
+ template_id = templates_in_path[cur_templates.index(package_name)]["dbKey"]
68
+ else # Create a new one
69
+ log "#=> Create Component Template: #{package_name}"
70
+ template_id = @baa.create_empty_template(package_name, group_id)
71
+ log "\tApplying properties...to template with id #{template_id}" if transfer_properties.size > 0
72
+ template_id = @baa.set_template_properties(package_name, group_path, transfer_properties) if transfer_properties.size > 0
73
+ end
74
+ log "\tAdd content to template #{template_id}\nPath property: #{path_property}"
75
+ template_options = {}
76
+ template_options["path_property"] = path_property unless path_property_value.nil?
77
+ template_id = @baa.add_template_content(template_id, artifact_hash, template_options)
78
+ result["template_db_key"] = template_id
79
+ raise "Command_Failed: #{template_id}" if template_id.start_with?("ERROR")
80
+ log "#=> Create component package: #{staging_server}\n"
81
+ depot_group_id = @baa.ensure_group_path(group_path, "BlPackage")
82
+ package_id = @baa.create_component_package(package_name, depot_group_id, template_id, staging_server)
83
+ raise "Command_Failed: #{package_id}" if package_id.start_with?("ERROR")
84
+ result["status"] = "SUCCESS"
85
+ result["path_property"] = path_property unless path_property_value.nil?
86
+ result["package_id"] = package_id
87
+ result["instance_path"] = "#{group_path}/#{package_name}"
88
+ result["md5"] = "000"
89
+ result
90
+ end
91
+
92
+ # Deploys an existing Package in BAA to target servers
93
+ #
94
+ # ==== Attributes
95
+ #
96
+ # * +package_id+ - id of existing package
97
+ # * +options+ - hash of options, includes:
98
+ # job_name - to override the default job name,
99
+ # group_path - to override the default group path,
100
+ # execute_now - (true/false to execute the job immediately default - true),
101
+ # transfer_properties (hash of name/values to set),
102
+ # version - to override use of component version
103
+ #
104
+ # ==== Returns
105
+ #
106
+ # * hash of job results, includes - job_run_id, job_status
107
+ def deploy_package_instance(package_info, options = {})
108
+ package_id = package_info["package_id"]
109
+ path_property = get_option(package_info,"path_property", nil)
110
+ version = get_option(options,"version", get_param("SS_component_version"))
111
+ execute_now = get_option(options,"execute_now", true)
112
+ job_base_name = get_option(options, "job_name", default_item_name(version))
113
+ group_path = get_option(options, "group_path", default_group_path(version, true))
114
+ transfer_properties = get_option(options, "transfer_properties", {})
115
+ unless path_property.nil?
116
+ package_property = path_property.split("=")[0]
117
+ deploy_property = "#{package_property}_DEPLOY"
118
+ log "\t No corresponding deploy property for #{package_property} (should be #{deploy_property})", "WARN" if !transfer_properties.has_key?(deploy_property)
119
+ transfer_properties[package_property] = transfer_properties[deploy_property] if transfer_properties.has_key?(deploy_property)
120
+ end
121
+ message_box "Packaging Files via BAA"
122
+ log "\t StagingPath: #{group_path}"
123
+ result = {"status" => "ERROR", "results" => "", "group_path" => group_path, "job_names" => []}
124
+ raise "ERROR: No servers found" if get_server_list.empty?
125
+ log "\tBuilding group path..."
126
+ job_group_id = @baa.ensure_group_path(group_path, "Jobs")
127
+ # Loop through the platforms
128
+ OS_PLATFORMS.each do |os, os_details|
129
+ servers = BrpmAuto.params.get_servers_by_os_platform(os)
130
+ message_box "OS Platform: #{os_details["name"]}"
131
+ log "No servers selected for: #{os_details["name"]}" if servers.size == 0
132
+ next if servers.size == 0
133
+ job_name = "#{job_base_name}_#{os}"
134
+ result["job_names"] << job_name
135
+ log "#=> Building Job from Package:\n\tGroup: #{group_path}\n\tPackage: #{package_id}"
136
+ log "# #{os_details["name"]} - Targets: #{servers.inspect}"
137
+ targets = @baa.baa_soap_map_server_names_to_rest_uri(server_dns_names(servers))
138
+ log "\tCreating package job..."
139
+ cur_jobs = @baa.execute_cli_command("Job","listAllByGroup",[group_path])
140
+ if cur_jobs.split("\n").include?(job_name)
141
+ log "\tJob Exists: deleting..."
142
+ ans = @baa.execute_cli_command("DeployJob","deleteJobByGroupAndName",[group_path, job_name])
143
+ end
144
+ job_db_key = @baa.create_package_job(job_name, job_group_id, package_id, server_dns_names(servers))
145
+ if job_db_key.start_with?("ERROR")
146
+ log job_db_key
147
+ raise "Command_Failed: job creation failed"
148
+ end
149
+ result["job_db_key"] = job_db_key
150
+ result["status"] = "JOB_CREATED_SUCCESSFULLY"
151
+ log "\tApplying properties..."
152
+ prop_results = @baa.set_job_properties(job_name, group_path, transfer_properties)
153
+ result["property_results"] = prop_results
154
+ if execute_now
155
+ log "#=> Executing Job"
156
+ execute_results = @baa.execute_job_with_results(job_db_key, result)
157
+ result["results"] += "#{os} - #{execute_results}"
158
+ execute_results.each{|k,v| log("#{k}: #{v}")}
159
+ end
160
+ end
161
+ result
162
+ end
163
+
164
+ # Creates an NSH Script Job in BAA to target servers
165
+ #
166
+ # ==== Attributes
167
+ #
168
+ # * +script_name+ - name of nsh script
169
+ # * +script_group+ - path in depot to script
170
+ # * +job_params+ - array of params (in order) for script job
171
+ # * +options+ - hash of options, includes: execute_now,
172
+ # num_par_proces (max parallel processes),
173
+ # target_type (servers/groups),
174
+ # job_name - to override the default job name,
175
+ # group_path - to override the default group path,
176
+ # version - to override use of component version
177
+ #
178
+ # ==== Returns
179
+ #
180
+ # * hash of job results, includes - job_run_id, job_status
181
+ def create_nsh_script_job(script_name, script_group, job_params, options = {})
182
+ result = {"status" => "ERROR"}
183
+ job_type = "NSHScriptJob"
184
+ version = get_option(options,"version", get_param("SS_component_version"))
185
+ targets = get_option(options, "servers")
186
+ if targets == ""
187
+ servers = get_server_list
188
+ targets = server_dns_names(servers)
189
+ end
190
+ script_group = "/#{script_group}" unless script_group.start_with?("/")
191
+ num_par_procs = get_option(options,"num_par_procs", 50)
192
+ execute_now = get_option(options,"execute_now", false)
193
+ target_type = get_option(options,"target_type", "servers")
194
+ job_name = get_option(options, "job_name", default_item_name)
195
+ group_path = get_option(options, "group_path", default_group_path(version, true))
196
+ log "\tBuilding group path..."
197
+ job_group_id = @baa.ensure_group_path(group_path, "Jobs")
198
+ args = [
199
+ group_path, #jobGroup
200
+ job_name, #jobName
201
+ "Script job from automation", #description
202
+ script_group,
203
+ script_name,
204
+ num_par_procs # number of parallel processes
205
+ ]
206
+ ss_job_key = @baa.execute_cli_command(job_type,"createNSHScriptJob",args)
207
+ raise "Command_Failed: cannot create job: #{ss_job_key}" if ss_job_key.include?("ERROR")
208
+ log "Created: #{job_name} in group: #{group_path}"
209
+ #targets.collect!{|k| k.gsub(/^\//,"/Servers/") unless k.start_with?("/Servers") }
210
+ #c. Make the call to addTargetGroup (should be a new method)
211
+ if targets.is_a?(String) || targets.size < 2
212
+ method_call = target_type == "servers" ? "addTargetServer" : "addTargetGroup"
213
+ servers = targets.first if targets.is_a?(Array)
214
+ else
215
+ method_call = target_type == "servers" ? "addTargetServers" : "addTargetGroups"
216
+ servers = targets.join(",")
217
+ end
218
+ ss_job_key = @baa.execute_cli_command("Job", method_call,
219
+ [
220
+ ss_job_key, #jobName
221
+ servers #comma separated list of groups
222
+ ])
223
+ raise "Command_Failed: cannot add targets: #{ss_job_key}" if ss_job_key.include?("ERROR")
224
+ if execute_now
225
+ param_result = @baa.set_nsh_script_params(job_name, group_path, job_params, false)
226
+ raise "Command_Failed: cannot set job parameters: #{param_result}" if param_result.include?("ERROR")
227
+ execute_result = @baa.execute_job_with_results(param_result["job_db_key"], result)
228
+ raise "Command_Failed: cannot execute job: #{execute_result.inspect}" if execute_result["status"].include?("ERROR")
229
+ end
230
+ result["job_db_key"] = ss_job_key
231
+ result["status"] = "SUCCESS"
232
+ result
233
+ end
234
+
235
+ # Wrapper to run a shell action
236
+ # opens passed script path, or executes passed text
237
+ # processes the script in erb first to allow param substitution
238
+ # note script may have keyword directives (see additional docs)
239
+ # uses BAA_FRAMEWORK_NSH_SCRIPT to locate the nsh_script
240
+ # ==== Attributes
241
+ #
242
+ # * +script_file+ - the path to the script or the text of the script
243
+ # * +options+ - hash of options, includes:
244
+ # servers - to override step servers
245
+ # version - to override use of component version
246
+ # nsh_script_name - name of nsh_script to call
247
+ # nsh_script_group - group path of nsh script
248
+ # ==== Returns
249
+ #
250
+ # action output
251
+ #
252
+ def execute_script(script_file, options = {})
253
+ # get the body of the action
254
+ content = File.open(script_file).read
255
+ seed_servers = get_option(options, "servers")
256
+ transfer_properties = get_option(options, "transfer_properties",{})
257
+ nsh_script_group = get_option(options, "nsh_script_group")
258
+ nsh_script_name = get_option(options, "nsh_script_name")
259
+ version = get_option(options,"version", get_param("SS_component_version"))
260
+ group_path = get_option(options, "group_path", default_group_path(version, true))
261
+ job_name = get_option(options, "job_name", default_item_name)
262
+ if nsh_script_name == "" && defined?(BAA_FRAMEWORK_NSH_SCRIPT)
263
+ log "Using BAA_FRAMEWORK_NSH_SCRIPT defined in customer_include"
264
+ nsh_script_group = File.dirname(BAA_FRAMEWORK_NSH_SCRIPT)
265
+ nsh_script_name = File.basename(BAA_FRAMEWORK_NSH_SCRIPT)
266
+ else
267
+ raise "Command_Failed: BAA_FRAMEWORK_NSH_SCRIPT must be defined in customer_include.rb"
268
+ end
269
+ keyword_items = get_keyword_items(content)
270
+ log "\tBuilding group path..."
271
+ job_group_id = @baa.ensure_group_path(group_path, "Jobs")
272
+ params_filter = keyword_items.has_key?("RPM_PARAMS_FILTER") ? keyword_items["RPM_PARAMS_FILTER"] : DEFAULT_PARAMS_FILTER
273
+ transfer_properties.merge!(get_transfer_properties(params_filter, strip_prefix = true))
274
+ log "#----------- Executing Script on Remote Hosts -----------------#"
275
+ log "# Script: #{script_file}"
276
+ result = "No servers to execute on"
277
+ # Loop through the platforms
278
+ OS_PLATFORMS.each do |os, os_details|
279
+ servers = BrpmAuto.params.get_servers_by_os_platform(os) if seed_servers == ""
280
+ servers = BrpmAuto.params.get_servers_by_os_platform(os, seed_servers) if seed_servers != ""
281
+ message_box "OS Platform: #{os_details["name"]}"
282
+ log "No servers selected for: #{os_details["name"]}" if servers.size == 0
283
+ next if servers.size == 0
284
+ log "# #{os_details["name"]} - Targets: #{servers.inspect}"
285
+ log "# Setting Properties:"
286
+ add_channel_properties(transfer_properties, servers, os)
287
+ brpd_compatibility(transfer_properties)
288
+ transfer_properties.each{|k,v| log "\t#{k} => #{v}" }
289
+ shebang = read_shebang(os, content)
290
+ log "Shebang: #{shebang.inspect}"
291
+ wrapper_path = build_wrapper_script(os, shebang, transfer_properties, {"script_target" => File.basename(script_file)})
292
+ log "# Wrapper: #{wrapper_path}"
293
+ target_path = @baa.nsh_path(transfer_properties["RPM_CHANNEL_ROOT"])
294
+ log "# Copying script to target: "
295
+ clean_line_breaks(os, script_file, content)
296
+ files_to_deploy = ["//#{BAA_RPM_HOSTNAME}#{script_file}", "//#{BAA_RPM_HOSTNAME}#{wrapper_path}"]
297
+ result = @baa.create_file_deploy_job(job_name, group_path, files_to_deploy, target_path, server_dns_names(servers), {"execute_now" => true})
298
+ result.each{|k,v| log("#{k}: #{v}") }
299
+ log "# Executing script on target via wrapper:"
300
+ job_params = [@params["SS_application"],
301
+ @params["SS_component"],
302
+ @params["SS_environment"],
303
+ @params["SS_component_version"],
304
+ @params["request_id"],
305
+ target_path,
306
+ File.basename(wrapper_path)
307
+ ]
308
+ result = create_nsh_script_job(nsh_script_name, nsh_script_group, job_params, {"servers" => server_dns_names(servers), "execute_now" => true})
309
+ result.each{|k,v| log("#{k}: #{v}") }
310
+ end
311
+ result
312
+ end
313
+
314
+ # Creates a group path for BAA storage
315
+ # optionally uses BAA_BASE_GROUP from customer_include, otherwise "BRPM"
316
+ #
317
+ # ==== Attributes
318
+ #
319
+ # * +version+ - version name
320
+ # * +deploy+ - true if path is for deploy and hence needs environment tag
321
+ #
322
+ # ==== Returns
323
+ #
324
+ # * group_path string
325
+ def default_group_path(version = nil, deploy = false)
326
+ base_grp = defined?(BAA_BASE_GROUP) ? BAA_BASE_GROUP : "BRPM"
327
+ version = precision_timestamp if version.nil? || version == ""
328
+ result = "/#{base_grp}/#{get_param("SS_application")}/#{version}/#{get_param("SS_component")}"
329
+ result.gsub!(version,"#{version}/#{get_param("SS_environment")}") if deploy
330
+ result
331
+ end
332
+
333
+ # Creates a unique item name for BAA storage
334
+ #
335
+ # ==== Attributes
336
+ #
337
+ # * +version+ - version name
338
+ #
339
+ # ==== Returns
340
+ #
341
+ # * item name string
342
+ def default_item_name(version = nil)
343
+ version = precision_timestamp if version.nil? || version == ""
344
+ "#{get_param("SS_component")}_nsh_#{get_param("request_id")}_#{version}"
345
+ end
346
+
347
+ end
348
+
349
+ require "#{@params["SS_script_support_path"]}/baa_utilities"
350
+ @rpm.log "Initializing BAA transport"
351
+ baa_path = defined?(BAA_BASE_PATH) ? BAA_BASE_PATH : "/opt/bmc/bladelogic"
352
+ baa_url = defined?(SS_integration_dns) ? SS_integration_dns : "http://unknownBladelogicServerSetIntegration"
353
+ @baa = TransportBAA.new(baa_url)
354
+ @rpm.log "Path to BAA: #{BAA_BASE_PATH}"
355
+ @transport = DispatchBAA.new(@baa)