Class: LogicalConstruct::SSHTunnel

Inherits:
Mattock::Tasklib
  • Object
show all
Defined in:
lib/logical-construct/protocol/ssh-tunnel.rb

Defined Under Namespace

Classes: CancelTask, CreateSSHMaster, CreateTunnel, OpenPortTask

Instance Method Summary collapse

Instance Method Details

#defineObject



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/logical-construct/protocol/ssh-tunnel.rb', line 101

def define
  in_namespace do
    open_port = OpenPortTask.define_task do |open_port|
      self.local_target_port = open_port.configure_discovery(local_target_port)
    end

    master = CreateSSHMaster.define_task(self) do |master|
      copy_settings_to(master)
    end

    create = CreateTunnel.define_task(self) do |create|
      copy_settings_to(create)
    end

    cancel = CancelTask.define_task(self) do |cancel|
      copy_settings_to(cancel)
    end

    task_spine create.task_name, :close_tunnel, :run

    task master.task_name => open_port.task_name
    task create.task_name => master.task_name
    task :close_tunnel => cancel.task_name
  end
end

#resolve_configurationObject



90
91
92
93
94
# File 'lib/logical-construct/protocol/ssh-tunnel.rb', line 90

def resolve_configuration
  self.local_target_port ||= target_port
  self.remote_target_port ||= target_port
  super
end

#wrap(task_name) ⇒ Object



96
97
98
99
# File 'lib/logical-construct/protocol/ssh-tunnel.rb', line 96

def wrap(task_name)
  task task_name => self[:create_tunnel]
  task self[:cancel_tunnel] => task_name
end