brpm_content 0.1.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +38 -0
- data/.travis.yml +14 -0
- data/Gemfile +3 -0
- data/LICENSE +21 -0
- data/README.md +308 -0
- data/Rakefile +24 -0
- data/TO_BE_MIGRATED.txt +8 -0
- data/architecture.png +0 -0
- data/brpm_content.gemspec +31 -0
- data/customers/demo/integrations/brpm/process_event_handler_event.rb +183 -0
- data/customers/demo/integrations/jenkins/spec/api/applications_spec.rb +89 -0
- data/customers/demo/integrations/jenkins/spec/api/plans_spec.rb +69 -0
- data/customers/demo/integrations/jenkins/spec/api/requests_spec.rb +57 -0
- data/customers/demo/integrations/jenkins/spec/spec_helper.rb +33 -0
- data/customers/demo/integrations/jira/process_webhook_event.rb +33 -0
- data/customers/demo/jira_mappings.rb +29 -0
- data/infrastructure/integrations/event_handler.rb +62 -0
- data/infrastructure/integrations/webhook_receiver.rb +49 -0
- data/infrastructure/shell_scripts/backup_database.sh +19 -0
- data/infrastructure/shell_scripts/create_bl_package.sh +34 -0
- data/infrastructure/shell_scripts/create_release_request.sh +34 -0
- data/infrastructure/shell_scripts/ddns.sh +10 -0
- data/infrastructure/shell_scripts/install_brpm.sh +63 -0
- data/infrastructure/shell_scripts/install_content_module.sh +66 -0
- data/infrastructure/shell_scripts/install_content_repo.sh +60 -0
- data/infrastructure/shell_scripts/install_module_from_gem.sh +80 -0
- data/infrastructure/shell_scripts/maintenance.sh +4 -0
- data/infrastructure/shell_scripts/patch_brpm.sh +90 -0
- data/infrastructure/shell_scripts/restore_database.sh +33 -0
- data/infrastructure/shell_scripts/run_event_handler.cmd +16 -0
- data/infrastructure/shell_scripts/run_event_handler.sh +20 -0
- data/infrastructure/shell_scripts/run_webhook_receiver.cmd +14 -0
- data/infrastructure/shell_scripts/run_webhook_receiver.sh +15 -0
- data/infrastructure/shell_scripts/update_content_repo.sh +21 -0
- data/infrastructure/silent_install_options_4.6.txt +93 -0
- data/infrastructure/silent_install_options_upgrade_4.6.txt +92 -0
- data/infrastructure/smtp_settings.rb +42 -0
- data/infrastructure/ssh_script_header_additions.rb +21 -0
- data/modules/ansible/automations/execute_role.rb +3 -0
- data/modules/ansible/automations/execute_role.txt +12 -0
- data/modules/ansible/config.yml +5 -0
- data/modules/ansible/lib/ansible.rb +41 -0
- data/modules/atrium_orchestrator/automations/execute_workflow.rb +12 -0
- data/modules/atrium_orchestrator/automations/execute_workflow.txt +25 -0
- data/modules/atrium_orchestrator/automations/reserve_ip_address.rb +22 -0
- data/modules/atrium_orchestrator/automations/reserve_ip_address.txt +21 -0
- data/modules/atrium_orchestrator/config.yml +7 -0
- data/modules/atrium_orchestrator/lib/ao_soap_client.rb +94 -0
- data/modules/bladelogic/automations/create_package.rb +29 -0
- data/modules/bladelogic/automations/create_package.txt +26 -0
- data/modules/bladelogic/automations/deploy_package.rb +137 -0
- data/modules/bladelogic/automations/deploy_package.txt +53 -0
- data/modules/bladelogic/config.yml +7 -0
- data/modules/bladelogic/lib/bl_rest/bsa_rest_client.rb +65 -0
- data/modules/bladelogic/lib/bl_soap/blpackage.rb +43 -0
- data/modules/bladelogic/lib/bl_soap/bsa_soap_base.rb +118 -0
- data/modules/bladelogic/lib/bl_soap/bsa_soap_client.rb +34 -0
- data/modules/bladelogic/lib/bl_soap/compliance_job.rb +155 -0
- data/modules/bladelogic/lib/bl_soap/deploy_job.rb +48 -0
- data/modules/bladelogic/lib/bl_soap/depot_group.rb +47 -0
- data/modules/bladelogic/lib/bl_soap/job.rb +376 -0
- data/modules/bladelogic/lib/bl_soap/job_group.rb +72 -0
- data/modules/bladelogic/lib/bl_soap/job_management.rb +22 -0
- data/modules/bladelogic/lib/bl_soap/job_result.rb +12 -0
- data/modules/bladelogic/lib/bl_soap/job_run.rb +271 -0
- data/modules/bladelogic/lib/bl_soap/login.rb +47 -0
- data/modules/bladelogic/lib/bl_soap/nsh_script_job.rb +14 -0
- data/modules/bladelogic/lib/bl_soap/patch_catalog.rb +178 -0
- data/modules/bladelogic/lib/bl_soap/patch_remediation_job.rb +137 -0
- data/modules/bladelogic/lib/bl_soap/patching_job.rb +250 -0
- data/modules/bladelogic/lib/bl_soap/server.rb +12 -0
- data/modules/bladelogic/lib/bl_soap/template.rb +13 -0
- data/modules/bladelogic/lib/bl_soap/utility.rb +99 -0
- data/modules/bladelogic/resource_automations/select_job.rb +33 -0
- data/modules/bladelogic/resource_automations/select_job.txt +15 -0
- data/modules/bladelogic/tests/create_package_spec.rb +28 -0
- data/modules/bladelogic/tests/deploy_package_spec.rb +23 -0
- data/modules/bladelogic/tests/spec_helper.rb +82 -0
- data/modules/brpm/automations/create_release_from_excel.rb +34 -0
- data/modules/brpm/automations/create_release_from_excel.txt +5 -0
- data/modules/brpm/automations/create_release_request.rb +100 -0
- data/modules/brpm/automations/create_release_request.txt +5 -0
- data/modules/brpm/automations/create_request.rb +73 -0
- data/modules/brpm/automations/create_request.txt +23 -0
- data/modules/brpm/automations/promote_request.rb +197 -0
- data/modules/brpm/automations/promote_request.txt +24 -0
- data/modules/brpm/automations/select_application_version.rb +22 -0
- data/modules/brpm/automations/select_application_version.txt +17 -0
- data/modules/brpm/automations/select_component_version.rb +12 -0
- data/modules/brpm/automations/select_component_version.txt +5 -0
- data/modules/brpm/automations/select_request_template.rb +6 -0
- data/modules/brpm/automations/select_request_template.txt +13 -0
- data/modules/brpm/automations/wait_for_step_in_other_request.rb +11 -0
- data/modules/brpm/automations/wait_for_step_in_other_request.txt +13 -0
- data/modules/brpm/automations/wait_till_promoted_request_is_completed.rb +9 -0
- data/modules/brpm/automations/wait_till_promoted_request_is_completed.txt +5 -0
- data/modules/brpm/config.yml +6 -0
- data/modules/brpm/lib/brpm_request.rb +207 -0
- data/modules/brpm/lib/brpm_rest.rb +312 -0
- data/modules/brpm/lib/brpm_rest_client.rb +1501 -0
- data/modules/brpm/resource_automations/select_application.rb +16 -0
- data/modules/brpm/resource_automations/select_application.txt +5 -0
- data/modules/brpm/resource_automations/select_environment.rb +14 -0
- data/modules/brpm/resource_automations/select_environment.txt +5 -0
- data/modules/brpm/resource_automations/select_request_template.rb +16 -0
- data/modules/brpm/resource_automations/select_request_template.txt +5 -0
- data/modules/brpm/resource_automations/select_step_in_request.rb +33 -0
- data/modules/brpm/resource_automations/select_step_in_request.txt +5 -0
- data/modules/brpm/sample_applications/e-finance.json +0 -0
- data/modules/brpm/tests/create_release_request_spec.rb +66 -0
- data/modules/brpm/tests/create_request_spec.rb +84 -0
- data/modules/brpm/tests/select_application_version_spec.rb +47 -0
- data/modules/brpm/tests/spec_helper.rb +63 -0
- data/modules/docker_brpm/automations/create_brpm_instance_input_params.rb +10 -0
- data/modules/docker_brpm/automations/create_brpm_instance_input_params.txt +17 -0
- data/modules/docker_brpm/automations/create_brpm_instance_one_shot.rb +60 -0
- data/modules/docker_brpm/automations/create_brpm_instance_one_shot.txt +14 -0
- data/modules/docker_brpm/automations/create_brpm_instance_show_results.rb +23 -0
- data/modules/docker_brpm/automations/create_brpm_instance_show_results.txt +13 -0
- data/modules/docker_brpm/automations/create_database.rb +24 -0
- data/modules/docker_brpm/automations/create_database.txt +3 -0
- data/modules/docker_brpm/automations/create_environment.rb +14 -0
- data/modules/docker_brpm/automations/create_environment.txt +3 -0
- data/modules/docker_brpm/automations/create_image_for_application.rb +23 -0
- data/modules/docker_brpm/automations/create_image_for_application.txt +6 -0
- data/modules/docker_brpm/automations/create_image_for_brpm_application_input_params.rb +7 -0
- data/modules/docker_brpm/automations/create_image_for_brpm_application_input_params.txt +8 -0
- data/modules/docker_brpm/automations/create_image_for_brpm_database_creator_input_params.rb +7 -0
- data/modules/docker_brpm/automations/create_image_for_brpm_database_creator_input_params.txt +8 -0
- data/modules/docker_brpm/automations/create_image_for_database_creator.rb +21 -0
- data/modules/docker_brpm/automations/create_image_for_database_creator.txt +6 -0
- data/modules/docker_brpm/automations/create_installed_component_for_application.rb +11 -0
- data/modules/docker_brpm/automations/create_installed_component_for_application.txt +3 -0
- data/modules/docker_brpm/automations/create_installed_component_for_database.rb +7 -0
- data/modules/docker_brpm/automations/create_installed_component_for_database.txt +3 -0
- data/modules/docker_brpm/automations/create_installed_component_for_database_creator.rb +8 -0
- data/modules/docker_brpm/automations/create_installed_component_for_database_creator.txt +3 -0
- data/modules/docker_brpm/automations/create_installed_component_for_utilities.rb +7 -0
- data/modules/docker_brpm/automations/create_installed_component_for_utilities.txt +3 -0
- data/modules/docker_brpm/automations/create_version_tags_for_component_in_all_envs.rb +13 -0
- data/modules/docker_brpm/automations/create_version_tags_for_component_in_all_envs.txt +6 -0
- data/modules/docker_brpm/automations/delete_brpm_instance.rb +38 -0
- data/modules/docker_brpm/automations/delete_brpm_instance.txt +8 -0
- data/modules/docker_brpm/automations/execute_test_run_in_jenkins.rb +43 -0
- data/modules/docker_brpm/automations/execute_test_run_in_jenkins.txt +13 -0
- data/modules/docker_brpm/automations/execute_test_run_in_jenkins_show_results.rb +5 -0
- data/modules/docker_brpm/automations/execute_test_run_in_jenkins_show_results.txt +9 -0
- data/modules/docker_brpm/automations/launch_create_image_for_brpm_application_request.rb +27 -0
- data/modules/docker_brpm/automations/launch_create_image_for_brpm_application_request.txt +3 -0
- data/modules/docker_brpm/automations/launch_test_run_request.rb +30 -0
- data/modules/docker_brpm/automations/launch_test_run_request.txt +14 -0
- data/modules/docker_brpm/automations/release_brpm_input_params.rb +7 -0
- data/modules/docker_brpm/automations/release_brpm_input_params.txt +8 -0
- data/modules/docker_brpm/automations/run_application_container.rb +27 -0
- data/modules/docker_brpm/automations/run_application_container.txt +3 -0
- data/modules/docker_brpm/automations/run_database_container.rb +14 -0
- data/modules/docker_brpm/automations/run_database_container.txt +3 -0
- data/modules/docker_brpm/automations/stop_application_container.rb +11 -0
- data/modules/docker_brpm/automations/stop_application_container.txt +3 -0
- data/modules/docker_brpm/automations/stop_database_container.rb +11 -0
- data/modules/docker_brpm/automations/stop_database_container.txt +3 -0
- data/modules/docker_brpm/automations/test_rest_api.rb +18 -0
- data/modules/docker_brpm/automations/test_rest_api.txt +3 -0
- data/modules/docker_brpm/automations/upgrade_database.rb +19 -0
- data/modules/docker_brpm/automations/upgrade_database.txt +8 -0
- data/modules/docker_brpm/config.yml +8 -0
- data/modules/docker_brpm/lib/docker.rb +39 -0
- data/modules/docker_brpm/lib/git.rb +16 -0
- data/modules/docker_brpm/sample_applications/dockerizedbrpm.json +0 -0
- data/modules/email/automations/send_notification.rb +48 -0
- data/modules/email/automations/send_notification.txt +27 -0
- data/modules/email/config.yml +6 -0
- data/modules/framework/automations/direct_execute.rb +10 -0
- data/modules/framework/automations/direct_execute.txt +16 -0
- data/modules/framework/automations/install_module.rb +13 -0
- data/modules/framework/automations/install_module.txt +16 -0
- data/modules/framework/bin/brpm_install +106 -0
- data/modules/framework/bin/event_handler +63 -0
- data/modules/framework/bin/webhook_receiver +49 -0
- data/modules/framework/brpm_auto.rb +307 -0
- data/modules/framework/brpm_framework.rb +88 -0
- data/modules/framework/brpm_script_executor.rb +146 -0
- data/modules/framework/config.yml +7 -0
- data/modules/framework/config/customer_include.rb +26 -0
- data/modules/framework/config/server.yml +3 -0
- data/modules/framework/customer_include_default.rb +25 -0
- data/modules/framework/lib/logging/brpm_logger.rb +39 -0
- data/modules/framework/lib/logging/logger_base.rb +36 -0
- data/modules/framework/lib/logging/simple_logger.rb +27 -0
- data/modules/framework/lib/params/all_params.rb +80 -0
- data/modules/framework/lib/params/integration_settings.rb +27 -0
- data/modules/framework/lib/params/params.rb +172 -0
- data/modules/framework/lib/params/params_base.rb +81 -0
- data/modules/framework/lib/params/request_params.rb +38 -0
- data/modules/framework/lib/resource_framework.rb +211 -0
- data/modules/framework/lib/rest_api.rb +155 -0
- data/modules/framework/lib/semaphore.rb +79 -0
- data/modules/framework/lib/utilities.rb +317 -0
- data/modules/framework/lib/version_control/git.rb +192 -0
- data/modules/framework/lib/version_control/svn.rb +221 -0
- data/modules/framework/log.html +39 -0
- data/modules/framework/tests/all_params_spec.rb +116 -0
- data/modules/framework/tests/brpm_auto_spec.rb +84 -0
- data/modules/framework/tests/customer_include/config/customer_include.rb +10 -0
- data/modules/framework/tests/customer_include/config/server.yml +3 -0
- data/modules/framework/tests/customer_include_spec.rb +29 -0
- data/modules/framework/tests/local_jirb.rb +15 -0
- data/modules/framework/tests/params_spec.rb +172 -0
- data/modules/framework/tests/request_params_spec.rb +86 -0
- data/modules/framework/tests/server_yaml_spec.rb +19 -0
- data/modules/framework/tests/spec_helper.rb +42 -0
- data/modules/framework/transport/dispatch_baa.rb +355 -0
- data/modules/framework/transport/dispatch_base.rb +345 -0
- data/modules/framework/transport/dispatch_nsh.rb +248 -0
- data/modules/framework/transport/dispatch_ssh.rb +154 -0
- data/modules/framework/transport/transport_baa.rb +1095 -0
- data/modules/framework/transport/transport_nsh.rb +359 -0
- data/modules/framework/transport/transport_ssh.rb +220 -0
- data/modules/framework/write_to.rb +1 -0
- data/modules/jenkins/automations/create_release.rb +4 -0
- data/modules/jenkins/automations/create_release.txt +23 -0
- data/modules/jenkins/automations/f2_downloadJenkinsArtifact.rb +126 -0
- data/modules/jenkins/config.yml +7 -0
- data/modules/jenkins/lib/jenkins.rb +300 -0
- data/modules/jenkins/resource_automations/f2_rsc_jenkinsJobs.rb +58 -0
- data/modules/jira/automations/add_comment.rb +4 -0
- data/modules/jira/automations/add_comment.txt +23 -0
- data/modules/jira/automations/create_release.rb +4 -0
- data/modules/jira/automations/create_release.txt +23 -0
- data/modules/jira/automations/delete_release.rb +4 -0
- data/modules/jira/automations/delete_release.txt +23 -0
- data/modules/jira/automations/transition_issue.rb +4 -0
- data/modules/jira/automations/transition_issue.txt +23 -0
- data/modules/jira/automations/transition_issues_for_request.rb +29 -0
- data/modules/jira/automations/transition_issues_for_request.txt +20 -0
- data/modules/jira/automations/transition_issues_for_run.rb +26 -0
- data/modules/jira/automations/transition_issues_for_run.txt +20 -0
- data/modules/jira/automations/update_release.rb +4 -0
- data/modules/jira/automations/update_release.txt +26 -0
- data/modules/jira/config.yml +7 -0
- data/modules/jira/lib/jira_rest_client.rb +185 -0
- data/modules/jira/tests/create_read_update_delete_release_spec.rb +39 -0
- data/modules/jira/tests/spec_helper.rb +39 -0
- data/modules/jira/tests/transition_issue_spec.rb +32 -0
- data/modules/patch_process_management/automations/execute_job/script.rb +105 -0
- data/modules/patch_process_management/automations/execute_job/wrapper.txt +39 -0
- data/modules/patch_process_management/automations/patch_analysis/script.rb +107 -0
- data/modules/patch_process_management/automations/patch_analysis/wrapper.txt +33 -0
- data/modules/patch_process_management/automations/patch_readiness/script.rb +89 -0
- data/modules/patch_process_management/automations/patch_readiness/wrapper.txt +33 -0
- data/modules/patch_process_management/automations/patch_remediation/script.rb +217 -0
- data/modules/patch_process_management/automations/patch_remediation/wrapper.txt +40 -0
- data/modules/patch_process_management/config.yml +10 -0
- data/modules/teamcity/automations/trigger_build.rb +4 -0
- data/modules/teamcity/automations/trigger_build.txt +14 -0
- data/modules/teamcity/config.yml +7 -0
- data/modules/teamcity/lib/teamcity_rest_client.rb +17 -0
- data/modules/teamcity/tests/spec_helper.rb +34 -0
- data/modules/teamcity/tests/trigger_build_spec.rb +27 -0
- data/modules/windows/automations/deploy_directory_over_windows_shares/script.rb +87 -0
- data/modules/windows/automations/deploy_directory_over_windows_shares/wrapper.txt +29 -0
- data/modules/windows/automations/deploy_file_over_windows_shares/script.rb +31 -0
- data/modules/windows/automations/deploy_file_over_windows_shares/wrapper.txt +24 -0
- data/modules/windows/config.yml +6 -0
- data/modules/windows/lib/samba.rb +29 -0
- metadata +397 -0
@@ -0,0 +1,221 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
3
|
+
# Base class for working with Subversion
|
4
|
+
class Svn
|
5
|
+
|
6
|
+
# Initializes an instance of the class
|
7
|
+
#
|
8
|
+
# ==== Attributes
|
9
|
+
#
|
10
|
+
# * +svn+ - path to the svn executable
|
11
|
+
# * +params+ - params hash
|
12
|
+
# * +options+ - hash of options includes:...
|
13
|
+
# url - url for svn repository...
|
14
|
+
# base_path - path for the local repository...
|
15
|
+
# username - repository user username...
|
16
|
+
# password - repository user password...
|
17
|
+
# verbose - true for verbose output (default = false)...
|
18
|
+
# rebase - starting path for checkouts...
|
19
|
+
# simulate - simulate command - echo it (default = false)...
|
20
|
+
# prerun_lines - pass any text to run before svn (such as env variables)...
|
21
|
+
# command_options - options to pass on command line e.g. --non-interactive
|
22
|
+
#
|
23
|
+
def initialize(svn, params, options)
|
24
|
+
self.extend Utilities
|
25
|
+
@url = required_option(options,"url")
|
26
|
+
@base_path = required_option(options,"base_path")
|
27
|
+
user = get_option(options,"username")
|
28
|
+
@password = get_option(options,"password")
|
29
|
+
@verbose = get_option(options,"verbose", false)
|
30
|
+
@prerun = get_option(options, "prerun_lines")
|
31
|
+
@command_options = get_option(options, "command_options")
|
32
|
+
@command_options += " --non-interactive" unless @command_options.include?("non-interactive")
|
33
|
+
@rebase = get_option(options, "rebase")
|
34
|
+
@rebase = @url.split("/")[-1] if @rebase == ""
|
35
|
+
@simulate = get_option(options,"simulate", false)
|
36
|
+
make_credential(user, @password)
|
37
|
+
@svn = svn
|
38
|
+
end
|
39
|
+
|
40
|
+
# Parses a complex svn uri into parts
|
41
|
+
#
|
42
|
+
# ==== Attributes
|
43
|
+
#
|
44
|
+
# * +svn_url+ - svn url, like this:...
|
45
|
+
# https://user:password@host:port/path/path[#revision]...
|
46
|
+
# https://user:password@svn.nam.nsroot.net:9050/svn/16667/appreldep/RLM/artifacts/CATE[7777777]
|
47
|
+
# * +reset_values+ - resets the svn object parameters host, password etc from url (default=false)
|
48
|
+
#
|
49
|
+
# ==== Returns
|
50
|
+
#
|
51
|
+
# * parse result, like this:...
|
52
|
+
# {"uri_result" => URIGemResult, "revision" => ""}
|
53
|
+
def parse_uri(svn_uri, reset_values = false)
|
54
|
+
result = {"uri_result" => nil, "revision" => ""}
|
55
|
+
k = svn_uri.scan(/\[.*\]/)
|
56
|
+
result["revision"] = k[0].gsub("[","").gsub("]","") if k.size > 0
|
57
|
+
rev = k.size > 0 ? "[#{result["revision"]}]" : "__ZZZ__"
|
58
|
+
parts = URI.parse(svn_uri.gsub(rev,""))
|
59
|
+
result["uri_result"] = parts
|
60
|
+
if reset_values
|
61
|
+
@url = "#{parts.scheme}://#{parts.host}:#{parts.port}#{parts.path}"
|
62
|
+
make_credential(parts.user, parts.password) unless parts.password.nil?
|
63
|
+
end
|
64
|
+
result
|
65
|
+
end
|
66
|
+
|
67
|
+
# Performs an svn checkout
|
68
|
+
#
|
69
|
+
# ==== Attributes
|
70
|
+
#
|
71
|
+
# * +init+ - true to initilize the checkout and local repo
|
72
|
+
# ==== Returns
|
73
|
+
#
|
74
|
+
# * command output
|
75
|
+
def checkout(init = false)
|
76
|
+
FileUtils.cd(@base_path, :verbose => true)
|
77
|
+
if init
|
78
|
+
cmd = "#{@svn} checkout #{@url} #{@rebase} #{@credential} #{@command_options}"
|
79
|
+
else
|
80
|
+
cmd = "#{@svn} checkout #{@command_options}"
|
81
|
+
end
|
82
|
+
process_cmd(cmd)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Performs an svn export
|
86
|
+
#
|
87
|
+
# ==== Attributes
|
88
|
+
#
|
89
|
+
# * +revision+ - revision to export (options - defaults to latest)
|
90
|
+
# ==== Returns
|
91
|
+
#
|
92
|
+
# * command output
|
93
|
+
def export(target = "", revision = "")
|
94
|
+
url_items = URI.parse(@url)
|
95
|
+
target = url_items.path if target == ""
|
96
|
+
cmd_options = @command_options
|
97
|
+
cmd_options += " --no-auth-cache --trust-server-cert --force" if cmd_options == " --non-interactive"
|
98
|
+
base_cmd = "#{@svn} export #{@credential} #{@command_options} #{@url}"
|
99
|
+
FileUtils.cd(@base_path, :verbose => true)
|
100
|
+
if revision == ""
|
101
|
+
cmd = "#{base_cmd} ."
|
102
|
+
else
|
103
|
+
cmd = "#{base_cmd} -r #{revision} ."
|
104
|
+
end
|
105
|
+
process_cmd(cmd)
|
106
|
+
end
|
107
|
+
|
108
|
+
# Performs an svn checkout
|
109
|
+
#
|
110
|
+
# ==== Returns
|
111
|
+
#
|
112
|
+
# * command output
|
113
|
+
def get
|
114
|
+
cmd = "#{@svn} checkout --non-interactive"
|
115
|
+
process_cmd(cmd)
|
116
|
+
end
|
117
|
+
|
118
|
+
# Performs an svn commit
|
119
|
+
#
|
120
|
+
# ==== Attributes
|
121
|
+
#
|
122
|
+
# * +message+ - commit string
|
123
|
+
# ==== Returns
|
124
|
+
#
|
125
|
+
# * command output
|
126
|
+
def commit(message = "Automation pushed changes")
|
127
|
+
# /usr/bin/svn commit . -m "PSENG-0000 Adding PSENG files"
|
128
|
+
cmd = "#{@svn} commit . -m \"#{message}\""
|
129
|
+
process_cmd(cmd)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Performs an svn tag
|
133
|
+
#
|
134
|
+
# ==== Attributes
|
135
|
+
#
|
136
|
+
# * +source_path+ - path in repo to tag
|
137
|
+
# * +tag_name+ - name for tag
|
138
|
+
# * +message+ - message to add to tag
|
139
|
+
#
|
140
|
+
# ==== Returns
|
141
|
+
#
|
142
|
+
# * command output
|
143
|
+
def tag(source_path, tag_name, message)
|
144
|
+
ipos = @url.index("trunk")
|
145
|
+
raise "Cannot locate trunk path" if ipos.nil?
|
146
|
+
tag_path = @url[0..ipos] + "tags/" + tag_name
|
147
|
+
cmd = "#{@svn} copy #{source_path} #{tag_path} -m \"#{message}\""
|
148
|
+
process_cmd(cmd)
|
149
|
+
end
|
150
|
+
|
151
|
+
# Performs an svn status
|
152
|
+
#
|
153
|
+
# ==== Returns
|
154
|
+
#
|
155
|
+
# * command output
|
156
|
+
def status
|
157
|
+
process_cmd("#{@svn} status")
|
158
|
+
end
|
159
|
+
|
160
|
+
# Adds any new files in the local repo to the svn commit list
|
161
|
+
#
|
162
|
+
# ==== Attributes
|
163
|
+
#
|
164
|
+
# * +exclude_regex+ - regex to filter add files (file !=~ filter)
|
165
|
+
#
|
166
|
+
# ==== Returns
|
167
|
+
#
|
168
|
+
# * command output
|
169
|
+
def add_files(options = {})
|
170
|
+
result = status
|
171
|
+
msg = ""
|
172
|
+
exclude = get_option(options,"exclude_regex")
|
173
|
+
result.split("\n").each do |item|
|
174
|
+
if item.start_with?("?")
|
175
|
+
file = item.gsub("?","").strip
|
176
|
+
cmd = "#{@svn} add #{file}"
|
177
|
+
if exclude == ""
|
178
|
+
msg += process_cmd(cmd)
|
179
|
+
else
|
180
|
+
msg += process_cmd(cmd) if file =~ /#{exclude}/
|
181
|
+
end
|
182
|
+
res = `#{cmd}`
|
183
|
+
end
|
184
|
+
end
|
185
|
+
"#{result}\n#{msg}"
|
186
|
+
end
|
187
|
+
|
188
|
+
private
|
189
|
+
|
190
|
+
def process_cmd(cmd)
|
191
|
+
goto_base
|
192
|
+
cmd = "#{@prerun} && #{cmd}" unless @prerun == ""
|
193
|
+
res = execute_shell(cmd) unless @simulate
|
194
|
+
BrpmAuto.log cmd.gsub(@password,"-private-") if @verbose || @simulate
|
195
|
+
@simulate ? "ok" : display_result(res)
|
196
|
+
end
|
197
|
+
|
198
|
+
def goto_base
|
199
|
+
@pwd = FileUtils.pwd
|
200
|
+
goto_path = @base_path #@rebase != "" ? File.join(@base_path,@rebase) : @base_path
|
201
|
+
FileUtils.cd(goto_path, :verbose => true) if @verbose
|
202
|
+
FileUtils.cd(goto_path) unless @verbose
|
203
|
+
end
|
204
|
+
|
205
|
+
def svn_errors?(output)
|
206
|
+
svn_terms = ["403 Forbidden", "SSL error code", "moorrreee"]
|
207
|
+
found = output.scan(/#{svn_terms.join("|")}/)
|
208
|
+
found.size > 0
|
209
|
+
end
|
210
|
+
|
211
|
+
def make_credential(user, password)
|
212
|
+
if user.to_s != "" && password.to_s != ""
|
213
|
+
@credential = " --username #{user} --password #{password}"
|
214
|
+
else
|
215
|
+
@credential = ""
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
end
|
220
|
+
|
221
|
+
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
|
5
|
+
<script type="text/javascript">
|
6
|
+
|
7
|
+
$(document).ready(function() {
|
8
|
+
|
9
|
+
function getURLParameter(name) {
|
10
|
+
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null
|
11
|
+
}
|
12
|
+
|
13
|
+
function functionToLoadFile(){
|
14
|
+
jQuery.get('/brpm/automation_results/' + getURLParameter('request') + '.log', function(data) {
|
15
|
+
mustScroll = false;
|
16
|
+
|
17
|
+
if($(window).scrollTop() + $(window).height() == $(document).height()){
|
18
|
+
mustScroll = true;
|
19
|
+
}
|
20
|
+
|
21
|
+
$('#text-file-container').html(data);
|
22
|
+
|
23
|
+
if(mustScroll){
|
24
|
+
window.scrollTo(0,document.body.scrollHeight);
|
25
|
+
}
|
26
|
+
|
27
|
+
setTimeout(functionToLoadFile, 2000);
|
28
|
+
});
|
29
|
+
}
|
30
|
+
|
31
|
+
setTimeout(functionToLoadFile, 10);
|
32
|
+
});
|
33
|
+
|
34
|
+
</script>
|
35
|
+
</head>
|
36
|
+
<body>
|
37
|
+
<pre id="text-file-container"></pre>
|
38
|
+
</body>
|
39
|
+
</html>
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require_relative "spec_helper"
|
2
|
+
|
3
|
+
describe 'All params' do
|
4
|
+
before(:each) do
|
5
|
+
cleanup_request_params
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should get a param from the param store' do
|
9
|
+
input_params = get_default_params
|
10
|
+
input_params["key1"] = "value1"
|
11
|
+
|
12
|
+
BrpmAuto.setup(input_params)
|
13
|
+
all_params = BrpmAuto.all_params
|
14
|
+
|
15
|
+
expect(all_params).to have_key("key1")
|
16
|
+
expect(all_params["key1"]).to eql("value1")
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should get a param from the request_param store' do
|
20
|
+
input_params = get_default_params
|
21
|
+
input_params["key1"] = "value1"
|
22
|
+
|
23
|
+
BrpmAuto.setup(input_params)
|
24
|
+
all_params = BrpmAuto.all_params
|
25
|
+
|
26
|
+
expect(all_params).to have_key("key1")
|
27
|
+
expect(all_params["key1"]).to eql("value1")
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should get a param by the get method' do
|
31
|
+
input_params = get_default_params
|
32
|
+
input_params["key1"] = "value1"
|
33
|
+
|
34
|
+
BrpmAuto.setup(input_params)
|
35
|
+
all_params = BrpmAuto.all_params
|
36
|
+
|
37
|
+
expect(all_params).to have_key("key1")
|
38
|
+
expect(all_params.get("key1")).to eql("value1")
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should raise an error when trying to add a param using []=' do
|
42
|
+
BrpmAuto.setup(get_default_params)
|
43
|
+
all_params = BrpmAuto.all_params
|
44
|
+
|
45
|
+
expect{ all_params["key1"] = "value1" }.to raise_exception(RuntimeError)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should add a param by the add method to the params store' do
|
49
|
+
input_params = get_default_params
|
50
|
+
|
51
|
+
BrpmAuto.setup(input_params)
|
52
|
+
all_params = BrpmAuto.all_params
|
53
|
+
|
54
|
+
all_params.add("key1", "value1", "params")
|
55
|
+
|
56
|
+
expect(all_params).to have_key("key1")
|
57
|
+
expect(all_params["key1"]).to eql("value1")
|
58
|
+
expect(all_params.count).to eql(get_default_params.count + 1)
|
59
|
+
|
60
|
+
expect(BrpmAuto.params.count).to eql(all_params.count)
|
61
|
+
|
62
|
+
request_params = get_request_params
|
63
|
+
expect(request_params.count).to eql(0)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should add a param by the add method to the request_param store' do
|
67
|
+
input_params = get_default_params
|
68
|
+
BrpmAuto.setup(input_params)
|
69
|
+
all_params = BrpmAuto.all_params
|
70
|
+
|
71
|
+
all_params.add("key1", "value1", "json")
|
72
|
+
|
73
|
+
expect(all_params).to have_key("key1")
|
74
|
+
expect(all_params["key1"]).to eql("value1")
|
75
|
+
expect(all_params.count).to eql(input_params.count + 1)
|
76
|
+
|
77
|
+
expect(BrpmAuto.params.count).to eql(all_params.count - 1)
|
78
|
+
|
79
|
+
request_params = get_request_params
|
80
|
+
expect(request_params.count).to eql(1)
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'should find or add a param to the params store' do
|
84
|
+
input_params = get_default_params
|
85
|
+
input_params["key1"] = "value1"
|
86
|
+
|
87
|
+
BrpmAuto.setup(input_params)
|
88
|
+
all_params = BrpmAuto.all_params
|
89
|
+
|
90
|
+
expect(all_params.find_or_add("key1", "value1-bis", "params")).to eql("value1")
|
91
|
+
expect(all_params.count).to eql(input_params.count)
|
92
|
+
|
93
|
+
expect(all_params.find_or_add("key2", "value2", "params")).to eql("value2")
|
94
|
+
expect(all_params.count).to eql(input_params.count + 1)
|
95
|
+
expect(all_params["key2"]).to eql("value2")
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'should find or add a param to the request_params store' do
|
99
|
+
input_request_params = {}
|
100
|
+
input_request_params["key1"] = "value1"
|
101
|
+
set_request_params(input_request_params)
|
102
|
+
|
103
|
+
input_params = get_default_params
|
104
|
+
BrpmAuto.setup(input_params)
|
105
|
+
all_params = BrpmAuto.all_params
|
106
|
+
|
107
|
+
expect(all_params.find_or_add("key1", "value1-bis", "json")).to eql("value1")
|
108
|
+
expect(all_params.count).to eql(input_params.count + 1)
|
109
|
+
|
110
|
+
expect(all_params.find_or_add("key2", "value2", "json")).to eql("value2")
|
111
|
+
expect(all_params.count).to eql(input_params.count + 2)
|
112
|
+
expect(all_params["key2"]).to eql("value2")
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require_relative "spec_helper"
|
2
|
+
|
3
|
+
describe 'BRPM automation framework' do
|
4
|
+
before(:all) do
|
5
|
+
setup_brpm_auto
|
6
|
+
end
|
7
|
+
|
8
|
+
describe 'privatize' do
|
9
|
+
it 'should hide a sensitive string' do
|
10
|
+
result = BrpmAuto.privatize("The password should be replaced here: MySecret, and also here:MySecret! ", "MySecret")
|
11
|
+
|
12
|
+
expect(result).not_to include("MySecret")
|
13
|
+
expect(result).to include("The password should be replaced here: ")
|
14
|
+
expect(result).to include(", and also here:")
|
15
|
+
expect(result).to include("! ")
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should hide an array of sensitive strings' do
|
19
|
+
privatized_string = BrpmAuto.privatize("The password should be replaced here: MySecret, and also here:MyOtherSecret! ", [ "MySecret", "MyOtherSecret" ])
|
20
|
+
|
21
|
+
expect(privatized_string).not_to include("MySecret")
|
22
|
+
expect(privatized_string).not_to include("MyOtherSecret")
|
23
|
+
expect(privatized_string).to include("The password should be replaced here: ")
|
24
|
+
expect(privatized_string).to include(", and also here:")
|
25
|
+
expect(privatized_string).to include("! ")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'substitute_tokens' do
|
30
|
+
it 'should replace a token' do
|
31
|
+
params = {}
|
32
|
+
params["application"] = "E-Finance"
|
33
|
+
result = BrpmAuto.substitute_tokens("The application is called rpm{application}", params)
|
34
|
+
|
35
|
+
expect(result).to eq("The application is called E-Finance")
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should replace a set of tokens' do
|
39
|
+
params = {}
|
40
|
+
params["application"] = "E-Finance"
|
41
|
+
params["component"] = "EF - java calculation engine"
|
42
|
+
params["component_version"] = "1.2.3"
|
43
|
+
result = BrpmAuto.substitute_tokens("The application is called rpm{application} and has component rpm{component} with version number rpm{component_version}", params)
|
44
|
+
|
45
|
+
expect(result).to eq("The application is called E-Finance and has component EF - java calculation engine with version number 1.2.3")
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should replace a set of nested tokens' do
|
49
|
+
params = {}
|
50
|
+
params["application"] = "E-Finance"
|
51
|
+
params["component"] = "EF - java calculation engine"
|
52
|
+
params["component_version"] = "1.2.rpm{component_version_revision}"
|
53
|
+
params["component_version_revision"] = "3"
|
54
|
+
result = BrpmAuto.substitute_tokens("The application is called rpm{application} and has component rpm{component} with version number rpm{component_version}", params)
|
55
|
+
|
56
|
+
expect(result).to eq("The application is called E-Finance and has component EF - java calculation engine with version number 1.2.3")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe 'dos_path' do
|
61
|
+
it 'should convert a path from the UNIX to the Windows format' do
|
62
|
+
result = BrpmAuto.dos_path("C/windows/path")
|
63
|
+
|
64
|
+
expect(result).to eq("C:\\windows\\path")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe 'execute_shell' do
|
69
|
+
it 'should execute a command successfully' do
|
70
|
+
result = BrpmAuto.execute_shell("echo Hello")
|
71
|
+
|
72
|
+
expect(result["status"]).to eql(0)
|
73
|
+
expect(result["stdout"]).to eql("Hello\n")
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should return with a non-zero status when passing a bad command' do
|
77
|
+
result = BrpmAuto.execute_shell("xxxx")
|
78
|
+
|
79
|
+
expect(result["status"]).not_to eql(0)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
|