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 |
# 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 |