inspec/lib/resources/platform.rb
Jerry Aldrich 84817366a1 Remove deprecations for InSpec 2.0 (#2506)
* Add `release-2.0` target branch to AppVeyor/Travis (#2510)

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* simpleconfig: Remove deprecated config keys

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* cli (exec): Remove `--cache` command line argument

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* platform: Remove lowercase os name protection

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* matcher: Remove `contain_legacy_plus` matcher

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* matcher: Remove `contain_match` matcher

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* matcher: Remove `with_version` matcher

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* matcher: Remove `belong_to_group` matcher

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* matcher: Remove `belong_to_primary_group` matcher

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* matcher: Remove `contain` matcher

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* passwd: Remove deprecated properties

This removes:
  - `passwd.count`
  - `passwd.username`
  - `passwd.usernames`
  - `passwd.uid`

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* auditd_rules: Remove in favor of `auditd` resource

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* cli: Remove `login_automate` command

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* Remove `resource_skipped` message method

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>
2018-02-08 11:05:21 +01:00

98 lines
2.2 KiB
Ruby

# encoding: utf-8
module Inspec::Resources
class PlatformResource < Inspec.resource(1)
name 'platform'
desc 'Use the platform InSpec resource to test the platform on which the system is running.'
example "
describe platform do
its('name') { should eq 'redhat' }
end
describe platform do
it { should be_in_family('unix') }
end
"
def initialize
@platform = inspec.backend.platform
end
# add helper methods for easy access of properties
%w{family release arch}.each do |property|
define_method(property.to_sym) do
@platform[property]
end
end
def name
@platform.name
end
def [](key)
# convert string to symbol
key = key.to_sym if key.is_a? String
return name if key == :name
@platform[key]
end
def platform?(name)
@platform.name == name ||
@platform.family_hierarchy.include?(name)
end
def in_family?(family)
@platform.family_hierarchy.include?(family)
end
def families
@platform.family_hierarchy
end
def supported?(supports)
return true if supports.nil? || supports.empty?
status = true
supports.each do |s|
s.each do |k, v|
# ignore the inspec check for supports
# TODO: remove in inspec 2.0
if k == :inspec
next
elsif %i(os_family os-family platform_family platform-family).include?(k)
status = in_family?(v)
elsif %i(os platform).include?(k)
status = platform?(v)
elsif %i(os_name os-name platform_name platform-name).include?(k)
status = name == v
elsif k == :release
status = check_release(v)
else
status = false
end
break if status == false
end
return true if status == true
end
status
end
def to_s
'Platform Detection'
end
private
def check_release(value)
# allow wild card matching
if value.include?('*')
cleaned = Regexp.escape(value).gsub('\*', '.*?')
!(release =~ /#{cleaned}/).nil?
else
release == value
end
end
end
end