20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/vagrant-cloudstack/action/read_ssh_info.rb', line 20
def read_ssh_info(cloudstack, machine)
return nil if machine.id.nil?
server = cloudstack.servers.get(machine.id)
if server.nil?
@logger.info("Machine couldn't be found, assuming it got destroyed.")
machine.id = nil
return nil
end
domain = machine.provider_config.domain_id
domain_config = machine.provider_config.get_domain_config(domain)
pf_ip_address_id = domain_config.pf_ip_address_id
pf_public_port = domain_config.pf_public_port
if 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"] == 0
@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
unless pf_ip_address.nil?
return {:host => pf_ip_address, :port => pf_public_port}
else
return {:host => server.nics[0]['ipaddress'], :port => 22}
end
end
|