foreman_openscap 4.2.0 → 4.3.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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/api/v2/compliance/oval_contents_controller.rb +72 -0
  3. data/app/controllers/api/v2/compliance/oval_policies_controller.rb +111 -0
  4. data/app/controllers/api/v2/compliance/oval_reports_controller.rb +47 -0
  5. data/app/controllers/concerns/foreman/controller/parameters/oval_content.rb +22 -0
  6. data/app/controllers/concerns/foreman/controller/parameters/oval_policy.rb +22 -0
  7. data/app/controllers/concerns/foreman_openscap/hosts_controller_extensions.rb +1 -1
  8. data/app/graphql/types/cve.rb +17 -0
  9. data/app/graphql/types/oval_content.rb +17 -0
  10. data/app/graphql/types/oval_policy.rb +21 -0
  11. data/app/helpers/arf_reports_helper.rb +0 -14
  12. data/app/mailers/foreman_openscap/policy_mailer.rb +2 -2
  13. data/app/models/concerns/foreman_openscap/compliance_status_scoped_search.rb +1 -1
  14. data/app/models/concerns/foreman_openscap/data_stream_content.rb +0 -17
  15. data/app/models/concerns/foreman_openscap/host_extensions.rb +11 -11
  16. data/app/models/concerns/foreman_openscap/hostgroup_extensions.rb +3 -5
  17. data/app/models/concerns/foreman_openscap/inherited_policies.rb +11 -0
  18. data/app/models/concerns/foreman_openscap/oval_facet_host_extensions.rb +38 -0
  19. data/app/models/concerns/foreman_openscap/oval_facet_hostgroup_extensions.rb +15 -0
  20. data/app/models/concerns/foreman_openscap/policy_common.rb +75 -0
  21. data/app/models/concerns/foreman_openscap/scap_file_content.rb +24 -0
  22. data/app/models/foreman_openscap/cve.rb +23 -0
  23. data/app/models/foreman_openscap/host/oval_facet.rb +14 -0
  24. data/app/models/foreman_openscap/host_cve.rb +7 -0
  25. data/app/models/foreman_openscap/hostgroup/oval_facet.rb +14 -0
  26. data/app/models/foreman_openscap/hostgroup_oval_facet_oval_policy.rb +6 -0
  27. data/app/models/foreman_openscap/oval_content.rb +26 -0
  28. data/app/models/foreman_openscap/oval_facet_oval_policy.rb +6 -0
  29. data/app/models/foreman_openscap/oval_policy.rb +54 -0
  30. data/app/models/foreman_openscap/oval_status.rb +45 -0
  31. data/app/models/foreman_openscap/policy.rb +7 -69
  32. data/app/models/foreman_openscap/scap_content.rb +1 -0
  33. data/app/models/foreman_openscap/tailoring_file.rb +1 -0
  34. data/app/services/foreman_openscap/client_config/ansible.rb +39 -6
  35. data/app/services/foreman_openscap/client_config/base.rb +5 -1
  36. data/app/services/foreman_openscap/client_config/puppet.rb +2 -1
  37. data/app/services/foreman_openscap/config_name_service.rb +1 -1
  38. data/app/services/foreman_openscap/hostgroup_overrider.rb +2 -24
  39. data/app/services/foreman_openscap/hostgroup_overrider_common.rb +28 -0
  40. data/app/services/foreman_openscap/lookup_key_overrider.rb +30 -62
  41. data/app/services/foreman_openscap/lookup_key_overrides_common.rb +63 -0
  42. data/app/services/foreman_openscap/oval/check_collection.rb +45 -0
  43. data/app/services/foreman_openscap/oval/configure.rb +80 -0
  44. data/app/services/foreman_openscap/oval/cves.rb +41 -0
  45. data/app/services/foreman_openscap/oval/setup.rb +93 -0
  46. data/app/services/foreman_openscap/oval/setup_check.rb +55 -0
  47. data/app/services/foreman_openscap/oval/sync_oval_contents.rb +42 -0
  48. data/app/views/api/v2/compliance/oval_contents/base.json.rabl +6 -0
  49. data/app/views/api/v2/compliance/oval_contents/create.json.rabl +3 -0
  50. data/app/views/api/v2/compliance/oval_contents/index.json.rabl +3 -0
  51. data/app/views/api/v2/compliance/oval_contents/show.json.rabl +3 -0
  52. data/app/views/api/v2/compliance/oval_contents/sync.json.rabl +3 -0
  53. data/app/views/api/v2/compliance/oval_contents/sync_result.json.rabl +11 -0
  54. data/app/views/api/v2/compliance/oval_contents/update.json.rabl +3 -0
  55. data/app/views/api/v2/compliance/oval_policies/create.json.rabl +3 -0
  56. data/app/views/api/v2/compliance/oval_policies/index.json.rabl +3 -0
  57. data/app/views/api/v2/compliance/oval_policies/main.json.rabl +15 -0
  58. data/app/views/api/v2/compliance/oval_policies/show.json.rabl +3 -0
  59. data/app/views/api/v2/compliance/policies/base.json.rabl +2 -2
  60. data/app/views/api/v2/compliance/policies_common/_attrs.json.rabl +2 -0
  61. data/app/views/arf_reports/_output.html.erb +9 -1
  62. data/app/views/job_templates/run_oval_scans.erb +24 -0
  63. data/app/views/policies/steps/_deployment_options_form.html.erb +2 -2
  64. data/config/initializers/inflections.rb +12 -0
  65. data/config/routes.rb +19 -0
  66. data/db/migrate/20201019074925_create_oval_policy.rb +13 -0
  67. data/db/migrate/20201020113801_create_oval_facet.rb +14 -0
  68. data/db/migrate/20201021084109_create_hostgroup_oval_facet.rb +14 -0
  69. data/db/migrate/20201106080924_create_oval_content.rb +12 -0
  70. data/db/migrate/20201116110256_add_oval_content_to_oval_policy.rb +5 -0
  71. data/db/migrate/20201120080329_create_cves.rb +13 -0
  72. data/db/migrate/20201202110213_update_puppet_port_param_type.rb +2 -6
  73. data/db/migrate/20201217130800_add_has_errata_to_cve.rb +8 -0
  74. data/db/migrate/20201217161511_add_url_to_oval_content.rb +5 -0
  75. data/db/migrate/20210409095625_add_oval_policy_reference_to_cve.rb +7 -0
  76. data/lib/foreman_openscap/engine.rb +67 -9
  77. data/lib/foreman_openscap/version.rb +1 -1
  78. data/lib/tasks/foreman_openscap_tasks.rake +14 -9
  79. data/locale/de/LC_MESSAGES/foreman_openscap.mo +0 -0
  80. data/locale/de/foreman_openscap.edit.po +0 -0
  81. data/locale/de/foreman_openscap.po +215 -17
  82. data/locale/en_GB/LC_MESSAGES/foreman_openscap.mo +0 -0
  83. data/locale/en_GB/foreman_openscap.edit.po +0 -0
  84. data/locale/en_GB/foreman_openscap.po +213 -15
  85. data/locale/es/LC_MESSAGES/foreman_openscap.mo +0 -0
  86. data/locale/es/foreman_openscap.edit.po +0 -0
  87. data/locale/es/foreman_openscap.po +239 -41
  88. data/locale/foreman_openscap.pot +395 -112
  89. data/locale/fr/LC_MESSAGES/foreman_openscap.mo +0 -0
  90. data/locale/fr/foreman_openscap.edit.po +0 -0
  91. data/locale/fr/foreman_openscap.po +243 -45
  92. data/locale/gl/LC_MESSAGES/foreman_openscap.mo +0 -0
  93. data/locale/gl/foreman_openscap.edit.po +0 -0
  94. data/locale/gl/foreman_openscap.po +213 -15
  95. data/locale/it/LC_MESSAGES/foreman_openscap.mo +0 -0
  96. data/locale/it/foreman_openscap.edit.po +0 -0
  97. data/locale/it/foreman_openscap.po +213 -15
  98. data/locale/ja/LC_MESSAGES/foreman_openscap.mo +0 -0
  99. data/locale/ja/foreman_openscap.edit.po +0 -0
  100. data/locale/ja/foreman_openscap.po +262 -66
  101. data/locale/ko/LC_MESSAGES/foreman_openscap.mo +0 -0
  102. data/locale/ko/foreman_openscap.edit.po +0 -0
  103. data/locale/ko/foreman_openscap.po +214 -16
  104. data/locale/pt_BR/LC_MESSAGES/foreman_openscap.mo +0 -0
  105. data/locale/pt_BR/foreman_openscap.edit.po +0 -0
  106. data/locale/pt_BR/foreman_openscap.po +252 -54
  107. data/locale/ru/LC_MESSAGES/foreman_openscap.mo +0 -0
  108. data/locale/ru/foreman_openscap.edit.po +0 -0
  109. data/locale/ru/foreman_openscap.po +214 -16
  110. data/locale/sv_SE/LC_MESSAGES/foreman_openscap.mo +0 -0
  111. data/locale/sv_SE/foreman_openscap.edit.po +0 -0
  112. data/locale/sv_SE/foreman_openscap.po +213 -15
  113. data/locale/zh_CN/LC_MESSAGES/foreman_openscap.mo +0 -0
  114. data/locale/zh_CN/foreman_openscap.edit.po +0 -0
  115. data/locale/zh_CN/foreman_openscap.po +369 -169
  116. data/locale/zh_TW/LC_MESSAGES/foreman_openscap.mo +0 -0
  117. data/locale/zh_TW/foreman_openscap.edit.po +0 -0
  118. data/locale/zh_TW/foreman_openscap.po +214 -16
  119. data/test/factories/compliance_host_factory.rb +12 -0
  120. data/test/factories/oval_content_factory.rb +7 -0
  121. data/test/factories/oval_policy_factory.rb +9 -0
  122. data/test/files/oval_contents/ansible-2.9.oval.xml.bz2 +0 -0
  123. data/test/fixtures/cve_fixtures.rb +104 -0
  124. data/test/functional/api/v2/compliance/oval_contents_controller_test.rb +39 -0
  125. data/test/functional/api/v2/compliance/oval_policies_controller_test.rb +141 -0
  126. data/test/functional/api/v2/compliance/oval_reports_controller_test.rb +32 -0
  127. data/test/graphql/queries/oval_contents_query_test.rb +35 -0
  128. data/test/graphql/queries/oval_policies_query_test.rb +35 -0
  129. data/test/test_plugin_helper.rb +4 -0
  130. data/test/unit/oval_host_test.rb +45 -0
  131. data/test/unit/oval_policy_test.rb +133 -0
  132. data/test/unit/oval_status_test.rb +47 -0
  133. data/test/unit/services/oval/cves_test.rb +81 -0
  134. data/test/unit/services/oval/setup_test.rb +87 -0
  135. metadata +97 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69eab4d9434f1b502ba511db38d8a7faff9721c5416703f6010ccc87fdc52b86
