foreman_deployments 0.0.1

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 (133) hide show
  1. checksums.yaml +15 -0
  2. data/LICENSE +619 -0
  3. data/README.md +52 -0
  4. data/Rakefile +30 -0
  5. data/app/controllers/foreman_deployments/api/v2/base_controller.rb +25 -0
  6. data/app/controllers/foreman_deployments/api/v2/deployments_controller.rb +102 -0
  7. data/app/controllers/foreman_deployments/api/v2/stacks_controller.rb +52 -0
  8. data/app/controllers/foreman_deployments/create_resources_controller.rb +62 -0
  9. data/app/controllers/foreman_deployments/deployments_controller.rb +5 -0
  10. data/app/controllers/foreman_deployments/stacks_controller.rb +5 -0
  11. data/app/lib/foreman_deployments/base_dereference_visitor.rb +55 -0
  12. data/app/lib/foreman_deployments/config.rb +16 -0
  13. data/app/lib/foreman_deployments/config/array.rb +91 -0
  14. data/app/lib/foreman_deployments/config/configurator.rb +23 -0
  15. data/app/lib/foreman_deployments/config/hash.rb +81 -0
  16. data/app/lib/foreman_deployments/config/load_visitor.rb +23 -0
  17. data/app/lib/foreman_deployments/config/merge_visitor.rb +23 -0
  18. data/app/lib/foreman_deployments/config/save_visitor.rb +23 -0
  19. data/app/lib/foreman_deployments/inputs/base_input_definition.rb +39 -0
  20. data/app/lib/foreman_deployments/inputs/value.rb +25 -0
  21. data/app/lib/foreman_deployments/planner_visitor.rb +26 -0
  22. data/app/lib/foreman_deployments/registry.rb +67 -0
  23. data/app/lib/foreman_deployments/stack_definition.rb +37 -0
  24. data/app/lib/foreman_deployments/stack_parser.rb +121 -0
  25. data/app/lib/foreman_deployments/task_reference.rb +48 -0
  26. data/app/lib/foreman_deployments/tasks/base_action.rb +6 -0
  27. data/app/lib/foreman_deployments/tasks/base_definition.rb +72 -0
  28. data/app/lib/foreman_deployments/tasks/creation_task_definition.rb +68 -0
  29. data/app/lib/foreman_deployments/tasks/host_creation_task_definition.rb +44 -0
  30. data/app/lib/foreman_deployments/tasks/search_task_definition.rb +55 -0
  31. data/app/lib/foreman_deployments/tasks/stack_deploy_action.rb +10 -0
  32. data/app/lib/foreman_deployments/tasks/wait_until_built_task_definition.rb +65 -0
  33. data/app/lib/foreman_deployments/validation/dereference_visitor.rb +18 -0
  34. data/app/lib/foreman_deployments/validation/remove_ids_visitor.rb +59 -0
  35. data/app/lib/foreman_deployments/validation/validation_error.rb +12 -0
  36. data/app/lib/foreman_deployments/validation/validation_result.rb +26 -0
  37. data/app/lib/foreman_deployments/validation/validation_visitor.rb +20 -0
  38. data/app/lib/foreman_deployments/validation/validator.rb +29 -0
  39. data/app/models/foreman_deployments/concerns/belongs_to_single_taxonomy.rb +42 -0
  40. data/app/models/foreman_deployments/concerns/belongs_to_stack_taxonomy.rb +24 -0
  41. data/app/models/foreman_deployments/configuration.rb +26 -0
  42. data/app/models/foreman_deployments/deployment.rb +57 -0
  43. data/app/models/foreman_deployments/resource_models/create_resource.rb +18 -0
  44. data/app/models/foreman_deployments/stack.rb +20 -0
  45. data/app/views/foreman_deployments/api/v2/deployments/base.json.rabl +3 -0
  46. data/app/views/foreman_deployments/api/v2/deployments/create.json.rabl +3 -0
  47. data/app/views/foreman_deployments/api/v2/deployments/index.json.rabl +3 -0
  48. data/app/views/foreman_deployments/api/v2/deployments/main.json.rabl +5 -0
  49. data/app/views/foreman_deployments/api/v2/deployments/merge_configuration.json.rabl +3 -0
  50. data/app/views/foreman_deployments/api/v2/deployments/replace_configuration.json.rabl +3 -0
  51. data/app/views/foreman_deployments/api/v2/deployments/run.json.rabl +3 -0
  52. data/app/views/foreman_deployments/api/v2/deployments/show.json.rabl +11 -0
  53. data/app/views/foreman_deployments/api/v2/deployments/update.json.rabl +3 -0
  54. data/app/views/foreman_deployments/api/v2/stacks/base.json.rabl +3 -0
  55. data/app/views/foreman_deployments/api/v2/stacks/create.json.rabl +3 -0
  56. data/app/views/foreman_deployments/api/v2/stacks/index.json.rabl +3 -0
  57. data/app/views/foreman_deployments/api/v2/stacks/main.json.rabl +3 -0
  58. data/app/views/foreman_deployments/api/v2/stacks/show.json.rabl +7 -0
  59. data/app/views/foreman_deployments/api/v2/stacks/update.json.rabl +3 -0
  60. data/app/views/foreman_deployments/create_resources/new.html.erb +6 -0
  61. data/config/routes.rb +41 -0
  62. data/db/migrate/20150623140612_create_stacks.rb +10 -0
  63. data/db/migrate/20150814092932_create_deployment.rb +20 -0
  64. data/db/migrate/20150916133305_add_task_to_deployments.rb +5 -0
  65. data/db/migrate/20150917130618_add_taxonomy_to_deployments.rb +8 -0
  66. data/db/seeds.d/03-permissions.rb +14 -0
  67. data/doc/deployment_process.md +112 -0
  68. data/doc/design/capsule_stack.puml +51 -0
  69. data/doc/design/complete_stack.puml +17 -0
  70. data/doc/design/config_resource_overview.puml +15 -0
  71. data/doc/design/design.md +230 -0
  72. data/doc/design/diagrams/capsule_stack.png +0 -0
  73. data/doc/design/diagrams/capsule_stack.svg +1 -0
  74. data/doc/design/diagrams/complete_stack.png +0 -0
  75. data/doc/design/diagrams/complete_stack.svg +1 -0
  76. data/doc/design/diagrams/config_resource_overview.png +0 -0
  77. data/doc/design/diagrams/config_resource_overview.svg +1 -0
  78. data/doc/design/diagrams/ordered_resource_overview.png +0 -0
  79. data/doc/design/diagrams/ordered_resource_overview.svg +1 -0
  80. data/doc/design/diagrams/overview.png +0 -0
  81. data/doc/design/diagrams/overview.svg +1 -0
  82. data/doc/design/diagrams/overview_class.png +0 -0
  83. data/doc/design/diagrams/overview_class.svg +1 -0
  84. data/doc/design/diagrams/sat_stack.png +0 -0
  85. data/doc/design/diagrams/sat_stack.svg +1 -0
  86. data/doc/design/diagrams/solr_usecase.png +0 -0
  87. data/doc/design/diagrams/solr_usecase.svg +1 -0
  88. data/doc/design/examples.md +192 -0
  89. data/doc/design/generate-diagrams.sh +7 -0
  90. data/doc/design/implementation.md +128 -0
  91. data/doc/design/ordered_resource_overview.puml +15 -0
  92. data/doc/design/overview.puml +42 -0
  93. data/doc/design/overview_class.puml +64 -0
  94. data/doc/design/resources.md +134 -0
  95. data/doc/design/sat_stack.puml +37 -0
  96. data/doc/design/shared.puml +171 -0
  97. data/doc/design/solr_usecase.puml +189 -0
  98. data/doc/design/tasks.md +74 -0
  99. data/doc/design/user_interfaces.md +189 -0
  100. data/doc/introduction.md +84 -0
  101. data/doc/writing_stacks.md +102 -0
  102. data/lib/foreman_deployments.rb +7 -0
  103. data/lib/foreman_deployments/engine.rb +94 -0
  104. data/lib/foreman_deployments/monkey_patches.rb +9 -0
  105. data/lib/foreman_deployments/version.rb +3 -0
  106. data/lib/tasks/foreman_deployments_tasks.rake +22 -0
  107. data/locale/Makefile +62 -0
  108. data/test/factories/foreman_deployments.rb +70 -0
  109. data/test/functional/api/v2/deployments_controller_test.rb +318 -0
  110. data/test/functional/api/v2/stacks_controller_test.rb +140 -0
  111. data/test/test_plugin_helper.rb +14 -0
  112. data/test/unit/lib/config/array_test.rb +217 -0
  113. data/test/unit/lib/config/configurator_test.rb +66 -0
  114. data/test/unit/lib/config/hash_test.rb +178 -0
  115. data/test/unit/lib/inputs/value_test.rb +47 -0
  116. data/test/unit/lib/registry_test.rb +117 -0
  117. data/test/unit/lib/stack_definition_test.rb +54 -0
  118. data/test/unit/lib/stack_parser_test.rb +129 -0
  119. data/test/unit/lib/task_reference_test.rb +63 -0
  120. data/test/unit/lib/tasks/base_definition_test.rb +137 -0
  121. data/test/unit/lib/tasks/creation_task_definition_test.rb +57 -0
  122. data/test/unit/lib/tasks/host_creation_task_definition_test.rb +10 -0
  123. data/test/unit/lib/tasks/search_task_definition_test.rb +49 -0
  124. data/test/unit/lib/tasks/stack_deploy_action_test.rb +83 -0
  125. data/test/unit/lib/tasks/wait_until_built_task_definition_test.rb +71 -0
  126. data/test/unit/lib/validation/dereference_visitor_test.rb +48 -0
  127. data/test/unit/lib/validation/remove_ids_visitor_test.rb +90 -0
  128. data/test/unit/lib/validation/validation_result_test.rb +40 -0
  129. data/test/unit/lib/validation/validation_visitor_test.rb +67 -0
  130. data/test/unit/model/configuration_test.rb +88 -0
  131. data/test/unit/model/deployment_test.rb +159 -0
  132. data/test/unit/model/stack_test.rb +33 -0
  133. metadata +241 -0
