foreman_ansible 1.0 → 1.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of foreman_ansible might be problematic. Click here for more details.

Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +6 -27
  3. data/app/controllers/ansible_roles_controller.rb +55 -0
  4. data/app/controllers/api/v2/ansible_roles_controller.rb +52 -0
  5. data/app/controllers/foreman_ansible/concerns/hosts_controller_extensions.rb +11 -10
  6. data/app/helpers/foreman_ansible/ansible_plugin_helper.rb +8 -0
  7. data/app/helpers/foreman_ansible/ansible_reports_helper.rb +6 -4
  8. data/app/helpers/foreman_ansible/ansible_roles_helper.rb +17 -3
  9. data/app/helpers/foreman_ansible/hosts_helper_extensions.rb +4 -3
  10. data/app/lib/actions/foreman_ansible/play_host_roles.rb +56 -0
  11. data/app/lib/actions/foreman_ansible/play_hosts_roles.rb +26 -0
  12. data/app/lib/proxy_api/ansible.rb +28 -0
  13. data/app/models/ansible_role.rb +8 -0
  14. data/app/models/concerns/foreman_ansible/has_many_ansible_roles.rb +13 -0
  15. data/app/models/concerns/foreman_ansible/host_managed_extensions.rb +5 -1
  16. data/app/models/concerns/foreman_ansible/hostgroup_extensions.rb +19 -0
  17. data/app/models/host_ansible_role.rb +0 -2
  18. data/app/models/hostgroup_ansible_role.rb +8 -0
  19. data/app/overrides/ansible_roles_tab.rb +2 -2
  20. data/app/overrides/hostgroup_ansible_roles_tab.rb +14 -0
  21. data/app/services/foreman_ansible/api_roles_importer.rb +16 -0
  22. data/app/services/foreman_ansible/fact_importer.rb +2 -1
  23. data/app/services/foreman_ansible/inventory_creator.rb +37 -5
  24. data/app/services/foreman_ansible/playbook_creator.rb +3 -4
  25. data/app/services/foreman_ansible/proxy_selector.rb +19 -0
  26. data/app/services/foreman_ansible/roles_importer.rb +42 -15
  27. data/app/services/foreman_ansible/ui_roles_importer.rb +26 -0
  28. data/app/views/ansible_roles/import.html.erb +51 -0
  29. data/app/views/ansible_roles/index.html.erb +30 -0
  30. data/app/views/ansible_roles/welcome.html.erb +14 -0
  31. data/app/views/api/v2/ansible_roles/import.json.rabl +3 -0
  32. data/app/views/api/v2/ansible_roles/index.json.rabl +3 -0
  33. data/app/views/api/v2/ansible_roles/obsolete.json.rabl +3 -0
  34. data/app/views/api/v2/ansible_roles/show.json.rabl +3 -0
  35. data/app/views/foreman_ansible/ansible_roles/_select_tab_content.html.erb +6 -0
  36. data/app/views/foreman_ansible/{hosts/_tab_title.html.erb → ansible_roles/_select_tab_title.html.erb} +0 -0
  37. data/config/routes.rb +25 -2
  38. data/db/migrate/20160705082036_create_ansible_role.rb +2 -1
  39. data/db/migrate/20160706074540_create_join_table_hosts_ansible_roles.rb +1 -0
  40. data/db/migrate/20160707195442_create_host_ansible_roles.rb +1 -0
  41. data/db/migrate/20160729094457_add_columns_to_ansible_role.rb +12 -0
  42. data/db/migrate/20160802153302_create_join_table_hostgroup_ansible_roles.rb +10 -0
  43. data/db/migrate/20160805094233_add_primary_key_hostgroup_ansible_roles.rb +6 -0
  44. data/db/seeds.d/{62-ansible_proxy_feature.rb → 62_ansible_proxy_feature.rb} +0 -0
  45. data/lib/foreman_ansible.rb +1 -0
  46. data/lib/foreman_ansible/engine.rb +54 -4
  47. data/lib/foreman_ansible/version.rb +1 -1
  48. data/locale/en/foreman_ansible.po +139 -2
  49. data/locale/foreman_ansible.pot +200 -8
  50. data/test/factories/ansible_proxy.rb +7 -0
  51. data/test/factories/ansible_roles.rb +2 -2
  52. data/test/fixtures/ansible_permissions.yml +11 -0
  53. data/test/functional/ansible_roles_controller_test.rb +16 -0
  54. data/test/functional/api/v2/ansible_roles_controller_test.rb +24 -0
  55. data/test/functional/hosts_controller_test.rb +65 -24
  56. data/test/support/fixture_support.rb +25 -0
  57. data/test/support/foreman_tasks/task.rb +47 -0
  58. data/test/support/foreman_test_helper_additions.rb +22 -0
  59. data/test/test_plugin_helper.rb +5 -2
  60. data/test/unit/ansible_role_test.rb +6 -2
  61. data/test/unit/concerns/host_managed_extensions_test.rb +37 -0
  62. data/test/unit/concerns/hostgroup_extensions_test.rb +36 -0
  63. data/test/unit/fact_importer_test.rb +11 -8
  64. data/test/unit/fact_parser_test.rb +2 -0
  65. data/test/unit/fact_sparser_test.rb +1 -0
  66. data/test/unit/helpers/foreman_ansible/ansible_reports_helper_test.rb +1 -0
  67. data/test/unit/host_ansible_role_test.rb +10 -0
  68. data/test/unit/hostgroup_ansible_role_test.rb +19 -0
  69. data/test/unit/lib/foreman_ansible_core/playbook_runner_test.rb +28 -0
  70. data/test/unit/lib/proxy_api/ansible_test.rb +23 -0
  71. data/test/unit/services/api_roles_importer_test.rb +28 -0
  72. data/test/unit/services/proxy_selector_test.rb +28 -0
  73. data/test/unit/services/roles_importer_test.rb +17 -0
  74. data/test/unit/services/ui_roles_importer_test.rb +30 -0
  75. metadata +108 -14
  76. data/app/jobs/foreman_ansible/run_playbook_job.rb +0 -28
  77. data/app/services/foreman_ansible/role_player.rb +0 -26
  78. data/app/views/foreman_ansible/hosts/_tab_content.html.erb +0 -4
  79. data/lib/tasks/foreman_ansible_tasks.rake +0 -40
