Class: EY::InstanceAPIClient::Connection
- Inherits:
-
Object
- Object
- EY::InstanceAPIClient::Connection
show all
- Defined in:
- lib/ey_instance_api_client/connection.rb
Defined Under Namespace
Classes: AlreadyFinished, InvalidCredentials, NotFound, UnexpectedStatus
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(base_url, instance_id, token) ⇒ Connection
Returns a new instance of Connection.
4
5
6
7
8
9
10
11
|
# File 'lib/ey_instance_api_client/connection.rb', line 4
def initialize(base_url, instance_id, token)
unless base_url.match(/\/$/)
base_url += '/'
end
@base_url = base_url
@instance_id = instance_id
@token = token
end
|
Instance Attribute Details
#base_url ⇒ Object
Returns the value of attribute base_url.
12
13
14
|
# File 'lib/ey_instance_api_client/connection.rb', line 12
def base_url
@base_url
end
|
Instance Method Details
#api_call(full_url, expects) ⇒ Object
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/ey_instance_api_client/connection.rb', line 72
def api_call(full_url, expects)
RestClient::Resource.new(full_url.to_s) do |response, request, raw|
case response.code
when 403
raise InvalidCredentials
when 404
raise NotFound
when 409
raise AlreadyFinished
when expects
JSON.parse(response)
else
raise UnexpectedStatus, "request to #{full_url} failed with #{response.code}"
end
end
end
|
#database_url(database_id) ⇒ Object
54
55
56
|
# File 'lib/ey_instance_api_client/connection.rb', line 54
def database_url(database_id)
URI.join(@base_url, "databases/#{database_id}/backups").to_s
end
|
#finish_backup(finished_url) ⇒ Object
58
59
60
61
|
# File 'lib/ey_instance_api_client/connection.rb', line 58
def finish_backup(finished_url)
r = api_call(finished_url, 200)
r.put(params, :accept => "application/json")
end
|
#get_services(app_name) ⇒ Object
39
40
41
42
|
# File 'lib/ey_instance_api_client/connection.rb', line 39
def get_services(app_name)
r = api_call(services_url(app_name), 200)
r.get(:params => params, :accept => "application/json")
end
|
#list_backups(database_id) ⇒ Object
27
28
29
30
31
|
# File 'lib/ey_instance_api_client/connection.rb', line 27
def list_backups(database_id)
r = api_call(database_url(database_id), 200)
data = r.get(:params => params, :accept => "application/json")
data["backups"].collect{ |b| Backup.new(self, b) }
end
|
#list_snapshots ⇒ Object
16
17
18
19
20
|
# File 'lib/ey_instance_api_client/connection.rb', line 16
def list_snapshots
r = api_call(snapshots_url, 200)
data = r.get(:params => params, :accept => "application/json")
data["snapshots"].collect{ |s| Snapshot.new(s) }
end
|
#params ⇒ Object
63
64
65
|
# File 'lib/ey_instance_api_client/connection.rb', line 63
def params
{:token => @token, :instance_id => @instance_id}
end
|
#request_snapshot ⇒ Object
22
23
24
25
|
# File 'lib/ey_instance_api_client/connection.rb', line 22
def request_snapshot
r = api_call(snapshots_url, 201)
r.post(params, :accept => "application/json")
end
|
#services_url(app_name) ⇒ Object
46
47
48
|
# File 'lib/ey_instance_api_client/connection.rb', line 46
def services_url(app_name)
URI.join(@base_url, "services/app/", app_name).to_s
end
|
#snapshots_url ⇒ Object
50
51
52
|
# File 'lib/ey_instance_api_client/connection.rb', line 50
def snapshots_url
URI.join(@base_url, "volumes/all/snapshots").to_s
end
|
#start_backup(database_id, extension, part_count) ⇒ Object
33
34
35
36
37
|
# File 'lib/ey_instance_api_client/connection.rb', line 33
def start_backup(database_id, extension, part_count)
r = api_call(database_url(database_id), 201)
data = r.post(params.merge(:extension => extension, :part_count => part_count), :accept => "application/json")
Backup.new(self, data["backup"])
end
|