Module: AbideDevUtils::CEM
- Defined in:
- lib/abide_dev_utils/cem.rb
Overview
Methods for working with Compliance Enforcement Modules (CEM)
Class Method Summary collapse
- .rule_id_format(rule_id) ⇒ Object
- .rule_identifiers(rule_id) ⇒ Object
- .update_legacy_config_from_diff(config_hiera, diff) ⇒ Object
- .xccdf ⇒ Object
Class Method Details
.rule_id_format(rule_id) ⇒ Object
[View source]
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/abide_dev_utils/cem.rb', line 17 def self.rule_id_format(rule_id) case rule_id when /^c[0-9_]+$/ :hiera_title_num when /^[a-z][a-z0-9_]+$/ :hiera_title when /^[0-9.]+$/ :number else :title end end |
.rule_identifiers(rule_id) ⇒ Object
[View source]
30 31 32 33 34 35 36 |
# File 'lib/abide_dev_utils/cem.rb', line 30 def self.rule_identifiers(rule_id) { number: xccdf.control_parts(rule_id).first, hiera_title: xccdf.name_normalize_control(rule_id), hiera_title_num: xccdf.number_normalize_control(rule_id), } end |
.update_legacy_config_from_diff(config_hiera, diff) ⇒ Object
[View source]
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/abide_dev_utils/cem.rb', line 38 def self.update_legacy_config_from_diff(config_hiera, diff) new_config_hiera = config_hiera.dup new_control_configs = {} change_report = [] changes = diff.select { |d| d[:type][0] == :number } config_hiera['config']['control_configs'].each do |key, val_hash| key_id_format = rule_id_format(key) changed = false changes.each do |change| if key_id_format == :title next unless change[:title] == key else next unless rule_identifiers(change[:self].id)[key_id_format] == key end changed = true new_key = if key_id_format == :title change[:other_title] else rule_identifiers(change[:other].id)[key_id_format] end new_control_configs[new_key] = val_hash change_report << { type: :identifier_update, from: key, to: new_key, } end new_control_configs[key] = val_hash unless changed end new_config_hiera['config']['control_configs'] = new_control_configs [new_config_hiera, change_report] end |
.xccdf ⇒ Object
[View source]
8 9 10 11 12 13 14 15 |
# File 'lib/abide_dev_utils/cem.rb', line 8 def self.xccdf return @xccdf if defined?(@xccdf) xccdf = Object.new xccdf.extend AbideDevUtils::XCCDF::Common @xccdf = xccdf @xccdf end |