Module: Forj::Ssh

Defined in:
lib/ssh.rb

Overview

This module provides the behavior to create a ssh connection

Class Method Summary collapse

Class Method Details

.connect(name, account) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/ssh.rb', line 32

def self.connect(name, )
  o_cloud = Forj::CloudConnection.connect()

  PrcLib.state(format("Getting information about forge '%s'", name))

  o_forge = o_cloud.get(:forge, name)

  if o_forge[:servers].count > 0
    if [:box_ssh]
      server = validate_server_name(name, [:box_ssh], o_forge)

      return if server.nil?
    else
      server = select_forge_server(o_forge)
    end
    ssh_connection(, o_cloud, name, server)
  else
    PrcLib.high_level_msg("No server(s) found for instance name '%s' \n",
                          name)
  end
end

.select_forge_server(o_forge) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/ssh.rb', line 54

def self.select_forge_server(o_forge)
  # Ask the user to get server(s) to create ssh connection
  server_list = []
  servers = []
  s_default = nil

  o_forge[:servers].each do |server_type, server|
    server_list << server[:name]
    servers << server
    s_default = server[:name] if server_type == 'maestro'
  end

  say(format('Select box for ssh connection %s',
             ((s_default.nil?) ? '' : "Default: #{s_default}")))
  value = choose do |q|
    q.choices(*server_list)
    q.default = s_default unless s_default.nil?
  end

  servers[server_list.index(value)]
end

.ssh_connection(_account, o_cloud, _name, server) ⇒ Object



76
77
78
# File 'lib/ssh.rb', line 76

def self.ssh_connection(, o_cloud, _name, server)
  o_cloud.create(:ssh, :server => server)
end

.validate_server_name(name, box_ssh, o_forge) ⇒ Object



80
81
82
83
84
85
86
87
88
# File 'lib/ssh.rb', line 80

def self.validate_server_name(name, box_ssh, o_forge)
  unless o_forge[:servers].key?(box_ssh)
    PrcLib.debug("server '%s.%s' was not found", box_ssh, name)
    PrcLib.high_level_msg("server '%s.%s' was not found.\n", box_ssh, name)
    return
  end

  o_forge[:servers][box_ssh]
end