4
- data.tar.gz: 94ba4cbecc85106f968d9b5f137e0808dbd12711db01fd14e0f0c4e9761e27a1
3
+ metadata.gz: 0bc31c3bac07804311899dc01dd5dbe0c0500cc8981eefa1ec867316d0465fb8
4
+ data.tar.gz: 4b00712959d937f44fa2da29de505704e153277043bf319c84fa0d4a44f8d5ac
5
5
  SHA512:
6
- metadata.gz: 4e3253f876e3ab4efd5c853fdb05f0b81cbbe7184c5b00ea552690b0cce9664a76210c32f92fe86c631bc9eaa2ed81ba1a8762b8b47e0678149a946cf593554e
7
- data.tar.gz: a6c3706f6fcc836af18f7aeda76c1cf735981836a0661cdcc66e4ead2272b6249519f305ff3b6766266ebb05eda1ebfe778811993286be3e162e269412aa6fd8
6
+ metadata.gz: 90f233717d65a7bf4d1793251a27d6f7268e81a93e4dd06b86258e8f6f5b108d0a886fe8ebe455766eccfe10a55076d9b61bd211165620f5d899cd94147d203c
7
+ data.tar.gz: b77f05c002ef0fb3fdcc4050974bc5b4390d2af5322aac601ef912172391e0bfb3f391e4166ad94b7e701156e9b84f640dcda03d434323d5e2921e50974f6109
@@ -0,0 +1,72 @@
1
+ module Api::V2
2
+ module Compliance
3
+ class OvalContentsController < ::Api::V2::BaseController
4
+ include Foreman::Controller::Parameters::OvalContent
5
+ include ForemanOpenscap::Api::V2::ScapApiControllerExtensions
6
+
7
+ before_action :find_resource, :except => %w[index create sync]
8
+ skip_before_action :check_media_type, :only => %w[create update]
9
+
10
+ api :GET, '/compliance/oval_contents', N_('List OVAL contents')
11
+ param_group :search_and_pagination, ::Api::V2::BaseController
12
+ add_scoped_search_description_for(::ForemanOpenscap::OvalContent)
13
+
14
+ def index
15
+ @oval_contents = resource_scope_for_index(:permission => :view_oval_contents)
16
+ end
17
+
18
+ api :GET, '/compliance/oval_contents/:id', N_('Show an OVAL content')
19
+ param :id, :identifier, :required => true
20
+
21
+ def show
22
+ end
23
+
24
+ def_param_group :oval_content do
25
+ param :oval_content, Hash, :required => true, :action_aware => true do
26
+ param :name, String, :required => true, :desc => N_('OVAL content name')
27
+ param :scap_file, File, :desc => N_('XML containing OVAL content')
28
+ param :original_filename, String, :desc => N_('Original file name of the OVAL content file')
29
+ param :url, String, :desc => N_('URL of the OVAL content file')
30
+ param_group :taxonomies, ::Api::V2::BaseController
31
+ end
32
+ end
33
+
34
+ api :POST, '/compliance/oval_contents', N_('Create OVAL content')
35
+ param_group :oval_content, :as => :create
36
+
37
+ def create
38
+ @oval_content = ForemanOpenscap::OvalContent.new(oval_content_params)
39
+ process_response @oval_content.save
40
+ end
41
+
42
+ api :PUT, '/compliance/oval_contents/:id', N_('Update an OVAL content')
43
+ param :id, :identifier, :required => true
44
+ param_group :oval_content
45
+
46
+ def update
47
+ process_response @oval_content.update(oval_content_params)
48
+ end
49
+
50
+ api :DELETE, '/compliance/oval_contents/:id', N_('Deletes an OVAL content')
51
+ param :id, :identifier, :required => true
52
+
53
+ def destroy
54
+ process_response @oval_content.destroy
55
+ end
56
+
57
+ api :POST, '/compliance/oval_contents/sync', N_('Sync contents that have remote source URL')
58
+ def sync
59
+ @oval_contents = ForemanOpenscap::Oval::SyncOvalContents.new.sync_all
60
+ end
61
+
62
+ def action_permission
63
+ case params[:action]
64
+ when 'sync'
65
+ :update
66
+ else
67
+ super
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,111 @@
1
+ module Api::V2
2
+ module Compliance
3
+ class OvalPoliciesController < ::Api::V2::BaseController
4
+ include Foreman::Controller::SmartProxyAuth
5
+ include ForemanOpenscap::Api::V2::ScapApiControllerExtensions
6
+ include Foreman::Controller::Parameters::OvalPolicy
7
+
8
+ add_smart_proxy_filters %i[oval_content], :features => 'Openscap'
9
+
10
+ before_action :find_resource, :except => %w[index create]
11
+ skip_after_action :log_response_body, :only => %i[oval_content]
12
+
13
+ api :GET, '/compliance/oval_policies', N_('List OVAL Policies')
14
+ param_group :search_and_pagination, ::Api::V2::BaseController
15
+
16
+ def index
17
+ @oval_policies = resource_scope_for_index(:permission => :view_oval_policies)
18
+ end
19
+
20
+ api :GET, '/compliance/oval_policies/:id', N_('Show an OVAL Policy')
21
+ param :id, :identifier, :required => true
22
+
23
+ def show
24
+ end
25
+
26
+ def_param_group :oval_policy do
27
+ param :oval_policy, Hash, :required => true, :action_aware => true do
28
+ param :name, String, :required => true, :desc => N_('OVAL Policy name')
29
+ param :oval_content_id, Integer, :required => true, :desc => N_('Policy OVAL content ID')
30
+ param :description, String, :desc => N_('OVAL Policy description')
31
+ param :period, String, :desc => N_('OVAL Policy schedule period (weekly, monthly, custom)')
32
+ param :weekday, String, :desc => N_('OVAL Policy schedule weekday (only if period == "weekly")')
33
+ param :day_of_month, Integer, :desc => N_('OVAL Policy schedule day of month (only if period == "monthly")')
34
+ param :cron_line, String, :desc => N_('OVAL Policy schedule cron line (only if period == "custom")')
35
+ param_group :taxonomies, ::Api::V2::BaseController
36
+ end
37
+ end
38
+
39
+ api :POST, '/compliance/oval_policies', N_('Create an OVAL Policy')
40
+ param_group :oval_policy, :as => :create
41
+
42
+ def create
43
+ @oval_policy = ForemanOpenscap::OvalPolicy.new(oval_policy_params)
44
+ process_response(@oval_policy.save)
45
+ end
46
+
47
+ api :PUT, '/compliance/oval_policies/:id', N_('Update an OVAL Policy')
48
+ param :id, :identifier, :required => true
49
+ param_group :oval_policy
50
+
51
+ def update
52
+ process_response(@oval_policy.update(oval_policy_params))
53
+ end
54
+
55
+ api :DELETE, '/compliance/oval_policies/:id', N_('Delete an OVAL Policy')
56
+ param :id, :identifier, :required => true
57
+
58
+ def destroy
59
+ process_response @oval_policy.destroy
60
+ end
61
+
62
+ api :POST, '/compliance/oval_policies/:id/assign_hostgroups', N_('Assign hostgroups to an OVAL Policy')
63
+ param :id, :identifier, :required => true
64
+ param :hostgroup_ids, Array, :desc => N_('Array of hostgroup IDs')
65
+
66
+ def assign_hostgroups
67
+ assign _('hostgroups'), params["hostgroup_ids"], ::Hostgroup
68
+ end
69
+
70
+ api :POST, '/compliance/oval_policies/:id/assign_hosts', N_('Assign hosts to an OVAL Policy')
71
+ param :id, :identifier, :required => true
72
+ param :host_ids, Array, :desc => N_('Array of host IDs')
73
+
74
+ def assign_hosts
75
+ assign _('hosts'), params["host_ids"], ::Host::Managed
76
+ end
77
+
78
+ api :GET, '/compliance/oval_policies/:id/oval_content', N_("Show a policy's SCAP content")
79
+ param :id, :identifier, :required => true
80
+
81
+ def oval_content
82
+ @oval_content = @oval_policy.oval_content
83
+ send_data @oval_content.scap_file,
84
+ :type => 'application/x-bzip2',
85
+ :filename => @oval_content.original_filename
86
+ end
87
+
88
+ def action_permission
89
+ case params[:action]
90
+ when 'assign_hostgroups', 'assign_hosts'
91
+ :edit
92
+ when 'oval_content'
93
+ :show
94
+ else
95
+ super
96
+ end
97
+ end
98
+
99
+ private
100
+
101
+ def assign(resource_plural, ids, model_class)
102
+ check_collection = ::ForemanOpenscap::Oval::Configure.new.assign(@oval_policy, ids, model_class)
103
+ if check_collection.all_passed?
104
+ render :json => { :message => (_("OVAL policy successfully configured with %s.") % resource_plural) }
105
+ else
106
+ render :json => { :results => check_collection.find_failed.map(&:to_h) }
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,47 @@
1
+ module Api
2
+ module V2
3
+ module Compliance
4
+ class OvalReportsController < ::Api::V2::BaseController
5
+ include Foreman::Controller::SmartProxyAuth
6
+ add_smart_proxy_filters :create, :features => 'Openscap'
7
+
8
+ skip_before_action :setup_has_many_params
9
+ before_action :find_resources_before_create, :only => [:create]
10
+
11
+ api :POST, "/compliance/oval_reports/:cname/:oval_policy_id/:date", N_("Upload an OVAL report - a list of CVEs for given host")
12
+ param :cname, :identifier, :required => true
13
+ param :oval_policy_id, :identifier, :required => true
14
+ param :date, :identifier, :required => true
15
+
16
+ def create
17
+ ForemanOpenscap::Oval::Cves.new.create(@host, params.to_unsafe_h)
18
+ if @host.errors.any?
19
+ upload_fail @host.errors.full_messages
20
+ else
21
+ @host.refresh_statuses([ForemanOpenscap::OvalStatus])
22
+ render :json => { :result => :ok }
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def find_resources_before_create
29
+ @host = ForemanOpenscap::Helper.find_host_by_name_or_uuid params[:cname]
30
+
31
+ unless @host
32
+ upload_fail(_('Could not find host identified by: %s') % params[:cname])
33
+ return
34
+ end
35
+ end
36
+
37
+ def upload_fail(msg)
38
+ logger.error msg
39
+ render :json => { :result => :fail, :errors => msg }, :status => :unprocessable_entity
40
+ end
41
+
42
+ def find_resource
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,22 @@
1
+ module Foreman::Controller::Parameters::OvalContent
2
+ extend ActiveSupport::Concern
3
+
4
+ class_methods do
5
+ def oval_content_params_filter
6
+ Foreman::ParameterFilter.new(::ForemanOpenscap::OvalContent).tap do |filter|
7
+ filter.permit :original_filename, :scap_file, :name, :url, :location_ids => [], :organization_ids => []
8
+ end
9
+ end
10
+ end
11
+
12
+ def oval_content_params
13
+ read_file_content self.class.oval_content_params_filter.filter_params(params, parameter_filter_context)
14
+ end
15
+
16
+ def read_file_content(params)
17
+ return params unless file = params[:scap_file]
18
+ content = file.read
19
+ filename = file.original_filename
20
+ params.merge(:scap_file => content, :original_filename => params[:original_filename] || filename)
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module Foreman::Controller::Parameters::OvalPolicy
2
+ extend ActiveSupport::Concern
3
+
4
+ class_methods do
5
+ def filter_params_list
6
+ [:description, :name, :period,
7
+ :weekday, :day_of_month, :cron_line,
8
+ :oval_content_id,
9
+ :location_ids => [], :organization_ids => []]
10
+ end
11
+
12
+ def oval_policy_params_filter
13
+ Foreman::ParameterFilter.new(::ForemanOpenscap::OvalPolicy).tap do |filter|
14
+ filter.permit filter_params_list
15
+ end
16
+ end
17
+ end
18
+
19
+ def oval_policy_params
20
+ self.class.oval_policy_params_filter.filter_params(params, parameter_filter_context)
21
+ end
22
+ end
@@ -5,7 +5,7 @@ module ForemanOpenscap
5
5
  end
