fog-profitbricks 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -3
  3. data/Rakefile +1 -1
  4. data/examples/pb_demo.rb +2 -8
  5. data/lib/fog/profitbricks/compute.rb +249 -105
  6. data/lib/fog/profitbricks/models/compute/datacenter.rb +63 -9
  7. data/lib/fog/profitbricks/models/compute/firewall_rule.rb +3 -1
  8. data/lib/fog/profitbricks/models/compute/group.rb +7 -4
  9. data/lib/fog/profitbricks/models/compute/image.rb +3 -0
  10. data/lib/fog/profitbricks/models/compute/ip_block.rb +2 -0
  11. data/lib/fog/profitbricks/models/compute/lan.rb +2 -1
  12. data/lib/fog/profitbricks/models/compute/load_balancer.rb +2 -0
  13. data/lib/fog/profitbricks/models/compute/location.rb +1 -0
  14. data/lib/fog/profitbricks/models/compute/nic.rb +2 -0
  15. data/lib/fog/profitbricks/models/compute/request.rb +1 -0
  16. data/lib/fog/profitbricks/models/compute/resource.rb +1 -0
  17. data/lib/fog/profitbricks/models/compute/server.rb +5 -1
  18. data/lib/fog/profitbricks/models/compute/share.rb +4 -2
  19. data/lib/fog/profitbricks/models/compute/snapshot.rb +2 -0
  20. data/lib/fog/profitbricks/models/compute/user.rb +4 -1
  21. data/lib/fog/profitbricks/requests/compute/add_share.rb +2 -2
  22. data/lib/fog/profitbricks/requests/compute/add_user_to_group.rb +4 -4
  23. data/lib/fog/profitbricks/requests/compute/associate_nic_to_load_balancer.rb +1 -3
  24. data/lib/fog/profitbricks/requests/compute/attach_cdrom.rb +18 -17
  25. data/lib/fog/profitbricks/requests/compute/attach_volume.rb +9 -2
  26. data/lib/fog/profitbricks/requests/compute/create_datacenter.rb +71 -25
  27. data/lib/fog/profitbricks/requests/compute/create_firewall_rule.rb +11 -4
  28. data/lib/fog/profitbricks/requests/compute/create_group.rb +22 -4
  29. data/lib/fog/profitbricks/requests/compute/create_ip_block.rb +1 -1
  30. data/lib/fog/profitbricks/requests/compute/create_lan.rb +1 -1
  31. data/lib/fog/profitbricks/requests/compute/create_load_balancer.rb +4 -43
  32. data/lib/fog/profitbricks/requests/compute/create_nic.rb +4 -0
  33. data/lib/fog/profitbricks/requests/compute/create_server.rb +6 -1
  34. data/lib/fog/profitbricks/requests/compute/create_user.rb +20 -1
  35. data/lib/fog/profitbricks/requests/compute/create_volume.rb +5 -1
  36. data/lib/fog/profitbricks/requests/compute/create_volume_snapshot.rb +1 -1
  37. data/lib/fog/profitbricks/requests/compute/delete_group.rb +1 -1
  38. data/lib/fog/profitbricks/requests/compute/delete_share.rb +1 -1
  39. data/lib/fog/profitbricks/requests/compute/delete_user.rb +1 -1
  40. data/lib/fog/profitbricks/requests/compute/detach_cdrom.rb +3 -3
  41. data/lib/fog/profitbricks/requests/compute/get_attached_cdrom.rb +3 -3
  42. data/lib/fog/profitbricks/requests/compute/get_datacenter.rb +1 -1
  43. data/lib/fog/profitbricks/requests/compute/get_firewall_rule.rb +1 -1
  44. data/lib/fog/profitbricks/requests/compute/get_group.rb +1 -1
  45. data/lib/fog/profitbricks/requests/compute/get_image.rb +1 -1
  46. data/lib/fog/profitbricks/requests/compute/get_ip_block.rb +1 -1
  47. data/lib/fog/profitbricks/requests/compute/get_lan.rb +1 -1
  48. data/lib/fog/profitbricks/requests/compute/get_load_balanced_nic.rb +7 -1
  49. data/lib/fog/profitbricks/requests/compute/get_load_balancer.rb +1 -1
  50. data/lib/fog/profitbricks/requests/compute/get_location.rb +1 -1
  51. data/lib/fog/profitbricks/requests/compute/get_nic.rb +2 -2
  52. data/lib/fog/profitbricks/requests/compute/get_request.rb +8 -1
  53. data/lib/fog/profitbricks/requests/compute/get_resource_by_type.rb +8 -1
  54. data/lib/fog/profitbricks/requests/compute/get_resources_by_type.rb +9 -3
  55. data/lib/fog/profitbricks/requests/compute/get_server.rb +1 -1
  56. data/lib/fog/profitbricks/requests/compute/get_share.rb +1 -1
  57. data/lib/fog/profitbricks/requests/compute/get_snapshot.rb +1 -1
  58. data/lib/fog/profitbricks/requests/compute/get_user.rb +1 -1
  59. data/lib/fog/profitbricks/requests/compute/get_volume.rb +1 -1
  60. data/lib/fog/profitbricks/requests/compute/list_attached_cdroms.rb +3 -1
  61. data/lib/fog/profitbricks/requests/compute/list_attached_volumes.rb +3 -3
  62. data/lib/fog/profitbricks/requests/compute/remove_user_from_group.rb +2 -2
  63. data/lib/fog/profitbricks/requests/compute/update_datacenter.rb +3 -8
  64. data/lib/fog/profitbricks/requests/compute/update_firewall_rule.rb +1 -1
  65. data/lib/fog/profitbricks/requests/compute/update_group.rb +5 -5
  66. data/lib/fog/profitbricks/requests/compute/update_nic.rb +2 -4
  67. data/lib/fog/profitbricks/requests/compute/update_server.rb +3 -4
  68. data/lib/fog/profitbricks/requests/compute/update_share.rb +3 -3
  69. data/lib/fog/profitbricks/requests/compute/update_user.rb +2 -2
  70. data/lib/fog/profitbricks/version.rb +1 -1
  71. data/tests/profitbricks/models/compute/compute_tests.rb +1071 -267
  72. metadata +26 -33
  73. data/gemfiles/Gemfile.1.8.7 +0 -6
  74. data/tests/profitbricks/requests/compute/composite_create_tests.rb +0 -174
  75. data/tests/profitbricks/requests/compute/flavor_tests.rb +0 -40
  76. data/tests/profitbricks/requests/compute/location_tests.rb +0 -42
  77. data/tests/profitbricks/requests/compute/nic_tests.rb +0 -268
  78. data/tests/profitbricks/requests/compute/request_tests.rb +0 -50
  79. data/tests/profitbricks/requests/compute/server_tests.rb +0 -462
@@ -49,7 +49,7 @@ module Fog
49
49
  datacenter["id"] == datacenter_id
50
50
  end
51
51
  else
52
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
52
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
53
53
  end
54
54
 
55
55
  response = Excon::Response.new
@@ -54,7 +54,7 @@ module Fog
54
54
  fwr["datacenter_id"] == datacenter_id && fwr["server_id"] == server_id && fwr["nic_id"] == nic_id && fwr["id"] == firewall_rule_id
55
55
  end
56
56
  else
57
- raise Fog::Errors::NotFound, "The requested resource could not be found"
57
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
58
58
  end
59
59
 
60
60
  response = Excon::Response.new
@@ -50,7 +50,7 @@ module Fog
50
50
  grp["id"] == group_id
51
51
  end
52
52
  else
53
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
53
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
54
54
  end
55
55
 
56
56
  response = Excon::Response.new
@@ -55,7 +55,7 @@ module Fog
55
55
  image["id"] == image_id
56
56
  end
57
57
  else
58
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
58
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
59
59
  end
60
60
 
61
61
  response = Excon::Response.new
@@ -42,7 +42,7 @@ module Fog
42
42
  ipb["id"] == ip_block_id
43
43
  end
44
44
  else
45
- raise Fog::Errors::NotFound, "The requested IP Block could not be found"
45
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
46
46
  end
47
47
 
48
48
  response = Excon::Response.new
@@ -104,7 +104,7 @@ module Fog
104
104
  ln["datacenter_id"] == datacenter_id && ln["id"] == lan_id
105
105
  end
106
106
  else
107
- raise Fog::Errors::NotFound, "The requested lan could not be found"
107
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
108
108
  end
109
109
 
110
110
  response = Excon::Response.new
@@ -81,7 +81,7 @@ module Fog
81
81
  lb["datacenter_id"] == datacenter_id && lb["id"] == load_balancer_id
82
82
  end
83
83
  else
84
- raise Fog::Errors::NotFound, "The requested resource could not be found"
84
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
85
85
  end
86
86
 
87
87
  load_balanced_nic = nil
@@ -92,6 +92,12 @@ module Fog
92
92
  load_balancer['balancednics']['items'][0]
93
93
  end
94
94
 
95
+ load_balanced_nic['mac'] = '01:23:45:67:89:00'
96
+ load_balanced_nic['nat'] = false
97
+ load_balanced_nic['firewall_active'] = true
98
+ load_balanced_nic['lan'] = load_balanced_nic[:lan]
99
+ load_balanced_nic['ips'] = load_balanced_nic[:ips]
100
+
95
101
  response = Excon::Response.new
96
102
  response.status = 200
97
103
  response.body = load_balanced_nic
@@ -100,7 +100,7 @@ module Fog
100
100
  lb["datacenter_id"] == datacenter_id && lb["id"] == load_balancer_id
101
101
  end
102
102
  else
103
- raise Fog::Errors::NotFound, "The requested resource could not be found"
103
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
104
104
  end
105
105
 
106
106
  response = Excon::Response.new
@@ -33,7 +33,7 @@ module Fog
33
33
  lo["id"] == location_id
34
34
  end
35
35
  else
36
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
36
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
37
37
  end
38
38
 
39
39
  response = Excon::Response.new
@@ -76,12 +76,12 @@ module Fog
76
76
  end
77
77
 
78
78
  class Mock
79
- def get_nic(_datacenter_id, _server_id, nic_id)
79
+ def get_nic(datacenter_id, server_id, nic_id)
80
80
  if nic = data[:nics]['items'].find do |nic|
81
81
  nic["id"] == nic_id
82
82
  end
83
83
  else
84
- raise Fog::Errors::NotFound, "The requested resource could not be found"
84
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
85
85
  end
