foreman_ansible 1.5.2 → 2.0.0
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.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/app/controllers/foreman_ansible/api/v2/hostgroups_controller_extensions.rb +6 -21
- data/app/controllers/foreman_ansible/api/v2/hosts_controller_extensions.rb +5 -18
- data/app/controllers/foreman_ansible/concerns/hostgroups_controller_extensions.rb +12 -5
- data/app/controllers/foreman_ansible/concerns/hosts_controller_extensions.rb +20 -16
- data/app/controllers/foreman_ansible/concerns/job_invocation_helper.rb +17 -0
- data/app/helpers/foreman_ansible/ansible_plugin_helper.rb +1 -5
- data/app/helpers/foreman_ansible/ansible_reports_helper.rb +2 -1
- data/app/helpers/foreman_ansible/hosts_helper_extensions.rb +19 -18
- data/app/lib/actions/foreman_ansible/helpers/host_common.rb +1 -5
- data/app/models/ansible_role.rb +5 -0
- data/app/models/concerns/foreman_ansible/has_many_ansible_roles.rb +1 -3
- data/app/models/concerns/foreman_ansible/host_managed_extensions.rb +9 -0
- data/app/models/concerns/foreman_ansible/hostgroup_extensions.rb +0 -4
- data/app/models/foreman_ansible/ansible_provider.rb +24 -0
- data/app/models/setting/ansible.rb +4 -1
- data/app/services/foreman_ansible/fact_parser.rb +4 -2
- data/app/services/foreman_ansible/inventory_creator.rb +7 -2
- data/app/services/foreman_ansible/proxy_selector.rb +6 -0
- data/app/services/foreman_ansible/ui_roles_importer.rb +2 -0
- data/app/views/ansible_roles/index.html.erb +1 -2
- data/app/views/foreman_ansible/ansible_roles/_hostgroup_ansible_roles_button.erb +8 -7
- data/app/views/foreman_ansible/job_templates/ansible_roles.erb +17 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20160705082036_create_ansible_role.rb +1 -1
- data/db/migrate/20160706074540_create_join_table_hosts_ansible_roles.rb +1 -1
- data/db/migrate/20160707195442_create_host_ansible_roles.rb +1 -1
- data/db/migrate/20160729094457_add_columns_to_ansible_role.rb +1 -1
- data/db/migrate/20160802153302_create_join_table_hostgroup_ansible_roles.rb +2 -1
- data/db/migrate/20160805094233_add_primary_key_hostgroup_ansible_roles.rb +1 -1
- data/db/migrate/20161122154057_automatically_set_role_timestamps.rb +1 -1
- data/db/seeds.d/75_job_templates.rb +20 -0
- data/lib/foreman_ansible/engine.rb +11 -53
- data/lib/foreman_ansible/register.rb +52 -0
- data/lib/foreman_ansible/remote_execution.rb +22 -0
- data/lib/foreman_ansible/version.rb +1 -1
- data/test/factories/ansible_proxy.rb +1 -1
- data/test/factories/ansible_roles.rb +1 -1
- data/test/functional/ansible_roles_controller_test.rb +4 -2
- data/test/functional/api/v2/ansible_roles_controller_test.rb +5 -3
- data/test/functional/api/v2/hostgroups_controller_test.rb +17 -25
- data/test/functional/api/v2/hosts_controller_test.rb +16 -24
- data/test/functional/hosts_controller_test.rb +33 -29
- data/test/test_plugin_helper.rb +12 -2
- data/test/unit/actions/run_ansible_job_test.rb +0 -0
- data/test/unit/actions/run_proxy_ansible_command_test.rb +0 -0
- data/test/unit/concerns/host_managed_extensions_test.rb +7 -7
- data/test/unit/concerns/hostgroup_extensions_test.rb +6 -6
- data/test/unit/helpers/foreman_ansible/ansible_reports_helper_test.rb +2 -2
- data/test/unit/host_ansible_role_test.rb +2 -2
- data/test/unit/hostgroup_ansible_role_test.rb +2 -2
- data/test/unit/lib/foreman_ansible_core/roles_reader_test.rb +4 -5
- data/test/unit/services/fact_importer_test.rb +3 -5
- data/test/unit/services/fact_parser_test.rb +0 -2
- data/test/unit/services/fact_sparser_test.rb +0 -2
- data/test/unit/services/inventory_creator_test.rb +1 -1
- data/test/unit/services/proxy_selector_test.rb +4 -4
- data/test/unit/services/roles_importer_test.rb +2 -2
- data/test/unit/services/structured_fact_importer_test.rb +1 -1
- data/test/unit/services/ui_roles_importer_test.rb +1 -1
- metadata +44 -31
- data/app/lib/actions/foreman_ansible/play_host_roles.rb +0 -42
- data/app/lib/actions/foreman_ansible/play_hostgroup_roles.rb +0 -56
- data/app/lib/actions/foreman_ansible/play_hosts_roles.rb +0 -26
- data/test/fixtures/ansible_permissions.yml +0 -11
- data/test/support/fixture_support.rb +0 -29
- data/test/support/foreman_tasks/task.rb +0 -48
- data/test/support/foreman_test_helper_additions.rb +0 -22
@@ -4,45 +4,37 @@ module Api
|
|
4
4
|
module V2
|
5
5
|
# Tests for the extra methods to play roles on a Host
|
6
6
|
class HostsControllerTest < ActionController::TestCase
|
7
|
-
include ::Dynflow::Testing
|
8
|
-
|
9
7
|
setup do
|
10
|
-
@host1 =
|
11
|
-
@host2 =
|
12
|
-
end
|
13
|
-
|
14
|
-
after do
|
15
|
-
::ForemanTasks::Task::DynflowTask.all.each do |task|
|
16
|
-
task.destroy
|
17
|
-
task.delete
|
18
|
-
end
|
8
|
+
@host1 = FactoryBot.create(:host)
|
9
|
+
@host2 = FactoryBot.create(:host)
|
19
10
|
end
|
20
11
|
|
21
12
|
test 'should return an not_found due to non-existent host_id' do
|
22
|
-
post :play_roles, :id => 'non-existent'
|
13
|
+
post :play_roles, :params => { :id => 'non-existent' }
|
23
14
|
response = JSON.parse(@response.body)
|
24
15
|
refute_empty response
|
25
16
|
assert_response :not_found
|
26
17
|
end
|
27
18
|
|
28
19
|
test 'should trigger task on host' do
|
29
|
-
|
20
|
+
load File.join(ForemanAnsible::Engine.root,
|
21
|
+
'/db/seeds.d/75_job_templates.rb')
|
22
|
+
::JobInvocationComposer.any_instance.expects(:trigger!).returns(true)
|
23
|
+
targets = @host1.id
|
24
|
+
post :play_roles, :params => { :id => targets }
|
30
25
|
response = JSON.parse(@response.body)
|
31
|
-
|
32
|
-
assert response['message']['foreman_tasks'].key?('id'),
|
33
|
-
'task id not contained in response'
|
34
|
-
assert_equal response['message']['host']['name'],
|
35
|
-
@host1.name,
|
36
|
-
'host name not contained in response'
|
37
|
-
assert_response :success
|
26
|
+
assert_job_invocation_is_ok(response, targets)
|
38
27
|
end
|
39
28
|
|
40
29
|
test 'should trigger two host tasks' do
|
41
|
-
|
42
|
-
|
30
|
+
load File.join(ForemanAnsible::Engine.root,
|
31
|
+
'/db/seeds.d/75_job_templates.rb')
|
32
|
+
::JobInvocationComposer.any_instance.expects(:trigger!).returns(true)
|
33
|
+
targets = [@host1.id, @host2.id]
|
43
34
|
|
44
|
-
|
45
|
-
|
35
|
+
post :multiple_play_roles, :params => { :id => targets }
|
36
|
+
response = JSON.parse(@response.body)
|
37
|
+
assert_job_invocation_is_ok(response, targets)
|
46
38
|
end
|
47
39
|
end
|
48
40
|
end
|
@@ -1,44 +1,45 @@
|
|
1
1
|
require 'test_plugin_helper'
|
2
2
|
require 'dynflow/testing'
|
3
3
|
Mocha::Mock.send :include, Dynflow::Testing::Mimic
|
4
|
-
require 'support/foreman_tasks/task'
|
5
4
|
|
6
5
|
# Ensure Hosts controller can CRUD ansible roles
|
7
6
|
class HostsControllerExtensionsTest < ActionController::TestCase
|
8
|
-
include Support::ForemanTasks::Task
|
9
|
-
|
10
7
|
tests ::HostsController
|
11
8
|
|
12
|
-
# rubocop:disable Metrics/BlockLength
|
13
9
|
context 'role assignment' do
|
14
10
|
setup do
|
15
|
-
@role =
|
11
|
+
@role = FactoryBot.create(:ansible_role)
|
16
12
|
end
|
17
13
|
|
18
14
|
test 'create a host with ansible roles' do
|
19
15
|
host = { :name => 'foo',
|
20
16
|
:managed => false,
|
21
17
|
:ansible_role_ids => [@role.id] }
|
22
|
-
post :create, { :host => host }, set_session_user
|
18
|
+
post :create, :params => { :host => host }, :session => set_session_user
|
23
19
|
assert_redirected_to host_url(assigns('host'))
|
24
20
|
assert assigns('host').ansible_roles, [@role]
|
25
21
|
end
|
26
22
|
|
27
23
|
test 'update a host with ansible roles' do
|
28
|
-
host =
|
29
|
-
post :update,
|
30
|
-
|
31
|
-
|
24
|
+
host = FactoryBot.create(:host, :managed => false)
|
25
|
+
post :update,
|
26
|
+
:params => {
|
27
|
+
:id => host.id,
|
28
|
+
:host => { :ansible_role_ids => [@role.id] }
|
29
|
+
},
|
30
|
+
:session => set_session_user
|
32
31
|
assert_redirected_to host_url(assigns('host'))
|
33
32
|
assert assigns('host').ansible_roles, [@role]
|
34
33
|
end
|
35
34
|
|
36
35
|
test 'delete a host with ansible roles' do
|
37
|
-
host =
|
38
|
-
|
39
|
-
|
36
|
+
host = FactoryBot.create(:host,
|
37
|
+
:managed => false,
|
38
|
+
:ansible_roles => [@role])
|
40
39
|
assert_include @role.hosts, host
|
41
|
-
delete :destroy,
|
40
|
+
delete :destroy,
|
41
|
+
:params => { :id => host.id },
|
42
|
+
:session => set_session_user
|
42
43
|
assert_redirected_to hosts_url
|
43
44
|
assert @role.hosts.empty?
|
44
45
|
end
|
@@ -46,33 +47,36 @@ class HostsControllerExtensionsTest < ActionController::TestCase
|
|
46
47
|
|
47
48
|
context 'playing roles' do
|
48
49
|
setup do
|
49
|
-
@host =
|
50
|
+
@host = FactoryBot.create(:host, :managed => false)
|
50
51
|
end
|
51
52
|
|
52
53
|
test 'redirect to task if successful' do
|
53
|
-
|
54
|
+
load File.join(ForemanAnsible::Engine.root,
|
55
|
+
'/db/seeds.d/75_job_templates.rb')
|
56
|
+
|
54
57
|
task_to_redirect = ForemanTasks::Task.new
|
55
|
-
task_stub.stubs(:to_model).returns(task_to_redirect)
|
56
58
|
task_to_redirect.stubs(:persisted?).returns(true)
|
57
59
|
task_to_redirect.stubs(:id).returns(1)
|
58
|
-
|
60
|
+
# We don't actually want to run the job, so trigger juts returns true
|
61
|
+
::JobInvocationComposer.any_instance.expects(:trigger).returns(true)
|
62
|
+
get :play_roles,
|
63
|
+
:params => { :id => @host.id },
|
64
|
+
:session => set_session_user
|
65
|
+
assert_response :redirect
|
66
|
+
assert_redirected_to(:controller => 'job_invocations',
|
67
|
+
:action => 'show',
|
68
|
+
:id => JobInvocation.last.id)
|
69
|
+
assert flash['error'].empty?
|
59
70
|
end
|
60
71
|
|
61
72
|
test 'shows errors when not successful' do
|
62
|
-
HostsController.any_instance.expects(:
|
73
|
+
HostsController.any_instance.expects(:job_composer).
|
63
74
|
raises(::Foreman::Exception.new('Oh foo'))
|
64
|
-
get :play_roles,
|
75
|
+
get :play_roles,
|
76
|
+
:params => { :id => @host.id },
|
77
|
+
:session => set_session_user
|
65
78
|
assert flash[:error].present?
|
66
79
|
assert_redirected_to host_path(@host)
|
67
80
|
end
|
68
81
|
end
|
69
|
-
|
70
|
-
private
|
71
|
-
|
72
|
-
def new_task_stub(host)
|
73
|
-
assert_async_task(::Actions::ForemanAnsible::PlayHostRoles,
|
74
|
-
host) do |action_host|
|
75
|
-
assert_equal host, action_host
|
76
|
-
end
|
77
|
-
end
|
78
82
|
end
|
data/test/test_plugin_helper.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'test_helper'
|
2
|
+
require 'facets'
|
2
3
|
|
3
4
|
def sample_facts_file
|
4
5
|
File.read(
|
@@ -12,6 +13,15 @@ def facts_json
|
|
12
13
|
HashWithIndifferentAccess.new(JSON.parse(sample_facts_file))
|
13
14
|
end
|
14
15
|
|
16
|
+
def assert_job_invocation_is_ok(response, targets)
|
17
|
+
as_admin do
|
18
|
+
targeting = JobInvocation.find(response['id']).targeting
|
19
|
+
targeting.resolve_hosts!
|
20
|
+
assert_equal [targets].flatten.sort, targeting.hosts.map(&:id).sort
|
21
|
+
end
|
22
|
+
assert_equal 'Ansible Playbook', response['job_category']
|
23
|
+
assert_response :created
|
24
|
+
end
|
15
25
|
plugin_factories_path = File.join(File.dirname(__FILE__), 'factories')
|
16
|
-
|
17
|
-
|
26
|
+
FactoryBot.definition_file_paths << plugin_factories_path
|
27
|
+
FactoryBot.reload
|
File without changes
|
File without changes
|
@@ -3,14 +3,14 @@ require 'test_plugin_helper'
|
|
3
3
|
# Tests for the behavior of Host with roles, checks inheritance, etc
|
4
4
|
class HostManagedExtensionsTest < ActiveSupport::TestCase
|
5
5
|
before do
|
6
|
-
@role1 =
|
7
|
-
@role2 =
|
8
|
-
@role3 =
|
6
|
+
@role1 = FactoryBot.create(:ansible_role)
|
7
|
+
@role2 = FactoryBot.create(:ansible_role)
|
8
|
+
@role3 = FactoryBot.create(:ansible_role)
|
9
9
|
|
10
|
-
@hostgroup_parent =
|
11
|
-
|
12
|
-
@hostgroup =
|
13
|
-
@host =
|
10
|
+
@hostgroup_parent = FactoryBot.create(:hostgroup,
|
11
|
+
:ansible_roles => [@role2])
|
12
|
+
@hostgroup = FactoryBot.create(:hostgroup, :parent => @hostgroup_parent)
|
13
|
+
@host = FactoryBot.build_stubbed(:host, :ansible_roles => [@role1])
|
14
14
|
end
|
15
15
|
|
16
16
|
describe '#all_ansible_roles' do
|
@@ -3,13 +3,13 @@ require 'test_plugin_helper'
|
|
3
3
|
# Tests for the behavior of Hostgroup with roles, checks inheritance, etc
|
4
4
|
class HostgroupExtensionsTest < ActiveSupport::TestCase
|
5
5
|
before do
|
6
|
-
@role1 =
|
7
|
-
@role2 =
|
8
|
-
@role3 =
|
6
|
+
@role1 = FactoryBot.create(:ansible_role)
|
7
|
+
@role2 = FactoryBot.create(:ansible_role)
|
8
|
+
@role3 = FactoryBot.create(:ansible_role)
|
9
9
|
|
10
|
-
@hostgroup_parent =
|
11
|
-
|
12
|
-
@hostgroup =
|
10
|
+
@hostgroup_parent = FactoryBot.create(:hostgroup,
|
11
|
+
:ansible_roles => [@role2])
|
12
|
+
@hostgroup = FactoryBot.create(:hostgroup, :ansible_roles => [@role1])
|
13
13
|
end
|
14
14
|
|
15
15
|
describe '#all_ansible_roles' do
|
@@ -11,11 +11,11 @@ module ForemanAnsible
|
|
11
11
|
end
|
12
12
|
|
13
13
|
test 'ansible_report? returns false when log is from Puppet' do
|
14
|
-
refute ansible_report?(
|
14
|
+
refute ansible_report?(FactoryBot.build(:log))
|
15
15
|
end
|
16
16
|
|
17
17
|
test 'ansible_report? returns true when log contains module_name' do
|
18
|
-
log =
|
18
|
+
log = FactoryBot.build(:log)
|
19
19
|
log.source.value = '{ "module_name" : "foo" }'
|
20
20
|
assert ansible_report?(log)
|
21
21
|
end
|
@@ -9,8 +9,8 @@ class HostAnsibleRoleTest < ActiveSupport::TestCase
|
|
9
9
|
|
10
10
|
describe 'uniqueness' do
|
11
11
|
subject do
|
12
|
-
HostAnsibleRole.new(:host =>
|
13
|
-
:ansible_role =>
|
12
|
+
HostAnsibleRole.new(:host => FactoryBot.build(:host),
|
13
|
+
:ansible_role => FactoryBot.build(:ansible_role))
|
14
14
|
end
|
15
15
|
should validate_uniqueness_of(:ansible_role_id).scoped_to(:host_id)
|
16
16
|
end
|
@@ -10,8 +10,8 @@ class HostgroupAnsibleRoleTest < ActiveSupport::TestCase
|
|
10
10
|
describe 'uniqueness' do
|
11
11
|
subject do
|
12
12
|
HostgroupAnsibleRole.new(
|
13
|
-
:hostgroup =>
|
14
|
-
:ansible_role =>
|
13
|
+
:hostgroup => FactoryBot.build(:hostgroup),
|
14
|
+
:ansible_role => FactoryBot.build(:ansible_role)
|
15
15
|
)
|
16
16
|
end
|
17
17
|
should validate_uniqueness_of(:ansible_role_id).scoped_to(:hostgroup_id)
|
@@ -29,16 +29,14 @@ class RolesReaderTest < ActiveSupport::TestCase
|
|
29
29
|
describe '#list_roles' do
|
30
30
|
test 'reads roles from paths' do
|
31
31
|
expect_content_config ["roles_path = #{ROLES_PATH}"]
|
32
|
-
ForemanAnsibleCore::RolesReader.expects(:read_roles)
|
33
|
-
.with(ROLES_PATH)
|
32
|
+
ForemanAnsibleCore::RolesReader.expects(:read_roles).with(ROLES_PATH)
|
34
33
|
ForemanAnsibleCore::RolesReader.list_roles
|
35
34
|
end
|
36
35
|
|
37
36
|
test 'reads roles from paths' do
|
38
37
|
roles_paths = ['/mycustom/roles/path', '/another/path']
|
39
38
|
roles_paths.each do |path|
|
40
|
-
ForemanAnsibleCore::RolesReader.expects(:read_roles)
|
41
|
-
.with(path)
|
39
|
+
ForemanAnsibleCore::RolesReader.expects(:read_roles).with(path)
|
42
40
|
end
|
43
41
|
expect_content_config ["roles_path = #{roles_paths.join(':')}"]
|
44
42
|
ForemanAnsibleCore::RolesReader.list_roles
|
@@ -88,6 +86,7 @@ class RolesReaderTest < ActiveSupport::TestCase
|
|
88
86
|
private
|
89
87
|
|
90
88
|
def expect_content_config(ansible_cfg_content)
|
91
|
-
ForemanAnsibleCore::RolesReader.expects(:roles_path_from_config).
|
89
|
+
ForemanAnsibleCore::RolesReader.expects(:roles_path_from_config).
|
90
|
+
returns(ansible_cfg_content)
|
92
91
|
end
|
93
92
|
end
|
@@ -1,11 +1,9 @@
|
|
1
|
-
require 'test_plugin_helper'
|
2
|
-
|
3
1
|
module ForemanAnsible
|
4
2
|
# Test for the facts importer - only verify that given
|
5
3
|
# a set of facts it's able to import them
|
6
4
|
class FactImporterTest < ActiveSupport::TestCase
|
7
5
|
setup do
|
8
|
-
@host =
|
6
|
+
@host = FactoryBot.build(:host)
|
9
7
|
end
|
10
8
|
|
11
9
|
test 'add new facts adds all fact names in the fixture' do
|
@@ -28,13 +26,13 @@ module ForemanAnsible
|
|
28
26
|
@fact_importer = FactImporter.new(@host, :ansible_facts => {})
|
29
27
|
end
|
30
28
|
test 'does not add existing facts' do
|
31
|
-
existing_fact =
|
29
|
+
existing_fact = FactoryBot.build(:fact_name)
|
32
30
|
@fact_importer.expects(:missing_facts).returns([])
|
33
31
|
assert_nil @fact_importer.send(:add_fact_value, nil, existing_fact)
|
34
32
|
end
|
35
33
|
|
36
34
|
test 'adds missing facts' do
|
37
|
-
missing_fact =
|
35
|
+
missing_fact = FactoryBot.build(:fact_name)
|
38
36
|
@fact_importer.expects(:missing_facts).returns([missing_fact.name])
|
39
37
|
@fact_importer.counters[:added] = 0
|
40
38
|
assert_difference('@host.fact_values.count', 1) do
|
@@ -5,7 +5,7 @@ module ForemanAnsible
|
|
5
5
|
# inventory variables and connection options
|
6
6
|
class InventoryCreatorTest < ActiveSupport::TestCase
|
7
7
|
setup do
|
8
|
-
@host =
|
8
|
+
@host = FactoryBot.build(:host)
|
9
9
|
end
|
10
10
|
|
11
11
|
test 'ansible_ parameters get turned into host variables' do
|
@@ -3,7 +3,7 @@ require 'test_plugin_helper'
|
|
3
3
|
# Tests for the Proxy Selector service
|
4
4
|
class ProxySelectorTest < ActiveSupport::TestCase
|
5
5
|
setup do
|
6
|
-
@host =
|
6
|
+
@host = FactoryBot.create(:host)
|
7
7
|
end
|
8
8
|
|
9
9
|
test 'reuses proxies already assigned to host' do
|
@@ -17,10 +17,10 @@ class ProxySelectorTest < ActiveSupport::TestCase
|
|
17
17
|
|
18
18
|
test 'only finds proxies that are within host taxonomies' do
|
19
19
|
@host.organization = taxonomies(:organization1)
|
20
|
-
@ansible_proxy =
|
21
|
-
|
20
|
+
@ansible_proxy = FactoryBot.create(:smart_proxy, :with_ansible,
|
21
|
+
:organizations => [@host.organization])
|
22
22
|
# Unreachable proxy, because of the organizations mismatch with Host
|
23
|
-
|
23
|
+
FactoryBot.create(:smart_proxy, :with_ansible, :organizations => [])
|
24
24
|
proxy_selector = ForemanAnsible::ProxySelector.new
|
25
25
|
setup_user('view', 'smart_proxies')
|
26
26
|
assert_equal [@ansible_proxy],
|
@@ -2,12 +2,12 @@ require 'test_plugin_helper'
|
|
2
2
|
# unit tests for RolesImporter
|
3
3
|
class RolesImporterTest < ActiveSupport::TestCase
|
4
4
|
setup do
|
5
|
-
@role =
|
5
|
+
@role = FactoryBot.create(:ansible_role)
|
6
6
|
@importer = ForemanAnsible::RolesImporter.new
|
7
7
|
end
|
8
8
|
|
9
9
|
test 'should detect changes when importing roles' do
|
10
|
-
role =
|
10
|
+
role = FactoryBot.build(:ansible_role)
|
11
11
|
changes = @importer.detect_changes [role]
|
12
12
|
assert_equal 1, changes[:new].length
|
13
13
|
assert_equal 1, changes[:obsolete].length
|
@@ -14,7 +14,7 @@ module ForemanAnsible
|
|
14
14
|
end
|
15
15
|
|
16
16
|
test 'if host is in Foreman, use hostname provided by Ansible' do
|
17
|
-
ansible_fqdn_host =
|
17
|
+
ansible_fqdn_host = FactoryBot.build(:host)
|
18
18
|
ansible_fqdn_host.name = facts_json[:ansible_facts][:ansible_fqdn]
|
19
19
|
ansible_fqdn_host.save
|
20
20
|
importer = ForemanAnsible::StructuredFactImporter.new(
|
@@ -21,7 +21,7 @@ class UiRolesImporterTest < ActiveSupport::TestCase
|
|
21
21
|
private
|
22
22
|
|
23
23
|
def changed_roles
|
24
|
-
@role =
|
24
|
+
@role = FactoryBot.create(:ansible_role)
|
25
25
|
new_role_name = 'test_role.foreman'
|
26
26
|
@new_role = { :id => nil, :name => new_role_name }
|
27
27
|
@changes = { 'new' => { 'test_role.foreman' => @new_role.to_json },
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_ansible
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
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: 2018-
|
11
|
+
date: 2018-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.52'
|
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.52'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: deface
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "<"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: dynflow
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.8.14
|
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.14
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: foreman-tasks
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,9 +59,6 @@ dependencies:
|
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
61
|
version: '0.8'
|
48
|
-
- - "<"
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: '0.12'
|
51
62
|
type: :runtime
|
52
63
|
prerelease: false
|
53
64
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -55,37 +66,40 @@ dependencies:
|
|
55
66
|
- - "~>"
|
56
67
|
- !ruby/object:Gem::Version
|
57
68
|
version: '0.8'
|
58
|
-
- - "<"
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '0.12'
|
61
69
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
70
|
+
name: foreman_ansible_core
|
63
71
|
requirement: !ruby/object:Gem::Requirement
|
64
72
|
requirements:
|
65
73
|
- - "~>"
|
66
74
|
- !ruby/object:Gem::Version
|
67
|
-
version: 0
|
75
|
+
version: '1.0'
|
68
76
|
type: :runtime
|
69
77
|
prerelease: false
|
70
78
|
version_requirements: !ruby/object:Gem::Requirement
|
71
79
|
requirements:
|
72
80
|
- - "~>"
|
73
81
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0
|
82
|
+
version: '1.0'
|
75
83
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
84
|
+
name: foreman_remote_execution
|
77
85
|
requirement: !ruby/object:Gem::Requirement
|
78
86
|
requirements:
|
79
87
|
- - ">="
|
80
88
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
89
|
+
version: 1.4.4
|
90
|
+
- - "<"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '2.0'
|
82
93
|
type: :runtime
|
83
94
|
prerelease: false
|
84
95
|
version_requirements: !ruby/object:Gem::Requirement
|
85
96
|
requirements:
|
86
97
|
- - ">="
|
87
98
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
99
|
+
version: 1.4.4
|
100
|
+
- - "<"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '2.0'
|
89
103
|
description: Ansible integration with Foreman
|
90
104
|
email:
|
91
105
|
- elobatocs@gmail.com
|
@@ -103,20 +117,19 @@ files:
|
|
103
117
|
- app/controllers/foreman_ansible/api/v2/hosts_controller_extensions.rb
|
104
118
|
- app/controllers/foreman_ansible/concerns/hostgroups_controller_extensions.rb
|
105
119
|
- app/controllers/foreman_ansible/concerns/hosts_controller_extensions.rb
|
120
|
+
- app/controllers/foreman_ansible/concerns/job_invocation_helper.rb
|
106
121
|
- app/helpers/foreman_ansible/ansible_plugin_helper.rb
|
107
122
|
- app/helpers/foreman_ansible/ansible_reports_helper.rb
|
108
123
|
- app/helpers/foreman_ansible/ansible_roles_helper.rb
|
109
124
|
- app/helpers/foreman_ansible/hosts_helper_extensions.rb
|
110
125
|
- app/lib/actions/foreman_ansible/helpers/host_common.rb
|
111
126
|
- app/lib/actions/foreman_ansible/helpers/play_roles_description.rb
|
112
|
-
- app/lib/actions/foreman_ansible/play_host_roles.rb
|
113
|
-
- app/lib/actions/foreman_ansible/play_hostgroup_roles.rb
|
114
|
-
- app/lib/actions/foreman_ansible/play_hosts_roles.rb
|
115
127
|
- app/lib/proxy_api/ansible.rb
|
116
128
|
- app/models/ansible_role.rb
|
117
129
|
- app/models/concerns/foreman_ansible/has_many_ansible_roles.rb
|
118
130
|
- app/models/concerns/foreman_ansible/host_managed_extensions.rb
|
119
131
|
- app/models/concerns/foreman_ansible/hostgroup_extensions.rb
|
132
|
+
- app/models/foreman_ansible/ansible_provider.rb
|
120
133
|
- app/models/foreman_ansible/fact_name.rb
|
121
134
|
- app/models/host_ansible_role.rb
|
122
135
|
- app/models/hostgroup_ansible_role.rb
|
@@ -151,6 +164,7 @@ files:
|
|
151
164
|
- app/views/foreman_ansible/api/v2/ansible_roles/show.json.rabl
|
152
165
|
- app/views/foreman_ansible/config_reports/_ansible.html.erb
|
153
166
|
- app/views/foreman_ansible/config_reports/_output.html.erb
|
167
|
+
- app/views/foreman_ansible/job_templates/ansible_roles.erb
|
154
168
|
- config/routes.rb
|
155
169
|
- db/migrate/20160705082036_create_ansible_role.rb
|
156
170
|
- db/migrate/20160706074540_create_join_table_hosts_ansible_roles.rb
|
@@ -160,8 +174,11 @@ files:
|
|
160
174
|
- db/migrate/20160805094233_add_primary_key_hostgroup_ansible_roles.rb
|
161
175
|
- db/migrate/20161122154057_automatically_set_role_timestamps.rb
|
162
176
|
- db/seeds.d/62_ansible_proxy_feature.rb
|
177
|
+
- db/seeds.d/75_job_templates.rb
|
163
178
|
- lib/foreman_ansible.rb
|
164
179
|
- lib/foreman_ansible/engine.rb
|
180
|
+
- lib/foreman_ansible/register.rb
|
181
|
+
- lib/foreman_ansible/remote_execution.rb
|
165
182
|
- lib/foreman_ansible/version.rb
|
166
183
|
- locale/Makefile
|
167
184
|
- locale/en/foreman_ansible.po
|
@@ -169,17 +186,15 @@ files:
|
|
169
186
|
- locale/gemspec.rb
|
170
187
|
- test/factories/ansible_proxy.rb
|
171
188
|
- test/factories/ansible_roles.rb
|
172
|
-
- test/fixtures/ansible_permissions.yml
|
173
189
|
- test/fixtures/sample_facts.json
|
174
190
|
- test/functional/ansible_roles_controller_test.rb
|
175
191
|
- test/functional/api/v2/ansible_roles_controller_test.rb
|
176
192
|
- test/functional/api/v2/hostgroups_controller_test.rb
|
177
193
|
- test/functional/api/v2/hosts_controller_test.rb
|
178
194
|
- test/functional/hosts_controller_test.rb
|
179
|
-
- test/support/fixture_support.rb
|
180
|
-
- test/support/foreman_tasks/task.rb
|
181
|
-
- test/support/foreman_test_helper_additions.rb
|
182
195
|
- test/test_plugin_helper.rb
|
196
|
+
- test/unit/actions/run_ansible_job_test.rb
|
197
|
+
- test/unit/actions/run_proxy_ansible_command_test.rb
|
183
198
|
- test/unit/ansible_role_test.rb
|
184
199
|
- test/unit/concerns/host_managed_extensions_test.rb
|
185
200
|
- test/unit/concerns/hostgroup_extensions_test.rb
|
@@ -233,24 +248,22 @@ test_files:
|
|
233
248
|
- test/unit/ansible_role_test.rb
|
234
249
|
- test/unit/concerns/host_managed_extensions_test.rb
|
235
250
|
- test/unit/concerns/hostgroup_extensions_test.rb
|
251
|
+
- test/unit/helpers/foreman_ansible/ansible_reports_helper_test.rb
|
236
252
|
- test/unit/lib/foreman_ansible_core/playbook_runner_test.rb
|
237
253
|
- test/unit/lib/foreman_ansible_core/roles_reader_test.rb
|
238
254
|
- test/unit/lib/proxy_api/ansible_test.rb
|
239
255
|
- test/unit/services/api_roles_importer_test.rb
|
256
|
+
- test/unit/services/inventory_creator_test.rb
|
240
257
|
- test/unit/services/roles_importer_test.rb
|
241
|
-
- test/unit/services/structured_fact_importer_test.rb
|
242
258
|
- test/unit/services/ui_roles_importer_test.rb
|
243
259
|
- test/unit/services/fact_importer_test.rb
|
244
|
-
- test/unit/services/fact_parser_test.rb
|
245
260
|
- test/unit/services/fact_sparser_test.rb
|
246
|
-
- test/unit/services/inventory_creator_test.rb
|
247
261
|
- test/unit/services/proxy_selector_test.rb
|
248
|
-
- test/unit/
|
262
|
+
- test/unit/services/structured_fact_importer_test.rb
|
263
|
+
- test/unit/services/fact_parser_test.rb
|
249
264
|
- test/unit/host_ansible_role_test.rb
|
250
265
|
- test/unit/hostgroup_ansible_role_test.rb
|
266
|
+
- test/unit/actions/run_ansible_job_test.rb
|
267
|
+
- test/unit/actions/run_proxy_ansible_command_test.rb
|
251
268
|
- test/fixtures/sample_facts.json
|
252
|
-
- test/fixtures/ansible_permissions.yml
|
253
|
-
- test/support/fixture_support.rb
|
254
|
-
- test/support/foreman_tasks/task.rb
|
255
|
-
- test/support/foreman_test_helper_additions.rb
|
256
269
|
- test/test_plugin_helper.rb
|