6
6
 
7
7
  def process_hostgroup
8
- @hostgroup = Hostgroup.find(params[:host][:hostgroup_id]) if params[:host][:hostgroup_id].to_i > 0
8
+ @hostgroup = ::Hostgroup.find(params[:host][:hostgroup_id]) if params[:host][:hostgroup_id].to_i > 0
9
9
  return head(:not_found) unless @hostgroup
10
10
  @openscap_proxy = @hostgroup.openscap_proxy
11
11
  super
@@ -0,0 +1,17 @@
1
+ module Types
2
+ class Cve < BaseObject
3
+ description 'A CVE'
4
+ model_class ::ForemanOpenscap::Cve
5
+
6
+ global_id_field :id
7
+ field :ref_id, String
8
+ field :ref_url, String
9
+ field :has_errata, Boolean
10
+ field :definition_id, String
11
+ has_many :hosts, Types::Host
12
+
13
+ def self.graphql_definition
14
+ super.tap { |type| type.instance_variable_set(:@name, 'ForemanOpenscap::Cve') }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Types
2
+ class OvalContent < BaseObject
3
+ description 'An OVAL Content'
4
+ model_class ::ForemanOpenscap::OvalContent
5
+
6
+ global_id_field :id
7
+ timestamps
8
+ field :name, String
9
+ field :digest, String
10
+ field :original_filename, String
11
+ field :url, String
12
+
13
+ def self.graphql_definition
14
+ super.tap { |type| type.instance_variable_set(:@name, 'ForemanOpenscap::OvalContent') }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ module Types
2
+ class OvalPolicy < BaseObject
3
+ description 'An OVAL Policy'
4
+ model_class ::ForemanOpenscap::OvalPolicy
5
+
6
+ global_id_field :id
7
+ timestamps
8
+ field :name, String
9
+ field :description, String
10
+ field :period, String
11
+ field :weekday, String
12
+ field :day_of_month, String
13
+ field :cron_line, String
14
+ belongs_to :oval_content, ::Types::OvalContent
15
+ has_many :hostgroups, ::Types::Hostgroup
16
+
17
+ def self.graphql_definition
18
+ super.tap { |type| type.instance_variable_set(:@name, 'ForemanOpenscap::OvalPolicy') }
19
+ end
20
+ end
21
+ end
@@ -35,20 +35,6 @@ module ArfReportsHelper
35
35
  "class='label label-#{tag} result-filter-tag'".html_safe