86
86
 
87
87
  response = Excon::Response.new
@@ -46,7 +46,14 @@ module Fog
46
46
  end
47
47
 
48
48
  class Mock
49
- def get_request(_request_id)
49
+ def get_request(request_id)
50
+ if request = data[:requests]["items"].find do |req|
51
+ req["id"] == request_id
52
+ end
53
+ else
54
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
55
+ end
56
+
50
57
  response = Excon::Response.new
51
58
  response.status = 200
52
59
  response.body = data[:requests]['items'][0]
@@ -61,9 +61,16 @@ module Fog
61
61
 
62
62
  class Mock
63
63
  def get_resource_by_type(resource_type, resource_id)
64
+ if resource = data[:resources]['items'].find do |r|
65
+ r["type"] == resource_type && r["id"] == resource_id
66
+ end
67
+ else
68
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
69
+ end
70
+
64
71
  response = Excon::Response.new
65
72
  response.status = 200
66
- response.body = data[:resources]
73
+ response.body = resource
67
74
 
68
75
  response
69
76
  end
@@ -32,10 +32,16 @@ module Fog
32
32
 
33
33
  class Mock
34
34
  def get_resources_by_type(resource_type)
35
- response = Excon::Response.new
36
- response.status = 200
37
- response.body = data[:resources]
35
+ if resources = data[:resources]['items'].select {|resource| resource['type'] == resource_type}
36
+ result = data[:resources].dup
37
+ result['items'] = resources
38
+ else
39
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
40
+ end
38
41
 
42
+ response = Excon::Response.new
43
+ response.status = 200
44
+ response.body = result
39
45
  response
40
46
  end
41
47
  end
@@ -116,7 +116,7 @@ module Fog
116
116
  serv['datacenter_id'] == datacenter_id && serv['id'] == server_id
117
117
  end
118
118
  else
119
- raise Fog::Errors::NotFound, "The server resource could not be found"
119
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
120
120
  end
121
121
 
122
122
  response = Excon::Response.new
@@ -38,7 +38,7 @@ module Fog
38
38
  shr["id"] == resource_id
39
39
  end
40
40
  else
41
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
41
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
42
42
  end
43
43
 
44
44
  response = Excon::Response.new
@@ -54,7 +54,7 @@ module Fog
54
54
  attrib["id"] == snapshot_id
55
55
  end
56
56
  else
57
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
57
+ raise Excon::Error::HTTPStatus, 'Resource does not exist'
58
58
  end
59
59
 
60
60
  response = Excon::Response.new
@@ -58,7 +58,7 @@ module Fog
58
58
  usr["id"] == user_id
59
59
  end
60
60
  else
61
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
61
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
62
62
  end
63
63
 
64
64
  response = Excon::Response.new
@@ -57,7 +57,7 @@ module Fog
57
57
  vlm["id"] == volume_id && vlm["datacenter_id"] == datacenter_id
58
58
  end
59
59
  else
60
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
60
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
61
61
  end
62
62
 
63
63
  response = Excon::Response.new
@@ -60,9 +60,11 @@ module Fog
60
60
  serv['datacenter_id'] == datacenter_id && serv['id'] == server_id
61
61
  end
62
62
  else
63
- raise Fog::Errors::NotFound, "The server resource could not be found"
63
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
64
64
  end
65
65
 
66
+ data[:images]['items'] = data[:images]['items'].select {|img| img['imageType'] == 'CDROM'}
67
+
66
68
  response = Excon::Response.new
67
69
  response.status = 200
68
70
  response.body = data[:images]
@@ -61,13 +61,13 @@ module Fog
61
61
  serv['datacenter_id'] == datacenter_id && serv['id'] == server_id
62
62
  end
63
63
  else
64
- raise Fog::Errors::NotFound, "The server resource could not be found"
64
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
65
65
  end
66
66
 
67
67
  response = Excon::Response.new
68
68
  response.status = 200
69
- response.body = if server['entities'] && server['entities']['volumes']
70
- server['entities']['volumes']
69
+ response.body = if server['volumes']
70
+ server['volumes']
71
71
  else
