fog-profitbricks 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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