brpm_module_brpm 0.1.10

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 (45) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +38 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +18 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE +21 -0
  7. data/README.md +7 -0
  8. data/Rakefile +24 -0
  9. data/automations/create_release_from_excel.rb +34 -0
  10. data/automations/create_release_from_excel.txt +5 -0
  11. data/automations/create_release_request.rb +100 -0
  12. data/automations/create_release_request.txt +5 -0
  13. data/automations/create_request.rb +73 -0
  14. data/automations/create_request.txt +23 -0
  15. data/automations/promote_request.rb +197 -0
  16. data/automations/promote_request.txt +24 -0
  17. data/automations/select_application_version.rb +22 -0
  18. data/automations/select_application_version.txt +17 -0
  19. data/automations/select_component_version.rb +12 -0
  20. data/automations/select_component_version.txt +5 -0
  21. data/automations/select_request_template.rb +6 -0
  22. data/automations/select_request_template.txt +13 -0
  23. data/automations/wait_for_step_in_other_request.rb +11 -0
  24. data/automations/wait_for_step_in_other_request.txt +13 -0
  25. data/automations/wait_till_promoted_request_is_completed.rb +9 -0
  26. data/automations/wait_till_promoted_request_is_completed.txt +5 -0
  27. data/bin/create_release_request +23 -0
  28. data/brpm_module_brpm.gemspec +39 -0
  29. data/config.yml +11 -0
  30. data/lib/brpm_request.rb +207 -0
  31. data/lib/brpm_rest.rb +312 -0
  32. data/lib/brpm_rest_client.rb +1501 -0
  33. data/resource_automations/select_application.rb +16 -0
  34. data/resource_automations/select_application.txt +5 -0
  35. data/resource_automations/select_environment.rb +14 -0
  36. data/resource_automations/select_environment.txt +5 -0
  37. data/resource_automations/select_request_template.rb +16 -0
  38. data/resource_automations/select_request_template.txt +5 -0
  39. data/resource_automations/select_step_in_request.rb +33 -0
  40. data/resource_automations/select_step_in_request.txt +5 -0
  41. data/tests/create_release_request_spec.rb +66 -0
  42. data/tests/create_request_spec.rb +84 -0
  43. data/tests/select_application_version_spec.rb +47 -0
  44. data/tests/spec_helper.rb +71 -0
  45. metadata +131 -0