72
72
  {
73
73
  'id' => "#{server_id}/volumes",
@@ -31,14 +31,14 @@ module Fog
31
31
  grp["id"] == group_id
32
32
  end
33
33
  else
34
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
34
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
35
35
  end
36
36
 
37
37
  if user = data[:users]['items'].find do |usr|
38
38
  usr["id"] == user_id
39
39
  end
40
40
  else
41
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
41
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
42
42
  end
43
43
 
44
44
  response
@@ -50,20 +50,15 @@ module Fog
50
50
  if dc = data[:datacenters]["items"].find do |datacenter|
51
51
  datacenter["id"] == datacenter_id
52
52
  end
53
- options.each do |key, value|
54
- dc[key] = value
55
- end
56
53
 
57
54
  dc['properties']['version'] += 1 if dc['properties']
58
55
  dc['version'] += 1 if dc['version']
59
56
 
60
- dc['properties']['name'] += ' - updated' if dc['properties']
61
- dc['name'] += ' - updated' if dc['name']
62
- dc['properties']['description'] += ' - updated' if dc['properties']
63
- dc['description'] += ' - updated' if dc['description']
57
+ dc['properties']['name'] = options[:properties][:name] if dc['properties']
58
+ dc['name'] = options[:name] if dc['name']
64
59
 
65
60
  else
66
- raise Excon::Error::HTTPStatus, "The requested resource could not be found"
61
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
67
62
  end
68
63
 
69
64
  response = Excon::Response.new
@@ -70,7 +70,7 @@ module Fog
70
70
  firewall_rule[key] = value
71
71
  end
72
72
  else
73
- raise Fog::Errors::NotFound, 'The requested resource could not be found'
73
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
74
74
  end
75
75
 
76
76
  response = Excon::Response.new
@@ -65,12 +65,12 @@ module Fog
65
65
  grp["id"] == group_id
66
66
  end
67
67
  group['name'] = options[:name]
68
- group['createDataCenter'] = options[:create_data_center] if options[:create_data_center]
69
- group['createSnapshot'] = options[:create_snapshot] if options[:create_snapshot]
70
- group['reserveIp'] = options[:reserve_ip] if options[:reserve_ip]
71
- group['accessActivityLog'] = options[:access_activity_log] if options[:access_activity_log]
68
+ group['createDataCenter'] = options[:createDataCenter] if [true, false].include?(options[:createDataCenter])
69
+ group['createSnapshot'] = options[:createSnapshot] if [true, false].include?(options[:createSnapshot])
70
+ group['reserveIp'] = options[:reserveIp] if [true, false].include?(options[:reserveIp])
71
+ group['accessActivityLog'] = options[:accessActivityLog] if [true, false].include?(options[:accessActivityLog])
72
72
  else
73
- raise Excon::Error::HTTPStatus, 'The requested resource could not be found'
73
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
74
74
  end
75
75
 
76
76
  response = Excon::Response.new
@@ -86,11 +86,9 @@ module Fog
86
86
  if nic = data[:nics]['items'].find do |attribute|
87
87
  attribute["datacenter_id"] == datacenter_id && attribute["server_id"] == server_id && attribute["id"] == nic_id
88
88
  end
89
- options.each do |key, value|
90
- nic[key] = value
91
- end
89
+ nic['name'] = options[:name]
92
90
  else
93
- raise Fog::Errors::NotFound, 'The requested resource could not be found'
91
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
94
92
  end
95
93
 
96
94
  response = Excon::Response.new
@@ -126,13 +126,12 @@ module Fog
126
126
  if server = data[:servers]['items'].find do |attrib|
127
127
  attrib['id'] == server_id
128
128
  end
129
- properties.each do |key, value|
130
- server[key] = value
131
- end
132
129
  else
133
- raise Fog::Errors::NotFound, 'The requested server resource could not be found'
130
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
134
131
  end
135
132
 
133
+ server['name'] = properties[:name]
134
+
136
135
  response = Excon::Response.new
137
136
  response.status = 202
138
137
  response.body = server
@@ -49,10 +49,10 @@ module Fog
49
49
  if share = data[:shares]['items'].find do |shr|
50
50
  shr["id"] == resource_id
51
51
  end
52
- share['editPrivilege'] = options[:edit_privilege] if options[:edit_privilege]
53
- share['sharePrivilege'] = options[:share_privilege] if options[:share_privilege]
52
+ share['editPrivilege'] = options[:editPrivilege] if [true, false].include?(options[:editPrivilege])
53
+ share['sharePrivilege'] = options[:sharePrivilege] if [true, false].include?(options[:sharePrivilege])
54
54
  else
55
- raise Excon::Error::HTTPStatus, 'The requested resource could not be found'
55
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
56
56
  end
57
57
 
58
58
  response = Excon::Response.new
@@ -77,9 +77,9 @@ module Fog
77
77
  user['lastname'] = options[:lastname]
78
78
  user['email'] = options[:email]
79
79
  user['administrator'] = options[:administrator]
80
- user['forceSecAuth'] = options[:force_sec_auth]
80
+ user['forceSecAuth'] = options[:force_sec_auth] || false
81
81
  else
82
- raise Excon::Error::HTTPStatus, 'The requested resource could not be found'
82
+ raise Excon::Error::HTTPStatus, "Resource does not exist"
83
83
  end
84
84
 
85
85
  response = Excon::Response.new
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module ProfitBricks
3
- VERSION = "4.0.0".freeze
3
+ VERSION = "4.1.0".freeze
4
4
  end
5
5
  end
@@ -1,535 +1,1339 @@
1
1
  Shindo.tests('Fog::Compute[:profitbricks] | compute models', %w(profitbricks compute)) do
2
- compute = Fog::Compute[:profitbricks]
2
+ compute = Fog::Compute.new(:provider => 'ProfitBricks', :profitbricks_username => ENV['PROFITBRICKS_USERNAME'], :profitbricks_password => ENV['PROFITBRICKS_PASSWORD'])
3
3
 
4
4
  tests('success') do
5
5
  Excon.defaults[:connection_timeout] = 500
6
-
7
- tests('should retrieve contract resources').succeeds do
6
+ tests('List Contract Resources').succeeds do
8
7
  contract_resources = compute.contract_resources.all
9
8
 
10
- !contract_resources.empty?
9
+ contract_resources.count > 0 &&
10
+ contract_resources[0].contract_number !~ /\D/
11
+ end
12
+
13
+ tests('List Requests').succeeds do
14
+ requests = compute.requests.all
15
+ @request_id = requests[0].id
16
+
17
+ requests.count > 0 &&
18
+ requests[0].type == 'request'
11
19
  end
12
20
 
13
- tests('should create a datacenter').succeeds do
14
- datacenter = compute.datacenters.create(:name => 'fog-demo',
15
- :location => 'de/fra',
16
- :description => 'testing fog rest implementation')
17
- datacenter.wait_for { ready? }
21
+ tests('Get Request').succeeds do
22
+ request = compute.requests.get(@request_id)
23
+
24
+ request.id == @request_id &&
25
+ request.type == 'request'
26
+ end
27
+
28
+ tests('Get Request Status').succeeds do
29
+ request_status = compute.requests.get_status(@request_id)
30
+
31
+ request_status.id == "#{@request_id}/status" &&
32
+ request_status.type == 'request-status'
33
+ end
34
+
35
+ tests('List Locations').succeeds do
36
+ locations = compute.locations.all
37
+
38
+ locations.count > 0 &&
39
+ locations[0].type == 'location' &&
40
+ locations.find {|item| item.id == 'us/las'} != nil
41
+ end
42
+
43
+ tests('Get Location').succeeds do
44
+ location = compute.locations.get('us/las')
45
+
46
+ location.id == 'us/las' &&
47
+ location.type == 'location'
48
+ end
49
+
50
+ tests('Create Datacenter Simple').succeeds do
51
+ datacenter = compute.datacenters.create(:name => 'Fog Test',
52
+ :location => 'us/las',
53
+ :description => 'Fog test datacenter')
54
+ datacenter.wait_for {ready?}
18
55
 
19
56
  @datacenter_id = datacenter.id
20
57
 
21
- datacenter.name == 'fog-demo'
22
- datacenter.location == 'de/fra'
23
- datacenter.description == 'testing fog rest implementation'
58
+ datacenter.type == 'datacenter' &&
59
+ datacenter.name == 'Fog Test' &&
60
+ datacenter.location == 'us/las' &&
61
+ datacenter.description == 'Fog test datacenter'
62
+ end
63
+
64
+ tests('Create Datacenter Composite').succeeds do
65
+ servers = [
66
+ {
67
+ name: 'Fog Test',
68
+ ram: 1024,
69
+ cores: 1
70
+ }
71
+ ]
72
+
73
+ volumes = [
74
+ {
75
+ name: 'Fog Test',
76
+ size: 2,
77
+ bus: 'VIRTIO',
78
+ type: 'HDD',
79
+ licenceType: 'UNKNOWN',
80
+ availabilityZone: 'ZONE_3'
81
+ }
82
+ ]
83
+ datacenter = compute.datacenters.create(:name => 'Fog Test Composite',
84
+ :location => 'us/las',
85
+ :description => 'Fog test composite datacenter',
86
+ :servers => servers,
87
+ :volumes => volumes)
88
+ datacenter.wait_for {ready?}
89
+
90
+ @composite_dc_id = datacenter.id
91
+
92
+ datacenter.type == 'datacenter' &&
93
+ datacenter.name == 'Fog Test Composite' &&
94
+ datacenter.location == 'us/las' &&
95
+ datacenter.description == 'Fog test composite datacenter' &&
96
+ datacenter.servers.count > 0 &&
97
+ datacenter.volumes.count > 0
98
+ end
99
+
100
+ tests('List Datacenters').succeeds do
101
+ datacenters = compute.datacenters.all
102
+
103
+ datacenters.count > 0 &&
104
+ datacenters[0].type == 'datacenter'
24
105
  end
25
106
 
26
- tests('should retrieve a datacenter by id').succeeds do
107
+ tests('Get Datacenter').succeeds do
27
108
  datacenter = compute.datacenters.get(@datacenter_id)
28
109
 
29
- datacenter.name == 'fog-demo'
30
- datacenter.location == 'de/fra'
31
- datacenter.description == 'testing fog rest implementation'
110
+ datacenter.id == @datacenter_id &&
111
+ datacenter.type == 'datacenter' &&
112
+ datacenter.name == 'Fog Test' &&
113
+ datacenter.location == 'us/las' &&
114
+ datacenter.description == 'Fog test datacenter'
32
115
  end
33
116
 
34
- tests('should update a datacenter').succeeds do
117
+ tests('Update Datacenter').succeeds do
35
118
  datacenter = compute.datacenters.get(@datacenter_id)
36
- datacenter.name = datacenter.name + ' - updated'
37
- datacenter.description = datacenter.description + ' - updated'
119
+ datacenter.name = datacenter.name + ' - RENAMED'
38
120
  datacenter.update
121
+ datacenter.wait_for {ready?}
122
+ datacenter.reload
123
+
124
+ datacenter.name == 'Fog Test - RENAMED' &&
125
+ datacenter.version > 1
126
+ end
127
+
128
+ tests('Create LAN').succeeds do
129
+ lan = compute.lans.create(:datacenter_id => @datacenter_id,
130
+ :name => 'Fog Test',
131
+ :public => true)
39
132
 
40
- datacenter.wait_for { ready? }
133
+ @lan_id = lan.id
134
+ sleep(120) if ENV["FOG_MOCK"] != "true"
41
135
 
42
- datacenter.name == 'fog-demo - updated'
43
- datacenter.description == 'testing fog rest implementation - updated'
136
+ lan.name == 'Fog Test' &&
137
+ lan.public
44
138
  end
45
139
 
46
- tests('should retrieve all datacenters').succeeds do
47
- datacenters = compute.datacenters.all
140
+ tests('List LANs').succeeds do
141
+ lans = compute.lans.all(@datacenter_id)
48
142
 
49
- !datacenters.empty?
143
+ lans.count > 0 &&
144
+ lans[0].type == 'lan'
50
145
  end
51
146
 
52
- tests('should retrieve all locations').succeeds do
53
- locations = compute.locations.all
147
+ tests('Get LAN').succeeds do
148
+ lan = compute.lans.get(@datacenter_id, @lan_id)
54
149
 
55
- !locations.empty?
150
+ lan.id == @lan_id &&
151
+ lan.type == 'lan' &&
152
+ lan.name == 'Fog Test' &&
153
+ lan.public
56
154
  end
57
155
 
58
- tests('should retrieve a location by id').succeeds do
59
- location = compute.locations.get('us/las')
156
+ tests('Update LAN').succeeds do
157
+ lan = compute.lans.get(@datacenter_id, @lan_id)
158
+ lan.name = lan.name + ' - RENAME'
159
+ lan.public = false
160
+ lan.update
60
161
 
61
- location.name == 'lasvegas'
162
+ lan.id == @lan_id &&
163
+ lan.type == 'lan' &&
164
+ lan.name == 'Fog Test - RENAME'
62
165
  end
63
166
 
64
- tests('should create a volume').succeeds do
167
+ tests('List Images').succeeds do
168
+ images = compute.images.all
169
+
170
+ images.count > 0
171
+ images[0].type == 'image'
172
+
173
+ image = images.find do |img|
174
+ img.image_type == 'HDD' &&
175
+ img.licence_type == 'LINUX' &&
176
+ img.location == 'us/las'
177
+ end
178
+
179
+ @image_id = image.id
180
+ end
181
+
182
+
183
+ tests('Get Image').succeeds do
184
+ image = compute.images.get(@image_id)
185
+
186
+ image.id == @image_id &&
187
+ image.type == 'image' &&
188
+ !image.name.empty? &&
189
+ image.description.to_s.empty? &&
190
+ !image.location.to_s.empty? &&
191
+ image.size > 0 &&
192
+ ['true', 'false', true, false].include?(image.cpu_hot_plug) &&
193
+ ['true', 'false', true, false].include?(image.cpu_hot_unplug) &&
194
+ ['true', 'false', true, false].include?(image.ram_hot_plug) &&
195
+ ['true', 'false', true, false].include?(image.ram_hot_unplug) &&
196
+ ['true', 'false', true, false].include?(image.nic_hot_plug) &&
197
+ ['true', 'false', true, false].include?(image.nic_hot_unplug) &&
198
+ ['true', 'false', true, false].include?(image.disc_virtio_hot_plug) &&
199
+ ['true', 'false', true, false].include?(image.disc_virtio_hot_unplug) &&
200
+ ['true', 'false', true, false].include?(image.disc_scsi_hot_plug) &&
201
+ ['true', 'false', true, false].include?(image.disc_scsi_hot_unplug) &&
202
+ ['true', 'false', true, false].include?(image.public) &&
203
+ !image.licence_type.to_s.empty? &&
204
+ !image.image_type.to_s.empty?
205
+ end
206
+
207
+ tests('Create Volume').succeeds do
65
208
  volume = compute.volumes.create(:datacenter_id => @datacenter_id,
66
- :name => 'fog-demo-volume',
67
- :size => 5,
68
- :licence_type => 'OTHER',
209
+ :name => 'Fog Test',
210
+ :size => 2,
211
+ :bus => 'VIRTIO',
69
212
  :type => 'HDD',
70
- :availability_zone => 'AUTO')
71
- volume.wait_for { ready? }
213
+ :availability_zone => 'ZONE_3',
214
+ :image => @image_id,
215
+ :ssh_keys => ['ssh-rsa AAAAB3NzaC1'])
216
+ volume.wait_for {ready?}
72
217
 
73
218
  @volume_id = volume.id
74
219
 
75
- volume.name == 'fog-demo-volume'
76
- volume.size == 5
77
- volume.type == 'HDD'
78
- volume.licence_type == 'OTHER'
220
+ volume.name == 'Fog Test' &&
221
+ volume.size == 2 &&
222
+ volume.bus == 'VIRTIO' &&
223
+ volume.type == 'HDD' &&
224
+ volume.availability_zone == 'ZONE_3' &&
225
+ volume.image == @image_id &&
226
+ volume.ssh_keys.kind_of?(Array)
79
227
  end
80
228
 
81
- tests('should retrieve a volume by id').succeeds do
82
- volume = compute.volumes.get(@datacenter_id, @volume_id)
229
+ tests('List Volumes').succeeds do
230
+ volumes = compute.volumes.all(@datacenter_id)
83
231
 
84
- volume.name == 'fog-demo-volume'
85
- volume.size == 5
86
- volume.type == 'HDD'
87
- volume.licence_type == 'OTHER'
232
+ volumes.count > 0 &&
233
+ volumes[0].type == 'HDD'
88
234
  end
89
235
 
