Class: Inspec::Resources::Host
- Inherits:
-
Object
- Object
- Inspec::Resources::Host
- Defined in:
- lib/resources/host.rb
Instance Attribute Summary collapse
-
#hostname ⇒ Object
readonly
Returns the value of attribute hostname.
-
#port ⇒ Object
readonly
Returns the value of attribute port.
-
#protocol ⇒ Object
readonly
Returns the value of attribute protocol.
Instance Method Summary collapse
- #connection ⇒ Object
-
#initialize(hostname, params = {}) ⇒ Host
constructor
A new instance of Host.
-
#ipaddress ⇒ Object
returns all A records of the IP address, will return an array.
- #proto ⇒ Object
- #reachable? ⇒ Boolean
-
#resolvable?(type = nil) ⇒ Boolean
if we get the IP address, the host is resolvable.
- #socket ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(hostname, params = {}) ⇒ Host
Returns a new instance of Host.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/resources/host.rb', line 47 def initialize(hostname, params = {}) @hostname = hostname @port = params[:port] if params[:proto] warn '[DEPRECATION] The `proto` parameter is deprecated. Use `protocol` instead.' @protocol = params[:proto] else @protocol = params.fetch(:protocol, 'icmp') end return skip_resource 'Invalid protocol: only `tcp` and `icmp` protocols are support for the `host` resource.' unless %w{icmp tcp}.include?(@protocol) @host_provider = nil if inspec.os.linux? @host_provider = LinuxHostProvider.new(inspec) elsif inspec.os.windows? @host_provider = WindowsHostProvider.new(inspec) elsif inspec.os.darwin? @host_provider = DarwinHostProvider.new(inspec) else return skip_resource 'The `host` resource is not supported on your OS yet.' end missing_requirements = @host_provider.missing_requirements(protocol) unless missing_requirements.empty? return skip_resource "The following requirements are not met for this resource: #{missing_requirements.join(', ')}" end end |
Instance Attribute Details
#hostname ⇒ Object (readonly)
Returns the value of attribute hostname.
45 46 47 |
# File 'lib/resources/host.rb', line 45 def hostname @hostname end |
#port ⇒ Object (readonly)
Returns the value of attribute port.
45 46 47 |
# File 'lib/resources/host.rb', line 45 def port @port end |
#protocol ⇒ Object (readonly)
Returns the value of attribute protocol.
45 46 47 |
# File 'lib/resources/host.rb', line 45 def protocol @protocol end |
Instance Method Details
#connection ⇒ Object
102 103 104 |
# File 'lib/resources/host.rb', line 102 def connection ping[:connection] end |
#ipaddress ⇒ Object
returns all A records of the IP address, will return an array
111 112 113 |
# File 'lib/resources/host.rb', line 111 def ipaddress resolve.nil? || resolve.empty? ? nil : resolve end |
#proto ⇒ Object
78 79 80 81 |
# File 'lib/resources/host.rb', line 78 def proto warn '[DEPRECATION] The `proto` method is deprecated. Use `protocol` instead.' protocol end |
#reachable? ⇒ Boolean
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/resources/host.rb', line 89 def reachable? # ping checks do not require port or protocol return ping.fetch(:success, false) if protocol == 'icmp' # if either port or protocol are specified but not both, we cannot proceed. if port.nil? || protocol.nil? raise "Protocol required with port. Use `host` resource with host('#{hostname}', port: 1234, proto: 'tcp') parameters." if port.nil? || protocol.nil? end # perform the protocol-specific reachability test ping.fetch(:success, false) end |
#resolvable?(type = nil) ⇒ Boolean
if we get the IP address, the host is resolvable
84 85 86 87 |
# File 'lib/resources/host.rb', line 84 def resolvable?(type = nil) warn "The `host` resource ignores #{type} parameters. Continue to resolve host." if !type.nil? resolve.nil? || resolve.empty? ? false : true end |
#socket ⇒ Object
106 107 108 |
# File 'lib/resources/host.rb', line 106 def socket ping[:socket] end |
#to_s ⇒ Object
115 116 117 |
# File 'lib/resources/host.rb', line 115 def to_s "Host #{hostname}" end |