foreman_ansible 2.2.4 → 2.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a4f05964b165891e1b44e5158dcf7b2d5e77881e
4
- data.tar.gz: c1629f35495a5617fa6a74a10fffadbde03564ea
3
+ metadata.gz: e462c3b9312bf42cb1f7a267edbe619aae3849dc
4
+ data.tar.gz: 1cd77d5a1ab0047c0b25108a995c73790f92e774
5
5
  SHA512:
6
- metadata.gz: 3e2aae785f1b33486213458fce2c68d3c3a278e09545bf7ec77fb4e2e0b4345296b69f2623dd0c47cd2468e33be4ba0de1498fb7484e58f425836741ae849e5f
7
- data.tar.gz: cc39abf1727a1eab156b1ce837cd3fe16642979c35cbbfe02d61e07edc9dc28d0cd57fa2822f2c8402804e04074a76afec60c45d32e481233d835325a3ae60b6
6
+ metadata.gz: e77318b028e35757faa9bc78b523edfba003bf15c4a687f1592c6d16e0191d1d2fa913da461e757f95118bc6bf0132a78f58381c1c10bcf9c2bd9ab94ee65da3
7
+ data.tar.gz: d381adc5b3aaa880a0e71da579bb2f7f063bd76e8542500de92ed53ccb06443974e168e31a5588cb51f351c96416805f47146c17c406c75d0f249996ea327d71
@@ -15,12 +15,11 @@ module ForemanAnsible
15
15
  :only_explicit => true
16
16
 
17
17
  before_provision :play_ansible_roles
18
- include ForemanAnsible::HasManyAnsibleRoles
19
18
  audit_associations :ansible_roles
20
19
 
21
20
  def inherited_ansible_roles
22
21
  return [] unless hostgroup
23
- hostgroup.all_ansible_roles
22
+ hostgroup.inherited_and_own_ansible_roles
24
23
  end
25
24
 
26
25
  # This one should be fixed, disabled for the moment as we're
@@ -43,14 +42,20 @@ module ForemanAnsible
43
42
  "#{e.message}")
44
43
  end
45
44
  # rubocop:enable Metrics/AbcSize
45
+
46
+ def all_ansible_roles
47
+ (ansible_roles + inherited_ansible_roles).uniq
48
+ end
46
49
  end
47
50
  # rubocop:enable Metrics/BlockLength
48
51
  # Class methods we may need to override or add
49
52
  module ClassMethods
50
- def import_host(hostname, certname = nil, deprecated_proxy = nil)
51
- host = super(hostname, certname, deprecated_proxy)
52
- if IPAddress.valid?(hostname) && Nic::Interface.find_by(:ip => hostname)
53
- host = Nic::Interface.find_by(:ip => hostname).host
53
+ def import_host(*args)
54
+ host = super(*args)
55
+ hostname = args[0]
56
+ if IPAddress.valid?(hostname) &&
57
+ (host_nic = Nic::Interface.find_by(:ip => hostname))
58
+ host = host_nic.host
54
59
  end
55
60
  host
56
61
  end
@@ -7,7 +7,6 @@ module ForemanAnsible
7
7
  has_many :hostgroup_ansible_roles, :foreign_key => :hostgroup_id
8
8
  has_many :ansible_roles, :through => :hostgroup_ansible_roles,
9
9
  :dependent => :destroy
10
- include ForemanAnsible::HasManyAnsibleRoles
11
10
  audit_associations :ansible_roles
12
11
 
13
12
  def inherited_ansible_roles
@@ -25,6 +24,13 @@ module ForemanAnsible
25
24
  def host_ansible_roles
26
25
  hosts.all.includes(:ansible_roles).flat_map(&:ansible_roles)
27
26
  end
27
+
28
+ # includes also roles of all assigned hosts, useful to determine if
29
+ # at least one host in this hostgroup has some ansible role assigned
30
+ # either directly or through hostgroup
31
+ def all_ansible_roles
32
+ (ansible_roles + inherited_ansible_roles + host_ansible_roles).uniq
33
+ end
28
34
  end
29
35
  end
