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.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/app/controllers/foreman_ansible/api/v2/hostgroups_controller_extensions.rb +6 -21
  4. data/app/controllers/foreman_ansible/api/v2/hosts_controller_extensions.rb +5 -18
  5. data/app/controllers/foreman_ansible/concerns/hostgroups_controller_extensions.rb +12 -5
  6. data/app/controllers/foreman_ansible/concerns/hosts_controller_extensions.rb +20 -16
  7. data/app/controllers/foreman_ansible/concerns/job_invocation_helper.rb +17 -0
  8. data/app/helpers/foreman_ansible/ansible_plugin_helper.rb +1 -5
  9. data/app/helpers/foreman_ansible/ansible_reports_helper.rb +2 -1
  10. data/app/helpers/foreman_ansible/hosts_helper_extensions.rb +19 -18
  11. data/app/lib/actions/foreman_ansible/helpers/host_common.rb +1 -5
  12. data/app/models/ansible_role.rb +5 -0
  13. data/app/models/concerns/foreman_ansible/has_many_ansible_roles.rb +1 -3
  14. data/app/models/concerns/foreman_ansible/host_managed_extensions.rb +9 -0
  15. data/app/models/concerns/foreman_ansible/hostgroup_extensions.rb +0 -4
  16. data/app/models/foreman_ansible/ansible_provider.rb +24 -0
  17. data/app/models/setting/ansible.rb +4 -1
  18. data/app/services/foreman_ansible/fact_parser.rb +4 -2
  19. data/app/services/foreman_ansible/inventory_creator.rb +7 -2
  20. data/app/services/foreman_ansible/proxy_selector.rb +6 -0
  21. data/app/services/foreman_ansible/ui_roles_importer.rb +2 -0
  22. data/app/views/ansible_roles/index.html.erb +1 -2
  23. data/app/views/foreman_ansible/ansible_roles/_hostgroup_ansible_roles_button.erb +8 -7
  24. data/app/views/foreman_ansible/job_templates/ansible_roles.erb +17 -0
  25. data/config/routes.rb +1 -0
  26. data/db/migrate/20160705082036_create_ansible_role.rb +1 -1
  27. data/db/migrate/20160706074540_create_join_table_hosts_ansible_roles.rb +1 -1
  28. data/db/migrate/20160707195442_create_host_ansible_roles.rb +1 -1
  29. data/db/migrate/20160729094457_add_columns_to_ansible_role.rb +1 -1
  30. data/db/migrate/20160802153302_create_join_table_hostgroup_ansible_roles.rb +2 -1
  31. data/db/migrate/20160805094233_add_primary_key_hostgroup_ansible_roles.rb +1 -1
  32. data/db/migrate/20161122154057_automatically_set_role_timestamps.rb +1 -1
  33. data/db/seeds.d/75_job_templates.rb +20 -0
  34. data/lib/foreman_ansible/engine.rb +11 -53
  35. data/lib/foreman_ansible/register.rb +52 -0
  36. data/lib/foreman_ansible/remote_execution.rb +22 -0
  37. data/lib/foreman_ansible/version.rb +1 -1
  38. data/test/factories/ansible_proxy.rb +1 -1
  39. data/test/factories/ansible_roles.rb +1 -1
  40. data/test/functional/ansible_roles_controller_test.rb +4 -2
  41. data/test/functional/api/v2/ansible_roles_controller_test.rb +5 -3
  42. data/test/functional/api/v2/hostgroups_controller_test.rb +17 -25
  43. data/test/functional/api/v2/hosts_controller_test.rb +16 -24
  44. data/test/functional/hosts_controller_test.rb +33 -29
  45. data/test/test_plugin_helper.rb +12 -2
  46. data/test/unit/actions/run_ansible_job_test.rb +0 -0
  47. data/test/unit/actions/run_proxy_ansible_command_test.rb +0 -0
  48. data/test/unit/concerns/host_managed_extensions_test.rb +7 -7
  49. data/test/unit/concerns/hostgroup_extensions_test.rb +6 -6
  50. data/test/unit/helpers/foreman_ansible/ansible_reports_helper_test.rb +2 -2
  51. data/test/unit/host_ansible_role_test.rb +2 -2
  52. data/test/unit/hostgroup_ansible_role_test.rb +2 -2
  53. data/test/unit/lib/foreman_ansible_core/roles_reader_test.rb +4 -5
  54. data/test/unit/services/fact_importer_test.rb +3 -5
  55. data/test/unit/services/fact_parser_test.rb +0 -2
  56. data/test/unit/services/fact_sparser_test.rb +0 -2
  57. data/test/unit/services/inventory_creator_test.rb +1 -1
  58. data/test/unit/services/proxy_selector_test.rb +4 -4
  59. data/test/unit/services/roles_importer_test.rb +2 -2
  60. data/test/unit/services/structured_fact_importer_test.rb +1 -1
  61. data/test/unit/services/ui_roles_importer_test.rb +1 -1
  62. metadata +44 -31
  63. data/app/lib/actions/foreman_ansible/play_host_roles.rb +0 -42
  64. data/app/lib/actions/foreman_ansible/play_hostgroup_roles.rb +0 -56
  65. data/app/lib/actions/foreman_ansible/play_hosts_roles.rb +0 -26
  66. data/test/fixtures/ansible_permissions.yml +0 -11
  67. data/test/support/fixture_support.rb +0 -29
  68. data/test/support/foreman_tasks/task.rb +0 -48
  69. 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 = FactoryGirl.create(:host)