@@ -2,6 +2,7 @@ require 'test_plugin_helper'
2
2
 
3
3
  module ForemanAnsible
4
4
  module Helpers
5
+ # Tests for the view helper that concerns the Ansible reports styles
5
6
  class AnsibleReportsHelperTest < ActiveSupport::TestCase
6
7
  include ForemanAnsible::AnsibleReportsHelper
7
8
 
@@ -1,7 +1,17 @@
1
1
  require 'test_plugin_helper'
2
2
 
3
+ # Tests for validators and such of the join model between Host and
4
+ # AnsibleRole
3
5
  class HostAnsibleRoleTest < ActiveSupport::TestCase
4
6
  should belong_to(:host)
5
7
  should belong_to(:ansible_role)
6
8
  should validate_presence_of(:ansible_role_id)
9
+
10
+ describe 'uniqueness' do
11
+ subject do
12
+ HostAnsibleRole.new(:host => FactoryGirl.build(:host),
13
+ :ansible_role => FactoryGirl.build(:ansible_role))
14
+ end
15
+ should validate_uniqueness_of(:ansible_role_id).scoped_to(:host_id)
16
+ end
7
17
  end
@@ -0,0 +1,19 @@
1
+ require 'test_plugin_helper'
2
+
3
+ # Tests for validators and such of the join model between Hostgroup and
4
+ # AnsibleRole
5
+ class HostgroupAnsibleRoleTest < ActiveSupport::TestCase
6
+ should belong_to(:hostgroup)
7
+ should belong_to(:ansible_role)
8
+ should validate_presence_of(:ansible_role_id)
9
+
10
+ describe 'uniqueness' do
11
+ subject do
12
+ HostgroupAnsibleRole.new(
13
+ :hostgroup => FactoryGirl.build(:hostgroup),
14
+ :ansible_role => FactoryGirl.build(:ansible_role)
15
+ )
16
+ end
17
+ should validate_uniqueness_of(:ansible_role_id).scoped_to(:hostgroup_id)
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+
3
+ class PlaybookRunnerTest < ActiveSupport::TestCase
4
+ context 'roles dir' do
5
+ test 'reads default when none provided' do
6
+ File.expects(:exist?).with('/etc/ansible').returns(true)
7
+ runner = ForemanAnsibleCore::PlaybookRunner.new(nil, nil)
8
+ assert '/etc/ansible', runner.instance_variable_get('@ansible_dir')
9
+ end
10
+ end
11
+
12
+ context 'working_dir' do
13
+ test 'creates temp one if not provided' do
14
+ Dir.expects(:mktmpdir)
15
+ File.expects(:exist?).with('/etc/ansible').returns(true)
16
+ ForemanAnsibleCore::PlaybookRunner.new(nil, nil)
17
+ end
18
+
19
+ test 'reads it when provided' do
20
+ settings = { :working_dir => '/foo', :ansible_dir => '/etc/foo' }
21
+ ForemanAnsibleCore.expects(:settings).returns(settings)
22
+ File.expects(:exist?).with(settings[:ansible_dir]).returns(true)
23
+ Dir.expects(:mktmpdir).never
24
+ runner = ForemanAnsibleCore::PlaybookRunner.new(nil, nil)
25
+ assert '/foo', runner.instance_variable_get('@working_dir')
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,23 @@
1
+ require 'test_helper'
2
+ # unit tests for ProxyAPI::Ansible
3
+ class AnsibleTest < ActiveSupport::TestCase
4
+ setup do
5
+ @url = 'http://localhost:8443'
6
+ @proxy_api = ProxyAPI::Ansible.new(:url => @url)
7
+ end
8
+
9
+ test 'should get ansible roles from proxy' do
10
+ roles = ['some_role.some_author', 'test_role.test_author']
11
+ @proxy_api.expects(:get).returns(fake_rest_client_response(roles))
12
+ assert_equal roles, @proxy_api.roles
13
+ end
14
+
15
+ test 'should raise error with appropriate message' do
16
+ message = 'Connection refused'
17
+ @proxy_api.expects(:get).raises(Errno::ECONNREFUSED, message)
18
+ err = assert_raises ProxyAPI::ProxyException do
19
+ @proxy_api.roles
20
+ end
21
+ assert_match message, err.message
22
+ end
23
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_plugin_helper'
2
+ # unit tests for ApiRolesImporter
3
+ class ApiRolesImporterTest < ActiveSupport::TestCase
4
+ setup do
5
+ @importer = ForemanAnsible::ApiRolesImporter.new
6
+ first_name = 'test_user.test_name'
7
+ second_name = 'some_user.some_role'
8
+ @test_roles = [AnsibleRole.new(:name => first_name),
9
+ AnsibleRole.new(:name => second_name)]
10
+ end
11
+
12
+ test 'should import roles' do
13
+ @importer.stubs(:import_role_names).returns(:new => @test_roles)
14
+ res = @importer.import!
15
+ assert_equal 2, res.count
16
+ assert AnsibleRole.find_by :name => @test_roles.first.name
17
+ assert AnsibleRole.find_by :name => @test_roles.last.name
18
+ end
19
+
20
+ test 'should obsolete roles' do
21
+ @importer.stubs(:import_role_names).returns(:obsolete => @test_roles)
22
+ @test_roles.map(&:save)
23
+ res = @importer.obsolete!
24
+ assert_equal 2, res.count
25
+ refute AnsibleRole.find_by :name => @test_roles.first.name
26
+ refute AnsibleRole.find_by :name => @test_roles.last.name
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_plugin_helper'
2
+
3
+ class ProxySelectorTest < ActiveSupport::TestCase
4
+ setup do
5
+ @host = FactoryGirl.create(:host)
6
+ end
7
+
8
+ test 'reuses proxies already assigned to host' do
9
+ mocked_scope = mock
10
+ mocked_scope.expects(:with_features).with('Ansible').returns('foo')
11
+ @host.expects(:smart_proxies).returns(mocked_scope)
12
+ proxy_selector = ForemanAnsible::ProxySelector.new
13
+ assert_equal 'foo',
14
+ proxy_selector.available_proxies(@host)[:fallback]
15
+ end
16
+
17
+ test 'only finds proxies that are within host taxonomies' do
18
+ @host.organization = taxonomies(:organization1)
19
+ @ansible_proxy = FactoryGirl.create(:smart_proxy, :with_ansible,
20
+ :organizations => [@host.organization])
21
+ # Unreachable proxy, because of the organizations mismatch with Host
22
+ FactoryGirl.create(:smart_proxy, :with_ansible, :organizations => [])
23
+ proxy_selector = ForemanAnsible::ProxySelector.new
24
+ setup_user('view', 'smart_proxies')
25
+ assert_equal [@ansible_proxy],
26
+ proxy_selector.available_proxies(@host)[:global]
27
+ end
28
+ end
@@ -0,0 +1,17 @@
1
+ require 'test_plugin_helper'
2
+ # unit tests for RolesImporter
3
+ class RolesImporterTest < ActiveSupport::TestCase
4
+ setup do
5
+ @role = FactoryGirl.create(:ansible_role)
6
+ @importer = ForemanAnsible::RolesImporter.new
7
+ end
8
+
9
+ test 'should detect changes when importing roles' do
10
+ role = FactoryGirl.build(:ansible_role)
11
+ changes = @importer.detect_changes [role]
12
+ assert_equal 1, changes[:new].length
13
+ assert_equal 1, changes[:obsolete].length
14
+ assert_equal role.name, changes[:new].first.name
15
+ assert_equal @role.name, changes[:obsolete].first.name
16
+ end
17
+ end
@@ -0,0 +1,30 @@
1
+ require 'test_plugin_helper'
2
+ # unit tests for UiRolesImporter
3
+ class UiRolesImporterTest < ActiveSupport::TestCase
4
+ setup do
5
+ changed_roles
6
+ @importer = ForemanAnsible::UiRolesImporter.new
7
+ end
8
+
9
+ test 'should create new role' do
10
+ refute AnsibleRole.find_by(:name => @new_role[:name])
11
+ @importer.create_new_roles(@changes['new'])
12
+ assert AnsibleRole.find_by(:name => @new_role[:name])
13
+ end
14
+
15
+ test 'should delete old roles' do
16
+ assert AnsibleRole.find_by(:name => @role.name)
17
+ @importer.delete_old_roles(@changes['obsolete'])
18
+ refute AnsibleRole.find_by(:name => @role.name)
19
+ end
20
+
21
+ private
22
+
23
+ def changed_roles
24
+ @role = FactoryGirl.create(:ansible_role)
25
+ new_role_name = 'test_role.foreman'
26
+ @new_role = { :id => nil, :name => new_role_name }
27
+ @changes = { 'new' => { 'test_role.foreman' => @new_role.to_json },
28
+ 'obsolete' => { @role.name => @role.to_json } }
29
+ end
30
+ end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_ansible
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Lobato Garcia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-08 00:00:00.000000000 Z
11
+ date: 2016-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '0.42'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '0.42'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: deface
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +38,48 @@ dependencies:
38
38
  - - "<"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: foreman-tasks
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.8.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: dynflow
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.8.14
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.8.14
69
+ - !ruby/object:Gem::Dependency
70
+ name: foreman_ansible_core
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
41
83
  description: Ansible integration with Foreman