90
- tests('should update a volume').succeeds do
236
+ tests('Get Volume').succeeds do
91
237
  volume = compute.volumes.get(@datacenter_id, @volume_id)
92
- volume.name = volume.name + ' - updated'
93
- volume.update
94
-
95
- volume.wait_for { ready? }
96
238
 
97
- volume.name == 'fog-demo-volume - updated'
239
+ volume.id == @volume_id &&
240
+ volume.name == 'Fog Test' &&
241
+ volume.size == 2 &&
242
+ volume.type == 'HDD' &&
243
+ volume.availability_zone == 'ZONE_3' &&
244
+ volume.image == @image_id
98
245
  end
99
246
 
100
- tests('should retrieve all volumes').succeeds do
101
- volumes = compute.volumes.all(@datacenter_id)
247
+ tests('Update Volume').succeeds do
248
+ volume = compute.volumes.get(@datacenter_id, @volume_id)
249
+ volume.size = 5
250
+ volume.name = volume.name + ' - RENAME'
251
+ volume.update
252
+
253
+ volume.wait_for {ready?}
254
+ volume.reload
102
255
 
103
- !volumes.empty?
256
+ volume.id == @volume_id &&
257
+ volume.name == 'Fog Test - RENAME' &&
258
+ volume.size == 5
104
259
  end
105
260
 
106
- tests('should create a volume snapshot').succeeds do
261
+ tests('Create Snapshot').succeeds do
107
262
  volume = compute.volumes.get(@datacenter_id, @volume_id)
108
263
 
109
- volume.create_snapshot('fog-demo-snapshot', 'part of fog models test suite') == true
264
+ volume.create_snapshot('Fog Test', 'Fog test snapshot') == true
110
265
  volume.reload
111
266
  end
112
267
 
113
- tests('should retrieve all snapshots').succeeds do
114
- sleep(60) if ENV["FOG_MOCK"] != "true"
268
+ tests('List Snapshots').succeeds do
269
+ sleep(30) if ENV["FOG_MOCK"] != "true"
115
270
 
116
271
  snapshots = compute.snapshots.all
117
-
118
- !snapshots.empty?
119
-
120
272
  snapshot = snapshots.find do |snp|
121
- snp.name == 'fog-demo-snapshot'
273
+ snp.name == 'Fog Test'
122
274
  end
123
275
 
124
276
  @snapshot_id = snapshot.id
125
- end
126
-
127
- tests('should retrieve a snapshot by id').succeeds do
128
- snapshot = compute.snapshots.get(@snapshot_id)
129
277
 
130
- snapshot.name == 'fog-demo-snapshot'
278
+ snapshots.count > 0 &&
279
+ snapshots[0].type == 'snapshot'
131
280
  end
132
281
 
133
- tests('should update a snapshot').succeeds do
282
+ tests('Get Snapshot').succeeds do
283
+ volume = compute.volumes.get(@datacenter_id, @volume_id)
134
284
  snapshot = compute.snapshots.get(@snapshot_id)
135
285
 
136
- snapshot.name = snapshot.name + ' - updated'
137
- snapshot.update
138
-
139
- snapshot.name == 'fog-demo-snapshot - updated'
140
- end
141
-
142
- tests('should restore a volume snapshot').succeeds do
286
+ snapshot.id == @snapshot_id &&
287
+ snapshot.name == 'Fog Test' &&
288
+ snapshot.description.include?('Fog') &&
289
+ snapshot.type == 'snapshot' &&
290
+ snapshot.location == 'us/las' &&
291
+ snapshot.size == volume.size &&
292
+ snapshot.cpu_hot_plug == volume.cpu_hot_plug &&
293
+ snapshot.cpu_hot_unplug == volume.cpu_hot_unplug &&
294
+ snapshot.ram_hot_plug == volume.ram_hot_plug &&
295
+ snapshot.ram_hot_unplug == volume.ram_hot_unplug &&
296
+ snapshot.nic_hot_plug == volume.nic_hot_plug &&
297
+ snapshot.nic_hot_unplug == volume.nic_hot_unplug &&
298
+ snapshot.disc_virtio_hot_plug == volume.disc_virtio_hot_plug &&
299
+ snapshot.disc_virtio_hot_unplug == volume.disc_virtio_hot_unplug &&
300
+ snapshot.disc_scsi_hot_plug == volume.disc_scsi_hot_plug &&
301
+ snapshot.disc_scsi_hot_unplug == volume.disc_scsi_hot_unplug &&
302
+ snapshot.licence_type == volume.licence_type
303
+ end
304
+
305
+ tests('Restore Snapshot').succeeds do
143
306
  volume = compute.volumes.get(@datacenter_id, @volume_id)
144
307
 
145
- volume.restore_snapshot(@snapshot_id) == true
308
+ volume.restore_snapshot(@snapshot_id)
146
309
  end
147
310
 
148
- tests('should retrieve all images').succeeds do
149
- images = compute.images.all
311
+ tests('Update Snapshot').succeeds do
312
+ snapshot = compute.snapshots.get(@snapshot_id)
150
313
 
151
- !images.empty?
314
+ snapshot.name = snapshot.name + ' - RENAME'
315
+ snapshot.description = snapshot.description + ' - RENAME'
316
+ snapshot.update
152
317
 
153
- image = images.find do |img|
154
- img.image_type == 'CDROM' &&
155
- img.licence_type == 'LINUX'
156
- end
318
+ sleep(30) if ENV["FOG_MOCK"] != "true"
319
+ snapshot = compute.snapshots.get(@snapshot_id)
157
320
 
158
- @image_id = image.id
321
+ snapshot.name == 'Fog Test - RENAME' &&
322
+ snapshot.description.include?('Fog') &&
323
+ snapshot.description.include?('- RENAME')
159
324
  end
160
325
 
161
- tests('should retrieve an image by id').succeeds do
162
- image = compute.images.get(@image_id)
163
-
164
- image.image_type == 'CDROM'
165
- image.licence_type == 'LINUX'
166
- end
326
+ tests('Create Server').succeeds do
327
+ server = compute.servers.create(:datacenter_id => @datacenter_id,
328
+ :name => 'Fog Test',
329
+ :ram => 1024,
330
+ :cores => 1,
331
+ :availability_zone => 'ZONE_1',
332
+ :cpu_family => 'INTEL_XEON')
333
+ server.wait_for {ready?}
167
334
 
168
- if ENV["FOG_MOCK"] == "true"
169
- tests('should update an image').succeeds do
170
- image = compute.images.get(@image_id)
171
- image.licence_type = 'UNKNOWN'
172
- image.update
335
+ @server_id = server.id
173
336
 
174
- image.licence_type == 'UNKNOWN'
175
- end
176
- end
337
+ server.type == 'server' &&
338
+ server.name == 'Fog Test' &&
339
+ server.ram == 1024 &&
340
+ server.cores == 1 &&
341
+ server.availability_zone == 'ZONE_1' &&
342
+ server.cpu_family == 'INTEL_XEON'
343
+ end
344
+
345
+ tests('Create Server Composite').succeeds do
346
+ volumes = [
347
+ {
348
+ name: 'Fog Test',
349
+ size: 2,
350
+ bus: 'VIRTIO',
351
+ type: 'HDD',
352
+ licence_type: 'UNKNOWN',
353
+ availability_zone: 'ZONE_3'
354
+ }
355
+ ]
356
+ nics = [
357
+ {
358
+ name: 'Fog Test',
359
+ dhcp: 'true',
360
+ lan: 1,
361
+ firewallActive: true,
362
+ nat: false,
363
+ firewallrules: [
364
+ {
365
+ name: 'SSH',
366
+ protocol: 'TCP',
367
+ sourceMac: '01:23:45:67:89:00',
368
+ portRangeStart: 22,
369
+ portRangeEnd: 22
370
+ }
371
+ ]
372
+ }
373
+ ]
177
374
 
178
- tests('should create a server').succeeds do
179
375
  server = compute.servers.create(:datacenter_id => @datacenter_id,
180
- :name => 'fog-demo-server',
181
- :cores => 2,
182
- :ram => 2048,
183
- :licenceType => 'OTHER')
184
- server.wait_for { ready? }
376
+ :name => 'Fog Test Composite',
377
+ :ram => 1024,
378
+ :cores => 1,
379
+ :volumes => volumes,
380
+ :nics => nics)
381
+ server.wait_for {ready?}
185
382
 
186
- @server_id = server.id
383
+ @composite_server_id = server.id
187
384
 
188
- server.name == 'fog-demo-server'
189
- server.cores == 2
190
- server.ram == 2048
385
+ server.type == 'server' &&
386
+ server.name == 'Fog Test Composite' &&
387
+ server.ram == 1024 &&
388
+ server.cores == 1 &&
389
+ server.nics.count > 0 &&
390
+ server.volumes.count > 0
191
391
  end
192
392
 
193
- tests('should retrieve a server by id').succeeds do
194
- server = compute.servers.get(@datacenter_id, @server_id)
393
+ tests('List Servers').succeeds do
394
+ servers = compute.servers.all(@datacenter_id)
195
395
 
196
- server.name == 'fog-demo-server'
197
- server.cores == 2
198
- server.ram == 2048
396
+ servers.count > 0 &&
397
+ servers[0].type == 'server'
199
398
  end
200
399
 
201
- tests('should retrieve all servers').succeeds do
202
- servers = compute.servers.all(@datacenter_id)
400
+ tests('Get Server').succeeds do
401
+ server = compute.servers.get(@datacenter_id, @server_id)
203
402
 
204
- !servers.empty?
403
+ server.id == @server_id &&
404
+ server.type == 'server' &&
405
+ server.name == 'Fog Test' &&
406
+ server.cores == 1 &&
407
+ server.ram == 1024 &&
408
+ server.availability_zone == 'ZONE_1' &&
409
+ server.cpu_family == 'INTEL_XEON'
205
410
  end
206
411
 
207
- tests('should update a server').succeeds do
412
+ tests('Update Server').succeeds do
208
413
  server = compute.servers.get(@datacenter_id, @server_id)
209
414
 
210
- server.name = server.name + ' - updated'
415
+ server.name = server.name + ' RENAME'
211
416
  server.update
212
417
 
213
- server.wait_for { ready? }
418
+ server.wait_for {ready?}
214
419
 
215
- server.name == 'fog-demo-server - updated'
420
+ server.id == @server_id &&
421
+ server.name == 'Fog Test RENAME'
216
422
  end
