Skip to content

Commit

Permalink
Merge pull request #47 from jeremymv2/quiet_mode
Browse files Browse the repository at this point in the history
quiet mode for inspec scans
  • Loading branch information
chris-rock committed May 20, 2016
2 parents b393ddc + 635cc4b commit 93a9b46
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 2 deletions.
1 change: 1 addition & 0 deletions attributes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
default['audit']['token'] = nil
default['audit']['variant'] = 'chef'
default['audit']['owner'] = nil
default['audit']['quiet'] = nil
default['audit']['profiles'] = {}

# raise exception if Compliance API endpoint is unreachable
Expand Down
4 changes: 3 additions & 1 deletion libraries/profile.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class ComplianceProfile < Chef::Resource # rubocop:disable Metrics/ClassLength
property :port, Integer
property :token, [String, nil]
property :inspec_version, String, default: 'latest'
property :quiet, [TrueClass, FalseClass], default: true
# TODO(sr) it might be nice to default to settings from attributes

# alternative to (owner, profile)-addressing for profiles,
Expand Down Expand Up @@ -107,7 +108,8 @@ class ComplianceProfile < Chef::Resource # rubocop:disable Metrics/ClassLength

# TODO: flesh out inspec's report CLI interface,
# make this an execute[inspec check ...]
runner = ::Inspec::Runner.new('report' => true, 'format' => 'json-min')
output = quiet ? ::File::NULL : $stdout
runner = ::Inspec::Runner.new('report' => true, 'format' => 'json-min', 'output' => output)
runner.add_target(path, {})
begin
runner.run
Expand Down
6 changes: 5 additions & 1 deletion libraries/report.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class ComplianceReport < Chef::Resource
property :port, Integer
property :token, [String, nil]
property :variant, String, default: 'chef' # 'chef', 'compliance'
property :quiet, [TrueClass, FalseClass], default: true

property :environment, String # default: node.environment
property :owner, [String, nil]
Expand All @@ -25,7 +26,10 @@ class ComplianceReport < Chef::Resource
blob = node_info
blob[:reports] = reports
total_failed = 0
blob[:reports].each { |k, _| total_failed += blob[:reports][k]['summary']['failure_count'].to_i }
blob[:reports].each do |k, _|
Chef::Log.info "Summary for #{k} #{blob[:reports][k]['summary'].to_json}" if quiet
total_failed += blob[:reports][k]['summary']['failure_count'].to_i
end
blob[:profiles] = ownermap

# resolve owner
Expand Down
2 changes: 2 additions & 0 deletions recipes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
server server
token token
inspec_version node['audit']['inspec_version']
quiet node['audit']['quiet'] unless node['audit']['quiet'].nil?
action [:fetch, :execute]
end
end
Expand All @@ -42,5 +43,6 @@
server server
token token
variant node['audit']['variant']
quiet node['audit']['quiet'] unless node['audit']['quiet'].nil?
action :execute
end if node['audit']['profiles'].values.any?
4 changes: 4 additions & 0 deletions spec/unit/recipes/default_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
runner = ChefSpec::ServerRunner.new(platform: 'centos', version: '6.5')
runner.node.set['audit']['profiles'] = { 'admin/myprofile' => true,
'base/ssh' => false }
runner.node.set['audit']['inspec_version'] = 'latest'
runner.node.set['audit']['quiet'] = true
runner.converge(described_recipe)
end

Expand All @@ -51,12 +53,14 @@
server: nil,
token: nil,
inspec_version: 'latest',
quiet: true,
)
expect(chef_run).to execute_compliance_report('chef-server').with(
owner: nil,
server: nil,
token: nil,
variant: 'chef',
quiet: true,
)
end

Expand Down

0 comments on commit 93a9b46

Please sign in to comment.