Class: VagrantPlugins::Cloudstack::Action::ReadTransportInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-cloudstack/action/read_transport_info.rb

Direct Known Subclasses

ReadRdpInfo, ReadSSHInfo, ReadWinrmInfo

Instance Method Summary collapse

Constructor Details

#initializeReadTransportInfo

Returns a new instance of ReadTransportInfo.



5
6
7
# File 'lib/vagrant-cloudstack/action/read_transport_info.rb', line 5

def initialize
  @public_port_fieldname = 'pf_public_port'
end

Instance Method Details

#find_server(cloudstack, machine) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/vagrant-cloudstack/action/read_transport_info.rb', line 42

def find_server(cloudstack, machine)
  return nil if machine.id.nil?

  # Find the machine
  server = cloudstack.servers.get(machine.id)
  if server.nil? || [:"shutting-down", :terminated].include?(server.state.downcase.to_sym)
    # The machine can't be found
    @logger.info("Machine couldn't be found, assuming it got destroyed.")
    machine.id = nil
    return nil
  end

  server
end

#retrieve_public_ip_port(cloudstack, domain_config, machine) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/vagrant-cloudstack/action/read_transport_info.rb', line 9

def retrieve_public_ip_port(cloudstack, domain_config, machine)
  pf_ip_address_id = domain_config.pf_ip_address_id
  pf_ip_address = domain_config.pf_ip_address
  pf_public_port = domain_config.send(@public_port_fieldname)

  if pf_public_port.nil?
    pf_public_port_file = machine.data_dir.join(@public_port_fieldname)
    if pf_public_port_file.file?
      File.read(pf_public_port_file).each_line do |line|
        pf_public_port = line.strip
      end
      domain_config.send("#{@public_port_fieldname}=", pf_public_port)
    end
  end

  if not pf_ip_address and pf_ip_address_id and pf_public_port
    begin
      response = cloudstack.list_public_ip_addresses({:id => pf_ip_address_id})
    rescue Fog::Compute::Cloudstack::Error => e
      raise Errors::FogError, :message => e.message
    end

    if (response['listpublicipaddressesresponse']['count']).zero?
      @logger.info("IP address #{pf_ip_address_id} not exists.")
      env[:ui].info(I18n.t("IP address #{pf_ip_address_id} not exists."))
      pf_ip_address = nil
    else
      pf_ip_address = response['listpublicipaddressesresponse']['publicipaddress'][0]['ipaddress']
    end
  end
  return pf_ip_address, pf_public_port
end