Class: Cloud66::Utils::Server

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/cloud66_agent/utils/server.rb

Class Method Summary collapse

Class Method Details

.build_content(data = nil) ⇒ Object



80
81
82
83
84
85
86
87
88
89
# File 'lib/cloud66_agent/utils/server.rb', line 80

def self.build_content(data = nil)
	time = Time.now.utc.to_i
	hash = Digest::SHA1.hexdigest("#{$config.api_key}#{$config.secret_key}#{time}").downcase
	if data.nil?
		content = { :headers => { 'api-key' => $config.api_key, 'hash' => hash, 'time' => time.to_s } }
	else
		content = { :headers => { 'api-key' => $config.api_key, 'hash' => hash, 'time' => time.to_s, 'Content-Type' => 'application/json' }, :body => { data: data }.to_json }
	end
	content
end

.do_request(verb, url, content) ⇒ Object



72
73
74
75
76
77
78
# File 'lib/cloud66_agent/utils/server.rb', line 72

def self.do_request(verb, url, content)
	$logger.debug "Sending (#{verb}) request..."
	$logger.debug "Request url: #{url}"
	$logger.debug "Request content: #{content}"
	base_uri $config.api_url
	self.send verb, url, content
end

.process(response) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/cloud66_agent/utils/server.rb', line 48

def self.process(response)
	$logger.debug "Received response!"
	if response.code != 200
		$logger.debug "Response code: #{response.code}"
		$logger.debug "Response body: #{response.body}"
		raise response.body
	else
		parsed_response = response.parsed_response
		unless parsed_response['ok']
			if parsed_response['shut_down']
				$config.disabled = true
				$config.save
				exit 86
			elsif parsed_response.has_key?('error')
				raise parsed_response['error']
			else
				raise "unidentified error"
			end
		end
		$logger.debug "Parsed response: #{parsed_response}"
		parsed_response['data']
	end
end

.send_address(data) ⇒ Object



21
22
23
# File 'lib/cloud66_agent/utils/server.rb', line 21

def self.send_address(data)
	process(do_request(:post, "/server/#{$config.agent_uid}/address.json", build_content(data)))
end

.send_configure(data) ⇒ Object



13
14
15
# File 'lib/cloud66_agent/utils/server.rb', line 13

def self.send_configure(data)
	process(do_request(:post, '/server/configure.json', build_content(data)))
end

.send_fail2ban(data) ⇒ Object



37
38
39
# File 'lib/cloud66_agent/utils/server.rb', line 37

def self.send_fail2ban(data)
	process(do_request(:post, "/server/#{$config.agent_uid}/fail2ban.json", build_content(data)))
end

.send_job_end(job_uid, data) ⇒ Object



33
34
35
# File 'lib/cloud66_agent/utils/server.rb', line 33

def self.send_job_end(job_uid, data)
	process(do_request(:post, "/job/#{job_uid}/end.json", build_content(data)))
end

.send_job_start(job_uid) ⇒ Object



29
30
31
# File 'lib/cloud66_agent/utils/server.rb', line 29

def self.send_job_start(job_uid)
	process(do_request(:get, "/job/#{job_uid}/start.json", build_content))
end

.send_message(data) ⇒ Object



41
42
43
44
# File 'lib/cloud66_agent/utils/server.rb', line 41

def self.send_message(data)
	#puts data
	process(do_request(:post, "/server/#{$config.agent_uid}/message.json", build_content(data)))
end

.send_pulse ⇒ Object



17
18
19
# File 'lib/cloud66_agent/utils/server.rb', line 17

def self.send_pulse
	process(do_request(:get, "/server/#{$config.agent_uid}/pulse.json", build_content))
end

.send_vitals(data) ⇒ Object



25
26
27
# File 'lib/cloud66_agent/utils/server.rb', line 25

def self.send_vitals(data)
	process(do_request(:post, "/server/#{$config.agent_uid}/vitals.json", build_content(data)))
end