217
423
 
218
- tests('should attach a volume to the server').succeeds do
219
- server = compute.servers.get(@datacenter_id, @server_id)
220
-
221
- volume = server.attach_volume(@volume_id)
424
+ tests('Attach Volume').succeeds do
425
+ volume = compute.attach_volume(@datacenter_id, @server_id, @volume_id)
222
426
 
223
427
  sleep(60) if ENV["FOG_MOCK"] != "true"
224
428
 
225
- volume['id'] == @volume_id
429
+ volume.body['id'] == @volume_id &&
430
+ volume.body['properties']['name'] == 'Fog Test - RENAME' &&
431
+ volume.body['properties']['size'] == 5 &&
432
+ volume.body['properties']['type'] == 'HDD' &&
433
+ volume.body['properties']['licenceType'] == 'LINUX'
226
434
  end
227
435
 
228
- tests('should retrieve all attached volumes').succeeds do
436
+ tests('List Attached Volumes').succeeds do
229
437
  server = compute.servers.get(@datacenter_id, @server_id)
230
438
 
231
439
  volumes = server.list_volumes
440
+
441
+ volumes['items'].count > 0
232
442
  end
233
443
 
234
- tests('should retrieve an attached volume').succeeds do
444
+ tests('Get Attached Volume').succeeds do
235
445
  server = compute.servers.get(@datacenter_id, @server_id)
236
446
 
237
447
  volume = server.get_attached_volume(@volume_id)
448
+
449
+ volume['name'] == 'Fog Test - RENAME' &&
450
+ volume['size'] == 5 &&
451
+ volume['bus'] == 'VIRTIO' &&
452
+ volume['type'] == 'HDD'
238
453
  end
239
454
 
240
- tests('should detach a volume from the server').succeeds do
455
+ tests('Detach Volume').succeeds do
241
456
  server = compute.servers.get(@datacenter_id, @server_id)
242
457
 
243
458
  server.detach_volume(@volume_id)
244
459
  end
245
460
 
246
- tests('should attach a CD-ROM to the server').succeeds do
247
- server = compute.servers.get(@datacenter_id, @server_id)
248
-
249
- sleep(60) if ENV["FOG_MOCK"] != "true"
461
+ tests('Attach CDROM').succeeds do
462
+ images = compute.images.all
463
+ cd_image = images.find do |img|
464
+ img.image_type == 'CDROM' &&
465
+ img.licence_type == 'LINUX'
466
+ end
467
+ @cd_image_id = cd_image.id
250
468
 
251
- cdrom = server.attach_cdrom(@image_id)
469
+ server = compute.servers.get(@datacenter_id, @server_id)
470
+ sleep(30) if ENV["FOG_MOCK"] != "true"
252
471
 
253
- sleep(60) if ENV["FOG_MOCK"] != "true"
472
+ cdrom = server.attach_cdrom(@cd_image_id)
473
+ sleep(120) if ENV["FOG_MOCK"] != "true"
254
474
 
255
475
  @cdrom_id = cdrom['id']
476
+
477
+ cdrom['id'] == @cd_image_id &&
478
+ !cdrom['name'].to_s.empty?
256
479
  end
257
480
 
258
- tests('should retrieve all attached CD-ROMs').succeeds do
481
+ tests('List Attached CDROMs').succeeds do
259
482
  server = compute.servers.get(@datacenter_id, @server_id)
260
483
 
261
- cdroms = server.list_cdroms
484
+ server.list_cdroms.count > 0
262
485
  end
263
486
 
264
- if ENV["FOG_MOCK"] != "true"
265
- tests('should detach a CD-ROM from the server').succeeds do
487
+ if ENV["FOG_MOCK"] == "true"
488
+ tests('Get Attached CDROM').succeeds do
266
489
  server = compute.servers.get(@datacenter_id, @server_id)
267
490
 
268
- if !server.list_cdroms['items'].empty?
269
- server.detach_cdrom(@image_id)
270
- else
271
- server.list_cdroms
272
- end
491
+ cdrom = server.get_attached_cdrom(@cdrom_id)
492
+
493
+ cdrom['id'] == @cdrom_id &&
494
+ !cdrom['name'].empty?
273
495
  end
274
496
  end
275
497
 
276
- tests('should reboot a server').succeeds do
498
+ tests('Detach CDROM').succeeds do
277
499
  server = compute.servers.get(@datacenter_id, @server_id)
278
500
 
279
- server.reboot
501
+ if !server.list_cdroms['items'].empty?
502
+ server.detach_cdrom(@image_id)
503
+ else
504
+ server.list_cdroms
505
+ end
280
506
  end
281
507
 
282
- tests('should stop a server').succeeds do
508
+ tests('Stop Server').succeeds do
283
509
  server = compute.servers.get(@datacenter_id, @server_id)
284
510
 
285
511
  server.stop
286
512
  end
287
513
 
288
- tests('should start a server').succeeds do
514
+ tests('Start Server').succeeds do
289
515
  server = compute.servers.get(@datacenter_id, @server_id)
290
516
 
291
517
  server.stop
292
518
  end
293
519
 
294
- tests('should create a lan').succeeds do
295
- lan = compute.lans.create(:datacenter_id => @datacenter_id,
296
- :name => 'fog-demo-lan',
297
- :public => false)
298
-
299
- @lan_id = lan.id
520
+ tests('Reset Server').succeeds do
521
+ server = compute.servers.get(@datacenter_id, @server_id)
300
522
 
301
- lan.name == 'fog-demo-lan'
523
+ server.reboot
302
524
  end
303
525
 
304
- tests('should retrieve all lans').succeeds do
526
+ tests('Reserve IP Block').succeeds do
527
+ ip_block = compute.ip_blocks.create(:location => 'us/las',
528
+ :size => 2,
529
+ :name => 'Fog Test')
530
+
305
531
  sleep(60) if ENV["FOG_MOCK"] != "true"
306
532
 
307
- lans = compute.lans.all(@datacenter_id)
533
+ @ip_block_id = ip_block.id
534
+
535
+ ip_block.name == 'Fog Test' &&
536
+ ip_block.size == 2 &&
537
+ ip_block.location == 'us/las'
308
538
  end
309
539
 
310
- tests('should retrieve a lan by id').succeeds do
311
- lan = compute.lans.get(@datacenter_id, @lan_id)
540
+ tests('List IP Blocks').succeeds do
541
+ ip_blocks = compute.ip_blocks.all
312
542
 
313
- lan.name == 'fog-demo-lan'
543
+ ip_blocks.count > 0 &&
544
+ ip_blocks[0].type == 'ipblock'
314
545
  end
315
546
 
316
- tests('should update a lan').succeeds do
317
- lan = compute.lans.get(@datacenter_id, @lan_id)
318
- lan.name == lan.name + ' - updated'
319
- lan.update
547
+ tests('Get IP Block').succeeds do
548
+ ip_block = compute.ip_blocks.get(@ip_block_id)
549
+
550
+ ip_block.id == @ip_block_id &&
551
+ ip_block.type == 'ipblock' &&
552
+ ip_block.name == 'Fog Test' &&
553
+ ip_block.size == 2 &&
554
+ ip_block.location == 'us/las' &&
555
+ ip_block.ips.count == 2
320
556
  end
321
557
 
322
- tests('should create a NIC').succeeds do
558
+ tests('Create NIC').succeeds do
559
+ sleep(60) if ENV["FOG_MOCK"] != "true"
323
560
  nic = compute.nics.create(:datacenter_id => @datacenter_id,
324
- :server_id => @server_id,
325
- :lan => @lan_id,
326
- :name => 'fog-demo-nic',
327
- :nat => false)
561
+ :server_id => @composite_server_id,
562
+ :lan => @lan_id,
563
+ :name => 'Fog Test',
564
+ :dhcp => true,
565
+ :firewall_active => true,
566
+ :ips => ['10.0.0.1'],
567
+ :nat => false)
568
+ nic.type == 'nic' &&
569
+ nic.name == 'Fog Test' &&
570
+ nic.lan.to_s == @lan_id.to_s &&
571
+ nic.firewall_active &&
572
+ nic.ips.is_a?(Array)
573
+ end
328
574
 
329
- @nic_id = nic.id
575
+ tests('List NICs').succeeds do
576
+ nics = compute.nics.all(@datacenter_id, @composite_server_id)
330
577
 
331
- nic.name == 'fog-demo-nic'
578
+ @nic_id = nics[0].id
579
+
580
+ nics.count > 0 &&
581
+ nics[0].type == 'nic'
332
582
  end
333
583
 
334
- tests('should retrieve all NICs').succeeds do
584
+ tests('Get NIC').succeeds do
585
+ nic = compute.nics.get(@datacenter_id, @composite_server_id, @nic_id)
586
+
587
+ nic.id == @nic_id &&
588
+ nic.type == 'nic' &&
589
+ nic.name == 'Fog Test' &&
590
+ nic.dhcp &&
591
+ nic.lan.to_s == @lan_id.to_s &&
592
+ nic.ips.is_a?(Array)
593
+ end
594
+
595
+ tests('Update NIC').succeeds do
596
+ nic = compute.nics.get(@datacenter_id, @composite_server_id, @nic_id)
597
+ nic.name = nic.name + ' - RENAME'
598
+ nic.update
599
+
600
+ nic.name == 'Fog Test - RENAME'
601
+ end
602
+
603
+ tests('Create Firewall Rule').succeeds do
604
+ firewall_rule = compute.firewall_rules.create(:datacenter_id => @datacenter_id,
605
+ :server_id => @composite_server_id,
606
+ :nic_id => @nic_id,
607
+ :name => 'SSH',
608
+ :protocol => 'TCP',
609
+ :source_mac => '01:23:45:67:89:00',
610
+ :port_range_start => '22',
611
+ :port_range_end => '22')
612
+
335
613
  sleep(60) if ENV["FOG_MOCK"] != "true"
336
614
 
337
- nics = compute.nics.all(@datacenter_id, @server_id)
615
+ @firewall_rule_id = firewall_rule.id
616
+
617
+ firewall_rule.type == 'firewall-rule' &&
618
+ firewall_rule.name == 'SSH' &&
619
+ firewall_rule.protocol == 'TCP' &&
620
+ firewall_rule.source_mac == '01:23:45:67:89:00' &&
621
+ firewall_rule.source_ip.nil? &&
622
+ firewall_rule.target_ip.nil? &&
623
+ firewall_rule.port_range_start.to_s == '22' &&
624
+ firewall_rule.port_range_end.to_s == '22' &&
625
+ firewall_rule.icmp_type.nil? &&
626
+ firewall_rule.icmp_code.nil?
338
627
  end
