brpm_content 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
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)