42
84
  email:
43
85
  - elobatocs@gmail.com
@@ -48,54 +90,90 @@ files:
48
90
  - LICENSE
49
91
  - README.md
50
92
  - Rakefile
93
+ - app/controllers/ansible_roles_controller.rb
94
+ - app/controllers/api/v2/ansible_roles_controller.rb
51
95
  - app/controllers/foreman_ansible/concerns/hosts_controller_extensions.rb
96
+ - app/helpers/foreman_ansible/ansible_plugin_helper.rb
52
97
  - app/helpers/foreman_ansible/ansible_reports_helper.rb
53
98
  - app/helpers/foreman_ansible/ansible_roles_helper.rb
54
99
  - app/helpers/foreman_ansible/hosts_helper_extensions.rb
55
- - app/jobs/foreman_ansible/run_playbook_job.rb
100
+ - app/lib/actions/foreman_ansible/play_host_roles.rb
101
+ - app/lib/actions/foreman_ansible/play_hosts_roles.rb
102
+ - app/lib/proxy_api/ansible.rb
56
103
  - app/models/ansible_role.rb
104
+ - app/models/concerns/foreman_ansible/has_many_ansible_roles.rb
57
105
  - app/models/concerns/foreman_ansible/host_managed_extensions.rb
106
+ - app/models/concerns/foreman_ansible/hostgroup_extensions.rb
58
107
  - app/models/foreman_ansible/fact_name.rb
