Class: Infrataster::Server
- Inherits:
-
Object
- Object
- Infrataster::Server
- Defined in:
- lib/infrataster/server.rb
Constant Summary collapse
- Error =
Class.new(StandardError)
Instance Attribute Summary collapse
-
#address ⇒ Object
readonly
Returns the value of attribute address.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Class Method Summary collapse
- .clear_defined_servers ⇒ Object
- .define(*args) ⇒ Object
- .defined_servers ⇒ Object
- .find_by_name(name) ⇒ Object
Instance Method Summary collapse
- #find_available_port ⇒ Object
- #forward_port(port, &block) ⇒ Object
- #from ⇒ Object
- #gateway ⇒ Object
-
#initialize(name, address, options = {}) ⇒ Server
constructor
A new instance of Server.
- #shutdown_gateway ⇒ Object
- #ssh_exec(cmd, &block) ⇒ Object
- #ssh_start_args ⇒ Object
Constructor Details
#initialize(name, address, options = {}) ⇒ Server
Returns a new instance of Server.
38 39 40 41 |
# File 'lib/infrataster/server.rb', line 38 def initialize(name, address, = {}) @name, @options = name, @address = determine_address(address) end |
Instance Attribute Details
#address ⇒ Object (readonly)
Returns the value of attribute address.
36 37 38 |
# File 'lib/infrataster/server.rb', line 36 def address @address end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
36 37 38 |
# File 'lib/infrataster/server.rb', line 36 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
36 37 38 |
# File 'lib/infrataster/server.rb', line 36 def @options end |
Class Method Details
.clear_defined_servers ⇒ Object
21 22 23 |
# File 'lib/infrataster/server.rb', line 21 def clear_defined_servers @@servers = [] end |
.define(*args) ⇒ Object
13 14 15 |
# File 'lib/infrataster/server.rb', line 13 def define(*args) @@servers << Server.new(*args) end |
.defined_servers ⇒ Object
17 18 19 |
# File 'lib/infrataster/server.rb', line 17 def defined_servers @@servers end |
Instance Method Details
#find_available_port ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/infrataster/server.rb', line 49 def find_available_port # find available local port server = TCPServer.new('127.0.0.1', 0) available_port = server.addr[1] server.close available_port end |
#forward_port(port, &block) ⇒ Object
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/infrataster/server.rb', line 69 def forward_port(port, &block) host, forwarded_port = _forward_port(port) if block_given? return_value = block.call(host, forwarded_port) from.gateway.close(forwarded_port) if from return_value else [host, forwarded_port] end end |
#from ⇒ Object
43 44 45 46 47 |
# File 'lib/infrataster/server.rb', line 43 def from if @options[:from] Server.find_by_name(@options[:from]) end end |
#gateway ⇒ Object
58 59 60 |
# File 'lib/infrataster/server.rb', line 58 def gateway @gateway ||= Net::SSH::Gateway.new(*ssh_start_args) end |
#shutdown_gateway ⇒ Object
62 63 64 65 66 67 |
# File 'lib/infrataster/server.rb', line 62 def shutdown_gateway if @gateway @gateway.shutdown! @gateway = nil end end |
#ssh_exec(cmd, &block) ⇒ Object
80 81 82 83 84 85 86 |
# File 'lib/infrataster/server.rb', line 80 def ssh_exec(cmd, &block) result = nil Net::SSH.start(*ssh_start_args) do |ssh| result = ssh.exec!(cmd, &block) end result end |
#ssh_start_args ⇒ Object
88 89 90 |
# File 'lib/infrataster/server.rb', line 88 def ssh_start_args @ssh_start_args ||= _ssh_start_args end |