339
628
 
340
- tests('should retrieve a NIC by id').succeeds do
341
- nic = compute.nics.get(@datacenter_id, @server_id, @nic_id)
629
+ tests('List Firewall Rules').succeeds do
630
+ firewall_rules = compute.firewall_rules.all(@datacenter_id, @composite_server_id, @nic_id)
342
631
 
343
- nic.name == 'fog-demo-nic'
632
+ firewall_rules.count > 0 &&
633
+ firewall_rules[0].type == 'firewall-rule'
344
634
  end
345
635
 
346
- tests('should update a NIC').succeeds do
347
- nic = compute.nics.get(@datacenter_id, @server_id, @nic_id)
348
- nic.name = nic.name + ' - updated'
349
- nic.update
636
+ tests('Get Firewall Rule').succeeds do
637
+ firewall_rule = compute.firewall_rules.get(@datacenter_id, @composite_server_id, @nic_id, @firewall_rule_id)
638
+
639
+ firewall_rule.id == @firewall_rule_id &&
640
+ firewall_rule.type == 'firewall-rule' &&
641
+ firewall_rule.name == 'SSH' &&
642
+ firewall_rule.protocol == 'TCP' &&
643
+ firewall_rule.source_mac == '01:23:45:67:89:00' &&
644
+ firewall_rule.source_ip.nil? &&
645
+ firewall_rule.target_ip.nil? &&
646
+ firewall_rule.port_range_start.to_s == '22' &&
647
+ firewall_rule.port_range_end.to_s == '22' &&
648
+ firewall_rule.icmp_type.nil? &&
649
+ firewall_rule.icmp_code.nil?
350
650
  end
351
651
 
352
- tests('should create a load balancer').succeeds do
652
+ tests('Create Load Balancer').succeeds do
353
653
  load_balancer = compute.load_balancers.create(:datacenter_id => @datacenter_id,
354
- :name => 'fog-demo-load-balancer')
654
+ :name => 'Fog Test',
655
+ :dhcp => true)
355
656
 
356
657
  sleep(60) if ENV["FOG_MOCK"] != "true"
357
658
 
358
659
  @load_balancer_id = load_balancer.id
359
660
 
360
- load_balancer.name == 'fog-demo-load-balancer'
661
+ load_balancer.type == 'loadbalancer' &&
662
+ load_balancer.name == 'Fog Test' &&
663
+ load_balancer.dhcp
361
664
  end
362
665
 
363
- tests('should retrieve a load balancer by id').succeeds do
364
- load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
666
+ tests('List Load Balancers').succeeds do
667
+ load_balancers = compute.load_balancers.all(@datacenter_id)
365
668
 
366
- load_balancer.name == 'fog-demo-load-balancer'
669
+ load_balancers.count > 0 &&
670
+ load_balancers[0].type == 'loadbalancer'
367
671
  end
368
672
 
369
- tests('should retrieve all load balancers').succeeds do
370
- load_balancers = compute.load_balancers.all(@datacenter_id)
673
+ tests('Get Load Balancer').succeeds do
674
+ load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
371
675
 
372
- !load_balancers.empty?
676
+ load_balancer.id == @load_balancer_id &&
677
+ load_balancer.type == 'loadbalancer' &&
678
+ load_balancer.name == 'Fog Test' &&
679
+ load_balancer.dhcp == true
373
680
  end
374
681
 
375
- tests('should update a load balancer').succeeds do
682
+ tests('Update Load Balancer').succeeds do
376
683
  load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
377
- load_balancer.name = load_balancer.name + ' - updated'
684
+ load_balancer.name = load_balancer.name + ' - RENAME'
378
685
  load_balancer.update
686
+
687
+ sleep(60) if ENV["FOG_MOCK"] != "true"
688
+
689
+ load_balancer.id == @load_balancer_id &&
690
+ load_balancer.type == 'loadbalancer' &&
691
+ load_balancer.name == 'Fog Test - RENAME'
379
692
  end
380
693
 
381
- tests('should associate a NIC to a load balancer').succeeds do
694
+ tests('Associate Balanced NIC').succeeds do
382
695
  load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
383
696
  nic = load_balancer.associate_nic(@nic_id)
384
697
 
385
698
  sleep(60) if ENV["FOG_MOCK"] != "true"
386
699
 
387
- nic
700
+ nic['id'] == @nic_id &&
701
+ nic['name'] == 'Fog Test - RENAME'
388
702
  end
389
703
 
390
- tests('should retrieve all load balanced NICs').succeeds do
704
+ tests('List Balanced NICs').succeeds do
391
705
  load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
706
+ balanced_nics = load_balancer.list_nics
392
707
 
393
- load_balancer.list_nics
708
+ balanced_nics.count > 0 &&
709
+ balanced_nics[0]['type'] == 'nic'
394
710
  end
395
711
 
396
- tests('should retrieve a load balanced NIC').succeeds do
712
+ tests('Get Balanced NIC').succeeds do
397
713
  load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
398
- nic = load_balancer.get_nic(@nic_id)
714
+ balanced_nic = load_balancer.get_nic(@nic_id)
399
715
 
400
- nic['id'] == @nic_id
716
+ balanced_nic['id'].to_s == @nic_id.to_s &&
717
+ balanced_nic['type'] == 'nic' &&
718
+ balanced_nic['name'] == 'Fog Test - RENAME' &&
719
+ ((balanced_nic['mac'] =~ /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/) == 0) &&
720
+ balanced_nic['ips'].count > 0 &&
721
+ ['true', 'false', true, false].include?(balanced_nic['nat'])
401
722
  end
402
723
 
403
- tests('should remove a NIC association from a load balancer').succeeds do
404
- load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
405
- result = load_balancer.remove_nic_association(@nic_id)
724
+ tests('List Resources').succeeds do
725
+ resources = compute.resources.all
406
726
 
407
- sleep(60) if ENV["FOG_MOCK"] != "true"
727
+ datacenter = resources.find do |r|
728
+ r.type == 'datacenter'
729
+ end
408
730
 
409
- result
731
+ image = resources.find do |r|
732
+ r.type == 'image'
733
+ end
734
+
735
+ snapshot = resources.find do |r|
736
+ r.type == 'snapshot'
737
+ end
738
+
739
+ ipblock = resources.find do |r|
740
+ r.type == 'ipblock'
741
+ end
742
+
743
+ @dc_id = datacenter.id
744
+ @img_id = image.id
745
+ @snp_id = snapshot.id
746
+ @ipb_id = ipblock.id
747
+
748
+ resources.count > 0
410
749
  end
411
750
 
412
- tests('should update a load balancer').succeeds do
413
- load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
414
- load_balancer.name = load_balancer.name + ' - updated'
415
- load_balancer.update
751
+ tests('List Datacenter Resources').succeeds do
752
+ resources = compute.resources.get_by_type('datacenter')
753
+
754
+ resources.count > 0 &&
755
+ resources[0].type == 'datacenter'
416
756
  end
417
757
 
418
- tests('should create an ip block').succeeds do
419
- ip_block = compute.ip_blocks.create(:location => 'de/fra',
420
- :size => 1,
421
- :name => 'fog-demo-ip-block')
758
+ tests('List Image Resources').succeeds do
759
+ resources = compute.resources.get_by_type('image')
422
760
 
423
- sleep(60) if ENV["FOG_MOCK"] != "true"
761
+ resources.count > 0 &&
762
+ resources[0].type == 'image'
763
+ end
424
764
 
425
- @ip_block_id = ip_block.id
426
- ip_block.name == 'fog-demo-ip-block'
765
+ tests('List Snapshot Resources').succeeds do
766
+ resources = compute.resources.get_by_type('snapshot')
767
+
768
+ resources.count > 0 &&
769
+ resources[0].type == 'snapshot'
427
770
  end
428
771
 
429
- tests('should retrieve an ip block by id').succeeds do
430
- ip_block = compute.ip_blocks.get(@ip_block_id)
772
+ tests('List IP Block Resources').succeeds do
773
+ resources = compute.resources.get_by_type('ipblock')
431
774
 
432
- ip_block.name == 'fog-demo-ip-block'
775
+ resources.count > 0 &&
776
+ resources[0].type == 'ipblock'
433
777
  end
434
778
 
435
- tests('should retrieve all ip blocks').succeeds do
436
- ip_blocks = compute.ip_blocks.all
779
+ tests('Get Datacenter Resource').succeeds do
780
+ resource = compute.resources.get_resource_by_type('datacenter', @dc_id)
437
781
 
438
- !ip_blocks.empty?
782
+ resource.id == @dc_id &&
783
+ resource.type == 'datacenter'
439
784
  end
440
785
 
441
- tests('should create a firewall rule').succeeds do
442
- firewall_rule = compute.firewall_rules.create(:datacenter_id => @datacenter_id,
443
- :server_id => @server_id,
444
- :nic_id => @nic_id,
445
- :name => 'fog-demo-firewall-rule',
446
- :protocol => 'TCP')
786
+ tests('Get Image Resource').succeeds do
787
+ resource = compute.resources.get_resource_by_type('image', @img_id)
447
788
 
448
- sleep(60) if ENV["FOG_MOCK"] != "true"
789
+ resource.id == @img_id &&
790
+ resource.type == 'image'
791
+ end
449
792
 
450
- @firewall_rule_id = firewall_rule.id
793
+ tests('Get Snapshot Resource').succeeds do
794
+ resource = compute.resources.get_resource_by_type('snapshot', @snp_id)
451
795
 
452
- firewall_rule.name == 'fog-demo-firewall-rule'
796
+ resource.id == @snp_id &&
797
+ resource.type == 'snapshot'
453
798
  end
454
799
 
455
- tests('should retrieve a firewall rule').succeeds do
456
- firewall_rule = compute.firewall_rules.get(@datacenter_id, @server_id, @nic_id, @firewall_rule_id)
800
+ tests('Get IP Block Resource').succeeds do
801
+ resource = compute.resources.get_resource_by_type('ipblock', @ipb_id)
457
802
 
458
- firewall_rule.name == 'fog-demo-firewall-rule'
803
+ resource.id == @ipb_id &&
804
+ resource.type == 'ipblock'
459
805
  end