59
108
  - app/models/host_ansible_role.rb
109
+ - app/models/hostgroup_ansible_role.rb
60
110
  - app/overrides/ansible_roles_tab.rb
111
+ - app/overrides/hostgroup_ansible_roles_tab.rb
61
112
  - app/overrides/report_output.rb
113
+ - app/services/foreman_ansible/api_roles_importer.rb
62
114
  - app/services/foreman_ansible/fact_importer.rb
63
115
  - app/services/foreman_ansible/fact_parser.rb
64
116
  - app/services/foreman_ansible/fact_sparser.rb
65
117
  - app/services/foreman_ansible/inventory_creator.rb
66
118
  - app/services/foreman_ansible/playbook_creator.rb
67
- - app/services/foreman_ansible/role_player.rb
119
+ - app/services/foreman_ansible/proxy_selector.rb
68
120
  - app/services/foreman_ansible/roles_importer.rb
121
+ - app/services/foreman_ansible/ui_roles_importer.rb
122
+ - app/views/ansible_roles/import.html.erb
123
+ - app/views/ansible_roles/index.html.erb
124
+ - app/views/ansible_roles/welcome.html.erb
125
+ - app/views/api/v2/ansible_roles/import.json.rabl
126
+ - app/views/api/v2/ansible_roles/index.json.rabl
127
+ - app/views/api/v2/ansible_roles/obsolete.json.rabl
128
+ - app/views/api/v2/ansible_roles/show.json.rabl
129
+ - app/views/foreman_ansible/ansible_roles/_select_tab_content.html.erb
130
+ - app/views/foreman_ansible/ansible_roles/_select_tab_title.html.erb
69
131
  - app/views/foreman_ansible/config_reports/_ansible.html.erb