@@ -0,0 +1,16 @@
1
+ def execute_script(params, parent_id, offset, max_records)
2
+ brpm_rest_client = BrpmRestClient.new
3
+
4
+ BrpmAuto.log "Finding all applications..."
5
+ apps = brpm_rest_client.get_apps()
6
+
7
+ apps = apps.sort_by { |app| app["name"] }
8
+
9
+ BrpmAuto.log "Adding the #{apps.count} found applications to the list..."
10
+ results = []
11
+ apps.each do |app|
12
+ results << { app["name"] => app["id"].to_i }
13
+ end
14
+
15
+ results
16
+ end
@@ -0,0 +1,5 @@
1
+ require "#{ENV["BRPM_CONTENT_HOME"] || "#{ENV["BRPM_HOME"]}/modules"}/gems/brpm_content-#{ENV["BRPM_CONTENT_VERSION"] || "latest"}/modules/framework/brpm_script_executor.rb"
2
+
3
+ def execute(script_params, parent_id, offset, max_records)
4
+ BrpmScriptExecutor.execute_resource_automation_script_from_gem("brpm_module_brpm", "select_application", script_params, parent_id, offset, max_records)
5
+ end
@@ -0,0 +1,14 @@
1
+ def execute_script(params, parent_id, offset, max_records)
2
+ brpm_rest_client = BrpmRestClient.new
3
+
4
+ BrpmAuto.log "Finding all environments for application #{params["application"]}..."
5
+ environments = brpm_rest_client.get_environments_of_application(params["application"])
6
+
7
+ BrpmAuto.log "Adding the #{environments.count} found environments to the list..."
8
+ results = []
9
+ environments.each do |environment|
10
+ results << { environment["name"] => environment["id"].to_i }
11
+ end
12
+
13
+ results
14
+ end
@@ -0,0 +1,5 @@
1
+ require "#{ENV["BRPM_CONTENT_HOME"] || "#{ENV["BRPM_HOME"]}/modules"}/gems/brpm_content-#{ENV["BRPM_CONTENT_VERSION"] || "latest"}/modules/framework/brpm_script_executor.rb"
2
+
3
+ def execute(script_params, parent_id, offset, max_records)
4
+ BrpmScriptExecutor.execute_resource_automation_script_from_gem("brpm_module_brpm", "select_environment", script_params, parent_id, offset, max_records)
5
+ end
@@ -0,0 +1,16 @@
1
+ def execute_script(params, parent_id, offset, max_records)
2
+ brpm_rest_client = BrpmRestClient.new
3
+
4
+ BrpmAuto.log "Finding all request templates for application #{params["application"]}..."
5
+ request_templates = brpm_rest_client.get_request_templates_by_app(params["application"])
6
+
7
+ request_templates = request_templates.sort_by { |request_template| request_template["name"] }
8
+
9
+ BrpmAuto.log "Adding the #{request_templates.count} found request templates to the list..."
10
+ results = []
11
+ request_templates.each do |request_template|
12
+ results << { request_template["name"] => request_template["id"].to_i }
13
+ end
14
+
15
+ results
16
+ end
@@ -0,0 +1,5 @@
1
+ require "#{ENV["BRPM_CONTENT_HOME"] || "#{ENV["BRPM_HOME"]}/modules"}/gems/brpm_content-#{ENV["BRPM_CONTENT_VERSION"] || "latest"}/modules/framework/brpm_script_executor.rb"
2
+
3
+ def execute(script_params, parent_id, offset, max_records)
4
+ BrpmScriptExecutor.execute_resource_automation_script_from_gem("brpm_module_brpm", "select_request_template", script_params, parent_id, offset, max_records)
5
+ end
@@ -0,0 +1,33 @@
1
+ def execute_script(params, parent_id, offset, max_records)
2
+ brpm_rest_client = BrpmRestClient.new
3
+
4
+ if parent_id.nil?
5
+ BrpmAuto.log "Finding all requests in the same stage as the current request (plan: #{params["request_plan"]} (id: #{params["request_plan_id"]}), stage: #{params["request_plan_stage"]}) ..."
6
+ requests = brpm_rest_client.get_requests_by_plan_id_and_stage_name(params["request_plan_id"], params["request_plan_stage"])
7
+
8
+ requests = requests.sort_by { |request| request["number"] }
9
+
10
+ results = []
11
+ requests.each do |request|
12
+ unless request["number"] == params["request_number"]
13
+ results << { :title => "#{request["number"]} - #{request["name"]}", :key => request["id"], :isFolder => true, :hasChild => true, :hideCheckbox => true}
14
+ end
15
+ end
16
+
17
+ results
18
+ else
19
+ BrpmAuto.log "Finding all steps in the request with id #{parent_id} ..."
20
+ request = brpm_rest_client.get_request_by_id(parent_id)
21
+
22
+ return if request.nil?
23
+
24
+ steps = request["steps"].sort_by { |step| step["number"].to_i }
25
+
26
+ results = []
27
+ steps.each do |step|
28
+ results << { :title => "#{step["position"]} - #{step["name"]}", :key => "#{parent_id}|#{step["id"]}", :isFolder => false, :hasChild => false, :hideCheckbox => false}
29
+ end
30
+
31
+ results
32
+ end
33
+ end
@@ -0,0 +1,5 @@
1
+ require "#{ENV["BRPM_CONTENT_HOME"] || "#{ENV["BRPM_HOME"]}/modules"}/gems/brpm_content-#{ENV["BRPM_CONTENT_VERSION"] || "latest"}/modules/framework/brpm_script_executor.rb"
2
+
3
+ def execute(script_params, parent_id, offset, max_records)
4
+ BrpmScriptExecutor.execute_resource_automation_script_from_gem("brpm_module_brpm", "select_step_in_request", script_params, parent_id, offset, max_records)
5
+ end
@@ -0,0 +1,66 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe 'create release request' do
4
+ before(:all) do
5
+ setup_brpm_auto
6
+ end
7
+
8
+ before(:each) do
9
+ cleanup_requests_and_plans_for_app("E-Finance")
10
+ end
11
+
12
+ describe '' do
13
+ it 'should create a request from template' do
14
+ params = get_default_params
15
+ params["application_name"] = 'E-Finance'
16
+ params["application_version"] = '1.0.0'
17
+ params["release_request_template_name"] = 'Release E-Finance'
18
+
19
+ BrpmScriptExecutor.execute_automation_script_from_gem("brpm_module_brpm", "create_release_request", params)
20
+
21
+ request = @brpm_rest_client.get_request_by_id(BrpmAuto.params["result"]["request_id"])
22
+
23
+ expect(request["aasm_state"]).to eq("started")
24
+ expect(request).not_to have_key("plan_member")
25
+ end
26
+ end
27
+
28
+ describe 'in new plan' do
29
+ it 'should create a plan from template and a request from template in that plan' do
30
+ params = get_default_params
31
+ params["application_name"] = 'E-Finance'
32
+ params["application_version"] = '1.0.1'
33
+ params["release_request_template_name"] = 'Release E-Finance'
34
+ params["release_plan_template_name"] = 'E-Finance Release Plan'
35
+
36
+ BrpmScriptExecutor.execute_automation_script_from_gem("brpm_module_brpm", "create_release_request", params)
37
+
38
+ request = @brpm_rest_client.get_request_by_id(BrpmAuto.params["result"]["request_id"])
39
+
40
+ expect(request["aasm_state"]).to eq("started")
41
+ expect(request).to have_key("plan_member")
42
+ expect(request["plan_member"]["plan"]["id"]).not_to be_nil
43
+ end
44
+ end
45
+
46
+ describe 'in existing plan' do
47
+ it 'should create a request from template in the plan' do
48
+ plan = @brpm_rest_client.create_plan("E-Finance Release Plan", "E-Finance Release Plan v1.0.2")
49
+
50
+ params = get_default_params
51
+ params["application_name"] = 'E-Finance'
52
+ params["application_version"] = '1.0.2'
53
+ params["release_request_template_name"] = 'Release E-Finance'
54
+ params["release_plan_name"] = 'E-Finance Release Plan v1.0.2'
55
+
56
+ BrpmScriptExecutor.execute_automation_script_from_gem("brpm_module_brpm", "create_release_request", params)
57
+
58
+ request = @brpm_rest_client.get_request_by_id(BrpmAuto.params["result"]["request_id"])
59
+
60
+ expect(request["aasm_state"]).to eq("started")
61
+ expect(request).to have_key("plan_member")
62
+ expect(request["plan_member"]["plan"]["id"]).to eq(plan["id"])
63
+ end
64
+ end
65
+ end
66
+
@@ -0,0 +1,84 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe 'create request' do
4
+ before(:all) do
5
+ setup_brpm_auto
6
+ end
7
+
8
+ before(:each) do
9
+ cleanup_requests_and_plans_for_app("E-Finance")
10
+ end
11
+
12
+ describe 'from request template by name' do
13
+ it 'should create a request from template' do
14
+ request_params = {}
15
+ request_params["application_version"] = '1.0.0'
16
+ request_params["template_name"] = 'Deploy E-Finance'
17
+ set_request_params(request_params)
18
+
19
+ params = get_default_params
20
+ params["application"] = 'E-Finance'
21
+ params["target_environment_id"] = '5' #test
22
+ params["release_request_template_name"] = 'Release E-Finance'
23
+ params["execute_target_request"] = 'No'
24
+
25
+ BrpmScriptExecutor.execute_automation_script_from_gem("brpm_module_brpm", "create_request", params)
26
+
27
+ request = @brpm_rest_client.get_request_by_id(BrpmAuto.request_params["target_request_id"])
28
+
29
+ expect(request["aasm_state"]).to eq("created")
30
+ expect(request).not_to have_key("plan_member")
31
+ end
32
+ end
33
+
34
+ describe 'from request template by id' do
35
+ it 'should create a request from template' do
36
+ request_params = {}
37
+ request_params["application_version"] = '1.0.0'
38
+ request_params["request_template_id"] = '1' #Deploy E-Finance
39
+ set_request_params(request_params)
40
+
41
+ params = get_default_params
42
+ params["application"] = 'E-Finance'
43
+ params["target_environment_id"] = '5' #test
44
+ params["release_request_template_name"] = 'Release E-Finance'
45
+ params["execute_target_request"] = 'No'
46
+
47
+ BrpmScriptExecutor.execute_automation_script_from_gem("brpm_module_brpm", "create_request", params)
48
+
49
+ request = @brpm_rest_client.get_request_by_id(BrpmAuto.request_params["target_request_id"])
50
+
51
+ expect(request["aasm_state"]).to eq("created")
52
+ expect(request).not_to have_key("plan_member")
53
+ end
54
+ end
55
+
56
+ describe 'from request template for plan and stage' do
57
+ it 'should create a request from template' do
58
+ plan = @brpm_rest_client.create_plan("E-Finance Release Plan", "E-Finance Release Plan v1.0.0")
59
+
60
+ request_params = {}
61
+ request_params["application_version"] = '1.0.0'
62
+ request_params["template_name"] = 'Deploy E-Finance'
63
+ set_request_params(request_params)
64
+
65
+ params = get_default_params
66
+ params["application"] = 'E-Finance'
67
+ params["target_environment_id"] = '5' #test
68
+ params["release_request_template_name"] = 'Release E-Finance'
69
+ params["request_plan_id"] = plan["id"].to_s
70
+ params["target_stage"] = 'Test'
71
+ params["execute_target_request"] = 'No'
72
+
73
+ BrpmScriptExecutor.execute_automation_script_from_gem("brpm_module_brpm", "create_request", params)
74
+
75
+ request = @brpm_rest_client.get_request_by_id(BrpmAuto.request_params["target_request_id"])
76
+
77
+ expect(request["aasm_state"]).to eq("created")
78
+ expect(request).to have_key("plan_member")
79
+ expect(request["plan_member"]["plan"]["id"]).to eq(plan["id"])
80
+ expect(request["plan_member"]["stage"]["name"]).to eq("Test")
81
+ end
82
+ end
83
+ end
84
+
@@ -0,0 +1,47 @@
1
+ require_relative "spec_helper"
2
+
3
+ describe 'select application version' do
4
+ before(:all) do
5
+ setup_brpm_auto
6
+ end
7
+
8
+ before(:each) do
9
+ cleanup_request_params
10
+ cleanup_version_tags_for_app("E-Finance")
11
+ end
12
+
13
+ describe '' do
14
+ it 'should store the selected application version in the request_params and create version tags' do
15
+ params = get_default_params
16
+ params["application"] = 'E-Finance'
17
+ params["application_version"] = '1.0.0'
18
+
19
+ BrpmScriptExecutor.execute_automation_script_from_gem("brpm_module_brpm", "select_application_version", params)
20
+
21
+ expect(BrpmAuto.request_params.has_key?("application_version"))
22
+ expect(BrpmAuto.request_params["application_version"]).to eq("1.0.0")
23
+
24
+ version_tag = @brpm_rest_client.get_version_tag("E-Finance","EF - Java calculation engine", "development", "1.0.0")
25
+ expect(version_tag).not_to be_nil
26
+ end
27
+ end
28
+
29
+ describe 'with auto_created request_param set' do
30
+ it 'should NOT store the selected application version in the request_params but still create version tags' do
31
+ BrpmAuto.request_params["auto_created"] = true
32
+ BrpmAuto.request_params["application_version"] = "2.0.0"
33
+
34
+ params = get_default_params
35
+ params["application"] = 'E-Finance'
36
+ params["application_version"] = '1.0.0'
37
+
38
+ BrpmScriptExecutor.execute_automation_script_from_gem("brpm_module_brpm", "select_application_version", params)
39
+
40
+ expect(BrpmAuto.request_params.has_key?("application_version"))
41
+ expect(BrpmAuto.request_params["application_version"]).to eq("2.0.0")
42
+
43
+ version_tag = @brpm_rest_client.get_version_tag("E-Finance","EF - Java calculation engine", "development", "2.0.0")
44
+ expect(version_tag).not_to be_nil
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,71 @@
1
+ require 'fileutils'
2
+ require "brpm_script_executor"
3
+
4
+ def setup_brpm_auto
5
+ FileUtils.mkdir_p "/tmp/brpm_content"
6
+ create_symlink_to_gemset
7
+
8
+ BrpmAuto.setup(get_default_params)
9
+
10
+ BrpmAuto.require_module_from_gem "brpm_module_brpm"
11
+
12
+ @brpm_rest_client = BrpmRestClient.new('http://brpm-content.pulsar-it.be:8088/brpm', ENV["BRPM_API_TOKEN"])
13
+ end
14
+
15
+ def get_default_params
16
+ params = {}
17
+ params['also_log_to_console'] = 'true'
18
+
19
+ params['brpm_url'] = 'http://brpm-content.pulsar-it.be:8088/brpm'
20
+ params['brpm_api_token'] = ENV["BRPM_API_TOKEN"]
21
+
22
+ params['output_dir'] = "/tmp/brpm_content"
23
+
24
+ params
25
+ end
26
+
27
+ def cleanup_request_params
28
+ request_params_file = "/tmp/brpm_content/request_data.json"
29
+ File.delete(request_params_file) if File.exist?(request_params_file)
30
+ end
31
+
32
+ def set_request_params(request_params)
33
+ request_params_file = File.new("/tmp/brpm_content/request_data.json", "w")
34
+ request_params_file.puts(request_params.to_json)
35
+ request_params_file.close
36
+ end
37
+
38
+ def cleanup_requests_and_plans_for_app(app_name)
39
+ app = @brpm_rest_client.get_app_by_name(app_name)
40
+
41
+ requests = @brpm_rest_client.get_requests_by({ "app_id" => app["id"]})
42
+
43
+ requests.each do |request|
44
+ @brpm_rest_client.delete_request(request["id"]) unless request.has_key?("request_template")
45
+ end
46
+
47
+ plan_template = @brpm_rest_client.get_plan_template_by_name("#{app_name} Release Plan")
48
+
49
+ plans = @brpm_rest_client.get_plans_by({ "plan_template_id" => plan_template["id"]})
50
+ plans.each do |plan|
51
+ @brpm_rest_client.cancel_plan(plan["id"])
52
+ @brpm_rest_client.delete_plan(plan["id"])
53
+ end
54
+ end
55
+
56
+ def cleanup_version_tags_for_app(app_name)
57
+ app = @brpm_rest_client.get_app_by_name(app_name)
58
+
59
+ version_tags = @brpm_rest_client.get_version_tags_by({ "app_id" => app["id"]})
60
+
61
+ version_tags.each do |version_tag|
62
+ @brpm_rest_client.delete_version_tag(version_tag["id"])
63
+ end
64
+ end
65
+
66
+ def create_symlink_to_gemset
67
+ module_name = File.basename(File.expand_path("#{File.dirname(__FILE__)}/.."))
68
+ symlink = "#{ENV["GEM_HOME"]}/gems/#{module_name}-999.0.0"
69
+ FileUtils.rm(symlink) if File.exists?(symlink)
70
+ FileUtils.ln_s(File.expand_path("#{File.dirname(__FILE__)}/.."), symlink)
71
+ end
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: brpm_module_brpm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.10
5
+ platform: ruby
6
+ authors:
7
+ - Niek Bartholomeus
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: brpm_content
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.11
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.11
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: BRPM automation scripts and libraries to run on top of the BRPM Content
56
+ framework. See https://github.com/BMC-RLM/brpm_content for more information about
57
+ the BRPM Content framework
58
+ email: niek.bartholomeus@gmail.com
59
+ executables:
60
+ - create_release_request
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - .gitignore
65
+ - .ruby-version
66
+ - .travis.yml
67
+ - Gemfile
68
+ - LICENSE
69
+ - README.md
70
+ - Rakefile
71
+ - automations/create_release_from_excel.rb
72
+ - automations/create_release_from_excel.txt
73
+ - automations/create_release_request.rb
74
+ - automations/create_release_request.txt
75
+ - automations/create_request.rb
76
+ - automations/create_request.txt
77
+ - automations/promote_request.rb
78
+ - automations/promote_request.txt
79
+ - automations/select_application_version.rb
80
+ - automations/select_application_version.txt
81
+ - automations/select_component_version.rb
82
+ - automations/select_component_version.txt
83
+ - automations/select_request_template.rb
84
+ - automations/select_request_template.txt
85
+ - automations/wait_for_step_in_other_request.rb
86
+ - automations/wait_for_step_in_other_request.txt
87
+ - automations/wait_till_promoted_request_is_completed.rb
88
+ - automations/wait_till_promoted_request_is_completed.txt
89
+ - bin/create_release_request
90
+ - brpm_module_brpm.gemspec
91
+ - config.yml
92
+ - lib/brpm_request.rb
93
+ - lib/brpm_rest.rb
94
+ - lib/brpm_rest_client.rb
95
+ - resource_automations/select_application.rb
96
+ - resource_automations/select_application.txt
97
+ - resource_automations/select_environment.rb
98
+ - resource_automations/select_environment.txt
99
+ - resource_automations/select_request_template.rb
100
+ - resource_automations/select_request_template.txt
101
+ - resource_automations/select_step_in_request.rb
102
+ - resource_automations/select_step_in_request.txt
103
+ - tests/create_release_request_spec.rb
104
+ - tests/create_request_spec.rb
105
+ - tests/select_application_version_spec.rb
106
+ - tests/spec_helper.rb
107
+ homepage: https://github.com/BMC-RLM/brpm_module_brpm
108
+ licenses:
109
+ - GNU General Public License v2.0
110
+ metadata: {}
111
+ post_install_message:
112
+ rdoc_options: []
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubyforge_project:
127
+ rubygems_version: 2.1.9
128
+ signing_key:
129
+ specification_version: 4
130
+ summary: BRPM automation scripts and libraries to run on top of the BRPM Content framework
131
+ test_files: []