foreman_wreckingball 4.0.0 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/Rakefile +2 -2
- data/app/controllers/foreman_wreckingball/hosts_controller.rb +30 -13
- data/app/helpers/{concerns/foreman_wreckingball/hosts_helper_extensions.rb → foreman_wreckingball/hosts_helper.rb} +1 -1
- data/app/helpers/foreman_wreckingball/hypervisors_helper.rb +2 -1
- data/app/helpers/foreman_wreckingball/statuses_helper.rb +9 -7
- data/app/jobs/update_hosts_vmware_facets.rb +3 -2
- data/app/lib/actions/foreman_wreckingball/bulk_remediate.rb +4 -1
- data/app/lib/actions/foreman_wreckingball/host/remediate_hardware_version.rb +3 -1
- data/app/lib/actions/foreman_wreckingball/host/remediate_spectre_v2.rb +3 -1
- data/app/lib/actions/foreman_wreckingball/host/remediate_vmware_operatingsystem.rb +14 -10
- data/app/lib/actions/foreman_wreckingball/vmware/schedule_vmware_sync.rb +1 -1
- data/app/lib/actions/foreman_wreckingball/vmware/sync_compute_resource.rb +2 -2
- data/app/lib/fog_extensions/foreman_wreckingball/vsphere/host.rb +2 -0
- data/app/lib/fog_extensions/foreman_wreckingball/vsphere/mock.rb +3 -1
- data/app/lib/fog_extensions/foreman_wreckingball/vsphere/real.rb +7 -2
- data/app/lib/fog_extensions/foreman_wreckingball/vsphere/server.rb +2 -0
- data/app/lib/vsphere_os_identifiers/data.yaml +7 -0
- data/app/models/concerns/foreman_wreckingball/compute_resource_extensions.rb +11 -5
- data/app/models/concerns/foreman_wreckingball/host_extensions.rb +9 -4
- data/app/models/concerns/foreman_wreckingball/vmware_facet_host_extensions.rb +42 -11
- data/app/models/concerns/foreman_wreckingball/vmware_hypervisor_facet_host_extensions.rb +6 -2
- data/app/models/foreman_wreckingball/cpu_hot_add_status.rb +1 -1
- data/app/models/foreman_wreckingball/hardware_version_status.rb +1 -1
- data/app/models/foreman_wreckingball/operatingsystem_status.rb +2 -0
- data/app/models/foreman_wreckingball/spectre_v2_status.rb +2 -2
- data/app/models/foreman_wreckingball/vmware_cluster.rb +14 -13
- data/app/models/foreman_wreckingball/vmware_facet.rb +18 -12
- data/app/models/foreman_wreckingball/vmware_hypervisor_facet.rb +3 -1
- data/app/services/foreman_wreckingball/vmware_cluster_importer.rb +7 -4
- data/app/services/foreman_wreckingball/vmware_hypervisor_importer.rb +44 -41
- data/app/views/foreman_wreckingball/hosts/_hosts.json.rabl +2 -2
- data/app/views/foreman_wreckingball/hosts/status_hosts.json.rabl +4 -4
- data/config/environments/production.rb +1 -1
- data/config/routes.rb +3 -2
- data/db/migrate/20181021111543_add_indexes_to_vmware_hypervisor_facets.rb +1 -1
- data/db/migrate/20240201094513_fix_wreckingball_settings_category_to_dsl.rb +13 -0
- data/lib/foreman_wreckingball/engine.rb +46 -52
- data/lib/foreman_wreckingball/scheduled_jobs.rb +1 -1
- data/lib/foreman_wreckingball/version.rb +1 -1
- data/lib/tasks/foreman_vmware_checks_tasks.rake +1 -21
- data/test/actions/foreman_wreckingball/bulk_remediate_test.rb +0 -1
- data/test/actions/foreman_wreckingball/host/refresh_vmware_facet_test.rb +6 -7
- data/test/actions/foreman_wreckingball/host/remediate_hardware_version_test.rb +6 -7
- data/test/actions/foreman_wreckingball/host/remediate_spectre_v2_test.rb +6 -7
- data/test/actions/foreman_wreckingball/host/remediate_vmware_operatingsystem_test.rb +8 -9
- data/test/actions/foreman_wreckingball/vmware/sync_compute_resource_test.rb +2 -2
- data/test/controllers/compute_resources_controller_test.rb +2 -2
- data/test/controllers/foreman_wreckingball/hosts_controller_test.rb +19 -18
- data/test/factories/foreman_wreckingball_factories.rb +10 -10
- data/test/integration/hosts_status_dashboard_test.rb +0 -4
- data/test/integration/hosts_status_managed_hosts_test.rb +4 -5
- data/test/models/compute_resources/vmware_test.rb +1 -1
- data/test/models/foreman_wreckingball/cpu_hot_add_status_test.rb +2 -2
- data/test/models/foreman_wreckingball/hardware_version_status_test.rb +3 -4
- data/test/models/foreman_wreckingball/operatingsystem_status_test.rb +5 -5
- data/test/models/foreman_wreckingball/spectre_v2_status_test.rb +4 -4
- data/test/models/foreman_wreckingball/tools_status_test.rb +2 -2
- data/test/models/foreman_wreckingball/vmware_facet_test.rb +10 -10
- data/test/models/foreman_wreckingball/vmware_hypervisor_facet_test.rb +4 -4
- data/test/models/host_test.rb +54 -52
- data/test/test_plugin_helper.rb +1 -1
- data/test/unit/foreman_wreckingball/access_permissions_test.rb +18 -0
- data/test/unit/foreman_wreckingball/vmware_cluster_importer_test.rb +6 -6
- data/test/unit/foreman_wreckingball/vmware_hypervisor_importer_test.rb +4 -4
- metadata +56 -37
- data/app/models/setting/wreckingball.rb +0 -26
@@ -13,17 +13,16 @@ module Actions
|
|
13
13
|
|
14
14
|
setup do
|
15
15
|
::Fog.mock!
|
16
|
-
::
|
17
|
-
::
|
16
|
+
Fog::Vsphere::Compute::Mock.any_instance.stubs(:get_vm_ref).returns(vm)
|
17
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:ready?).returns(false)
|
18
18
|
::ForemanWreckingball::SpectreV2Status.any_instance.stubs(:recent_hw_version?).returns(true)
|
19
19
|
# this is not stubbed correctly in fog-vsphere
|
20
|
-
::
|
21
|
-
Setting::Wreckingball.load_defaults
|
20
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:cpuHotAddEnabled).returns(false)
|
22
21
|
end
|
23
22
|
teardown { ::Fog.unmock! }
|
24
23
|
|
25
24
|
let(:compute_resource) do
|
26
|
-
cr = FactoryBot.create(:compute_resource, :vmware, :with_taxonomy, :
|
25
|
+
cr = FactoryBot.create(:compute_resource, :vmware, :with_taxonomy, uuid: 'Solutions')
|
27
26
|
ComputeResource.find(cr.id)
|
28
27
|
end
|
29
28
|
|
@@ -35,7 +34,7 @@ module Actions
|
|
35
34
|
compute_resource: compute_resource,
|
36
35
|
uuid: uuid
|
37
36
|
).tap do |host|
|
38
|
-
host.vmware_facet.update_attribute(:guest_id, 'asianux4_64Guest')
|
37
|
+
host.vmware_facet.update_attribute(:guest_id, 'asianux4_64Guest') # rubocop:disable Rails/SkipsModelValidations
|
39
38
|
end
|
40
39
|
end
|
41
40
|
|
@@ -45,7 +44,7 @@ module Actions
|
|
45
44
|
action.stubs(:action_subject).returns(host)
|
46
45
|
action.input.update(
|
47
46
|
host: {
|
48
|
-
id: host.id
|
47
|
+
id: host.id,
|
49
48
|
}
|
50
49
|
)
|
51
50
|
end
|
@@ -10,16 +10,15 @@ module Actions
|
|
10
10
|
setup do
|
11
11
|
::Fog.mock!
|
12
12
|
# this is not stubbed correctly in fog-vsphere
|
13
|
-
::
|
14
|
-
::
|
13
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:cpuHotAddEnabled).returns(false)
|
14
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:hardware_version).returns('vmx-13')
|
15
15
|
::ForemanWreckingball::SpectreV2Status.any_instance.stubs(:recent_hw_version?).returns(true)
|
16
16
|
::PowerManager::Virt.any_instance.stubs(:ready?).returns(true)
|
17
|
-
Setting::Wreckingball.load_defaults
|
18
17
|
end
|
19
18
|
teardown { ::Fog.unmock! }
|
20
19
|
|
21
20
|
let(:compute_resource) do
|
22
|
-
cr = FactoryBot.create(:compute_resource, :vmware, :with_taxonomy, :
|
21
|
+
cr = FactoryBot.create(:compute_resource, :vmware, :with_taxonomy, uuid: 'Solutions')
|
23
22
|
ComputeResource.find(cr.id)
|
24
23
|
end
|
25
24
|
let(:uuid) { '5032c8a5-9c5e-ba7a-3804-832a03e16381' }
|
@@ -41,7 +40,7 @@ module Actions
|
|
41
40
|
action.stubs(:action_subject).returns(host)
|
42
41
|
action.input.update(
|
43
42
|
host: {
|
44
|
-
id: host.id
|
43
|
+
id: host.id,
|
45
44
|
}
|
46
45
|
)
|
47
46
|
end
|
@@ -53,8 +52,8 @@ module Actions
|
|
53
52
|
|
54
53
|
test "it remediates the host's hardware version" do
|
55
54
|
assert_equal :success, runned_action.state
|
56
|
-
|
57
|
-
|
55
|
+
assert runned_action.output.fetch('state')
|
56
|
+
assert runned_action.output.fetch('initially_powered_on')
|
58
57
|
assert_equal 'vmx-13', host.reload.vmware_facet.hardware_version
|
59
58
|
end
|
60
59
|
end
|
@@ -10,16 +10,15 @@ module Actions
|
|
10
10
|
setup do
|
11
11
|
::Fog.mock!
|
12
12
|
# this is not stubbed correctly in fog-vsphere
|
13
|
-
::
|
14
|
-
::
|
13
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:cpuHotAddEnabled).returns(false)
|
14
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:hardware_version).returns('vmx-13')
|
15
15
|
::ForemanWreckingball::SpectreV2Status.any_instance.stubs(:recent_hw_version?).returns(true)
|
16
16
|
::PowerManager::Virt.any_instance.stubs(:ready?).returns(true)
|
17
|
-
Setting::Wreckingball.load_defaults
|
18
17
|
end
|
19
18
|
teardown { ::Fog.unmock! }
|
20
19
|
|
21
20
|
let(:compute_resource) do
|
22
|
-
cr = FactoryBot.create(:compute_resource, :vmware, :with_taxonomy, :
|
21
|
+
cr = FactoryBot.create(:compute_resource, :vmware, :with_taxonomy, uuid: 'Solutions')
|
23
22
|
ComputeResource.find(cr.id)
|
24
23
|
end
|
25
24
|
let(:uuid) { '5032c8a5-9c5e-ba7a-3804-832a03e16381' }
|
@@ -41,7 +40,7 @@ module Actions
|
|
41
40
|
action.stubs(:action_subject).returns(host)
|
42
41
|
action.input.update(
|
43
42
|
host: {
|
44
|
-
id: host.id
|
43
|
+
id: host.id,
|
45
44
|
}
|
46
45
|
)
|
47
46
|
end
|
@@ -53,8 +52,8 @@ module Actions
|
|
53
52
|
|
54
53
|
test "it remediates the host's spectre v2 status" do
|
55
54
|
assert_equal :success, runned_action.state
|
56
|
-
|
57
|
-
|
55
|
+
assert runned_action.output.fetch('state')
|
56
|
+
assert runned_action.output.fetch('initially_powered_on')
|
58
57
|
end
|
59
58
|
end
|
60
59
|
end
|
@@ -10,15 +10,14 @@ module Actions
|
|
10
10
|
setup do
|
11
11
|
::Fog.mock!
|
12
12
|
# this is not stubbed correctly in fog-vsphere
|
13
|
-
::
|
13
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:cpuHotAddEnabled).returns(false)
|
14
14
|
::ForemanWreckingball::SpectreV2Status.any_instance.stubs(:recent_hw_version?).returns(true)
|
15
15
|
::PowerManager::Virt.any_instance.stubs(:ready?).returns(true)
|
16
|
-
Setting::Wreckingball.load_defaults
|
17
16
|
end
|
18
17
|
teardown { ::Fog.unmock! }
|
19
18
|
|
20
19
|
let(:compute_resource) do
|
21
|
-
cr = FactoryBot.create(:compute_resource, :vmware, :with_taxonomy, :
|
20
|
+
cr = FactoryBot.create(:compute_resource, :vmware, :with_taxonomy, uuid: 'Solutions')
|
22
21
|
ComputeResource.find(cr.id)
|
23
22
|
end
|
24
23
|
let(:uuid) { '5032c8a5-9c5e-ba7a-3804-832a03e16381' }
|
@@ -27,7 +26,7 @@ module Actions
|
|
27
26
|
let(:operatingsystem) do
|
28
27
|
FactoryBot.create(
|
29
28
|
:operatingsystem,
|
30
|
-
architectures: [architectures(:x86_64)],
|
29
|
+
architectures: [architectures(:x86_64)], # rubocop:disable Naming/VariableNumber
|
31
30
|
major: 6,
|
32
31
|
minor: 1,
|
33
32
|
type: 'Redhat',
|
@@ -40,12 +39,12 @@ module Actions
|
|
40
39
|
:host,
|
41
40
|
:managed,
|
42
41
|
:with_vmware_facet,
|
43
|
-
architecture: architectures(:x86_64),
|
42
|
+
architecture: architectures(:x86_64), # rubocop:disable Naming/VariableNumber
|
44
43
|
operatingsystem: operatingsystem,
|
45
44
|
compute_resource: compute_resource,
|
46
45
|
uuid: uuid
|
47
46
|
).tap do |host|
|
48
|
-
host.vmware_facet.update_attribute(:guest_id, 'asianux4_64Guest')
|
47
|
+
host.vmware_facet.update_attribute(:guest_id, 'asianux4_64Guest') # rubocop:disable Rails/SkipsModelValidations
|
49
48
|
end
|
50
49
|
end
|
51
50
|
|
@@ -55,7 +54,7 @@ module Actions
|
|
55
54
|
action.stubs(:action_subject).returns(host)
|
56
55
|
action.input.update(
|
57
56
|
host: {
|
58
|
-
id: host.id
|
57
|
+
id: host.id,
|
59
58
|
}
|
60
59
|
)
|
61
60
|
end
|
@@ -69,8 +68,8 @@ module Actions
|
|
69
68
|
assert_equal :success, runned_action.state
|
70
69
|
assert_equal 'asianux4_64Guest', runned_action.output.fetch('old_operatingsystem_id')
|
71
70
|
assert_equal 'rhel6_64Guest', runned_action.output.fetch('new_operatingsytem_id')
|
72
|
-
|
73
|
-
|
71
|
+
assert runned_action.output.fetch('state')
|
72
|
+
assert runned_action.output.fetch('initially_powered_on')
|
74
73
|
assert_equal 'rhel6_64Guest', host.reload.vmware_facet.guest_id
|
75
74
|
end
|
76
75
|
end
|
@@ -27,7 +27,7 @@ module Actions
|
|
27
27
|
action.stubs(:action_subject).returns(compute_resource)
|
28
28
|
action.input.update(
|
29
29
|
compute_resource: {
|
30
|
-
id: compute_resource.id
|
30
|
+
id: compute_resource.id,
|
31
31
|
}
|
32
32
|
)
|
33
33
|
end
|
@@ -41,7 +41,7 @@ module Actions
|
|
41
41
|
test 'syncs a compute resource' do
|
42
42
|
assert ::ForemanWreckingball::VmwareCluster.count.zero?
|
43
43
|
assert_equal :success, runned_action.state
|
44
|
-
|
44
|
+
assert_not ::ForemanWreckingball::VmwareCluster.count.zero?
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
@@ -11,9 +11,9 @@ class ComputeResourcesControllerTest < ActionController::TestCase
|
|
11
11
|
skip if Gem::Version.new(Foreman::Version.new.to_s) < Gem::Version.new('1.19.0')
|
12
12
|
FactoryBot.create_list(:vmware_hypervisor_facet, 5, vmware_cluster: vmware_cluster)
|
13
13
|
|
14
|
-
get :show, params: { :
|
14
|
+
get :show, params: { id: compute_resource.to_param }, session: set_session_user
|
15
15
|
assert_response :success
|
16
|
-
|
16
|
+
assert_includes @response.body, 'Hypervisors'
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -6,10 +6,6 @@ module ForemanWreckingball
|
|
6
6
|
class HostsControllerTest < ActionController::TestCase
|
7
7
|
let(:fake_task) { OpenStruct.new(id: 123) }
|
8
8
|
|
9
|
-
setup do
|
10
|
-
Setting::Wreckingball.load_defaults
|
11
|
-
end
|
12
|
-
|
13
9
|
describe '#status_dashboard' do
|
14
10
|
context 'when there are no hosts with wreckingball statuses' do
|
15
11
|
test 'shows an empty status page' do
|
@@ -47,8 +43,8 @@ module ForemanWreckingball
|
|
47
43
|
let(:search) { "owner = current_user or (owner_type = Usergroup and owner_id = #{user.usergroups.first.id}) or hostgroup_id = #{hostgroup.id} or name ~ #{host_name_prefix}" }
|
48
44
|
let(:filter) do
|
49
45
|
FactoryBot.create(:filter,
|
50
|
-
|
51
|
-
|
46
|
+
search: search,
|
47
|
+
permissions: Permission.where(name: 'view_hosts'))
|
52
48
|
end
|
53
49
|
let(:role) { FactoryBot.create(:role) }
|
54
50
|
let(:user) { FactoryBot.create(:user, :with_mail, :with_usergroup, admin: false, roles: [role]) }
|
@@ -131,7 +127,7 @@ module ForemanWreckingball
|
|
131
127
|
|
132
128
|
test 'should filter host with vm' do
|
133
129
|
get :status_managed_hosts_dashboard, session: set_session_user
|
134
|
-
|
130
|
+
assert_not_includes assigns[:missing_hosts], @managed_host
|
135
131
|
end
|
136
132
|
end
|
137
133
|
|
@@ -140,8 +136,9 @@ module ForemanWreckingball
|
|
140
136
|
FactoryBot.create_list(:vmware_hardware_version_status, 3, :with_ok_status)
|
141
137
|
FactoryBot.create_list(:vmware_hardware_version_status, 4, :with_out_of_date_status)
|
142
138
|
|
143
|
-
get :status_hosts,
|
144
|
-
|
139
|
+
get :status_hosts,
|
140
|
+
params: { status: ::ForemanWreckingball::HardwareVersionStatus.host_association },
|
141
|
+
session: set_session_user, xhr: true
|
145
142
|
|
146
143
|
assert_response :ok
|
147
144
|
json = JSON.parse(response.body)
|
@@ -154,8 +151,9 @@ module ForemanWreckingball
|
|
154
151
|
ok_status = FactoryBot.create(:vmware_hardware_version_status, :with_ok_status)
|
155
152
|
out_of_date_status = FactoryBot.create(:vmware_hardware_version_status, :with_out_of_date_status)
|
156
153
|
|
157
|
-
get :status_hosts,
|
158
|
-
|
154
|
+
get :status_hosts,
|
155
|
+
params: { status: ::ForemanWreckingball::HardwareVersionStatus.host_association },
|
156
|
+
session: set_session_user, xhr: true
|
159
157
|
|
160
158
|
assert_response :ok
|
161
159
|
|
@@ -164,15 +162,16 @@ module ForemanWreckingball
|
|
164
162
|
hosts_names = data.map { |host| host['name'] }
|
165
163
|
assert_equal 1, data.size
|
166
164
|
assert_includes hosts_names, out_of_date_status.host.name
|
167
|
-
|
165
|
+
assert_not_includes hosts_names, ok_status.host.name
|
168
166
|
end
|
169
167
|
|
170
168
|
test 'returns hosts for spectre v2 status' do
|
171
169
|
FactoryBot.create_list(:vmware_spectre_v2_status, 1, :with_enabled)
|
172
170
|
FactoryBot.create_list(:vmware_spectre_v2_status, 2, :with_missing)
|
173
171
|
|
174
|
-
get :status_hosts,
|
175
|
-
|
172
|
+
get :status_hosts,
|
173
|
+
params: { status: ::ForemanWreckingball::SpectreV2Status.host_association },
|
174
|
+
session: set_session_user, xhr: true
|
176
175
|
|
177
176
|
data = JSON.parse(response.body)['data']
|
178
177
|
assert_equal 2, data.size
|
@@ -187,14 +186,16 @@ module ForemanWreckingball
|
|
187
186
|
end
|
188
187
|
|
189
188
|
test 'should show all hosts' do
|
190
|
-
get :status_hosts,
|
191
|
-
|
189
|
+
get :status_hosts,
|
190
|
+
params: { status: ::ForemanWreckingball::SpectreV2Status.host_association },
|
191
|
+
session: set_session_user, xhr: true
|
192
192
|
assert_equal 4, JSON.parse(response.body)['data'].count
|
193
193
|
end
|
194
194
|
|
195
195
|
test 'should show only owned hosts' do
|
196
|
-
get :status_hosts,
|
197
|
-
|
196
|
+
get :status_hosts,
|
197
|
+
params: { status: ::ForemanWreckingball::SpectreV2Status.host_association, owned_only: true },
|
198
|
+
session: set_session_user, xhr: true
|
198
199
|
assert_equal 2, JSON.parse(response.body)['data'].count
|
199
200
|
end
|
200
201
|
end
|
@@ -3,8 +3,8 @@
|
|
3
3
|
FactoryBot.define do
|
4
4
|
factory :vmware_facet, class: 'ForemanWreckingball::VmwareFacet' do
|
5
5
|
vmware_cluster
|
6
|
-
tools_state { 2 }
|
7
|
-
power_state { 1 }
|
6
|
+
tools_state { 2 } # :toolsOk
|
7
|
+
power_state { 1 } # :poweredOn
|
8
8
|
cpus { 2 }
|
9
9
|
corespersocket { 1 }
|
10
10
|
memory_mb { 8192 }
|
@@ -32,7 +32,7 @@ FactoryBot.define do
|
|
32
32
|
'cpuid.NX',
|
33
33
|
'cpuid.RDTSCP',
|
34
34
|
'cpuid.LM',
|
35
|
-
'cpuid.Intel'
|
35
|
+
'cpuid.Intel',
|
36
36
|
]
|
37
37
|
end
|
38
38
|
host
|
@@ -127,14 +127,14 @@ FactoryBot.define do
|
|
127
127
|
'vpmc.numFixedCtrs',
|
128
128
|
'vpmc.numGenCtrs',
|
129
129
|
'vpmc.version',
|
130
|
-
'vt.realmode'
|
130
|
+
'vt.realmode',
|
131
131
|
]
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
135
135
|
factory :vmware_cluster, class: 'ForemanWreckingball::VmwareCluster' do
|
136
136
|
sequence(:name) { |n| "Cluster #{n}" }
|
137
|
-
association :compute_resource, factory: [
|
137
|
+
association :compute_resource, factory: %i[compute_resource vmware]
|
138
138
|
|
139
139
|
trait(:with_hosts) do
|
140
140
|
after(:create) do |vmware_cluster|
|
@@ -156,25 +156,25 @@ FactoryBot.define do
|
|
156
156
|
end
|
157
157
|
|
158
158
|
factory :vmware_tools_status, class: 'ForemanWreckingball::ToolsStatus' do
|
159
|
-
association :host, factory: [
|
159
|
+
association :host, factory: %i[host with_vmware_facet]
|
160
160
|
reported_at { Time.now.utc }
|
161
161
|
after(:build) { |status| status.status = status.to_status }
|
162
162
|
end
|
163
163
|
|
164
164
|
factory :vmware_operatingsystem_status, class: 'ForemanWreckingball::OperatingsystemStatus' do
|
165
|
-
association :host, factory: [
|
165
|
+
association :host, factory: %i[host with_vmware_facet]
|
166
166
|
reported_at { Time.now.utc }
|
167
167
|
after(:build) { |status| status.status = status.to_status }
|
168
168
|
end
|
169
169
|
|
170
170
|
factory :vmware_cpu_hot_add_status, class: 'ForemanWreckingball::CpuHotAddStatus' do
|
171
|
-
association :host, factory: [
|
171
|
+
association :host, factory: %i[host with_vmware_facet]
|
172
172
|
reported_at { Time.now.utc }
|
173
173
|
after(:build) { |status| status.status = status.to_status }
|
174
174
|
end
|
175
175
|
|
176
176
|
factory :vmware_spectre_v2_status, class: 'ForemanWreckingball::SpectreV2Status' do
|
177
|
-
association :host, factory: [
|
177
|
+
association :host, factory: %i[host with_vmware_facet]
|
178
178
|
reported_at { Time.now.utc }
|
179
179
|
after(:build) { |status| status.status = status.to_status }
|
180
180
|
|
@@ -188,7 +188,7 @@ FactoryBot.define do
|
|
188
188
|
end
|
189
189
|
|
190
190
|
factory :vmware_hardware_version_status, class: 'ForemanWreckingball::HardwareVersionStatus' do
|
191
|
-
association :host, factory: [
|
191
|
+
association :host, factory: %i[host with_vmware_facet]
|
192
192
|
reported_at { Time.now.utc }
|
193
193
|
after(:build) { |status| status.status = status.to_status }
|
194
194
|
|
@@ -3,10 +3,6 @@
|
|
3
3
|
require 'integration_test_plugin_helper'
|
4
4
|
|
5
5
|
class HostsStatusDashboardTest < ActionDispatch::IntegrationTest
|
6
|
-
setup do
|
7
|
-
Setting::Wreckingball.load_defaults
|
8
|
-
end
|
9
|
-
|
10
6
|
test 'shows different vmware host statuses' do
|
11
7
|
FactoryBot.create_list(:host, 10)
|
12
8
|
FactoryBot.create_list(:vmware_tools_status, 1)
|
@@ -4,7 +4,6 @@ require 'integration_test_plugin_helper'
|
|
4
4
|
|
5
5
|
class HostsStatusManagedHostsTest < ActionDispatch::IntegrationTest
|
6
6
|
setup do
|
7
|
-
Setting::Wreckingball.load_defaults
|
8
7
|
Fog.mock!
|
9
8
|
end
|
10
9
|
|
@@ -33,7 +32,7 @@ class HostsStatusManagedHostsTest < ActionDispatch::IntegrationTest
|
|
33
32
|
|
34
33
|
list = page.find('#missing_vms')
|
35
34
|
assert_includes list.text, missing_host.name
|
36
|
-
|
35
|
+
assert_not_includes list.text, managed_host.name
|
37
36
|
end
|
38
37
|
|
39
38
|
test 'shows hosts associated to wrong compute resource' do
|
@@ -62,7 +61,7 @@ class HostsStatusManagedHostsTest < ActionDispatch::IntegrationTest
|
|
62
61
|
visit status_managed_hosts_dashboard_hosts_path
|
63
62
|
|
64
63
|
list = page.find('#wrong_hosts')
|
65
|
-
|
64
|
+
assert_not_includes list.text, correct_host.name
|
66
65
|
assert_includes list.text, incorrect_host.name
|
67
66
|
end
|
68
67
|
|
@@ -98,8 +97,8 @@ class HostsStatusManagedHostsTest < ActionDispatch::IntegrationTest
|
|
98
97
|
visit status_managed_hosts_dashboard_hosts_path
|
99
98
|
|
100
99
|
list = page.find('#more_than_one_hosts')
|
101
|
-
|
100
|
+
assert_not_includes list.text, managed1_host.name
|
102
101
|
assert_includes list.text, managed2_host.name
|
103
|
-
|
102
|
+
assert_not_includes list.text, managed3_host.name
|
104
103
|
end
|
105
104
|
end
|
@@ -5,7 +5,7 @@ require 'test_plugin_helper'
|
|
5
5
|
class VmwareTest < ActiveSupport::TestCase
|
6
6
|
setup { Fog.mock! }
|
7
7
|
teardown { Fog.unmock! }
|
8
|
-
let(:compute_resource) { FactoryBot.build(:vmware_cr, :
|
8
|
+
let(:compute_resource) { FactoryBot.build(:vmware_cr, uuid: 'Solutions') }
|
9
9
|
|
10
10
|
test '#hypervisors returns hosts by cluster' do
|
11
11
|
hosts = compute_resource.hypervisors(cluster_id: 'Solutionscluster').map(&:name)
|
@@ -51,11 +51,11 @@ module ForemanWreckingball
|
|
51
51
|
end
|
52
52
|
|
53
53
|
test 'status is not relevant' do
|
54
|
-
|
54
|
+
assert_not status.relevant?
|
55
55
|
end
|
56
56
|
|
57
57
|
test 'no performance degration is indicated' do
|
58
|
-
|
58
|
+
assert_not status.performance_degration?
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -6,7 +6,6 @@ module ForemanWreckingball
|
|
6
6
|
class HardwareVersionStatusTest < ActiveSupport::TestCase
|
7
7
|
setup do
|
8
8
|
User.current = users(:admin)
|
9
|
-
Setting::Wreckingball.load_defaults
|
10
9
|
end
|
11
10
|
|
12
11
|
should belong_to(:host)
|
@@ -27,14 +26,14 @@ module ForemanWreckingball
|
|
27
26
|
|
28
27
|
test '#relevant is only for hosts with a vmware facet' do
|
29
28
|
h = FactoryBot.build(:host, :managed)
|
30
|
-
|
29
|
+
assert_not ForemanWreckingball::ToolsStatus.new(host: h).relevant?
|
31
30
|
assert status.relevant?
|
32
31
|
end
|
33
32
|
|
34
33
|
test '#relevant is for hosts with a hardware version' do
|
35
34
|
assert status.relevant?
|
36
35
|
host.vmware_facet.hardware_version = nil
|
37
|
-
|
36
|
+
assert_not status.relevant?
|
38
37
|
end
|
39
38
|
|
40
39
|
describe 'status calculation' do
|
@@ -81,7 +80,7 @@ module ForemanWreckingball
|
|
81
80
|
|
82
81
|
test 'is false when hw version is ancient' do
|
83
82
|
status.host.vmware_facet.hardware_version = 'vmx-3'
|
84
|
-
|
83
|
+
assert_not status.recent_hw_version?
|
85
84
|
end
|
86
85
|
end
|
87
86
|
end
|
@@ -13,7 +13,7 @@ module ForemanWreckingball
|
|
13
13
|
let(:operatingsystem) do
|
14
14
|
FactoryBot.create(
|
15
15
|
:operatingsystem,
|
16
|
-
architectures: [architectures(:x86_64)],
|
16
|
+
architectures: [architectures(:x86_64)], # rubocop:disable Naming/VariableNumber
|
17
17
|
major: 6,
|
18
18
|
minor: 1,
|
19
19
|
type: 'Redhat',
|
@@ -25,7 +25,7 @@ module ForemanWreckingball
|
|
25
25
|
:host,
|
26
26
|
:managed,
|
27
27
|
:with_vmware_facet,
|
28
|
-
architecture: architectures(:x86_64),
|
28
|
+
architecture: architectures(:x86_64), # rubocop:disable Naming/VariableNumber
|
29
29
|
operatingsystem: operatingsystem
|
30
30
|
)
|
31
31
|
end
|
@@ -38,7 +38,7 @@ module ForemanWreckingball
|
|
38
38
|
|
39
39
|
test '#relevant is only for hosts with a vmware facet' do
|
40
40
|
h = FactoryBot.build(:host, :managed)
|
41
|
-
|
41
|
+
assert_not ForemanWreckingball::ToolsStatus.new(host: h).relevant?
|
42
42
|
assert status.relevant?
|
43
43
|
end
|
44
44
|
|
@@ -81,12 +81,12 @@ module ForemanWreckingball
|
|
81
81
|
describe '#os_matches_identifier?' do
|
82
82
|
test 'when architecture does not match' do
|
83
83
|
host.architecture = architectures(:sparc)
|
84
|
-
|
84
|
+
assert_not status.os_matches_identifier?
|
85
85
|
end
|
86
86
|
|
87
87
|
test 'when operatingsystem does not match' do
|
88
88
|
host.operatingsystem = operatingsystems(:ubuntu1210)
|
89
|
-
|
89
|
+
assert_not status.os_matches_identifier?
|
90
90
|
end
|
91
91
|
|
92
92
|
test 'when architecture, osfamily, name and major match' do
|
@@ -26,14 +26,14 @@ module ForemanWreckingball
|
|
26
26
|
|
27
27
|
test '#relevant is only for hosts with a vmware facet' do
|
28
28
|
h = FactoryBot.build(:host, :managed)
|
29
|
-
|
29
|
+
assert_not ForemanWreckingball::ToolsStatus.new(host: h).relevant?
|
30
30
|
assert status.relevant?
|
31
31
|
end
|
32
32
|
|
33
33
|
test '#relevant is for hosts with cpu features' do
|
34
34
|
assert status.relevant?
|
35
35
|
host.vmware_facet.cpu_features = []
|
36
|
-
|
36
|
+
assert_not status.relevant?
|
37
37
|
end
|
38
38
|
|
39
39
|
describe 'status calculation' do
|
@@ -84,14 +84,14 @@ module ForemanWreckingball
|
|
84
84
|
|
85
85
|
test 'is false when hw version is ancient' do
|
86
86
|
host.vmware_facet.hardware_version = 'vmx-3'
|
87
|
-
|
87
|
+
assert_not status.recent_hw_version?
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
91
|
describe '#required_cpu_features_present?' do
|
92
92
|
test 'is false when neither cpuid.IBRS, cpuid.IBPB nor cpuid.STIBP is present' do
|
93
93
|
host.vmware_facet.cpu_features = ['cpuid.SSE42']
|
94
|
-
|
94
|
+
assert_not status.required_cpu_features_present?
|
95
95
|
end
|
96
96
|
|
97
97
|
test 'is true when cpuid.IBRS is present' do
|
@@ -23,12 +23,12 @@ module ForemanWreckingball
|
|
23
23
|
assert status.relevant?
|
24
24
|
|
25
25
|
host.build = true
|
26
|
-
|
26
|
+
assert_not status.relevant?
|
27
27
|
end
|
28
28
|
|
29
29
|
test '#relevant is only for hosts with a vmware facet' do
|
30
30
|
h = FactoryBot.build(:host, :managed)
|
31
|
-
|
31
|
+
assert_not ForemanWreckingball::ToolsStatus.new(host: h).relevant?
|
32
32
|
end
|
33
33
|
|
34
34
|
describe 'status calculation' do
|
@@ -19,12 +19,12 @@ module ForemanWreckingball
|
|
19
19
|
let(:vmware_facet) { host.vmware_facet }
|
20
20
|
|
21
21
|
test 'is true when vm is powered on' do
|
22
|
-
|
22
|
+
assert vmware_facet.vm_ready?
|
23
23
|
end
|
24
24
|
|
25
25
|
test 'is false when vm is not powered on' do
|
26
26
|
vmware_facet.power_state = 'suspended'
|
27
|
-
|
27
|
+
assert_not vmware_facet.vm_ready?
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -36,7 +36,7 @@ module ForemanWreckingball
|
|
36
36
|
featureRequirement: [
|
37
37
|
'cpuid.SSE3',
|
38
38
|
'cpuid.AES',
|
39
|
-
'cpuid.Intel'
|
39
|
+
'cpuid.Intel',
|
40
40
|
].map do |cpu_feature|
|
41
41
|
OpenStruct.new(key: cpu_feature)
|
42
42
|
end
|
@@ -45,7 +45,7 @@ module ForemanWreckingball
|
|
45
45
|
end
|
46
46
|
|
47
47
|
let(:compute_resource) do
|
48
|
-
cr = FactoryBot.create(:compute_resource, :vmware, :with_taxonomy, :
|
48
|
+
cr = FactoryBot.create(:compute_resource, :vmware, :with_taxonomy, uuid: 'Solutions')
|
49
49
|
ComputeResource.find(cr.id)
|
50
50
|
end
|
51
51
|
|
@@ -62,12 +62,12 @@ module ForemanWreckingball
|
|
62
62
|
|
63
63
|
setup do
|
64
64
|
::Fog.mock!
|
65
|
-
::
|
65
|
+
Fog::Vsphere::Compute::Mock.any_instance.stubs(:get_vm_ref).returns(vm)
|
66
66
|
# this is not stubbed correctly in fog-vsphere
|
67
|
-
::
|
68
|
-
::
|
69
|
-
::
|
70
|
-
::
|
67
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:cpuHotAddEnabled).returns(false)
|
68
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:hardware_version).returns('vmx-9')
|
69
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:corespersocket).returns(1)
|
70
|
+
Fog::Vsphere::Compute::Server.any_instance.stubs(:power_state).returns('poweredOn')
|
71
71
|
end
|
72
72
|
teardown { ::Fog.unmock! }
|
73
73
|
|
@@ -79,7 +79,7 @@ module ForemanWreckingball
|
|
79
79
|
assert_equal 'rhel6_64Guest', vmware_facet.guest_id
|
80
80
|
assert_equal 'toolsOk', vmware_facet.tools_state
|
81
81
|
assert_equal 'poweredOn', vmware_facet.power_state
|
82
|
-
|
82
|
+
assert_not vmware_facet.cpu_hot_add
|
83
83
|
assert_equal ['cpuid.SSE3', 'cpuid.AES', 'cpuid.Intel'], vmware_facet.cpu_features
|
84
84
|
assert_equal 'vmx-9', vmware_facet.hardware_version
|
85
85
|
end
|