foreman_openscap 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/api/v2/compliance/arf_reports_controller.rb +1 -1
  3. data/app/controllers/api/v2/compliance/policies_controller.rb +2 -2
  4. data/app/controllers/api/v2/compliance/scap_contents_controller.rb +1 -1
  5. data/app/controllers/api/v2/compliance/tailoring_files_controller.rb +1 -1
  6. data/app/controllers/arf_reports_controller.rb +9 -9
  7. data/app/controllers/concerns/foreman/controller/parameters/policy.rb +1 -1
  8. data/app/controllers/openscap_proxies_controller.rb +5 -5
  9. data/app/controllers/policies_controller.rb +16 -17
  10. data/app/controllers/policy_dashboard_controller.rb +2 -1
  11. data/app/controllers/scap_contents_controller.rb +2 -2
  12. data/app/controllers/tailoring_files_controller.rb +4 -4
  13. data/app/helpers/arf_report_dashboard_helper.rb +2 -3
  14. data/app/helpers/arf_reports_helper.rb +1 -1
  15. data/app/helpers/compliance_hosts_helper.rb +1 -2
  16. data/app/helpers/policies_helper.rb +4 -4
  17. data/app/helpers/policy_dashboard_helper.rb +2 -3
  18. data/app/lib/proxy_api/available_proxy.rb +2 -2
  19. data/app/lib/proxy_api/openscap.rb +1 -1
  20. data/app/mailers/foreman_openscap/policy_mailer.rb +1 -1
  21. data/app/models/concerns/foreman_openscap/compliance_status_scoped_search.rb +7 -8
  22. data/app/models/concerns/foreman_openscap/host_extensions.rb +44 -25
  23. data/app/models/concerns/foreman_openscap/log_extensions.rb +1 -1
  24. data/app/models/concerns/foreman_openscap/openscap_proxy_core_extensions.rb +3 -3
  25. data/app/models/foreman_openscap/arf_report.rb +34 -12
  26. data/app/models/foreman_openscap/policy.rb +19 -17
  27. data/app/models/foreman_openscap/scap_content.rb +4 -2
  28. data/app/services/foreman_openscap/arf_report_status_calculator.rb +1 -1
  29. data/app/services/foreman_openscap/host_report_dashboard/data.rb +2 -2
  30. data/app/services/foreman_openscap/policy_dashboard/data.rb +4 -3
  31. data/app/validators/foreman_openscap/data_stream_validator.rb +2 -2
  32. data/app/views/policy_dashboard/_policy_status_widget.html.erb +5 -5
  33. data/config/routes.rb +6 -6
  34. data/db/migrate/20141015115511_add_arf_report_unique_constraint.rb +1 -1
  35. data/db/migrate/20141113221054_create_scaptimony_scap_content_profiles.rb +1 -1
  36. data/db/migrate/20141116170632_remove_xccdf_profile_from_scaptimony_policies.rb +1 -1
  37. data/db/migrate/20141121120326_create_scaptimony_arf_report_breakdowns.rb +15 -15
  38. data/db/migrate/20141121164042_replace_arf_report_breakdown_view.rb +15 -15
  39. data/db/migrate/20141206211151_create_scaptimony_assets_policies.rb +1 -1
  40. data/db/migrate/20150115155947_add_scaptimony_scap_content_digest.rb +1 -1
  41. data/db/migrate/20150821100137_migrate_from_scaptimony.rb +1 -1
  42. data/db/migrate/20160830113437_remove_deleted_policy.rb +1 -1
  43. data/db/migrate/20160925213031_change_scap_widget_names.rb +8 -8
  44. data/db/migrate/20161223153249_add_permissions_to_arf_report.rb +4 -4
  45. data/db/seeds.d/75-job_templates.rb +6 -1
  46. data/db/seeds.d/openscap_feature.rb +1 -1
  47. data/lib/foreman_openscap/data_migration.rb +1 -2
  48. data/lib/foreman_openscap/engine.rb +33 -34
  49. data/lib/foreman_openscap/helper.rb +5 -7
  50. data/lib/foreman_openscap/message_cleaner.rb +32 -0
  51. data/lib/foreman_openscap/version.rb +1 -1
  52. data/lib/tasks/foreman_openscap_tasks.rake +12 -0
  53. data/locale/de/foreman_openscap.po +205 -43
  54. data/locale/en_GB/foreman_openscap.po +205 -43
  55. data/locale/es/foreman_openscap.po +205 -43
  56. data/locale/foreman_openscap.pot +418 -185
  57. data/locale/fr/foreman_openscap.po +205 -43
  58. data/locale/gl/foreman_openscap.po +205 -43
  59. data/locale/it/foreman_openscap.po +205 -43
  60. data/locale/ja/foreman_openscap.po +205 -43
  61. data/locale/ko/foreman_openscap.po +205 -43
  62. data/locale/pt_BR/foreman_openscap.po +205 -43
  63. data/locale/ru/foreman_openscap.po +205 -43
  64. data/locale/sv_SE/foreman_openscap.po +205 -43
  65. data/locale/zh_CN/foreman_openscap.po +205 -43
  66. data/locale/zh_TW/foreman_openscap.po +205 -43
  67. data/test/factories/arf_report_factory.rb +2 -2
  68. data/test/factories/asset_factory.rb +5 -0
  69. data/test/factories/compliance_host_factory.rb +4 -4
  70. data/test/factories/compliance_log_factory.rb +9 -4
  71. data/test/files/arf_report/arf_report.json +1 -0
  72. data/test/files/arf_report/arf_report_msg_desc_changed.json +1 -0
  73. data/test/files/arf_report/arf_report_msg_value_changed.json +1 -0
  74. data/test/functional/api/v2/compliance/arf_reports_controller_test.rb +111 -1
  75. data/test/functional/api/v2/compliance/policies_controller_test.rb +1 -1
  76. data/test/functional/api/v2/compliance/tailoring_files_controller_test.rb +4 -4
  77. data/test/test_plugin_helper.rb +4 -4
  78. data/test/unit/arf_report_test.rb +5 -5
  79. data/test/unit/concerns/host_extensions_test.rb +64 -4
  80. data/test/unit/message_cleaner_test.rb +31 -0
  81. data/test/unit/policy_mailer_test.rb +1 -2
  82. data/test/unit/scap_content_test.rb +3 -5
  83. data/test/unit/services/report_dashboard/data_test.rb +1 -1
  84. data/test/unit/services/tailoring_files_proxy_check_test.rb +4 -4
  85. metadata +12 -6
