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,58 @@
1
+ # Description: Resource to choose the tech stack(components) for deployment
2
+ #=> About the f2 framework: upon loading the automation, several utility classes will be available
3
+ # @rpm: the BrpmAutomation class, @p: the Param class, @rest: the BrpmRest class and
4
+ # @transport: the Transport class - the transport class will be loaded dependent on the SS_transport property value (ssh, nsh or baa)
5
+
6
+ #=== General Integration Server: DevOps_Jenkins ===#
7
+ # [integration_id=2]
8
+ SS_integration_dns = "http://vw-aus-rem-dv11.bmc.com:8080"
9
+ SS_integration_username = "bbyrd"
10
+ SS_integration_password = "-private-"
11
+ SS_integration_details = ""
12
+ SS_integration_password_enc = "__SS__Cj1Jek1QTjBaTkYyUQ=="
13
+ #=== End ===#
14
+ #---------------------- Declarations ------------------------------#
15
+ @script_name_handle = "choose_jenkins"
16
+ FRAMEWORK_DIR = "/opt/bmc/persist/automation_lib"
17
+ eval File.open("#{FRAMEWORK_DIR}/brpm_framework.rb").read
18
+
19
+ #---------------------- Methods --------------------------------#
20
+
21
+ #---------------------- Main Body --------------------------#
22
+
23
+ def execute(script_params, parent_id, offset, max_records)
24
+ #returns all the environments of a component
25
+ require "#{FRAMEWORK_DIR}/lib/brpm_automation.rb"
26
+ @rpm = BrpmAutomation.new(script_params)
27
+ require "#{FRAMEWORK_DIR}/lib/jenkins.rb"
28
+ log_it "Starting Automation"
29
+ begin
30
+ #get_request_params
31
+ @jenkins = Jenkins.new(SS_integration_dns, script_params, {"username" => SS_integration_username, "password" => decrypt_string_with_prefix(SS_integration_password_enc), "job_name" => "none"})
32
+ temps = {}
33
+ rest_result = @jenkins.job_list
34
+ return default_list("NoProjectsReturned") unless rest_result.has_key?("jobs")
35
+ rest_result["jobs"].each do |job|
36
+ url = job["url"]
37
+ job_uri = url[(url.index("job/") + 4)..(url.length - 1)]
38
+ temps[job_uri] = job["name"]
39
+ end
40
+ #@request_params["jenkins_jobs"] = rest_result["jobs"]
41
+ log_it temps
42
+
43
+ result = hashify_list(temps)
44
+ select_hash = {}
45
+ select_hash["Select"] = ""
46
+ result.unshift(select_hash)
47
+ write_to result.inspect
48
+ #save_request_params
49
+ log_it(result)
50
+ rescue Exception => e
51
+ log_it "Error: #{e.message}\n#{e.backtrace}"
52
+ end
53
+ return result
54
+ end
55
+
56
+ def import_script_parameters
57
+ { "render_as" => "List" }
58
+ end
@@ -0,0 +1,4 @@
1
+ params = BrpmAuto.params
2
+
3
+ BrpmAuto.log "Adding a comment for issue '#{params["issue_id"]}'..."
4
+ JiraRestClient.new.add_comment(params["issue_id"], params["comment"])
@@ -0,0 +1,23 @@
1
+ ###
2
+ # issue_id:
3
+ # name: Issue Id
4
+ # required: yes
5
+ # comment:
6
+ # name: Comment
7
+ # required: yes
8
+ ###
9
+
10
+ #=== BMC Application Automation Integration Server: JIRA ===#
11
+ # [integration_id=4]
12
+ #=== End ===#
13
+
14
+ require "#{params["SS_script_support_path"]}/git_repos/brpm_content/modules/framework/brpm_script_executor.rb"
15
+
16
+ params["direct_execute"] = "true"
17
+
18
+ params["SS_integration_dns"] = SS_integration_dns
19
+ params["SS_integration_username"] = SS_integration_username
20
+ params["SS_integration_password_enc"] = SS_integration_password_enc
21
+ params["SS_integration_details"] = YAML.load(SS_integration_details)
22
+
23
+ BrpmScriptExecutor.execute_automation_script("jira", "add_comment", params)
@@ -0,0 +1,4 @@
1
+ params = BrpmAuto.params
2
+
3
+ BrpmAuto.log "Creating a new option for plan '#{params["release_name"]}' in the JIRA dropdown custom field with id #{params["jira_release_field_id"]}..."
4
+ JiraRestClient.new.create_option_for_dropdown_custom_field(params["jira_release_field_id"], params["release_name"])
@@ -0,0 +1,23 @@
1
+ ###
2
+ # jira_release_field_id:
3
+ # name: JIRA release field id
4
+ # required: yes
5
+ # release_name:
6
+ # name: Release name
7
+ # required: yes
8
+ ###
9
+
10
+ #=== BMC Application Automation Integration Server: JIRA ===#
11
+ # [integration_id=4]
12
+ #=== End ===#
13
+
14
+ require "#{params["SS_script_support_path"]}/git_repos/brpm_content/modules/framework/brpm_script_executor.rb"
15
+
16
+ params["direct_execute"] = "true"
17
+
18
+ params["SS_integration_dns"] = SS_integration_dns
19
+ params["SS_integration_username"] = SS_integration_username
20
+ params["SS_integration_password_enc"] = SS_integration_password_enc
21
+ params["SS_integration_details"] = YAML.load(SS_integration_details)
22
+
23
+ BrpmScriptExecutor.execute_automation_script("jira", "create_release", params)
@@ -0,0 +1,4 @@
1
+ params = BrpmAuto.params
2
+
3
+ BrpmAuto.log "Deleting option for plan '#{params["release_name"]}' in the JIRA dropdown custom field with id #{params["jira_release_field_id"]}..."
4
+ JiraRestClient.new.delete_option_for_dropdown_custom_field(params["jira_release_field_id"], params["release_name"])
@@ -0,0 +1,23 @@
1
+ ###
2
+ # jira_release_field_id:
3
+ # name: JIRA release field id
4
+ # required: yes
5
+ # release_name:
6
+ # name: Release name
7
+ # required: yes
8
+ ###
9
+
10
+ #=== BMC Application Automation Integration Server: JIRA ===#
11
+ # [integration_id=4]
12
+ #=== End ===#
13
+
14
+ require "#{params["SS_script_support_path"]}/git_repos/brpm_content/modules/framework/brpm_script_executor.rb"
15
+
16
+ params["direct_execute"] = "true"
17
+
18
+ params["SS_integration_dns"] = SS_integration_dns
19
+ params["SS_integration_username"] = SS_integration_username
20
+ params["SS_integration_password_enc"] = SS_integration_password_enc
21
+ params["SS_integration_details"] = YAML.load(SS_integration_details)
22
+
23
+ BrpmScriptExecutor.execute_automation_script("jira", "delete_release", params)
@@ -0,0 +1,4 @@
1
+ params = BrpmAuto.params
2
+
3
+ BrpmAuto.log "Setting the status of issue #{params["issue_id"]} to #{params["target_issue_status"]}"
4
+ JiraRestClient.new.set_issue_to_status(params["issue_id"], params["target_issue_status"])
@@ -0,0 +1,23 @@
1
+ ###
2
+ # issue_id:
3
+ # name: Issue Id
4
+ # required: yes
5
+ # target_issue_status:
6
+ # name: Target issue status
7
+ # required: yes
8
+ ###
9
+
10
+ #=== BMC Application Automation Integration Server: JIRA ===#
11
+ # [integration_id=4]
12
+ #=== End ===#
13
+
14
+ require "#{params["SS_script_support_path"]}/git_repos/brpm_content/modules/framework/brpm_script_executor.rb"
15
+
16
+ params["direct_execute"] = "true"
17
+
18
+ params["SS_integration_dns"] = SS_integration_dns
19
+ params["SS_integration_username"] = SS_integration_username
20
+ params["SS_integration_password_enc"] = SS_integration_password_enc
21
+ params["SS_integration_details"] = YAML.load(SS_integration_details)
22
+
23
+ BrpmScriptExecutor.execute_automation_script("jira", "transition_issues_for_request", params)
@@ -0,0 +1,29 @@
1
+ brpm_rest_client = BrpmRestClient.new
2
+ params = BrpmAuto.params
3
+
4
+ BrpmAuto.log "Getting the tickets that are linked to the request..."
5
+ tickets = brpm_rest_client.get_tickets_by_request_id(params.rest_request_id)
6
+
7
+ if tickets.count == 0
8
+ BrpmAuto.log "This request has no tickets, nothing further to do."
9
+ return
10
+ end
11
+
12
+ unless params["target_issue_status"]
13
+ BrpmAuto.log "Getting the stage of this request..."
14
+ request_with_details = brpm_rest_client.get_request_by_id(params.rest_request_id)
15
+
16
+ if request_with_details.has_key?("plan_member")
17
+ stage_name = request_with_details["plan_member"]["stage"]["name"]
18
+
19
+ params["target_issue_status"] = "Deployed to #{stage_name}"
20
+ else
21
+ BrpmAuto.log "The request is not part of a plan so not processing the tickets."
22
+ return
23
+ end
24
+ end
25
+
26
+ tickets.each do |ticket|
27
+ BrpmAuto.log "Setting the status of issue #{ticket["foreign_id"]} to #{params["target_issue_status"]}"
28
+ JiraRestClient.new.set_issue_to_status(ticket["foreign_id"], params["target_issue_status"])
29
+ end
@@ -0,0 +1,20 @@
1
+ ###
2
+ # target_issue_status:
3
+ # name: Target issue status
4
+ # required: yes
5
+ ###
6
+
7
+ #=== BMC Application Automation Integration Server: JIRA ===#
8
+ # [integration_id=4]
9
+ #=== End ===#
10
+
11
+ require "#{params["SS_script_support_path"]}/git_repos/brpm_content/modules/framework/brpm_script_executor.rb"
12
+
13
+ params["direct_execute"] = "true"
14
+
15
+ params["SS_integration_dns"] = SS_integration_dns
16
+ params["SS_integration_username"] = SS_integration_username
17
+ params["SS_integration_password_enc"] = SS_integration_password_enc
18
+ params["SS_integration_details"] = YAML.load(SS_integration_details)
19
+
20
+ BrpmScriptExecutor.execute_automation_script("jira", "transition_issues_for_request", params)
@@ -0,0 +1,26 @@
1
+ brpm_rest_client = BrpmRestClient.new
2
+ params = BrpmAuto.params
3
+
4
+ run_id = params["request_run_id"] || params["run_id"]
5
+
6
+ BrpmAuto.log "Getting the tickets that are linked to the requests of this run..."
7
+ tickets = brpm_rest_client.get_tickets_by_run_id_and_request_state(run_id, "completed")
8
+
9
+ if tickets.count == 0
10
+ BrpmAuto.log "This run has no tickets, nothing further to do."
11
+ return
12
+ end
13
+
14
+ unless params["target_issue_status"]
15
+ if params["request_plan_stage"]
16
+ params["target_issue_status"] = "Deployed to #{params["request_plan_stage"]}"
17
+ else
18
+ BrpmAuto.log "The request is not part of a plan so not processing the tickets."
19
+ return
20
+ end
21
+ end
22
+
23
+ tickets.each do |ticket|
24
+ BrpmAuto.log "Setting the status of issue #{ticket["foreign_id"]} to #{params["target_issue_status"]}"
25
+ JiraRestClient.new.set_issue_to_status(ticket["foreign_id"], params["target_issue_status"])
26
+ end
@@ -0,0 +1,20 @@
1
+ ###
2
+ # target_issue_status:
3
+ # name: Target issue status
4
+ # required: yes
5
+ ###
6
+
7
+ #=== BMC Application Automation Integration Server: JIRA ===#
8
+ # [integration_id=4]
9
+ #=== End ===#
10
+
11
+ require "#{params["SS_script_support_path"]}/git_repos/brpm_content/modules/framework/brpm_script_executor.rb"
12
+
13
+ params["direct_execute"] = "true"
14
+
15
+ params["SS_integration_dns"] = SS_integration_dns
16
+ params["SS_integration_username"] = SS_integration_username
17
+ params["SS_integration_password_enc"] = SS_integration_password_enc
18
+ params["SS_integration_details"] = YAML.load(SS_integration_details)
19
+
20
+ BrpmScriptExecutor.execute_automation_script("jira", "transition_issues_for_run", params)
@@ -0,0 +1,4 @@
1
+ params = BrpmAuto.params
2
+
3
+ BrpmAuto.log "Updating option for plan from '#{params["old_release_name"]}' to '#{params["new_release_name"]}' in the JIRA dropdown custom field with id #{params["jira_release_field_id"]}..."
4
+ JiraRestClient.new.update_option_for_dropdown_custom_field(params["jira_release_field_id"], params["old_release_name"], params["new_release_name"])
@@ -0,0 +1,26 @@
1
+ ###
2
+ # jira_release_field_id:
3
+ # name: JIRA release field id
4
+ # required: yes
5
+ # old_release_name:
6
+ # name: Old release name
7
+ # required: yes
8
+ # new_release_name:
9
+ # name: New release name
10
+ # required: yes
11
+ ###
12
+
13
+ #=== BMC Application Automation Integration Server: JIRA ===#
14
+ # [integration_id=4]
15
+ #=== End ===#
16
+
17
+ params["direct_execute"] = "true"
18
+
19
+ require "#{params["SS_script_support_path"]}/git_repos/brpm_content/modules/framework/brpm_script_executor.rb"
20
+
21
+ params["SS_integration_dns"] = SS_integration_dns
22
+ params["SS_integration_username"] = SS_integration_username
23
+ params["SS_integration_password_enc"] = SS_integration_password_enc
24
+ params["SS_integration_details"] = YAML.load(SS_integration_details)
25
+
26
+ BrpmScriptExecutor.execute_automation_script("jira", "update_release", params)
@@ -0,0 +1,7 @@
1
+ dependencies:
2
+ - brpm
3
+
4
+ integration_servers:
5
+ - JIRA
6
+
7
+ version: 1.0.0
@@ -0,0 +1,185 @@
1
+ require 'json'
2
+ require 'uri'
3
+
4
+ #=============================================================================#
5
+ # Jira Rest Module #
6
+ #-----------------------------------------------------------------------------#
7
+ # The REST module currently supports the 6.0.8 version of the Jira API as #
8
+ # well as a rest client which supports both HTTP and HTTPS #
9
+ #=============================================================================#
10
+
11
+ class JiraRestClient
12
+ def initialize(integration_settings = BrpmAuto.integration_settings)
13
+ @url = integration_settings.dns
14
+ @username = integration_settings.username
15
+ @password = integration_settings.password
16
+
17
+ @api_url = "#{@url}/rest/api/2"
18
+ end
19
+
20
+ # POST /rest/api/2/issue/{issueIdOrKey}/comment
21
+ def add_comment(issue_id, comment_body = 'Dummy Comment')
22
+ cmmnt = {:body => comment_body}
23
+ Rest.post("#{@api_url}/issue/#{issue_id}/comment", cmmnt, { :username => @username, :password => @password })["response"]
24
+ end
25
+
26
+ # GET /rest/api/2/issue/{issueIdOrKey}/transitions[?expand=transitions.fields]
27
+ def get_issue_transitions(issue_id, expand_transition = false)
28
+ url = "#{@api_url}/issue/#{issue_id}/transitions"
29
+ if expand_transition
30
+ url = "#{url}?expand=transitions.fields"
31
+ end
32
+ Rest.get(url, { :username => @username, :password => @password })["response"]
33
+ end
34
+
35
+ # GET /rest/api/2/issue/{issueIdOrKey}/transitions?transitionId={transistion_id}[&expand=transitions.fields]
36
+ def get_issue_transition(issue_id, transition_id, expand_transition = false)
37
+ url = "#{@api_url}/issue/#{issue_id}/transitions?transitionId=#{transition_id}"
38
+ if expand_transition
39
+ url = "#{url}&expand=transitions.fields"
40
+ end
41
+ Rest.get(url, { :username => @username, :password => @password })["response"]
42
+ end
43
+
44
+ # POST /rest/api/2/issue/{issueIdOrKey}/transitions[?expand=transitions.fields]
45
+ def post_issue_transition(issue_id, transition_id, comment = 'simple comment', expand_transition = false)
46
+ url = "#{@api_url}/issue/#{issue_id}/transitions"
47
+ if expand_transition
48
+ url = "#{url}?expand=transitions.fields"
49
+ end
50
+ transition = {:update=>{:comment =>[{:add => {:body => "#{comment}"}}]}, :transition => {:id => "#{transition_id}"}}
51
+ #Simple post as only return code is returned
52
+ Rest.post(url, transition, { :username => @username, :password => @password })["response"]
53
+ end
54
+
55
+ # GET /rest/api/2/project
56
+ def get_projects()
57
+ Rest.get("#{@api_url}/project", { :username => @username, :password => @password })["response"]
58
+ end
59
+
60
+ def set_issue_to_status(issue_id, status)
61
+ BrpmAuto.log "Getting the possible transitions for issue #{issue_id}..."
62
+ result = get_issue_transitions(issue_id)
63
+ transitions = result["transitions"]
64
+
65
+ transition = transitions.find { |transition| transition["to"]["name"] == status }
66
+
67
+ if transition
68
+ BrpmAuto.log "Issuing transition #{transition["name"]} to update the status of the issue to #{status}..."
69
+ issues = post_issue_transition(issue_id, transition["id"])
70
+ else
71
+ BrpmAuto.log "This ticket does not have a transition to status #{status} currently. Leaving it in its current state."
72
+ end
73
+ end
74
+
75
+ # GET /rest/api/2/search?jql=[Some Jira Query Language Search][&startAt=<num>&maxResults=<num>&fields=<field,field,...>&expand=<param,param,...>]
76
+ def search(jql, start_at = 0, max_results = 50, fields = '', expand = '')
77
+ url = "#{@api_url}/search?jql=#{jql}"
78
+ url = "#{url}&startAt=#{start_at}" unless start_at == 0
79
+ url = "#{url}&maxResults=#{max_results}" unless max_results == 50
80
+ url = "#{url}&fields=#{fields}" unless fields == ''
81
+ url = "#{url}&expand=#{expand}" unless expand == ''
82
+
83
+ Rest.get(url, { :username => @username, :password => @password })["response"]
84
+ end
85
+
86
+ # GET /rest/api/2/issue/{issueIdOrKey}[?fields=<field,field,...>&expand=<param,param,...>]
87
+ def get_issue(issue_id, fields = '', expand = '')
88
+ added = false
89
+ url = "#{@api_url}/issue/#{issue_id}"
90
+ if not fields.eql? ''
91
+ url = "#{url}?fields=#{fields}"
92
+ added = true
93
+ end
94
+ if not expand.eql? ''
95
+ if added
96
+ url = "#{url}&expand=#{expand}"
97
+ else
98
+ url = "#{url}?expand=#{expand}"
99
+ end
100
+ end
101
+ Rest.get(url, { :username => @username, :password => @password })["response"]
102
+ end
103
+
104
+ def get_option_for_dropdown_custom_field(custom_field_id, option_value)
105
+ # NOTE: this method assumes that the "Customfield Editor Plugin" is installed on the JIRA instance and that permission was granted for the custom field
106
+
107
+ url = "#{@url}/rest/jiracustomfieldeditorplugin/1.1/user/customfieldoptions/customfield_#{custom_field_id}"
108
+ result = Rest.get(url, { :username => @username, :password => @password })
109
+
110
+ if result["status"] == "success"
111
+ custom_field_options = result["response"]
112
+ return custom_field_options.find { |custom_field_option| custom_field_option["optionvalue"] == option_value }
113
+ else
114
+ if result["code"] == 404
115
+ return nil
116
+ else
117
+ raise "Error getting option: #{result["error_message"]}"
118
+ end
119
+ end
120
+ end
121
+
122
+ def create_option_for_dropdown_custom_field(custom_field_id, option_value)
123
+ # NOTE: this method assumes that the "Customfield Editor Plugin" is installed on the JIRA instance and that permission was granted for the custom field
124
+
125
+ custom_field_option = get_option_for_dropdown_custom_field(custom_field_id, option_value)
126
+
127
+ if custom_field_option
128
+ BrpmAuto.log "The option already exists, nothing to do."
129
+ return custom_field_option
130
+ end
131
+
132
+ url = "#{@url}/rest/jiracustomfieldeditorplugin/1.1/user/customfieldoption/customfield_#{custom_field_id}"
133
+ data = {:optionvalue => option_value }
134
+
135
+ result = Rest.post(url, data, { :username => @username, :password => @password })
136
+
137
+ if result["status"] == "success"
138
+ return result["response"]
139
+ else
140
+ raise "Could not create option: #{result["error_message"]}"
141
+ end
142
+ end
143
+
144
+ def update_option_for_dropdown_custom_field(custom_field_id, old_option_value, new_option_value)
145
+ # NOTE: this method assumes that the "Customfield Editor Plugin" is installed on the JIRA instance and that permission was granted for the custom field
146
+
147
+ custom_field_option_to_update = get_option_for_dropdown_custom_field(custom_field_id, old_option_value)
148
+
149
+ if custom_field_option_to_update
150
+ url = "#{@url}/rest/jiracustomfieldeditorplugin/1.1/user/customfieldoption/customfield_#{custom_field_id}/#{custom_field_option_to_update["id"]}"
151
+ data = {:optionvalue => new_option_value }
152
+
153
+ result = Rest.put(url, data, { :username => @username, :password => @password })
154
+
155
+ if result["status"] == "success"
156
+ return result["response"]
157
+ else
158
+ raise "Could not update option: #{result["error_message"]}"
159
+ end
160
+ else
161
+ BrpmAuto.log "The option doesn't exist yet, creating it instead of updating..."
162
+ create_option_for_dropdown_custom_field(custom_field_id, new_option_value)
163
+ end
164
+ end
165
+
166
+ def delete_option_for_dropdown_custom_field(custom_field_id, option_value)
167
+ # NOTE: this method assumes that the "Customfield Editor Plugin" is installed on the JIRA instance and that permission was granted for the custom field
168
+
169
+ custom_field_option_to_delete = get_option_for_dropdown_custom_field(custom_field_id, option_value)
170
+
171
+ if custom_field_option_to_delete
172
+ url = "#{@url}/rest/jiracustomfieldeditorplugin/1.1/user/customfieldoption/customfield_#{custom_field_id}/#{custom_field_option_to_delete["id"]}"
173
+
174
+ result = Rest.delete(url, { :username => @username, :password => @password })
175
+
176
+ if result["status"] == "success"
177
+ return result["response"]
178
+ else
179
+ raise "Could not delete option: #{result["error_message"]}"
180
+ end
181
+ else
182
+ BrpmAuto.log "The option doesn't exist, nothing to do."
183
+ end
184
+ end
185
+ end