inspec-core 5.22.50 → 6.8.1

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/Chef-EULA +9 -0
  3. data/Gemfile +14 -4
  4. data/etc/features.sig +6 -0
  5. data/etc/features.yaml +97 -0
  6. data/inspec-core.gemspec +17 -7
  7. data/lib/inspec/backend.rb +2 -0
  8. data/lib/inspec/base_cli.rb +80 -4
  9. data/lib/inspec/cached_fetcher.rb +24 -3
  10. data/lib/inspec/cli.rb +293 -236
  11. data/lib/inspec/config.rb +24 -2
  12. data/lib/inspec/dependencies/cache.rb +33 -0
  13. data/lib/inspec/enhanced_outcomes.rb +1 -0
  14. data/lib/inspec/errors.rb +5 -0
  15. data/lib/inspec/exceptions.rb +2 -0
  16. data/lib/inspec/feature/config.rb +75 -0
  17. data/lib/inspec/feature/runner.rb +29 -0
  18. data/lib/inspec/feature.rb +42 -0
  19. data/lib/inspec/fetcher/git.rb +5 -0
  20. data/lib/inspec/fetcher/url.rb +24 -4
  21. data/lib/inspec/globals.rb +6 -0
  22. data/lib/inspec/iaf_file.rb +3 -2
  23. data/lib/inspec/input_registry.rb +5 -1
  24. data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +7 -0
  25. data/lib/inspec/plugin/v2/plugin_types/streaming_reporter.rb +30 -2
  26. data/lib/inspec/profile.rb +44 -1
  27. data/lib/inspec/reporters.rb +67 -54
  28. data/lib/inspec/resources/nftables.rb +14 -1
  29. data/lib/inspec/resources/oracledb_session.rb +12 -3
  30. data/lib/inspec/resources/ssh_config.rb +100 -9
  31. data/lib/inspec/resources/ssh_key.rb +124 -0
  32. data/lib/inspec/resources/sshd_active_config.rb +2 -0
  33. data/lib/inspec/resources/sybase_session.rb +11 -2
  34. data/lib/inspec/resources.rb +1 -0
  35. data/lib/inspec/rule.rb +6 -6
  36. data/lib/inspec/run_data.rb +7 -5
  37. data/lib/inspec/runner.rb +43 -6
  38. data/lib/inspec/runner_rspec.rb +12 -9
  39. data/lib/inspec/secrets/yaml.rb +9 -3
  40. data/lib/inspec/shell.rb +10 -0
  41. data/lib/inspec/ui.rb +4 -0
  42. data/lib/inspec/utils/licensing_config.rb +9 -0
  43. data/lib/inspec/utils/telemetry/base.rb +149 -0
  44. data/lib/inspec/utils/telemetry/http.rb +40 -0
  45. data/lib/inspec/utils/telemetry/null.rb +11 -0
  46. data/lib/inspec/utils/telemetry/run_context_probe.rb +13 -1
  47. data/lib/inspec/utils/telemetry.rb +74 -3
  48. data/lib/inspec/version.rb +1 -1
  49. data/lib/inspec/waiver_file_reader.rb +68 -27
  50. data/lib/inspec.rb +2 -2
  51. data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +189 -168
  52. data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +10 -3
  53. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +1 -0
  54. data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +23 -21
  55. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +15 -13
  56. data/lib/plugins/inspec-init/lib/inspec-init/cli_resource.rb +15 -13
  57. data/lib/plugins/inspec-license/README.md +16 -0
  58. data/lib/plugins/inspec-license/inspec-license.gemspec +6 -0
  59. data/lib/plugins/inspec-license/lib/inspec-license/cli.rb +26 -0
  60. data/lib/plugins/inspec-license/lib/inspec-license.rb +14 -0
  61. data/lib/plugins/inspec-parallel/README.md +27 -0
  62. data/lib/plugins/inspec-parallel/inspec-parallel.gemspec +6 -0
  63. data/lib/plugins/inspec-parallel/lib/inspec-parallel/child_status_reporter.rb +61 -0
  64. data/lib/plugins/inspec-parallel/lib/inspec-parallel/cli.rb +39 -0
  65. data/lib/plugins/inspec-parallel/lib/inspec-parallel/command.rb +219 -0
  66. data/lib/plugins/inspec-parallel/lib/inspec-parallel/runner.rb +270 -0
  67. data/lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/base.rb +24 -0
  68. data/lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/silent.rb +7 -0
  69. data/lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/status.rb +125 -0
  70. data/lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/text.rb +23 -0
  71. data/lib/plugins/inspec-parallel/lib/inspec-parallel/validator.rb +170 -0
  72. data/lib/plugins/inspec-parallel/lib/inspec-parallel.rb +18 -0
  73. data/lib/plugins/inspec-sign/lib/inspec-sign/base.rb +20 -8
  74. data/lib/plugins/inspec-sign/lib/inspec-sign/cli.rb +11 -4
  75. data/lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar/streaming_reporter.rb +6 -13
  76. metadata +61 -19
  77. data/lib/inspec/utils/telemetry/collector.rb +0 -81
  78. data/lib/inspec/utils/telemetry/data_series.rb +0 -44
  79. data/lib/inspec/utils/telemetry/global_methods.rb +0 -22