@@ -21,11 +21,11 @@ module ForemanOpenscap
21
21
  end
22
22
 
23
23
  assets_to_precompile =
24
- Dir.chdir(root) do
25
- Dir['app/assets/javascripts/foreman_openscap/**/*', 'app/assets/stylesheets/foreman_openscap/**/*'].map do |f|
26
- f.split(File::SEPARATOR, 4).last
27
- end
24
+ Dir.chdir(root) do
25
+ Dir['app/assets/javascripts/foreman_openscap/**/*', 'app/assets/stylesheets/foreman_openscap/**/*'].map do |f|
26
+ f.split(File::SEPARATOR, 4).last
28
27
  end
28
+ end
29
29
 
30
30
  initializer 'foreman_openscap.assets.precompile' do |app|
31
31
  app.config.assets.precompile += assets_to_precompile
@@ -33,7 +33,7 @@ module ForemanOpenscap
33
33
 
34
34
  initializer 'foreman_openscap.configure_assets', :group => :assets do
35
35
  SETTINGS[:foreman_openscap] =
36
- {:assets => {:precompile => assets_to_precompile}}
36
+ {:assets => {:precompile => assets_to_precompile}}
37
37
  end
38
38
 
39
39
  initializer 'foreman_openscap.apipie' do
@@ -51,42 +51,42 @@ module ForemanOpenscap
51
51
 
52
52
  # Add permissions
53
53
  security_block :foreman_openscap do