70
132
  - app/views/foreman_ansible/config_reports/_output.html.erb
71
- - app/views/foreman_ansible/hosts/_tab_content.html.erb
72
- - app/views/foreman_ansible/hosts/_tab_title.html.erb
73
133
  - config/routes.rb
74
134
  - db/migrate/20160705082036_create_ansible_role.rb
75
135
  - db/migrate/20160706074540_create_join_table_hosts_ansible_roles.rb
76
136
  - db/migrate/20160707195442_create_host_ansible_roles.rb
77
- - db/seeds.d/62-ansible_proxy_feature.rb
137
+ - db/migrate/20160729094457_add_columns_to_ansible_role.rb
138
+ - db/migrate/20160802153302_create_join_table_hostgroup_ansible_roles.rb
139
+ - db/migrate/20160805094233_add_primary_key_hostgroup_ansible_roles.rb
140
+ - db/seeds.d/62_ansible_proxy_feature.rb
78
141
  - lib/foreman_ansible.rb
79
142
  - lib/foreman_ansible/engine.rb
80
143
  - lib/foreman_ansible/version.rb
81
- - lib/tasks/foreman_ansible_tasks.rake
82
144
  - locale/Makefile
83
145
  - locale/en/foreman_ansible.po
84
146
  - locale/foreman_ansible.pot
85
147
  - locale/gemspec.rb
148
+ - test/factories/ansible_proxy.rb
86
149
  - test/factories/ansible_roles.rb
150
+ - test/fixtures/ansible_permissions.yml
87
151
  - test/fixtures/sample_facts.json
152
+ - test/functional/ansible_roles_controller_test.rb
153
+ - test/functional/api/v2/ansible_roles_controller_test.rb
88
154
  - test/functional/hosts_controller_test.rb
155
+ - test/support/fixture_support.rb
156
+ - test/support/foreman_tasks/task.rb
157
+ - test/support/foreman_test_helper_additions.rb
89
158
  - test/test_plugin_helper.rb