806
+ end
807
+
808
+ tests('user management success') do
809
+ Excon.defaults[:connection_timeout] = 500
810
+
811
+ tests('Create Group').succeeds do
812
+ group = compute.groups.create(:name => 'Fog Test',
813
+ :create_datacenter => true,
814
+ :create_snapshot => true,
815
+ :reserve_ip => true,
816
+ :access_activity_log => true)
817
+ group.wait_for {ready?}
460
818
 
461
- tests('should retrieve all firewall rules').succeeds do
462
- firewall_rules = compute.firewall_rules.all(@datacenter_id, @server_id, @nic_id)
819
+ @group_id = group.id
463
820
 
464
- !firewall_rules.empty?
821
+ group.type == 'group' &&
822
+ group.name == 'Fog Test' &&
823
+ group.create_datacenter == true &&
824
+ group.create_snapshot == true &&
825
+ group.reserve_ip == true &&
826
+ group.access_activity_log == true
465
827
  end
466
828
 
467
- tests('should update a firewall rule').succeeds do
468
- firewall_rule = compute.firewall_rules.get(@datacenter_id, @server_id, @nic_id, @firewall_rule_id)
469
- firewall_rule.name = firewall_rule.name + ' - updated'
470
- firewall_rule.update
829
+ tests('List Groups').succeeds do
830
+ groups = compute.groups.all
831
+
832
+ groups.count > 0 &&
833
+ groups[0].type = 'group'
471
834
  end
472
835
 
473
- tests('should delete a firewall rule').succeeds do
474
- firewall_rule = compute.firewall_rules.get(@datacenter_id, @server_id, @nic_id, @firewall_rule_id)
836
+ tests('Get Group').succeeds do
837
+ group = compute.groups.get(@group_id)
475
838
 
476
- firewall_rule.delete
839
+ group.id == @group_id &&
840
+ group.type == 'group' &&
841
+ group.name == 'Fog Test' &&
842
+ group.create_datacenter == true &&
843
+ group.create_snapshot == true &&
844
+ group.reserve_ip == true &&
845
+ group.access_activity_log == true
477
846
  end
478
847
 
479
- tests('should delete a NIC').succeeds do
480
- nic = compute.nics.get(@datacenter_id, @server_id, @nic_id)
848
+ tests('Update Group').succeeds do
849
+ group = compute.groups.get(@group_id)
850
+ group.name = group.name + ' - RENAME'
851
+ group.create_datacenter = false
852
+ group.update
853
+ group.wait_for {ready?}
854
+ group.reload
481
855
 
482
- nic.delete
856
+ group.id == @group_id &&
857
+ group.type == 'group' &&
858
+ group.name == 'Fog Test - RENAME' &&
859
+ group.create_datacenter == false
483
860
  end
484
861
 
485
- tests('should delete a lan').succeeds do
486
- lan = compute.lans.get(@datacenter_id, @lan_id)
862
+ tests('Create Share').succeeds do
863
+ share = compute.shares.create(:group_id => @group_id,
864
+ :resource_id => @image_id,
865
+ :edit_privilege => true,
866
+ :share_privilege => true)
867
+ @share_id = share.id
487
868
 
488
- lan.delete
869
+ share.type == 'resource' &&
870
+ share.edit_privilege == true &&
871
+ share.share_privilege == true
872
+ end
873
+
874
+ tests('List Shares').succeeds do
875
+ shares = compute.shares.all(@group_id)
876
+
877
+ shares.count > 0 &&
878
+ shares[0].type = 'resource'
879
+ end
880
+
881
+ tests('Get Share').succeeds do
882
+ share = compute.shares.get(@group_id, @image_id)
883
+
884
+ share.id == @image_id &&
885
+ share.type == 'resource' &&
886
+ share.edit_privilege == true &&
887
+ share.share_privilege == true
888
+ end
889
+
890
+ tests('Update Share').succeeds do
891
+ share = compute.shares.get(@group_id, @image_id)
892
+ share.edit_privilege = false
893
+ share.update
894
+
895
+ share.id == @image_id &&
896
+ share.type == 'resource' &&
897
+ share.edit_privilege == false
898
+ end
899
+
900
+ tests('Create User').succeeds do
901
+ user = compute.users.create(:firstname => 'John',
902
+ :lastname => 'Doe',
903
+ :email => 'no-reply@example.com',
904
+ :password => 'secretpassword123',
905
+ :administrator => true,
906
+ :force_sec_auth => false)
907
+ user.wait_for {ready?}
908
+
909
+ @user_id = user.id
910
+
911
+ user.type == 'user' &&
912
+ user.firstname == 'John' &&
913
+ user.lastname == 'Doe' &&
914
+ user.email == 'no-reply@example.com' &&
915
+ user.administrator == true &&
916
+ user.force_sec_auth == false
917
+ end
918
+
919
+ tests('List Users').succeeds do
920
+ users = compute.users.all
921
+
922
+ users.count > 0 &&
923
+ users[0].type = 'user'
924
+ end
925
+
926
+ tests('Get User').succeeds do
927
+ user = compute.users.get(@user_id)
928
+
929
+ user.id == @user_id &&
930
+ user.type == 'user' &&
931
+ user.firstname == 'John' &&
932
+ user.lastname == 'Doe' &&
933
+ user.email == 'no-reply@example.com' &&
934
+ user.administrator == true &&
935
+ user.force_sec_auth == false &&
936
+ user.sec_auth_active == false
937
+ end
938
+
939
+ tests('Update User').succeeds do
940
+ user = compute.users.get(@user_id)
941
+ user.administrator = false
942
+ user.update
943
+
944
+ user.id == @user_id &&
945
+ user.type == 'user' &&
946
+ user.administrator == false &&
947
+ user.firstname == 'John' &&
948
+ user.lastname == 'Doe' &&
949
+ user.email == 'no-reply@example.com' &&
950
+ user.force_sec_auth == false
951
+ end
952
+
953
+ tests('Add User to Group').succeeds do
954
+ user = compute.users.add_group_user(@group_id, @user_id)
955
+
956
+ user.id == @user_id &&
957
+ user.type == 'user'
958
+ end
959
+
960
+ tests('Remove User from Group').succeeds do
961
+ compute.users.remove_group_user(@group_id, @user_id)
962
+ end
963
+ end
964
+
965
+ tests('user management failure') do
966
+ tests('Create Group Failure (Missing Required Parameter)') do
967
+ begin
968
+ options = {
969
+ create_datacenter: true
970
+ }
971
+
972
+ compute.create_group(options)
973
+ rescue Exception => e
974
+ returns(true, "exception contains 'Attribute 'name' is required'") {
975
+ e.message.include? "Attribute 'name' is required"
976
+ }
977
+ end
978
+ end
979
+
980
+ tests('Get Group Failure (Nonexistent)') do
981
+ begin
982
+ compute.get_group('00000000-0000-0000-0000-000000000000')
983
+ rescue Exception => e
984
+ returns(true, 'exception contains \'Resource does not exist\'') {
985
+ e.message.include? 'Resource does not exist'
986
+ }
987
+ end
988
+ end
989
+
990
+ tests('Get share Failure (Nonexistent)') do
991
+ begin
992
+ compute.get_share(@group_id, '00000000-0000-0000-0000-000000000000')
993
+ rescue Exception => e
994
+ returns(true, 'exception contains \'Resource does not exist\'') {
995
+ e.message.include? 'Resource does not exist'
996
+ }
997
+ end
998
+ end
999
+
1000
+ tests('Create User Failure (Missing Required Parameter)') do
1001
+ begin
1002
+ options = {
1003
+ firstname: 'John',
1004
+ lastname: 'Doe'
1005
+ }
1006
+
1007
+ compute.create_user(options)
1008
+ rescue Exception => e
1009
+ returns(true, "exception contains 'Attribute 'email' is required'") {
1010
+ e.message.include? "Attribute 'email' is required"
1011
+ }
1012
+ end
1013
+ end
1014
+
1015
+ tests('Get User Failure (Nonexistent)') do
1016
+ begin
1017
+ compute.get_user('00000000-0000-0000-0000-000000000000')
1018
+ rescue Exception => e
1019
+ returns(true, 'exception contains \'Resource does not exist\'') {
1020
+ e.message.include? 'Resource does not exist'
1021
+ }
1022
+ end
1023
+ end
1024
+ end
1025
+
1026
+ tests('failure') do
1027
+ tests('Get Location Failure (Nonexistent)') do
1028
+ begin
1029
+ compute.get_location('00000000-0000-0000-0000-000000000000')
1030
+ rescue Exception => e
1031
+ returns(true, 'exception contains \'Resource does not exist\'') {
1032
+ e.message.include? 'Resource does not exist'
1033
+ }
1034
+ end
1035
+ end
1036
+
1037
+ tests('Create Datacenter Failure (Missing Required Parameter)') do
1038
+ options = {
1039
+ name: 'Fog Datacenter'
1040
+ }
1041
+
1042
+ begin
1043
+ compute.create_datacenter(options)
1044
+ rescue Exception => e
1045
+ returns(true, "exception contains 'Attribute 'location' is required'") {
1046
+ e.message.include? "Attribute 'location' is required"
1047
+ }
1048
+ end
1049
+ end
1050
+
1051
+ tests('Get Datacenter Failure (Nonexistent)') do
1052
+ begin
1053
+ compute.get_datacenter('00000000-0000-0000-0000-000000000000')
1054
+ rescue Exception => e
1055
+ returns(true, "exception contains 'Resource does not exist'") {
1056
+ e.message.include? 'Resource does not exist'
1057
+ }
1058
+ end
1059
+ end
1060
+
1061
+ tests('Get LAN Failure (Nonexistent)') do
1062
+ begin
1063
+ compute.get_lan('00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000')
1064
+ rescue Exception => e
1065
+ returns(true, "exception contains 'Resource does not exist'") {
1066
+ e.message.include? 'Resource does not exist'
1067
+ }
1068
+ end
1069
+ end
1070
+
1071
+ tests('Get Image Failure (Nonexistent)') do
1072
+ begin
1073
+ compute.get_image('00000000-0000-0000-0000-000000000000')
1074
+ rescue Exception => e
1075
+ returns(true, "exception contains 'Resource does not exist'") {
1076
+ e.message.include? 'Resource does not exist'
1077
+ }
1078
+ end
1079
+ end
1080
+
1081
+ tests('Create Volume Failure (Missing Required Parameter)') do
1082
+ options = {
1083
+ name: 'Fog Test'
1084
+ }
1085
+
1086
+ begin
1087
+ compute.create_volume(@datacenter_id, options)
1088
+ rescue Exception => e
1089
+ returns(true, "exception contains 'Attribute 'size' is required'") {
1090
+ e.message.include? "Attribute 'size' is required"
1091
+ }
1092
+ end
1093
+ end
1094
+
1095
+ tests('Create Server Failure (Missing Required Parameter)') do
1096
+ options = {
1097
+ name: 'Fog Test',
1098
+ ram: 1024
1099
+ }
1100
+
1101
+ begin
1102
+ compute.create_server(@datacenter_id, options)
1103
+ rescue Exception => e
1104
+ returns(true, "exception contains 'Attribute 'cores' is required'") {
1105
+ e.message.include? "Attribute 'cores' is required"
1106
+ }
1107
+ end
1108
+ end
1109
+
1110
+ tests('Get Server Failure (Nonexistent)') do
1111
+ begin
1112
+ compute.get_server('00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000')
1113
+ rescue Exception => e
1114
+ returns(true, "exception contains 'Resource does not exist'") {
1115
+ e.message.include? 'Resource does not exist'
1116
+ }
1117
+ end
489
1118
  end