30
36
  end
@@ -2,5 +2,5 @@
2
2
  # This way other parts of Foreman can just call ForemanAnsible::VERSION
3
3
  # and detect what version the plugin is running.
4
4
  module ForemanAnsible
5
- VERSION = '2.2.4'.freeze
5
+ VERSION = '2.2.5'.freeze
6
6
  end
@@ -11,6 +11,7 @@ class HostManagedExtensionsTest < ActiveSupport::TestCase
11
11
  :ansible_roles => [@role2])
12
12
  @hostgroup = FactoryBot.create(:hostgroup, :parent => @hostgroup_parent)
13
13
  @host = FactoryBot.build_stubbed(:host, :ansible_roles => [@role1])
14
+ @another_host = FactoryBot.build_stubbed(:host, :ansible_roles => [@role3])
14
15
  end
15
16
 
16
17
  describe '#all_ansible_roles' do
@@ -10,16 +10,19 @@ class HostgroupExtensionsTest < ActiveSupport::TestCase
10
10
  @hostgroup_parent = FactoryBot.create(:hostgroup,
11
11
  :ansible_roles => [@role2])
12
12
  @hostgroup = FactoryBot.create(:hostgroup, :ansible_roles => [@role1])
13
+ @host = FactoryBot.create(:host,
14
+ :ansible_roles => [@role3],
15
+ :hostgroup => @hostgroup)
13
16
  end
14
17
 
15
18
  describe '#all_ansible_roles' do
16
19
  test 'returns assigned roles without any parent hostgroup' do
17
- @hostgroup.all_ansible_roles.must_equal [@role1]
20
+ @hostgroup.all_ansible_roles.must_equal [@role1, @role3]
18
21
  end
19
22
 
20
- test 'returns assigned and inherited roles with a parent hostgroup' do
23
+ test 'returns assigned and inherited roles with from parent hostgroup' do
21
24
  @hostgroup.parent = @hostgroup_parent
22
- @hostgroup.all_ansible_roles.must_equal [@role1, @role2]
25
+ @hostgroup.all_ansible_roles.must_equal [@role1, @role2, @role3]
23
26
  end
24
27
  end
25
28
 
@@ -33,4 +36,15 @@ class HostgroupExtensionsTest < ActiveSupport::TestCase
33
36
  @hostgroup.inherited_ansible_roles.must_equal [@role2]
34
37
  end
35
38
  end
39
+
40
+ describe '#inherited_and_own_ansible_roles' do
41
+ test 'returns only hostgroup roles' do
42
+ @hostgroup_parent.inherited_and_own_ansible_roles.must_equal [@role2]
43
+ end
44
+
45
+ test 'returns only hostgroup roles including inheritance' do
46
+ @hostgroup.parent = @hostgroup_parent
47
+ @hostgroup.inherited_and_own_ansible_roles.must_equal [@role2, @role1]
48
+ end
49
+ end
36
50
  end
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: 2.2.4
4
+ version: 2.2.5
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-07-19 00:00:00.000000000 Z
11
+ date: 2018-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -135,7 +135,6 @@ files:
135
135
  - app/lib/actions/foreman_ansible/helpers/play_roles_description.rb
136
136
  - app/lib/proxy_api/ansible.rb
137
137
  - app/models/ansible_role.rb
138
- - app/models/concerns/foreman_ansible/has_many_ansible_roles.rb
139
138
  - app/models/concerns/foreman_ansible/host_managed_extensions.rb
140
139
  - app/models/concerns/foreman_ansible/hostgroup_extensions.rb
141
140
  - app/models/foreman_ansible/ansible_provider.rb
@@ -1,15 +0,0 @@
1
- module ForemanAnsible
2
- # Define common behaviors between models that have many Ansible roles,
3
- # currently Host and Hostgroup. Takes care of inheritance, etc...
4
- module HasManyAnsibleRoles
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- def all_ansible_roles
9
- result = (ansible_roles + inherited_ansible_roles).uniq
10
- result += host_ansible_roles if is_a? Hostgroup
11
- result
12
- end
13
- end
14
- end
15
- end