90
159
  - test/unit/ansible_role_test.rb
160
+ - test/unit/concerns/host_managed_extensions_test.rb
161
+ - test/unit/concerns/hostgroup_extensions_test.rb
91
162
  - test/unit/fact_importer_test.rb
92
163
  - test/unit/fact_parser_test.rb
93
164
  - test/unit/fact_sparser_test.rb
94
165
  - test/unit/helpers/foreman_ansible/ansible_reports_helper_test.rb
95
166
  - test/unit/host_ansible_role_test.rb
167
+ - test/unit/hostgroup_ansible_role_test.rb
168
+ - test/unit/lib/foreman_ansible_core/playbook_runner_test.rb
169
+ - test/unit/lib/proxy_api/ansible_test.rb
170
+ - test/unit/services/api_roles_importer_test.rb
171
+ - test/unit/services/proxy_selector_test.rb
172
+ - test/unit/services/roles_importer_test.rb
173
+ - test/unit/services/ui_roles_importer_test.rb
96
174
  homepage: https://github.com/theforeman/foreman_ansible
97
175
  licenses:
98
- - GPL-3
176
+ - GPL-3.0
99
177
  metadata: {}
100
178
  post_install_message:
101
179
  rdoc_options: []
@@ -113,18 +191,34 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
191
  version: '0'
114
192
  requirements: []
115
193
  rubyforge_project:
116
- rubygems_version: 2.2.2
194
+ rubygems_version: 2.5.0
117
195
  signing_key:
118
196
  specification_version: 4
119
197
  summary: Ansible integration with Foreman (theforeman.org)
120
198
  test_files:
199
+ - test/fixtures/ansible_permissions.yml
121
200
  - test/fixtures/sample_facts.json
201
+ - test/factories/ansible_proxy.rb
122
202
  - test/factories/ansible_roles.rb
203
+ - test/support/fixture_support.rb
204
+ - test/support/foreman_test_helper_additions.rb
205
+ - test/support/foreman_tasks/task.rb
206
+ - test/functional/api/v2/ansible_roles_controller_test.rb
207
+ - test/functional/ansible_roles_controller_test.rb
123
208
  - test/functional/hosts_controller_test.rb
124
209
  - test/test_plugin_helper.rb
125
210
  - test/unit/fact_parser_test.rb
211
+ - test/unit/concerns/hostgroup_extensions_test.rb
212
+ - test/unit/concerns/host_managed_extensions_test.rb
213
+ - test/unit/services/proxy_selector_test.rb
214
+ - test/unit/services/ui_roles_importer_test.rb
215
+ - test/unit/services/roles_importer_test.rb
216
+ - test/unit/services/api_roles_importer_test.rb
126
217
  - test/unit/host_ansible_role_test.rb
127
218
  - test/unit/ansible_role_test.rb
128
219
  - test/unit/fact_importer_test.rb
129
220
  - test/unit/fact_sparser_test.rb
221
+ - test/unit/lib/proxy_api/ansible_test.rb
222
+ - test/unit/lib/foreman_ansible_core/playbook_runner_test.rb
223
+ - test/unit/hostgroup_ansible_role_test.rb
130
224
  - test/unit/helpers/foreman_ansible/ansible_reports_helper_test.rb
@@ -1,28 +0,0 @@
1
- module ForemanAnsible
2
- # Run the ansible-playbook binary, depends on a valid playbook and inventory
3
- class RunPlaybookJob < ActiveJob::Base
4
- queue_as :ansible
5
- attr_reader :pid
6
-
7
- after_perform do |job|
8
- Foreman::Logging.
9
- logger('foreman_ansible').
10
- info('PID for playbook run for'\
11
- " #{job.arguments.first} #{job.arguments.second}:"\
12
- " #{pid}")
13
- end
14
-
15
- def perform(playbook_path, inventory_path)
16
- @pid = spawn("ansible-playbook -i #{inventory_path} #{playbook_path}",
17
- :out => log_file,
18
- :err => log_file)
19
- end
20
-
21
- private
22
-
23
- def log_file
24
- "#{::Foreman::Logging.log_directory}/"\
25
- "#{::Foreman::Logging.config[:filename]}"
26
- end
27
- end
28
- end