490
1119
 
491
- tests('should delete a load balancer').succeeds do
1120
+ tests('Get Volume Failure (Nonexistent)') do
1121
+ begin
1122
+ compute.get_volume('00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000')
1123
+ rescue Exception => e
1124
+ returns(true, "exception contains 'Resource does not exist'") {
1125
+ e.message.include? 'Resource does not exist'
1126
+ }
1127
+ end
1128
+ end
1129
+
1130
+ tests('Get Snapshot Failure (Nonexistent)') do
1131
+ begin
1132
+ compute.get_snapshot('00000000-0000-0000-0000-000000000000')
1133
+ rescue Exception => e
1134
+ returns(true, "exception contains 'Resource does not exist'") {
1135
+ e.message.include? 'Resource does not exist'
1136
+ }
1137
+ end
1138
+ end
1139
+
1140
+ tests('Get Request Failure (Nonexistent)') do
1141
+ begin
1142
+ compute.get_request('00000000-0000-0000-0000-000000000000')
1143
+ rescue Exception => e
1144
+ returns(true, "exception contains 'Resource does not exist'") {
1145
+ e.message.include? 'Resource does not exist'
1146
+ }
1147
+ end
1148
+ end
1149
+
1150
+ tests('Get IP Block Failure (Nonexistent)') do
1151
+ begin
1152
+ compute.get_ip_block('00000000-0000-0000-0000-000000000000')
1153
+ rescue Exception => e
1154
+ returns(true, 'exception contains \'Resource does not exist\'') {
1155
+ e.message.include? 'Resource does not exist'
1156
+ }
1157
+ end
1158
+ end
1159
+
1160
+ tests('Create NIC Failure (Missing Required Parameter)') do
1161
+ begin
1162
+ compute.nics.create(:datacenter_id => @datacenter_id,
1163
+ :server_id => @server_id,
1164
+ :name => 'Fog Test')
1165
+ rescue Exception => e
1166
+ returns(true, "exception contains 'lan is required for this operation'") {
1167
+ e.message.include? "lan is required for this operation"
1168
+ }
1169
+ end
1170
+ end
1171
+
1172
+ tests('Get NIC Failure (Nonexistent)') do
1173
+ begin
1174
+ compute.get_nic('00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000')
1175
+ rescue Exception => e
1176
+ returns(true, 'exception contains \'Resource does not exist\'') {
1177
+ e.message.include? 'Resource does not exist'
1178
+ }
1179
+ end
1180
+ end
1181
+
1182
+ tests('Create Firewall Rule Failure (Missing Required Parameter)') do
1183
+ begin
1184
+ compute.firewall_rules.create(:datacenter_id => @datacenter_id,
1185
+ :server_id => @server_id,
1186
+ :nic_id => @nic_id,
1187
+ :name => 'Fog Test')
1188
+ rescue Exception => e
1189
+ returns(true, "exception contains 'protocol is required for this operation'") {
1190
+ e.message.include? "protocol is required for this operation"
1191
+ }
1192
+ end
1193
+ end
1194
+
1195
+ tests('Get Firewall Rule Failure (Nonexistent)') do
1196
+ begin
1197
+ compute.get_firewall_rule('00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000',
1198
+ '00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000')
1199
+ rescue Exception => e
1200
+ returns(true, 'exception contains \'Resource does not exist\'') {
1201
+ e.message.include? 'Resource does not exist'
1202
+ }
1203
+ end
1204
+ end
1205
+
1206
+ tests('Create Load Balancer Failure (Missing Required Parameter)') do
1207
+ begin
1208
+ compute.create_load_balancer(@datacenter_id)
1209
+ rescue Exception => e
1210
+ returns(true, "exception contains 'Attribute 'name' is required'") {
1211
+ e.message.include? "Attribute 'name' is required"
1212
+ }
1213
+ end
1214
+ end
1215
+
1216
+ tests('Get Load Balancer Failure (Nonexistent)') do
1217
+ begin
1218
+ compute.get_load_balancer(@datacenter_id, '00000000-0000-0000-0000-000000000000')
1219
+ rescue Exception => e
1220
+ returns(true, 'exception contains \'Resource does not exist\'') {
1221
+ e.message.include? 'Resource does not exist'
1222
+ }
1223
+ end
1224
+ end
1225
+
1226
+ tests('List Resources Failure (Nonexistent)') do
1227
+ begin
1228
+ compute.resources.get_by_type('unknown')
1229
+ rescue Exception => e
1230
+ returns(true, 'exception contains \'Resource does not exist\'') {
1231
+ e.message.include? 'Resource does not exist'
1232
+ }
1233
+ end
1234
+ end
1235
+
1236
+ tests('List Resources Type Failure (Nonexistent)') do
1237
+ begin
1238
+ compute.resources.get_resource_by_type('datacenter', '00000000-0000-0000-0000-000000000000')
1239
+ rescue Exception => e
1240
+ returns(true, 'exception contains \'Resource does not exist\'') {
1241
+ e.message.include? 'Resource does not exist'
1242
+ }
1243
+ end
1244
+ end
1245
+ end
1246
+
1247
+ tests('user management cleanup') do
1248
+ Excon.defaults[:connection_timeout] = 500
1249
+
1250
+ tests('Remove User').succeeds do
1251
+ user = compute.users.get(@user_id)
1252
+
1253
+ user.delete
1254
+ end
1255
+
1256
+ tests('Remove Share').succeeds do
1257
+ share = compute.shares.get(@group_id, @image_id)
1258
+
1259
+ share.delete
1260
+ end
1261
+
1262
+ tests('Remove Group').succeeds do
1263
+ group = compute.groups.get(@group_id)
1264
+
1265
+ group.delete
1266
+ end
1267
+ end
1268
+
1269
+ tests('cleanup') do
1270
+ Excon.defaults[:connection_timeout] = 500
1271
+
1272
+ tests('Remove Balanced NIC').succeeds do
1273
+ load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
1274
+ result = load_balancer.remove_nic_association(@nic_id)
1275
+
1276
+ sleep(60) if ENV["FOG_MOCK"] != "true"
1277
+
1278
+ result
1279
+ end
1280
+
1281
+ tests('Remove Load Balancer').succeeds do
492
1282
  load_balancer = compute.load_balancers.get(@datacenter_id, @load_balancer_id)
493
1283
 
494
1284
  load_balancer.delete
495
1285
  end
496
1286
 
497
- tests('should delete an ip block').succeeds do
498
- ip_block = compute.ip_blocks.get(@ip_block_id)
1287
+ tests('Remove Firewall Rule').succeeds do
1288
+ firewall_rule = compute.firewall_rules.get(@datacenter_id, @composite_server_id, @nic_id, @firewall_rule_id)
499
1289
 
500
- ip_block.delete
1290
+ firewall_rule.delete
501
1291
  end
502
1292
 
503
- tests('should delete a server').succeeds do
504
- server = compute.servers.get(@datacenter_id, @server_id)
1293
+ tests('Release IP Block').succeeds do
1294
+ ip_block = compute.ip_blocks.get(@ip_block_id)
505
1295
 
506
- server.delete
1296
+ ip_block.delete
507
1297
  end
508
1298
 
509
- tests('should delete a volume').succeeds do
510
- volume = compute.volumes.get(@datacenter_id, @volume_id)
1299
+ tests('Remove NIC').succeeds do
1300
+ sleep(60) if ENV["FOG_MOCK"] != "true"
1301
+ nic = compute.nics.get(@datacenter_id, @composite_server_id, @nic_id)
511
1302
 
512
- volume.delete
1303
+ nic.delete
513
1304
  end
514
1305
 
515
- if ENV["FOG_MOCK"] == "true"
516
- tests('should delete an image').succeeds do
517
- image = compute.images.get(@image_id)
1306
+ tests('Remove LAN').succeeds do
1307
+ sleep(60) if ENV["FOG_MOCK"] != "true"
1308
+ lan = compute.lans.get(@datacenter_id, @lan_id)
518
1309
 
519
- image.delete
520
- end
1310
+ lan.delete
521
1311
  end
522
1312
 
523
- tests('should delete a snapshot').succeeds do
1313
+ tests('Remove Snapshot').succeeds do
524
1314
  snapshot = compute.snapshots.get(@snapshot_id)
525
1315
 
526
1316
  snapshot.delete
527
1317
  end
528
1318
 
529
- tests('should delete a datacenter').succeeds do
1319
+ tests('Remove Volume').succeeds do
1320
+ volume = compute.volumes.get(@datacenter_id, @volume_id)
1321
+
1322
+ volume.delete
1323
+ end
1324
+
1325
+ tests('Remove Server').succeeds do
1326
+ server = compute.servers.get(@datacenter_id, @server_id)
1327
+ composite_server = compute.servers.get(@datacenter_id, @composite_server_id)
1328
+
1329
+ server.delete and composite_server.delete
1330
+ end
1331
+
1332
+ tests('Remove Datacenter').succeeds do
530
1333
  datacenter = compute.datacenters.get(@datacenter_id)
1334
+ composite_dc = compute.datacenters.get(@composite_dc_id)
531
1335
 
532
- datacenter.delete
1336
+ datacenter.delete and composite_dc.delete
533
1337
  end
534
1338
  end
535
1339
  end