@@ -1,81 +0,0 @@
1
- require "inspec/config"
2
- require "inspec/utils/telemetry/data_series"
3
- require "singleton" unless defined?(Singleton)
4
-
5
- module Inspec::Telemetry
6
- # A Singleton collection of data series objects.
7
- class Collector
8
- include Singleton
9
-
10
- attr_reader :config
11
-
12
- def initialize
13
- @data_series = []
14
- @telemetry_toggled_off = false
15
- load_config
16
- end
17
-
18
- # Allow loading a configuration, useful when testing.
19
- def load_config(config = Inspec::Config.cached)
20
- @config = config
21
- end
22
-
23
- # Add a data series to the collection.
24
- # @return [True]
25
- def add_data_series(data_series)
26
- @data_series << data_series
27
- end
28
-
29
- # The loaded configuration should have a option to configure
30
- # telemetry, if not default to false.
31
- # @return [True, False]
32
- def telemetry_enabled?
33
- if @telemetry_toggled_off
34
- false
35
- else
36
- config_telemetry_options.fetch("enable_telemetry", false)
37
- end
38
- end
39
-
40
- # A way to disable the telemetry system.
41
- def disable_telemetry
42
- @telemetry_toggled_off = true
43
- end
44
-
45
- # The entire data series collection.
46
- # @return [Array]
47
- def list_data_series
48
- @data_series
49
- end
50
-
51
- # Finds the data series object with the specified name and returns it.
52
- # If it does not exist then creates a new data series with that name
53
- # and returns it.
54
- # @return [Inspec::Telemetry::DataSeries]
55
- def find_or_create_data_series(name)
56
- ds = @data_series.select { |data_series| data_series.name.eql?(name) }
57
- if ds.empty?
58
- new_data_series = Inspec::Telemetry::DataSeries.new(name)
59
- @data_series << new_data_series
60
- new_data_series
61
- else
62
- ds.first
63
- end
64
- end
65
-
66
- # Blanks the contents of the data series collection.
67
- # Reset telemetry toggle
68
- # @return [True]
69
- def reset!
70
- @data_series = []
71
- @telemetry_toggled_off = false
72
- end
73
-
74
- private
75
-
76
- # Minimize exposure of Inspec::Config interface
77
- def config_telemetry_options
78
- config.telemetry_options
79
- end
80
- end
81
- end
@@ -1,44 +0,0 @@
1
- require "json" unless defined?(JSON)
2
-
3
- module Inspec; end
4
-
5
- # A minimal Dataseries Object
6
- # Stores the name of the data series and an array of data.
7
- # Stored data should be a object that supports #to_s
8
- module Inspec::Telemetry
9
- class DataSeries
10
- def initialize(name)
11
- @name = name
12
- @enabled = true
13
- @data ||= []
14
- end
15
-
16
- attr_reader :data, :name
17
-
18
- # This needs to also be set by configuration.
19
- def enabled?
20
- @enabled
21
- end
22
-
23
- def disable
24
- @enabled = false
25
- end
26
-
27
- def <<(appending_data)
28
- data << appending_data
29
- end
30
-
31
- alias push <<
32
-
33
- def to_h
34
- {
35
- name: @name,
36
- data: @data,
37
- }
38
- end
39
-
40
- def to_json
41
- to_h.to_json
42
- end
43
- end
44
- end
@@ -1,22 +0,0 @@
1
- require "inspec/utils/telemetry/collector"
2
-
3
- module Inspec
4
- # A Global method to add a data series object to the Telemetry Collection.
5
- # `data_series_name`s are unique, so `:dependency_group` will always return
6
- # the same object.
7
- # `data_point` is optional, you may also supply a block with several data points.
8
- # All data points should allow #to_s
9
- def self.record_telemetry_data(data_series_name, data_point = nil)
10
- coll = Inspec::Telemetry::Collector.instance
11
- return unless coll.telemetry_enabled?
12
-
13
- ds = coll.find_or_create_data_series(data_series_name)
14
- return unless ds.enabled?
15
-
16
- if block_given?
17
- ds << yield
18
- else
19
- ds << data_point
20
- end
21
- end
22
- end