54
- permission :view_arf_reports, {:arf_reports => [:index, :show, :parse_html, :show_html,
55
- :parse_bzip, :auto_complete_search, :download_html],
56
- 'api/v2/compliance/arf_reports' => [:index, :show, :download, :download_html],
54
+ permission :view_arf_reports, {:arf_reports => %i(index show parse_html show_html
55
+ parse_bzip auto_complete_search download_html),
56
+ 'api/v2/compliance/arf_reports' => %i(index show download download_html),
57
57
  :compliance_hosts => [:show]},
58
58
  :resource_type => 'ForemanOpenscap::ArfReport'
59
- permission :destroy_arf_reports, {:arf_reports => [:destroy, :delete_multiple, :submit_delete_multiple],
59
+ permission :destroy_arf_reports, {:arf_reports => %i(destroy delete_multiple submit_delete_multiple),
60
60
  'api/v2/compliance/arf_reports' => [:destroy]},
61
61
  :resource_type => 'ForemanOpenscap::ArfReport'
62
62
  permission :create_arf_reports, {'api/v2/compliance/arf_reports' => [:create]},
63
63
  :resource_type => 'ForemanOpenscap::ArfReport'
64
64
 
65
- permission :view_policies, {:policies => [:index, :show, :parse, :auto_complete_search],
65
+ permission :view_policies, {:policies => %i(index show parse auto_complete_search),
66
66
  :policy_dashboard => [:index],
67
67
  :compliance_dashboard => [:index],
68
- 'api/v2/compliance/policies' => [:index, :show, :content]},
68
+ 'api/v2/compliance/policies' => %i(index show content)},
69
69
  :resource_type => 'ForemanOpenscap::Policy'
70
- permission :edit_policies, {:policies => [:edit, :update, :scap_content_selected],
70
+ permission :edit_policies, {:policies => %i(edit update scap_content_selected),
71
71
  'api/v2/compliance/policies' => [:update]},
72
72
  :resource_type => 'ForemanOpenscap::Policy'
73
- permission :create_policies, {:policies => [:new, :create],
73
+ permission :create_policies, {:policies => %i(new create),
74
74
  'api/v2/compliance/policies' => [:create]},
75
75
  :resource_type => 'ForemanOpenscap::Policy'
76
76
  permission :destroy_policies, {:policies => [:destroy],
77
77
  'api/v2/compliance/policies' => [:destroy]},
78
78
  :resource_type => 'ForemanOpenscap::Policy'
79
- permission :assign_policies, {:policies => [:select_multiple_hosts, :update_multiple_hosts,
80
- :disassociate_multiple_hosts,
81
- :remove_policy_from_multiple_hosts]},
79
+ permission :assign_policies, {:policies => %i(select_multiple_hosts update_multiple_hosts
80
+ disassociate_multiple_hosts
81
+ remove_policy_from_multiple_hosts)},
82
82
  :resource_type => 'ForemanOpenscap::Policy'
83
- permission :view_scap_contents, {:scap_contents => [:index, :show, :auto_complete_search],
84
- 'api/v2/compliance/scap_contents' => [:index, :show, :xml]},
83
+ permission :view_scap_contents, {:scap_contents => %i(index show auto_complete_search),
84
+ 'api/v2/compliance/scap_contents' => %i(index show xml)},
85
85
  :resource_type => 'ForemanOpenscap::ScapContent'
86
- permission :edit_scap_contents, {:scap_contents => [:edit, :update],
86
+ permission :edit_scap_contents, {:scap_contents => %i(edit update),
87
87
  'api/v2/compliance/scap_contents' => [:update]},
88
88
  :resource_type => 'ForemanOpenscap::ScapContent'
89
- permission :create_scap_contents, {:scap_contents => [:new, :create],
89
+ permission :create_scap_contents, {:scap_contents => %i(new create),
90
90
  'api/v2/compliance/scap_contents' => [:create]},
91
91
  :resource_type => 'ForemanOpenscap::ScapContent'
92
92
  permission :destroy_scap_contents, {:scap_contents => [:destroy],
@@ -94,15 +94,15 @@ module ForemanOpenscap
94
94
  :resource_type => 'ForemanOpenscap::ScapContent'
95
95
  permission :edit_hosts, { :hosts => [:openscap_proxy_changed] }, :resource_type => "Host"
96
96
  permission :edit_hostgroups, { :hostgroups => [:openscap_proxy_changed] }, :resource_type => "Hostgroup"
97
- permission :create_tailoring_files, { :tailoring_files => [:create, :new],
97
+ permission :create_tailoring_files, { :tailoring_files => %i(create new),
98
98
  'api/v2/compliance/tailoring_files' => [:create]},
99
99
  :resource_type => 'ForemanOpenscap::TailoringFile'
100
- permission :view_tailoring_files, { :tailoring_files => [:index, :auto_complete_search, :xml],
100
+ permission :view_tailoring_files, { :tailoring_files => %i(index auto_complete_search xml),
101
101
  :policies => [:tailoring_file_selected],
102
- 'api/v2/compliance/tailoring_files' => [:show, :xml, :index],
102
+ 'api/v2/compliance/tailoring_files' => %i(show xml index),
103
103
  'api/v2/compliance/policies' => [:tailoring] },
104
104
  :resource_type => 'ForemanOpenscap::TailoringFile'
105
- permission :edit_tailoring_files, { :tailoring_files => [:edit, :update],
105
+ permission :edit_tailoring_files, { :tailoring_files => %i(edit update),
106
106
  'api/v2/compliance/tailoring_files' => [:update] },
107
107
  :resource_type => 'ForemanOpenscap::TailoringFile'
108
108
  permission :destroy_tailoring_files, { :tailoring_files => [:destroy],
@@ -112,12 +112,12 @@ module ForemanOpenscap
112
112
  :resource_type => 'SmartProxy'
113
113
  end
114
114
 
115
- role "Compliance viewer", [:view_arf_reports, :view_policies, :view_scap_contents, :view_tailoring_files, :view_openscap_proxies]
116
- role "Compliance manager", [:view_arf_reports, :view_policies, :view_scap_contents,
117
- :destroy_arf_reports, :edit_policies, :edit_scap_contents, :assign_policies,
118
- :create_policies, :create_scap_contents, :destroy_policies, :destroy_scap_contents,
119
- :create_tailoring_files, :view_tailoring_files, :edit_tailoring_files, :destroy_tailoring_files,
120
- :view_openscap_proxies]
115
+ role "Compliance viewer", %i(view_arf_reports view_policies view_scap_contents view_tailoring_files view_openscap_proxies)
116
+ role "Compliance manager", %i(view_arf_reports view_policies view_scap_contents
117
+ destroy_arf_reports edit_policies edit_scap_contents assign_policies
118
+ create_policies create_scap_contents destroy_policies destroy_scap_contents
119
+ create_tailoring_files view_tailoring_files edit_tailoring_files destroy_tailoring_files
120
+ view_openscap_proxies)
121
121
  role "Create ARF report", [:create_arf_reports] # special as only Proxy can create
122
122
 
123
123
  add_all_permissions_to_default_roles
@@ -150,8 +150,7 @@ module ForemanOpenscap
150
150
  "dashboard link hosts in error state", "dashboard link good host reports",
151
151
  "dashboard link hosts that had pending changes", "dashboard link out of sync hosts",
152
152
  "dashboard link hosts with no reports", "dashboard link hosts with alerts disabled",
153
- "widgets not in dashboard show up in list"]
154
- })
153
+ "widgets not in dashboard show up in list"]})
155
154
  # strong params
156
155
  parameter_filter Host::Managed, :openscap_proxy_id, :openscap_proxy
157
156
  parameter_filter Hostgroup, :openscap_proxy_id, :openscap_proxy
@@ -171,11 +170,11 @@ module ForemanOpenscap
171
170
  end
172
171
 
173
172
  add_controller_action_scope(::Api::V2::HostsController, :index) do |base_scope|
174
- base_scope.includes(:policies)
173
+ base_scope.preload(:policies)
175
174
  end
176
175
 
177
176
  add_controller_action_scope(::HostsController, :index) do |base_scope|
178
- base_scope.includes(:policies)
177
+ base_scope.preload(:policies)
179
178
  end
180
179
  end
181
180
  end
@@ -6,22 +6,20 @@ module ForemanOpenscap::Helper
6
6
  end
7
7
 
8
8
  def self.find_name_or_uuid_by_host(host)
9
- (host.respond_to?(:subscription_facet) && !host.subscription_facet.nil?) ? host.subscription_facet.try(:uuid) : host.name
9
+ host.respond_to?(:subscription_facet) && !host.subscription_facet.nil? ? host.subscription_facet.try(:uuid) : host.name
10
10
  end
11
11
 
12
- private
13
-
14
12
  def self.find_host_by_name_or_uuid(cname)
15
13
  if Facets.registered_facets.keys.include?(:subscription_facet)
16
- host = Katello::Host::SubscriptionFacet.find_by_uuid(cname).try(:host)
17
- host ||= Host.find_by_name(cname)
14
+ host = Katello::Host::SubscriptionFacet.find_by(uuid: cname).try(:host)
15
+ host ||= Host.find_by(name: cname)
18
16
  else
19
- host = Host.find_by_name(cname)
17
+ host = Host.find_by(name: cname)
20
18
  end
21
19
 
22
20
  unless host
23
21
  Rails.logger.error "Could not find Host with name: #{cname}"
24
- fail ActiveRecord::RecordNotFound
22
+ raise ActiveRecord::RecordNotFound
25
23
  end
26
24
  host
27
25
  end
@@ -0,0 +1,32 @@
1
+ module ForemanOpenscap
2
+ class MessageCleaner
3
+ def clean
4
+ ForemanOpenscap::Policy.unscoped.all.find_in_batches do |batch|
5
+ batch.each do |policy|
6
+ process_policy policy
7
+ end
8
+ end
9
+ end
10
+
11
+ private
12
+
13
+ def process_policy(policy)
14
+ reports_of_policy = ForemanOpenscap::ArfReport.unscoped
15
+ .of_policy(policy)
16
+ .order("#{ForemanOpenscap::ArfReport.table_name}.created_at DESC")
17
+ latest = reports_of_policy.first
18
+ reports_of_policy.each do |report|
19
+ next if report == latest
20
+ report.logs.each do |log|
21
+ latest_log = latest.logs.find_by(:source_id => log.source_id)
22
+ next unless latest_log
23
+ next if log == latest_log
24
+ latest_message = latest_log.message
25
+ msg = log.message
26
+ log.update_attribute('message_id', latest_message.id)
27
+ msg.destroy! if msg.logs.empty?
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,3 @@
1
1
  module ForemanOpenscap
2
- VERSION = "0.7.1"
2
+ VERSION = "0.7.2".freeze
3
3
  end
@@ -1,10 +1,13 @@
1
1
  # Tasks
2
2
  namespace :foreman_openscap do
3
3
  require 'foreman_openscap/bulk_upload'
4
+ require 'foreman_openscap/message_cleaner'
5
+
4
6
  namespace :bulk_upload do
5
7
  desc 'Bulk upload SCAP content from directory'
6
8
  task :directory, [:directory] => [:environment] do |task, args|
7
9
  abort("# No such directory, please check the path you have provided. #") unless args[:directory].blank? || Dir.exist?(args[:directory])
10
+ User.current = User.anonymous_admin
8
11
  ForemanOpenscap::BulkUpload.new.upload_from_directory(args[:directory])
9
12
  end
10
13
 
@@ -13,10 +16,12 @@ namespace :foreman_openscap do
13
16
  files_array.each do |file|
14
17
  abort("# #{file} is a directory, expecting file. Try using 'rake foreman_openscap:bulk_upload:directory' with this directory. #") if File.directory?(file)
15
18
  end
19
+ User.current = User.anonymous_admin
16
20
  ForemanOpenscap::BulkUpload.new.upload_from_files(files_array)
17
21
  end
18
22
 
19
23
  task :default => [:environment] do
24
+ User.current = User.anonymous_admin
20
25
  ForemanOpenscap::BulkUpload.new(true).generate_scap_default_content
21
26
  end
22
27
  end
@@ -44,6 +49,13 @@ namespace :foreman_openscap do
44
49
  end
45
50
  Rake::Task['rubocop_foreman_openscap'].invoke
46
51
  end
52
+
53
+ desc "Clean duplicate messages for ArfReport"
54
+ task :clean_messages => :environment do
55
+ puts 'Searching for duplicated messages and merging them... this can take a long time'
56
+ ForemanOpenscap::MessageCleaner.new.clean
57
+ puts 'Done'
58
+ end
47
59
  end
48
60
 
49
61
  # Tests