@@ -0,0 +1,67 @@
1
+ require 'test_helper'
2
+
3
+ class ValidationVisitorTest < ActiveSupport::TestCase
4
+ class TestTask < ForemanDeployments::Tasks::BaseDefinition
5
+ def validate
6
+ ForemanDeployments::Validation::ValidationResult.new
7
+ end
8
+
9
+ def preliminary_output
10
+ {}
11
+ end
12
+ end
13
+
14
+ class TestResource
15
+ end
16
+
17
+ def mock_deployment(task_hash)
18
+ task_hash.stubs(:deep_clone).returns(task_hash)
19
+ task_hash
20
+ end
21
+
22
+ let(:valid_result) { ForemanDeployments::Validation::ValidationResult.new }
23
+
24
+ setup do
25
+ @visitor = ForemanDeployments::Validation::ValidationVisitor.new
26
+ end
27
+
28
+ test 'it is valid when there are no tasks' do
29
+ definition = ForemanDeployments::StackDefinition.new
30
+ definition.accept(@visitor)
31
+
32
+ assert(@visitor.result.valid?)
33
+ end
34
+
35
+ test 'it validates all tasks' do
36
+ valid_task1 = TestTask.new
37
+ valid_task1.expects(:validate).once.returns(valid_result)
38
+
39
+ valid_task2 = TestTask.new
40
+ valid_task2.expects(:validate).once.returns(valid_result)
41
+
42
+ definition = ForemanDeployments::StackDefinition.new(
43
+ :task1 => valid_task1,
44
+ :task2 => valid_task2
45
+ )
46
+ definition.accept(@visitor)
47
+ end
48
+
49
+ test 'it returns messages from all the tasks' do
50
+ valid_task1 = TestTask.new
51
+ valid_task1.expects(:validate).once.returns(valid_result)
52
+
53
+ invalid_task2 = TestTask.new
54
+ invalid_task2.expects(:validate).once.returns(
55
+ ForemanDeployments::Validation::ValidationResult.new(:name => 'Name must be unique')
56
+ )
57
+
58
+ definition = ForemanDeployments::StackDefinition.new(
59
+ :task1 => valid_task1,
60
+ :task2 => invalid_task2
61
+ )
62
+ definition.accept(@visitor)
63
+
64
+ refute(@visitor.result.valid?)
65
+ assert_equal({ 'task2' => { :name => 'Name must be unique' } }, @visitor.result.messages)
66
+ end
67
+ end
@@ -0,0 +1,88 @@
1
+ require 'test_helper'
2
+
3
+ class ConfigurationTest < ActiveSupport::TestCase
4
+ setup do
5
+ @stack = ForemanDeployments::Stack.new(
6
+ :name => 'stack1',
7
+ :definition => 'def'
8
+ )
9
+ @deployment = ForemanDeployments::Deployment.new(
10
+ :name => 'deployment1'
11
+ )
12
+ @valid_params = {
13
+ :description => 'stack1 pre-configuration',
14
+ :stack => @stack,
15
+ :deployment => @deployment
16
+ }
17
+ end
18
+
19
+ describe 'validations' do
20
+ test 'valid attributes' do
21
+ c = ForemanDeployments::Configuration.new(@valid_params)
22
+ assert(c.valid?)
23
+ end
24
+
25
+ test 'description is not required' do
26
+ c = ForemanDeployments::Configuration.new(@valid_params.except(:description))
27
+ assert(c.valid?)
28
+ end
29
+
30
+ test 'stack is required' do
31
+ c = ForemanDeployments::Configuration.new(@valid_params.except(:stack))
32
+ refute(c.valid?)
33
+ end
34
+
35
+ test 'deployment is optional' do
36
+ c = ForemanDeployments::Configuration.new(@valid_params.except(:deployment))
37
+ assert(c.valid?)
38
+ end
39
+ end
40
+
41
+ describe 'default_description' do
42
+ test 'it mentions the stack when deployment is empty' do
43
+ c = ForemanDeployments::Configuration.new(@valid_params.except(:description, :deployment))
44
+ assert_equal('Saved configuration for stack1', c.default_description)
45
+ end
46
+
47
+ test 'it mentions the deployment when it is present' do
48
+ c = ForemanDeployments::Configuration.new(@valid_params.except(:description))
49
+ assert_equal('Configuration for deployment1', c.default_description)
50
+ end
51
+
52
+ test 'it returns nil when neither stack nor deployment is set' do
53
+ c = ForemanDeployments::Configuration.new(@valid_params.except(:description, :deployment, :stack))
54
+ assert_nil(c.default_description)
55
+ end
56
+ end
57
+
58
+ describe 'configure' do
59
+ setup do
60
+ @stack.save!
61
+ @conf = ForemanDeployments::Configuration.new(:stack => @stack, :description => 'config')
62
+ @values = {
63
+ :param_a => 1,
64
+ :param_b => {
65
+ :param_c => 2
66
+ }
67
+ }
68
+ @unknown_task = stub(:task_id => 'UnknownTask')
69
+ @some_task = stub(:task_id => 'SomeTask')
70
+ end
71
+
72
+ test 'it gives empty hash for unconfigured tasks' do
73
+ assert_equal({}, @conf.get_config_for(@unknown_task))
74
+ end
75
+
76
+ test 'it returns configured values' do
77
+ @conf.set_config_for(@some_task, @values)
78
+ assert_equal(@values, @conf.get_config_for(@some_task))
79
+ end
80
+
81
+ test 'it saves the values' do
82
+ @conf.set_config_for(@some_task, @values)
83
+ @conf.save
84
+
85
+ assert_equal(@values, ForemanDeployments::Configuration.find(@conf.id).get_config_for(@some_task))
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,159 @@
1
+ require 'test_plugin_helper'
2
+
3
+ class DeploymentTest < ActiveSupport::TestCase
4
+ include RegistryStub
5
+
6
+ class FakeTask < ForemanDeployments::Tasks::BaseDefinition; end
7
+
8
+ setup do
9
+ @stack = FactoryGirl.build(:stack,
10
+ :organizations => [taxonomies(:organization1)],
11
+ :locations => [taxonomies(:location1)]
12
+ )
13
+ @config = ForemanDeployments::Configuration.new(
14
+ :description => 'config for deployment1',
15
+ :stack => @stack
16
+ )
17
+ @valid_params = {
18
+ :name => 'deployment1',
19
+ :configuration => @config,
20
+ :organization => taxonomies(:organization1),
21
+ :location => taxonomies(:location1)
22
+ }
23
+
24
+ @registry = stub_registry
25
+ @registry.register_task(FakeTask)
26
+
27
+ @task = FactoryGirl.build(:foreman_task)
28
+ ForemanTasks.stubs(:async_task).returns(@task)
29
+ end
30
+
31
+ describe 'validations' do
32
+ test 'valid attributes' do
33
+ d = ForemanDeployments::Deployment.new(@valid_params)
34
+ assert(d.valid?)
35
+ end
36
+
37
+ test 'name must be present' do
38
+ d = ForemanDeployments::Deployment.new(@valid_params.except(:name))
39
+ refute(d.valid?)
40
+ end
41
+
42
+ test 'configuration must be present' do
43
+ d = ForemanDeployments::Deployment.new(@valid_params.except(:configuration))
44
+ refute(d.valid?)
45
+ end
46
+
47
+ test 'organization must be present' do
48
+ d = ForemanDeployments::Deployment.new(@valid_params.except(:organization))
49
+ refute(d.valid?)
50
+ end
51
+
52
+ test "organization must be one of stack's orgs" do
53
+ d = ForemanDeployments::Deployment.new(@valid_params.merge(:organization => taxonomies(:organization2)))
54
+ refute(d.valid?)
55
+ end
56
+
57
+ test 'location must be present' do
58
+ d = ForemanDeployments::Deployment.new(@valid_params.except(:location))
59
+ refute(d.valid?)
60
+ end
61
+
62
+ test "organization must be one of stack's orgs" do
63
+ d = ForemanDeployments::Deployment.new(@valid_params.merge(:location => taxonomies(:location2)))
64
+ refute(d.valid?)
65
+ end
66
+ end
67
+
68
+ describe 'status' do
69
+ setup do
70
+ @deployment = ForemanDeployments::Deployment.new(:task => @task)
71
+ end
72
+
73
+ test 'is :configuration when no task exist' do
74
+ @deployment.task = nil
75
+ assert_equal(:configuration, @deployment.status)
76
+ end
77
+
78
+ test 'is :running when the task is running' do
79
+ assert_equal(:running, @deployment.status)
80
+ end
81
+
82
+ test 'is :paused when the task is paused' do
83
+ @task.state = 'paused'
84
+ @task.result = 'success'
85
+ assert_equal(:paused, @deployment.status)
86
+ end
87
+
88
+ test 'is :deployed when the task successfully finished' do
89
+ @task.state = 'stopped'
90
+ @task.result = 'success'
91
+ assert_equal(:deployed, @deployment.status)
92
+ end
93
+
94
+ test 'is :failed when the task failed' do
95
+ @task.state = 'stopped'
96
+ @task.result = 'error'
97
+ assert_equal(:failed, @deployment.status)
98
+ end
99
+ end
100
+
101
+ describe 'run' do
102
+ test 'it refuses to run a deployment that is already running' do
103
+ deployment = ForemanDeployments::Deployment.new(@valid_params)
104
+ deployment.stubs(:status).returns(:running)
105
+ e = assert_raises Foreman::Exception do
106
+ deployment.run
107
+ end
108
+ assert_match("You can't start a deployment that is already running!", e.message)
109
+ end
110
+
111
+ test 'it refuses to run a stack has some validation errors' do
112
+ deployment = ForemanDeployments::Deployment.new(@valid_params)
113
+ deployment.parsed_stack.stubs(:validate!).raises(
114
+ ForemanDeployments::Validation::ValidationError.new({}, 'validation failure')
115
+ )
116
+
117
+ assert_raises ForemanDeployments::Validation::ValidationError do
118
+ deployment.run
119
+ end
120
+ end
121
+
122
+ test 'it plans a foreman task' do
123
+ deployment = ForemanDeployments::Deployment.new(@valid_params)
124
+ deployment.configuration.set_config_for(stub(:task_id => 'Task1'), 'param1' => '1')
125
+ deployment.configuration.save
126
+ deployment.parsed_stack.stubs(:validate!)
127
+
128
+ ForemanTasks.expects(:async_task).with do |main_task, parsed_stack|
129
+ assert_equal(ForemanDeployments::Tasks::StackDeployAction, main_task)
130
+ assert_equal({ 'param1' => '1' }, parsed_stack.tasks['Task1'].configuration)
131
+ end
132
+
133
+ deployment.run
134
+ end
135
+
136
+ test 'it saves the task id' do
137
+ deployment = ForemanDeployments::Deployment.new(@valid_params)
138
+ deployment.parsed_stack.stubs(:validate!)
139
+
140
+ deployment.run
141
+ assert_equal(@task.id, deployment.task_id)
142
+ end
143
+ end
144
+
145
+ describe 'stack' do
146
+ test 'returns nil by default' do
147
+ deployment = ForemanDeployments::Deployment.new
148
+ assert_nil(deployment.stack)
149
+ end
150
+
151
+ test 'returns stack of the configuration' do
152
+ stack = ForemanDeployments::Stack.new
153
+ config = ForemanDeployments::Configuration.new(:stack => stack)
154
+ deployment = ForemanDeployments::Deployment.new(:configuration => config)
155
+
156
+ assert_equal(stack, deployment.stack)
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ class StackTest < ActiveSupport::TestCase
4
+ describe 'validations' do
5
+ setup do
6
+ @valid_params = {
7
+ :name => 'stack1',
8
+ :definition => 'abc'
9
+ }
10
+ end
11
+
12
+ test 'valid attributes' do
13
+ s = ForemanDeployments::Stack.new(@valid_params)
14
+ assert(s.valid?)
15
+ end
16
+
17
+ test 'name must be unique' do
18
+ ForemanDeployments::Stack.create(@valid_params)
19
+ s = ForemanDeployments::Stack.new(@valid_params.except(:definition))
20
+ refute(s.valid?)
21
+ end
22
+
23
+ test 'name must be present' do
24
+ s = ForemanDeployments::Stack.new(@valid_params.except(:name))
25
+ refute(s.valid?)
26
+ end
27
+
28
+ test 'definition must be present' do
29
+ s = ForemanDeployments::Stack.new(@valid_params.except(:definition))
30
+ refute(s.valid?)
31
+ end
32
+ end
33
+ end
metadata ADDED
@@ -0,0 +1,241 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: foreman_deployments
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Foreman Deployments team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: foreman-tasks
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.7.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.7.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: safe_yaml
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
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: rubocop
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: A plugin adding Multi-Host Deployment support into the Foreman.
56
+ email:
57
+ - foreman-dev@googlegroups.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - LICENSE
63
+ - README.md
64
+ - Rakefile
65
+ - app/controllers/foreman_deployments/api/v2/base_controller.rb
66
+ - app/controllers/foreman_deployments/api/v2/deployments_controller.rb
67
+ - app/controllers/foreman_deployments/api/v2/stacks_controller.rb
68
+ - app/controllers/foreman_deployments/create_resources_controller.rb
69
+ - app/controllers/foreman_deployments/deployments_controller.rb
70
+ - app/controllers/foreman_deployments/stacks_controller.rb
71
+ - app/lib/foreman_deployments/base_dereference_visitor.rb
72
+ - app/lib/foreman_deployments/config.rb
73
+ - app/lib/foreman_deployments/config/array.rb
74
+ - app/lib/foreman_deployments/config/configurator.rb
75
+ - app/lib/foreman_deployments/config/hash.rb
76
+ - app/lib/foreman_deployments/config/load_visitor.rb
77
+ - app/lib/foreman_deployments/config/merge_visitor.rb
78
+ - app/lib/foreman_deployments/config/save_visitor.rb
79
+ - app/lib/foreman_deployments/inputs/base_input_definition.rb
80
+ - app/lib/foreman_deployments/inputs/value.rb
81
+ - app/lib/foreman_deployments/planner_visitor.rb
82
+ - app/lib/foreman_deployments/registry.rb
83
+ - app/lib/foreman_deployments/stack_definition.rb
84
+ - app/lib/foreman_deployments/stack_parser.rb
85
+ - app/lib/foreman_deployments/task_reference.rb
86
+ - app/lib/foreman_deployments/tasks/base_action.rb
87
+ - app/lib/foreman_deployments/tasks/base_definition.rb
88
+ - app/lib/foreman_deployments/tasks/creation_task_definition.rb
89
+ - app/lib/foreman_deployments/tasks/host_creation_task_definition.rb
90
+ - app/lib/foreman_deployments/tasks/search_task_definition.rb
91
+ - app/lib/foreman_deployments/tasks/stack_deploy_action.rb
92
+ - app/lib/foreman_deployments/tasks/wait_until_built_task_definition.rb
93
+ - app/lib/foreman_deployments/validation/dereference_visitor.rb
94
+ - app/lib/foreman_deployments/validation/remove_ids_visitor.rb
95
+ - app/lib/foreman_deployments/validation/validation_error.rb
96
+ - app/lib/foreman_deployments/validation/validation_result.rb
97
+ - app/lib/foreman_deployments/validation/validation_visitor.rb
98
+ - app/lib/foreman_deployments/validation/validator.rb
99
+ - app/models/foreman_deployments/concerns/belongs_to_single_taxonomy.rb
100
+ - app/models/foreman_deployments/concerns/belongs_to_stack_taxonomy.rb
101
+ - app/models/foreman_deployments/configuration.rb
102
+ - app/models/foreman_deployments/deployment.rb
103
+ - app/models/foreman_deployments/resource_models/create_resource.rb
104
+ - app/models/foreman_deployments/stack.rb
105
+ - app/views/foreman_deployments/api/v2/deployments/base.json.rabl
106
+ - app/views/foreman_deployments/api/v2/deployments/create.json.rabl
107
+ - app/views/foreman_deployments/api/v2/deployments/index.json.rabl
108
+ - app/views/foreman_deployments/api/v2/deployments/main.json.rabl
109
+ - app/views/foreman_deployments/api/v2/deployments/merge_configuration.json.rabl
110
+ - app/views/foreman_deployments/api/v2/deployments/replace_configuration.json.rabl
111
+ - app/views/foreman_deployments/api/v2/deployments/run.json.rabl
112
+ - app/views/foreman_deployments/api/v2/deployments/show.json.rabl
113
+ - app/views/foreman_deployments/api/v2/deployments/update.json.rabl
114
+ - app/views/foreman_deployments/api/v2/stacks/base.json.rabl
115
+ - app/views/foreman_deployments/api/v2/stacks/create.json.rabl
116
+ - app/views/foreman_deployments/api/v2/stacks/index.json.rabl
117
+ - app/views/foreman_deployments/api/v2/stacks/main.json.rabl
118
+ - app/views/foreman_deployments/api/v2/stacks/show.json.rabl
119
+ - app/views/foreman_deployments/api/v2/stacks/update.json.rabl
120
+ - app/views/foreman_deployments/create_resources/new.html.erb
121
+ - config/routes.rb
122
+ - db/migrate/20150623140612_create_stacks.rb
123
+ - db/migrate/20150814092932_create_deployment.rb
124
+ - db/migrate/20150916133305_add_task_to_deployments.rb
125
+ - db/migrate/20150917130618_add_taxonomy_to_deployments.rb
126
+ - db/seeds.d/03-permissions.rb
127
+ - doc/deployment_process.md
128
+ - doc/design/capsule_stack.puml
129
+ - doc/design/complete_stack.puml
130
+ - doc/design/config_resource_overview.puml
131
+ - doc/design/design.md
132
+ - doc/design/diagrams/capsule_stack.png
133
+ - doc/design/diagrams/capsule_stack.svg
134
+ - doc/design/diagrams/complete_stack.png
135
+ - doc/design/diagrams/complete_stack.svg
136
+ - doc/design/diagrams/config_resource_overview.png
137
+ - doc/design/diagrams/config_resource_overview.svg
138
+ - doc/design/diagrams/ordered_resource_overview.png
139
+ - doc/design/diagrams/ordered_resource_overview.svg
140
+ - doc/design/diagrams/overview.png
141
+ - doc/design/diagrams/overview.svg
142
+ - doc/design/diagrams/overview_class.png
143
+ - doc/design/diagrams/overview_class.svg
144
+ - doc/design/diagrams/sat_stack.png
145
+ - doc/design/diagrams/sat_stack.svg
146
+ - doc/design/diagrams/solr_usecase.png
147
+ - doc/design/diagrams/solr_usecase.svg
148
+ - doc/design/examples.md
149
+ - doc/design/generate-diagrams.sh
150
+ - doc/design/implementation.md
151
+ - doc/design/ordered_resource_overview.puml
152
+ - doc/design/overview.puml
153
+ - doc/design/overview_class.puml
154
+ - doc/design/resources.md
155
+ - doc/design/sat_stack.puml
156
+ - doc/design/shared.puml
157
+ - doc/design/solr_usecase.puml
158
+ - doc/design/tasks.md
159
+ - doc/design/user_interfaces.md
160
+ - doc/introduction.md
161
+ - doc/writing_stacks.md
162
+ - lib/foreman_deployments.rb
163
+ - lib/foreman_deployments/engine.rb
164
+ - lib/foreman_deployments/monkey_patches.rb
165
+ - lib/foreman_deployments/version.rb
166
+ - lib/tasks/foreman_deployments_tasks.rake
167
+ - locale/Makefile
168
+ - test/factories/foreman_deployments.rb
169
+ - test/functional/api/v2/deployments_controller_test.rb
170
+ - test/functional/api/v2/stacks_controller_test.rb
171
+ - test/test_plugin_helper.rb
172
+ - test/unit/lib/config/array_test.rb
173
+ - test/unit/lib/config/configurator_test.rb
174
+ - test/unit/lib/config/hash_test.rb
175
+ - test/unit/lib/inputs/value_test.rb
176
+ - test/unit/lib/registry_test.rb
177
+ - test/unit/lib/stack_definition_test.rb
178
+ - test/unit/lib/stack_parser_test.rb
179
+ - test/unit/lib/task_reference_test.rb
180
+ - test/unit/lib/tasks/base_definition_test.rb
181
+ - test/unit/lib/tasks/creation_task_definition_test.rb
182
+ - test/unit/lib/tasks/host_creation_task_definition_test.rb
183
+ - test/unit/lib/tasks/search_task_definition_test.rb
184
+ - test/unit/lib/tasks/stack_deploy_action_test.rb
185
+ - test/unit/lib/tasks/wait_until_built_task_definition_test.rb
186
+ - test/unit/lib/validation/dereference_visitor_test.rb
187
+ - test/unit/lib/validation/remove_ids_visitor_test.rb
188
+ - test/unit/lib/validation/validation_result_test.rb
189
+ - test/unit/lib/validation/validation_visitor_test.rb
190
+ - test/unit/model/configuration_test.rb
191
+ - test/unit/model/deployment_test.rb
192
+ - test/unit/model/stack_test.rb
193
+ homepage: https://github.com/theforeman/foreman_deployments
194
+ licenses: []
195
+ metadata: {}
196
+ post_install_message:
197
+ rdoc_options: []
198
+ require_paths:
199
+ - lib
200
+ required_ruby_version: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ! '>='
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ required_rubygems_version: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ! '>='
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ requirements: []
211
+ rubyforge_project:
212
+ rubygems_version: 2.4.8
213
+ signing_key:
214
+ specification_version: 4
215
+ summary: A plugin adding Multi-Host Deployment support into the Foreman.
216
+ test_files:
217
+ - test/factories/foreman_deployments.rb
218
+ - test/functional/api/v2/deployments_controller_test.rb
219
+ - test/functional/api/v2/stacks_controller_test.rb
220
+ - test/unit/lib/stack_definition_test.rb
221
+ - test/unit/lib/task_reference_test.rb
222
+ - test/unit/lib/tasks/search_task_definition_test.rb
223
+ - test/unit/lib/tasks/stack_deploy_action_test.rb
224
+ - test/unit/lib/tasks/base_definition_test.rb
225
+ - test/unit/lib/tasks/creation_task_definition_test.rb
226
+ - test/unit/lib/tasks/host_creation_task_definition_test.rb
227
+ - test/unit/lib/tasks/wait_until_built_task_definition_test.rb
228
+ - test/unit/lib/validation/dereference_visitor_test.rb
229
+ - test/unit/lib/validation/validation_result_test.rb
230
+ - test/unit/lib/validation/validation_visitor_test.rb
231
+ - test/unit/lib/validation/remove_ids_visitor_test.rb
232
+ - test/unit/lib/config/configurator_test.rb
233
+ - test/unit/lib/config/hash_test.rb
234
+ - test/unit/lib/config/array_test.rb
235
+ - test/unit/lib/registry_test.rb
236
+ - test/unit/lib/stack_parser_test.rb
237
+ - test/unit/lib/inputs/value_test.rb
238
+ - test/unit/model/stack_test.rb
239
+ - test/unit/model/configuration_test.rb
240
+ - test/unit/model/deployment_test.rb
241
+ - test/test_plugin_helper.rb