inspec-core 6.8.1 → 6.8.11
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.
- checksums.yaml +4 -4
- data/lib/inspec/base_cli.rb +3 -0
- data/lib/inspec/resources/oracledb_session.rb +5 -8
- data/lib/inspec/resources/postgres_session.rb +1 -1
- data/lib/inspec/runner.rb +14 -2
- data/lib/inspec/utils/licensing_config.rb +14 -0
- data/lib/inspec/utils/telemetry/http.rb +2 -5
- data/lib/inspec/utils/telemetry.rb +3 -1
- data/lib/inspec/version.rb +1 -1
- data/lib/source_readers/inspec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ef08c3443267ae12f42004936c21dd9c06a2a2405981efa57d5ab26a3a58e38
|
4
|
+
data.tar.gz: 16ba90c68c5f4168b1c1e3178b0b974992d27d5529ada5c34f51fda029539806
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6915602a57ac2c952ba963ded31d7e20a2aca7c0f8e49cf1f3109d85042864d7e69e390aa886937cd2d26a062716da9388a71bf9a67940578c4ccd783e8feb3d
|
7
|
+
data.tar.gz: ffb31db9833ffca067688360cdbd73eb8ddd8da55e0a0cbcc33c860a2475f43715fcd4603b04cab3adba771f9cfc6231a88ec594a2947b7d4781bf899123b575
|
data/lib/inspec/base_cli.rb
CHANGED
@@ -54,6 +54,9 @@ module Inspec
|
|
54
54
|
rescue ChefLicensing::LicenseKeyFetcher::LicenseKeyNotFetchedError
|
55
55
|
Inspec::Log.error "#{Inspec::Dist::PRODUCT_NAME} cannot execute without valid licenses."
|
56
56
|
Inspec::UI.new.exit(:license_not_set)
|
57
|
+
rescue ChefLicensing::SoftwareNotEntitled
|
58
|
+
Inspec::Log.error "License is not entitled to use InSpec."
|
59
|
+
Inspec::UI.new.exit(:license_not_entitled)
|
57
60
|
rescue ChefLicensing::Error => e
|
58
61
|
Inspec::Log.error e.message
|
59
62
|
Inspec::UI.new.exit(:usage_error)
|
@@ -57,7 +57,7 @@ module Inspec::Resources
|
|
57
57
|
inspec_cmd = inspec.command(command)
|
58
58
|
out = inspec_cmd.stdout + "\n" + inspec_cmd.stderr
|
59
59
|
|
60
|
-
if inspec_cmd.exit_status != 0 ||
|
60
|
+
if inspec_cmd.exit_status != 0 || out.downcase =~ /^error.*/
|
61
61
|
raise Inspec::Exceptions::ResourceFailed, "Oracle query with errors: #{out}"
|
62
62
|
else
|
63
63
|
begin
|
@@ -134,10 +134,8 @@ module Inspec::Resources
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def escape_query(query)
|
137
|
-
|
138
|
-
|
139
|
-
escaped_query = query.gsub(/["\\]/) { |match| match == '"' ? '\\"' : "\\\\" } # Escape backslashes and double quotes
|
140
|
-
escaped_query.gsub!("$", '\\$') unless escaped_query.include? "\\$" # Escape dollar signs, but only if not already escaped
|
137
|
+
escaped_query = query.gsub(/\\\\/, "\\").gsub(/"/, '\\"')
|
138
|
+
escaped_query = escaped_query.gsub("$", '\\$') unless escaped_query.include? "\\$"
|
141
139
|
escaped_query
|
142
140
|
end
|
143
141
|
|
@@ -145,9 +143,8 @@ module Inspec::Resources
|
|
145
143
|
output = stdout.split("oracle_query_string")[-1]
|
146
144
|
# comma_query_sub replaces the csv delimiter "," in the output.
|
147
145
|
# Handles CSV parsing of data like this (DROP,3) etc
|
148
|
-
|
149
|
-
|
150
|
-
output = output.gsub(/\r/, "").strip.gsub(",", "comma_query_sub")
|
146
|
+
|
147
|
+
output = output.sub(/\r/, "").strip.gsub(",", "comma_query_sub")
|
151
148
|
converter = ->(header) { header.downcase }
|
152
149
|
CSV.parse(output, headers: true, header_converters: converter).map do |row|
|
153
150
|
next if row.entries.flatten.empty?
|
@@ -55,7 +55,7 @@ module Inspec::Resources
|
|
55
55
|
psql_cmd = create_psql_cmd(query, db)
|
56
56
|
cmd = inspec.command(psql_cmd, redact_regex: %r{(:\/\/[a-z]*:).*(@)})
|
57
57
|
out = cmd.stdout + "\n" + cmd.stderr
|
58
|
-
if cmd.exit_status != 0 && ( out =~ /could not connect to/ || out =~ /password authentication failed/ ) && out.downcase =~ /error:/
|
58
|
+
if cmd.exit_status != 0 && ( out =~ /could not connect to/ || out =~ /password authentication failed/ ) && (out.downcase =~ /error:/ || out.downcase =~ /fatal:/)
|
59
59
|
raise Inspec::Exceptions::ResourceFailed, "PostgreSQL connection error: #{out}"
|
60
60
|
elsif cmd.exit_status != 0 && out.downcase =~ /error:/
|
61
61
|
Lines.new(out, "PostgreSQL query with error: #{query}", cmd.exit_status)
|
data/lib/inspec/runner.rb
CHANGED
@@ -168,7 +168,16 @@ module Inspec
|
|
168
168
|
end
|
169
169
|
|
170
170
|
def run(with = nil)
|
171
|
-
|
171
|
+
product_dist_name = Inspec::Dist::PRODUCT_NAME
|
172
|
+
if Inspec::Dist::EXEC_NAME == "inspec"
|
173
|
+
if Inspec::Telemetry::RunContextProbe.guess_run_context == "test-kitchen"
|
174
|
+
product_dist_name = "Chef Workstation"
|
175
|
+
configure_licensing_config_for_kitchen(@conf)
|
176
|
+
# Persist the license key in file when passed via test-kitchen
|
177
|
+
ChefLicensing.fetch_and_persist if @conf[:chef_license_key]
|
178
|
+
end
|
179
|
+
ChefLicensing.check_software_entitlement!
|
180
|
+
end
|
172
181
|
|
173
182
|
# Validate if profiles are signed and verified
|
174
183
|
# Additional check is required to provide error message in case of inspec exec command (exec command can use multiple profiles as well)
|
@@ -183,8 +192,11 @@ module Inspec
|
|
183
192
|
Inspec::Telemetry.run_starting(runner: self, conf: @conf)
|
184
193
|
load
|
185
194
|
run_tests(with)
|
195
|
+
rescue ChefLicensing::LicenseKeyFetcher::LicenseKeyNotFetchedError
|
196
|
+
Inspec::Log.error "#{product_dist_name} cannot execute without valid licenses."
|
197
|
+
Inspec::UI.new.exit(:license_not_set)
|
186
198
|
rescue ChefLicensing::SoftwareNotEntitled
|
187
|
-
Inspec::Log.error "License is not entitled to use
|
199
|
+
Inspec::Log.error "License is not entitled to use #{product_dist_name}."
|
188
200
|
Inspec::UI.new.exit(:license_not_entitled)
|
189
201
|
rescue ChefLicensing::Error => e
|
190
202
|
Inspec::Log.error e.message
|
@@ -7,3 +7,17 @@ ChefLicensing.configure do |config|
|
|
7
7
|
config.license_server_url = "https://services.chef.io/licensing"
|
8
8
|
config.logger = Inspec::Log
|
9
9
|
end
|
10
|
+
|
11
|
+
def configure_licensing_config_for_kitchen(opts = {})
|
12
|
+
ChefLicensing.configure do |config|
|
13
|
+
# Reset entitlement ID to the ID of Chef Workstation
|
14
|
+
config.chef_entitlement_id = "x6f3bc76-a94f-4b6c-bc97-4b7ed2b045c0"
|
15
|
+
# Reset Chef License server via kitchen when passed in kitchen.yml
|
16
|
+
opts["chef_license_server"] = opts["chef_license_server"].join(",") if opts["chef_license_server"].is_a? Array
|
17
|
+
unless opts["chef_license_server"].nil? || opts["chef_license_server"].empty?
|
18
|
+
ENV["CHEF_LICENSE_SERVER"] = opts["chef_license_server"]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
# Reset Chef License key via kitchen when passed in kitchen.yml
|
22
|
+
ENV["CHEF_LICENSE_KEY"] = opts["chef_license_key"] if opts["chef_license_key"]
|
23
|
+
end
|
@@ -6,11 +6,8 @@ module Inspec
|
|
6
6
|
class Telemetry
|
7
7
|
class HTTP < Base
|
8
8
|
TELEMETRY_JOBS_PATH = "v1/job"
|
9
|
-
|
10
|
-
|
11
|
-
else
|
12
|
-
"https://services.chef.io/telemetry/"
|
13
|
-
end
|
9
|
+
# Allow dev/CI to override the telemetry URL to a staging service
|
10
|
+
TELEMETRY_URL = ENV["CHEF_TELEMETRY_URL"] || "https://services.chef.io/telemetry/"
|
14
11
|
def run_ending(opts)
|
15
12
|
payload = super
|
16
13
|
response = connection.post(TELEMETRY_JOBS_PATH) do |req|
|
@@ -18,10 +18,12 @@ module Inspec
|
|
18
18
|
# Don't perform telemetry action for other InSpec distros
|
19
19
|
# Don't perform telemetry action if running under Automate - Automate does LDC tracking for us
|
20
20
|
# Don't perform telemetry action if license is a commercial license
|
21
|
+
# Don't perform telemetry action if running under Test Kitchen
|
21
22
|
|
22
23
|
if Inspec::Dist::EXEC_NAME != "inspec" ||
|
23
24
|
Inspec::Telemetry::RunContextProbe.under_automate? ||
|
24
|
-
license&.license_type&.downcase == "commercial"
|
25
|
+
license&.license_type&.downcase == "commercial" ||
|
26
|
+
Inspec::Telemetry::RunContextProbe.guess_run_context == "test-kitchen"
|
25
27
|
|
26
28
|
Inspec::Log.debug "Determined telemetry operation is not applicable and hence aborting it."
|
27
29
|
return Inspec::Telemetry::Null
|
data/lib/inspec/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inspec-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.8.
|
4
|
+
version: 6.8.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chef InSpec Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-telemetry
|