11
- @host2 = FactoryGirl.create(:host)
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
- post :play_roles, :id => @host1.id
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
- post :multiple_play_roles, :id => [@host1.id, @host2.id]
42
- response = JSON.parse(@response.body)
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
- assert response['message'].length == 2, 'should trigger two tasks'
45
- assert_response :success
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 = FactoryGirl.create(:ansible_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 = FactoryGirl.create(:host, :managed => false)
29
- post :update, { :id => host.id,
30
- :host => { :ansible_role_ids => [@role.id] } },
31
- set_session_user
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 = FactoryGirl.create(:host,
38
- :managed => false,
39
- :ansible_roles => [@role])
36
+ host = FactoryBot.create(:host,
37
+ :managed => false,
38
+ :ansible_roles => [@role])
40
39
  assert_include @role.hosts, host
41
- delete :destroy, { :id => host.id }, set_session_user
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 = FactoryGirl.create(:host, :managed => false)
50
+ @host = FactoryBot.create(:host, :managed => false)
50
51
  end
51
52
 
52
53
  test 'redirect to task if successful' do
53
- task_stub = new_task_stub(@host)
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
- get :play_roles, { :id => @host.id }, set_session_user
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(:async_task).
73
+ HostsController.any_instance.expects(:job_composer).
63
74
  raises(::Foreman::Exception.new('Oh foo'))
64
- get :play_roles, { :id => @host.id }, set_session_user
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
@@ -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
- FactoryGirl.definition_file_paths << plugin_factories_path
17
- FactoryGirl.reload
26
+ FactoryBot.definition_file_paths << plugin_factories_path
27
+ FactoryBot.reload
@@ -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 = FactoryGirl.create(:ansible_role)
7
- @role2 = FactoryGirl.create(:ansible_role)
8
- @role3 = FactoryGirl.create(:ansible_role)
6
+ @role1 = FactoryBot.create(:ansible_role)
7
+ @role2 = FactoryBot.create(:ansible_role)
8
+ @role3 = FactoryBot.create(:ansible_role)
9
9
 
10
- @hostgroup_parent = FactoryGirl.create(:hostgroup,
11
- :ansible_roles => [@role2])
12
- @hostgroup = FactoryGirl.create(:hostgroup, :parent => @hostgroup_parent)
13
- @host = FactoryGirl.build_stubbed(:host, :ansible_roles => [@role1])
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 = FactoryGirl.create(:ansible_role)
7
- @role2 = FactoryGirl.create(:ansible_role)
8
- @role3 = FactoryGirl.create(:ansible_role)
6
+ @role1 = FactoryBot.create(:ansible_role)
7
+ @role2 = FactoryBot.create(:ansible_role)
8
+ @role3 = FactoryBot.create(:ansible_role)
9
9
 
10
- @hostgroup_parent = FactoryGirl.create(:hostgroup,
11
- :ansible_roles => [@role2])
12
- @hostgroup = FactoryGirl.create(:hostgroup, :ansible_roles => [@role1])
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?(FactoryGirl.build(:log))
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 = FactoryGirl.build(: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 => FactoryGirl.build(:host),
13
- :ansible_role => FactoryGirl.build(: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 => FactoryGirl.build(:hostgroup),
14
- :ansible_role => FactoryGirl.build(: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).returns(ansible_cfg_content)
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 = FactoryGirl.build(: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 = FactoryGirl.build(:fact_name)
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 = FactoryGirl.build(:fact_name)
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
@@ -1,5 +1,3 @@
1
- require 'test_plugin_helper'
2
-
3
1
  module ForemanAnsible
4
2
  # Checks sample Ansible facts to see if it can assign them to
5
3
  # Host properties
@@ -1,5 +1,3 @@
1
- require 'test_plugin_helper'
2
-
3
1
  module ForemanAnsible
4
2
  # Tests for checking if FactSparser can sparse a hash and unsparse it
5
3
  class FactSparserTest < ActiveSupport::TestCase
@@ -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 = FactoryGirl.build(: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 = FactoryGirl.create(: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 = FactoryGirl.create(:smart_proxy, :with_ansible,
21
- :organizations => [@host.organization])
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
- FactoryGirl.create(:smart_proxy, :with_ansible, :organizations => [])
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 = FactoryGirl.create(:ansible_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 = FactoryGirl.build(:ansible_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 = FactoryGirl.build(: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 = FactoryGirl.create(:ansible_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: 1.5.2
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-03-12 00:00:00.000000000 Z
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.42'
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.42'
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: dynflow
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.8.14
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.8.14
82
+ version: '1.0'
75
83
  - !ruby/object:Gem::Dependency
76
- name: foreman_ansible_core
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: 2.0.2
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: 2.0.2
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/helpers/foreman_ansible/ansible_reports_helper_test.rb
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