/
helper.rb
56 lines (49 loc) · 1.4 KB
/
helper.rb
1
2
3
4
5
6
7
8
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
# Shortcut for Fog::Compute[:digitalocean]
def service
Fog::Compute[:digitalocean]
end
def fog_test_server_attributes
# Hard coding numbers because requests from tests are sometimes failing.
# TODO: Mock properly instead
image = service.images.find { |i| i.name == 'Ubuntu 13.10 x64' }
image_id = image.nil? ? 1505447 : image.id
region = service.regions.find { |r| r.name == 'New York 1' }
region_id = region.nil? ? 4 : region.id
flavor = service.flavors.find { |r| r.name == '512MB' }
flavor_id = flavor.nil? ? 66 : flavor.id
{
:image_id => image_id,
:region_id => region_id,
:flavor_id => flavor_id
}
end
def fog_server_name
"fog-server-test"
end
# Create a long lived server for the tests
def fog_test_server
server = service.servers.find { |s| s.name == fog_server_name }
unless server
server = service.servers.create({
:name => fog_server_name
}.merge(fog_test_server_attributes))
server.wait_for { ready? }
end
server
end
# Destroy the long lived server
def fog_test_server_destroy
server = service.servers.find { |s| s.name == fog_server_name }
server.destroy if server
end
at_exit do
unless Fog.mocking? || Fog.credentials[:digitalocean_api_key].nil?
server = service.servers.find { |s| s.name == fog_server_name }
if server
server.wait_for(120) do
reload rescue nil; ready?
end
end
fog_test_server_destroy
end
end