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
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 |
# 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 @host_provider = nil if inspec.os.linux? @host_provider = LinuxHostProvider.new(inspec) elsif inspec.os.windows? return skip_resource 'Invalid protocol: only `tcp` and `icmp` protocols are support for the `host` resource on your OS.' unless %w{icmp tcp}.include?(@protocol) @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) return skip_resource 'The following requirements are not met for this resource: ' \ "#{missing_requirements.join(', ')}" unless missing_requirements.empty? 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
101 102 103 |
# File 'lib/resources/host.rb', line 101 def connection ping[:connection] end |
#ipaddress ⇒ Object
returns all A records of the IP address, will return an array
110 111 112 |
# File 'lib/resources/host.rb', line 110 def ipaddress resolve.nil? || resolve.empty? ? nil : resolve end |
#proto ⇒ Object
77 78 79 80 |
# File 'lib/resources/host.rb', line 77 def proto warn '[DEPRECATION] The `proto` method is deprecated. Use `protocol` instead.' protocol end |
#reachable? ⇒ Boolean
88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/resources/host.rb', line 88 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
83 84 85 86 |
# File 'lib/resources/host.rb', line 83 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
105 106 107 |
# File 'lib/resources/host.rb', line 105 def socket ping[:socket] end |
#to_s ⇒ Object
114 115 116 117 118 119 |
# File 'lib/resources/host.rb', line 114 def to_s resource_name = "Host #{hostname}" resource_name += " port #{port} proto #{protocol}" if port resource_name end |