Class: VagrantPlugins::Cloudcenter::Command::Jobs

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-cloudcenter/command/jobs.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.synopsisObject



5
6
7
# File 'lib/vagrant-cloudcenter/command/jobs.rb', line 5

def self.synopsis
  "Retrieve available jobs"
end

Instance Method Details

#executeObject



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,
              #:verify_ssl => false,
              :content_type => "json",
              :accept => "json"
					));
  
      catalogs = catalog["jobs"]
				 

					 # build table with data returned from above function
					
					table = Text::Table.new
					table.head = ["ID", "Name", "Family", "Owner","Hours","Status"]
					puts "\n"
				
					#for each item in returned list, display certain attributes in the table
					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