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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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
126
127
128
129
130
131
132
|
# File 'lib/vagrant-cloudcenter/command/jobs.rb', line 9
def execute
access_key = ""
username = ""
host = ""
if File.exists?("VagrantFile")
File.readlines("VagrantFile").grep(/cloudcenter.access_key/) do |line|
unless line.empty?
access_key = line.scan(/["']([^"']*)["']/)[0][0]
end
end
File.readlines("VagrantFile").grep(/cloudcenter.username/) do |line|
unless line.empty?
username = line.scan(/["']([^"']*)["']/)[0][0]
end
end
File.readlines("VagrantFile").grep(/cloudcenter.host/) do |line|
unless line.empty?
host = line.scan(/["']([^"']*)["']/)[0][0]
end
end
end
if access_key.empty?
access_key = ENV["access_key"]
end
if username.empty?
username = ENV["username"]
end
if host.empty?
host = ENV["host"]
end
if access_key.nil?
puts "Access Key missing. Please enter into VagrantFile or environmental variable 'export access_key= '"
end
if username.nil?
puts "Username missing. Please enter into VagrantFile or environmental variable 'export username= '"
end
if host.nil?
puts "Host address missing. Please enter into VagrantFile or environmental variable 'export host= '"
end
if !(access_key.nil? or username.nil? or host.nil?)
begin
encoded = URI.encode("https://#{username}:#{access_key}@#{host}/v2/jobs");
catalog = JSON.parse(RestClient::Request.execute(
:method => :get,
:url => encoded,
:content_type => "json",
:accept => "json"
));
catalogs = catalog["jobs"]
table = Text::Table.new
table.head = ["ID", "Name", "Family", "Owner","Hours","Status"]
puts "\n"
catalogs.each do |row|
id = row["id"]
appName = row["name"]
family = row["cloudFamily"]
owner = row["ownerEmailAddress"]
hours = row["nodeHours"]
status = row["status"]
statusMessage = row["jobStatusMessage"]
table.rows << ["#{id}","#{appName}", "#{family}", "#{owner}", "#{hours}", "#{status}"]
end
puts table
puts"\n"
rescue => e
if e.to_s == "SSL_connect returned=1 errno=0 state=error: certificate verify failed"
puts "\n ERROR: Failed to verify certificate\n\n"
exit
elsif e.to_s == "401 Unauthorized"
puts "\n ERROR: Incorrect credentials\n\n"
exit
elsif e.to_s == "hostname \"#{host}\" does not match the server certificate"
puts "\n ERROR: Hostname \"#{host}\" does not match the server certificate\n\n"
exit
elsif e.to_s.include? "No route to host"
puts "\n ERROR: No route to host. Check connectivity and try again\n\n"
exit
elsif e.to_s.== "Timed out connecting to server"
puts "\n ERROR: Timed out connecting to server. Check connectivity and try again\n\n"
exit
elsif e.to_s.== "getaddrinfo: nodename nor servname provided, or not known"
puts "\n ERROR: Unable to connect to \"#{host}\" \n\n"
exit
else
error = JSON.parse(e.response)
code = error["errors"][0]["code"]
puts "\n Error code: #{error['errors'][0]['code']}\n"
puts "\n #{error['errors'][0]['message']}\n\n"
exit
end
end
end
0
end
|