36
36
  end
37
37
 
38
- def severity_tag(level)
39
- tag = case level.downcase.to_sym
40
- when :low
41
- "info"
42
- when :medium
43
- "warning"
44
- when :high
45
- "danger"
46
- else
47
- "default"
48
- end
49
- "class='label label-#{tag}'".html_safe
50
- end
51
-
52
38
  def multiple_actions_arf_report
53
39
  actions = [
54
40
  [_('Delete reports'), delete_multiple_arf_reports_path]
@@ -6,8 +6,8 @@ module ForemanOpenscap
6
6
  @time = options[:time] || 1.day.ago
7
7
 
8
8
  @policies = ::ForemanOpenscap::Policy.all.reject { |policy| policy.assets.map(&:host).compact.empty? }
9
- @compliant_hosts = @policies.map { |policy| Host.comply_with policy }.flatten
10
- @incompliant_hosts = @policies.map { |policy| Host.not_comply_with policy }.flatten
9
+ @compliant_hosts = @policies.map { |policy| ::Host.comply_with policy }.flatten
10
+ @incompliant_hosts = @policies.map { |policy| ::Host.not_comply_with policy }.flatten
11
11
  changed_hosts_of_policies(@policies)
12
12
 
13
13
  if user.nil? || user.mail.nil?
@@ -74,7 +74,7 @@ module ForemanOpenscap
74
74
  end
75
75
 
76
76
  def search_by_host_collection_name(key, operator, value)
77
- scope = apply_condition(Host.joins(:host_collections),
77
+ scope = apply_condition(::Host.joins(:host_collections),
78
78
  operator == '<>',
79
79
  :katello_host_collections => { :name => value })
80
80
  query_conditions_from_scope ForemanOpenscap::ArfReport.where(:host_id => scope)
@@ -1,18 +1,11 @@
1
1
  module ForemanOpenscap
2
2
  module DataStreamContent
3
- require 'digest/sha2'
4
-
5
3
  extend ActiveSupport::Concern
6
4
 
7
5
  included do
8
- validates :digest, :presence => true
9
- validates :scap_file, :presence => true
10
-
11
6
  validates_with ForemanOpenscap::DataStreamValidator
12
7
 
13
8
  after_save :create_profiles, :if => lambda { |ds_content| ds_content.scap_file_previously_changed? }
14
-
15
- before_validation :redigest, :if => lambda { |ds_content| ds_content.persisted? && ds_content.scap_file_changed? }
16
9
  before_destroy ActiveRecord::Base::EnsureNotUsedBy.new(:policies)
17
10
  end
18
11
 
@@ -24,10 +17,6 @@ module ForemanOpenscap
24
17
  @proxy_url
25
18
  end
26
19
 
27
- def digest
28
- self[:digest] ||= Digest::SHA256.hexdigest(scap_file.to_s)
29
- end
30
-
31
20
  def create_profiles
32
21
  fetch_profiles.each do |key, title|
33
22
  create_or_update_profile key, title
@@ -40,11 +29,5 @@ module ForemanOpenscap
40
29
  profile.update(:title => title) unless profile.title == title
41
30
  profile
42
31
  end
43
-
44
- private
45
-
46
- def redigest
47
- self[:digest] = Digest::SHA256.hexdigest(scap_file.to_s)
48
- end
49
32
  end
50
33
  end