deltacloud-core 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +8 -9
- data/config.ru +2 -0
- data/lib/deltacloud/drivers/gogrid/gogrid_driver.rb +0 -1
- data/lib/deltacloud/drivers/mock/data/buckets/blobs/blob1.yml +5 -0
- data/lib/deltacloud/drivers/mock/data/buckets/blobs/blob2.yml +5 -0
- data/lib/deltacloud/drivers/mock/data/buckets/blobs/blob3.yml +5 -0
- data/lib/deltacloud/drivers/mock/data/buckets/blobs/blob4.yml +5 -0
- data/lib/deltacloud/drivers/mock/data/buckets/blobs/blob5.yml +5 -0
- data/lib/deltacloud/drivers/mock/data/buckets/bucket1.yml +2 -0
- data/lib/deltacloud/drivers/mock/data/buckets/bucket2.yml +2 -0
- data/lib/deltacloud/drivers/mock/mock_driver.rb +77 -1
- data/lib/deltacloud/helpers/application_helper.rb +5 -2
- data/lib/deltacloud/models/tag.rb +43 -0
- data/server.rb +3 -1
- data/views/images/show.html.haml +1 -1
- data/views/keys/show.xml.haml +2 -3
- data/views/tags/index.html.haml +1 -0
- metadata +17 -23
- data/lib/sinatra/respond_to_old.rb +0 -253
- data/test.rb +0 -8
- data/tests/api_test.rb +0 -37
- data/tests/hardware_profiles_test.rb +0 -120
- data/tests/images_test.rb +0 -111
- data/tests/instance_states_test.rb +0 -51
- data/tests/instances_test.rb +0 -222
- data/tests/realms_test.rb +0 -78
- data/tests/url_for_test.rb +0 -50
data/test.rb
DELETED
data/tests/api_test.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class ApiTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_returns_entry_points
|
12
|
-
do_xml_request '/api'
|
13
|
-
(last_xml_response/'/api/link').map.size.should > 0
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_it_has_correct_attributes_set
|
17
|
-
do_xml_request '/api'
|
18
|
-
(last_xml_response/'/api/link').each do |link|
|
19
|
-
link.attributes.keys.sort.should == [ 'href', 'rel' ]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_it_responses_to_html
|
24
|
-
do_request '/api', {}, false, { :format => :html }
|
25
|
-
last_response.status.should == 200
|
26
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_it_responses_to_json
|
30
|
-
do_request '/api', {}, false, { :format => :json }
|
31
|
-
last_response.status.should == 200
|
32
|
-
JSON::parse(last_response.body).class.should == Hash
|
33
|
-
JSON::parse(last_response.body)['api'].class.should == Hash
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
@@ -1,120 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class HardwareProfilesTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_returns_hardware_profiles
|
12
|
-
do_xml_request '/api/hardware_profiles'
|
13
|
-
(last_xml_response/'hardware_profiles/hardware_profile').map.size.should > 0
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_it_has_correct_attributes_set
|
17
|
-
do_xml_request '/api/hardware_profiles'
|
18
|
-
(last_xml_response/'hardware_profiles/hardware_profile').each do |profile|
|
19
|
-
profile.attributes.keys.sort.should == [ 'href', 'id' ]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_hardware_profiles_have_name
|
24
|
-
do_xml_request '/api/hardware_profiles'
|
25
|
-
(last_xml_response/'hardware_profiles/hardware_profile').each do |profile|
|
26
|
-
(profile/'name').text.should_not == nil
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_hardware_profiles_have_unique_name
|
31
|
-
do_xml_request '/api/hardware_profiles'
|
32
|
-
names = []
|
33
|
-
(last_xml_response/'hardware_profiles/hardware_profile').each do |profile|
|
34
|
-
names << (profile/'name').text
|
35
|
-
end
|
36
|
-
names.should == names.uniq
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_hardware_profiles_have_unique_id
|
40
|
-
do_xml_request '/api/hardware_profiles'
|
41
|
-
ids = []
|
42
|
-
(last_xml_response/'hardware_profiles/hardware_profile').each do |profile|
|
43
|
-
ids << profile['id']
|
44
|
-
end
|
45
|
-
ids.should == ids.uniq
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_m1_xlarge_profile_has_correct_attributes
|
49
|
-
do_xml_request '/api/hardware_profiles'
|
50
|
-
profile = (last_xml_response/'hardware_profiles/hardware_profile[@id="m1-xlarge"]')
|
51
|
-
test_profile_properties(profile)
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_it_returns_valid_hardware_profile
|
55
|
-
do_xml_request '/api/hardware_profiles/m1-xlarge'
|
56
|
-
profile = (last_xml_response/'hardware_profile')
|
57
|
-
test_profile_properties(profile)
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_it_responses_to_json
|
61
|
-
do_request '/api/hardware_profiles', {}, false, { :format => :json }
|
62
|
-
JSON::parse(last_response.body).class.should == Hash
|
63
|
-
JSON::parse(last_response.body)['hardware_profiles'].class.should == Array
|
64
|
-
|
65
|
-
do_request '/api/hardware_profiles/m1-xlarge', {}, false, { :format => :json }
|
66
|
-
last_response.status.should == 200
|
67
|
-
JSON::parse(last_response.body).class.should == Hash
|
68
|
-
JSON::parse(last_response.body)['hardware_profile'].class.should == Hash
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_it_responses_to_html
|
72
|
-
do_request '/api/hardware_profiles', {}, false, { :format => :html }
|
73
|
-
last_response.status.should == 200
|
74
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
75
|
-
|
76
|
-
do_request '/api/hardware_profiles/m1-xlarge', {}, false, { :format => :html }
|
77
|
-
last_response.status.should == 200
|
78
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_it_returns_error_on_wrong_name
|
82
|
-
do_request '/api/hardware_profiles/m1-unknown-wrongname', {}, false, { :format => :html }
|
83
|
-
last_response.status.should == 404
|
84
|
-
do_xml_request '/api/hardware_profiles/m1-unknown-wrongname'
|
85
|
-
last_response.status.should == 404
|
86
|
-
do_request '/api/hardware_profiles/m1-unknown-wrongname', {}, false, { :format => :json }
|
87
|
-
last_response.status.should == 404
|
88
|
-
end
|
89
|
-
|
90
|
-
private
|
91
|
-
|
92
|
-
def test_profile_properties(profile)
|
93
|
-
|
94
|
-
(profile/'property').each do |properties|
|
95
|
-
properties.attributes.keys.sort.should == [ 'kind', 'name', 'unit', 'value' ]
|
96
|
-
end
|
97
|
-
|
98
|
-
(profile/'property[@name="architecture"]').first['kind'].should == 'fixed'
|
99
|
-
(profile/'property[@name="architecture"]').first['unit'].should == 'label'
|
100
|
-
|
101
|
-
(profile/'property[@name="memory"]').first['kind'].should == 'range'
|
102
|
-
(profile/'property[@name="memory"]').first['unit'].should == 'MB'
|
103
|
-
(profile/'property[@name="memory"]/range').size.should == 1
|
104
|
-
(profile/'property[@name="memory"]/range').first.attributes.keys.sort.should == [ 'first', 'last' ]
|
105
|
-
|
106
|
-
(profile/'property[@name="cpu"]').first['kind'].should == 'fixed'
|
107
|
-
(profile/'property[@name="cpu"]').first['unit'].should == 'count'
|
108
|
-
|
109
|
-
(profile/'property[@name="storage"]').first['kind'].should == 'enum'
|
110
|
-
(profile/'property[@name="storage"]').first['unit'].should == 'GB'
|
111
|
-
(profile/'property[@name="storage"]/enum').size.should == 1
|
112
|
-
(profile/'property[@name="storage"]/enum/entry').map.size.should == 3
|
113
|
-
(profile/'property[@name="storage"]/enum/entry').each do |entry|
|
114
|
-
entry.attributes.keys.should == [ 'value' ]
|
115
|
-
entry['value'].should_not == nil
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
end
|
120
|
-
end
|
data/tests/images_test.rb
DELETED
@@ -1,111 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class HardwareProfilesTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_require_authentication
|
12
|
-
require_authentication?('/api/images').should == true
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_it_returns_images
|
16
|
-
do_xml_request '/api/images', {}, true
|
17
|
-
(last_xml_response/'images/image').map.size.should > 0
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_it_has_correct_attributes_set
|
21
|
-
do_xml_request '/api/images', {}, true
|
22
|
-
(last_xml_response/'images/image').each do |image|
|
23
|
-
image.attributes.keys.sort.should == [ 'href', 'id' ]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_img1_has_correct_attributes
|
28
|
-
do_xml_request '/api/images', {}, true
|
29
|
-
image = (last_xml_response/'images/image[@id="img1"]')
|
30
|
-
test_image_attributes(image)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_it_returns_valid_image
|
34
|
-
do_xml_request '/api/images/img1', {}, true
|
35
|
-
image = (last_xml_response/'image')
|
36
|
-
test_image_attributes(image)
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_it_has_unique_ids
|
40
|
-
do_xml_request '/api/images', {}, true
|
41
|
-
ids = []
|
42
|
-
(last_xml_response/'images/image').each do |image|
|
43
|
-
ids << image['id'].to_s
|
44
|
-
end
|
45
|
-
ids.sort.should == ids.sort.uniq
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_it_has_valid_urls
|
49
|
-
do_xml_request '/api/images', {}, true
|
50
|
-
ids = []
|
51
|
-
images = (last_xml_response/'images/image')
|
52
|
-
images.each do |image|
|
53
|
-
do_xml_request image['href'].to_s, {}, true
|
54
|
-
(last_xml_response/'image').first['href'].should == image['href'].to_s
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_it_can_filter_using_owner_id
|
59
|
-
do_xml_request '/api/images', { :owner_id => 'mockuser' }, true
|
60
|
-
(last_xml_response/'images/image').size.should == 1
|
61
|
-
(last_xml_response/'images/image/owner_id').first.text.should == 'mockuser'
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_it_can_filter_using_unknown_owner_id
|
65
|
-
do_xml_request '/api/images', { :architecture => 'unknown_user' }, true
|
66
|
-
(last_xml_response/'images/image').size.should == 0
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_it_can_filter_using_architecture
|
70
|
-
do_xml_request '/api/images', { :architecture => 'x86_64' }, true
|
71
|
-
(last_xml_response/'images/image').size.should == 1
|
72
|
-
(last_xml_response/'images/image/architecture').first.text.should == 'x86_64'
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_it_can_filter_using_unknown_architecture
|
76
|
-
do_xml_request '/api/images', { :architecture => 'unknown_arch' }, true
|
77
|
-
(last_xml_response/'images/image').size.should == 0
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_it_responses_to_json
|
81
|
-
do_request '/api/images', {}, true, { :format => :json }
|
82
|
-
JSON::parse(last_response.body).class.should == Hash
|
83
|
-
JSON::parse(last_response.body)['images'].class.should == Array
|
84
|
-
|
85
|
-
do_request '/api/images/img1', {}, true, { :format => :json }
|
86
|
-
last_response.status.should == 200
|
87
|
-
JSON::parse(last_response.body).class.should == Hash
|
88
|
-
JSON::parse(last_response.body)['image'].class.should == Hash
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_it_responses_to_html
|
92
|
-
do_request '/api/images', {}, true, { :format => :html }
|
93
|
-
last_response.status.should == 200
|
94
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
95
|
-
|
96
|
-
do_request '/api/images/img1', {}, true, { :format => :html }
|
97
|
-
last_response.status.should == 200
|
98
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
99
|
-
end
|
100
|
-
|
101
|
-
private
|
102
|
-
|
103
|
-
def test_image_attributes(image)
|
104
|
-
(image/'name').text.should_not nil
|
105
|
-
(image/'owner_id').text.should_not nil
|
106
|
-
(image/'description').text.should_not nil
|
107
|
-
(image/'architecture').text.should_not nil
|
108
|
-
end
|
109
|
-
|
110
|
-
end
|
111
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class RealmsTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_not_require_authentication
|
12
|
-
require_authentication?('/api/realms').should_not == true
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_it_returns_instance_states
|
16
|
-
do_xml_request '/api/instance_states', {}, true
|
17
|
-
(last_xml_response/'states/state').map.size.should > 0
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_each_state_has_transition
|
21
|
-
do_xml_request '/api/instance_states', {}, true
|
22
|
-
(last_xml_response/'states/state').each do |state|
|
23
|
-
next if state['name'].eql?('finish') # Finnish state doesn't have transitions
|
24
|
-
(state/'transition').map.size.should > 0
|
25
|
-
(state/'transition').each do |transition|
|
26
|
-
transition['to'].should_not == nil
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_it_responses_to_json
|
32
|
-
do_request '/api/instance_states', {}, false, { :format => :json }
|
33
|
-
JSON::parse(last_response.body).class.should == Array
|
34
|
-
JSON::parse(last_response.body).first['transitions'].class.should == Array
|
35
|
-
JSON::parse(last_response.body).first['name'].should == 'start'
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_it_responses_to_html
|
39
|
-
do_request '/api/instance_states', {}, false, { :format => :html }
|
40
|
-
last_response.status.should == 200
|
41
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_it_responses_to_png
|
45
|
-
do_request '/api/instance_states', { :format => 'png' }, false
|
46
|
-
last_response.status.should == 200
|
47
|
-
last_response.headers['Content-Type'].should == 'image/png'
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
end
|
data/tests/instances_test.rb
DELETED
@@ -1,222 +0,0 @@
|
|
1
|
-
require 'tests/common'
|
2
|
-
|
3
|
-
module DeltacloudUnitTest
|
4
|
-
class InstancesTest < Test::Unit::TestCase
|
5
|
-
include Rack::Test::Methods
|
6
|
-
|
7
|
-
def app
|
8
|
-
Sinatra::Application
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_it_require_authentication
|
12
|
-
require_authentication?('/api/instances').should == true
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_it_returns_instances
|
16
|
-
do_xml_request '/api/instances', {}, true
|
17
|
-
(last_xml_response/'instances/instance').map.size.should > 0
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_it_has_correct_attributes_set
|
21
|
-
do_xml_request '/api/images', {}, true
|
22
|
-
(last_xml_response/'images/image').each do |image|
|
23
|
-
image.attributes.keys.sort.should == [ 'href', 'id' ]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_it_has_unique_ids
|
28
|
-
do_xml_request '/api/instances', {}, true
|
29
|
-
ids = []
|
30
|
-
(last_xml_response/'instances/instance').each do |image|
|
31
|
-
ids << image['id'].to_s
|
32
|
-
end
|
33
|
-
ids.sort.should == ids.sort.uniq
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_inst1_has_correct_attributes
|
37
|
-
do_xml_request '/api/instances', {}, true
|
38
|
-
instance = (last_xml_response/'instances/instance[@id="inst1"]')
|
39
|
-
test_instance_attributes(instance)
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_it_returns_valid_realm
|
43
|
-
do_xml_request '/api/instances/inst1', {}, true
|
44
|
-
instance = (last_xml_response/'instance')
|
45
|
-
test_instance_attributes(instance)
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_it_responses_to_json
|
49
|
-
do_request '/api/instances', {}, true, { :format => :json }
|
50
|
-
JSON::parse(last_response.body).class.should == Hash
|
51
|
-
JSON::parse(last_response.body)['instances'].class.should == Array
|
52
|
-
|
53
|
-
do_request '/api/instances/inst1', {}, true, { :format => :json }
|
54
|
-
last_response.status.should == 200
|
55
|
-
JSON::parse(last_response.body).class.should == Hash
|
56
|
-
JSON::parse(last_response.body)['instance'].class.should == Hash
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_it_responses_to_html
|
60
|
-
do_request '/api/instances', {}, true, { :format => :html }
|
61
|
-
last_response.status.should == 200
|
62
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
63
|
-
|
64
|
-
do_request '/api/instances/inst1', {}, true, { :format => :html }
|
65
|
-
last_response.status.should == 200
|
66
|
-
Nokogiri::HTML(last_response.body).search('html').first.name.should == 'html'
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_it_create_a_new_instance_using_image_id
|
70
|
-
params = {
|
71
|
-
:image_id => 'img1'
|
72
|
-
}
|
73
|
-
header 'Accept', accept_header(:xml)
|
74
|
-
post '/api/instances', params, authenticate
|
75
|
-
last_response.status.should == 201
|
76
|
-
last_response.headers['Location'].should_not == nil
|
77
|
-
do_xml_request last_response.headers['Location'], {}, true
|
78
|
-
(last_xml_response/'instance/name').should_not == nil
|
79
|
-
add_created_instance (last_xml_response/'instance').first['id']
|
80
|
-
test_instance_attributes(last_xml_response/'instance')
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_it_create_a_new_instance_using_image_id_and_name
|
84
|
-
params = {
|
85
|
-
:image_id => 'img1',
|
86
|
-
:name => "unit_test_instance1"
|
87
|
-
}
|
88
|
-
header 'Accept', accept_header(:xml)
|
89
|
-
post '/api/instances', params, authenticate(:format => :xml)
|
90
|
-
last_response.status.should == 201
|
91
|
-
last_response.headers['Location'].should_not == nil
|
92
|
-
do_xml_request last_response.headers['Location'], {}, true
|
93
|
-
(last_xml_response/'instance/name').text.should == 'unit_test_instance1'
|
94
|
-
add_created_instance (last_xml_response/'instance').first['id']
|
95
|
-
test_instance_attributes(last_xml_response/'instance')
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_it_create_a_new_instance_using_image_id_and_name_and_hwp
|
99
|
-
params = {
|
100
|
-
:image_id => 'img1',
|
101
|
-
:name => "unit_test_instance1",
|
102
|
-
:hwp_id => "m1-xlarge"
|
103
|
-
}
|
104
|
-
header 'Accept', accept_header(:xml)
|
105
|
-
post '/api/instances', params, authenticate(:format => :xml)
|
106
|
-
last_response.status.should == 201
|
107
|
-
last_response.headers['Location'].should_not == nil
|
108
|
-
do_xml_request last_response.headers['Location'], {}, true
|
109
|
-
(last_xml_response/'instance/name').text.should == 'unit_test_instance1'
|
110
|
-
(last_xml_response/'instance/hardware_profile').first['id'].should == 'm1-xlarge'
|
111
|
-
add_created_instance (last_xml_response/'instance').first['id']
|
112
|
-
test_instance_attributes(last_xml_response/'instance')
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_it_z0_stop_and_start_instance
|
116
|
-
$created_instances.each do |instance_id|
|
117
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
118
|
-
stop_url = (last_xml_response/'actions/link[@rel="stop"]').first['href']
|
119
|
-
stop_url.should_not == nil
|
120
|
-
post create_url(stop_url), { :format => 'xml' }, authenticate
|
121
|
-
last_response.status.should == 200
|
122
|
-
instance = Nokogiri::XML(last_response.body)
|
123
|
-
test_instance_attributes(instance)
|
124
|
-
(instance/'state').text.should == 'STOPPED'
|
125
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
126
|
-
start_url = (last_xml_response/'actions/link[@rel="start"]').first['href']
|
127
|
-
start_url.should_not == nil
|
128
|
-
post create_url(start_url), { :format => 'xml'}, authenticate
|
129
|
-
last_response.status.should == 200
|
130
|
-
instance = Nokogiri::XML(last_response.body)
|
131
|
-
test_instance_attributes(instance)
|
132
|
-
(instance/'state').text.should == 'RUNNING'
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_z0_reboot_instance
|
137
|
-
$created_instances.each do |instance_id|
|
138
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
139
|
-
reboot_url = (last_xml_response/'actions/link[@rel="reboot"]').first['href']
|
140
|
-
reboot_url.should_not == nil
|
141
|
-
post create_url(reboot_url), { :format => "xml"}, authenticate
|
142
|
-
last_response.status.should == 200
|
143
|
-
instance = Nokogiri::XML(last_response.body)
|
144
|
-
test_instance_attributes(instance)
|
145
|
-
(instance/'state').text.should == 'RUNNING'
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
def test_z1_stop_created_instances
|
150
|
-
$created_instances.each do |instance_id|
|
151
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
152
|
-
stop_url = (last_xml_response/'actions/link[@rel="stop"]').first['href']
|
153
|
-
stop_url.should_not == nil
|
154
|
-
post create_url(stop_url), {}, authenticate
|
155
|
-
last_response.status.should == 200
|
156
|
-
instance = Nokogiri::XML(last_response.body)
|
157
|
-
test_instance_attributes(instance)
|
158
|
-
(instance/'state').text.should == 'STOPPED'
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
def test_z2_destroy_created_instances
|
163
|
-
$created_instances.each do |instance_id|
|
164
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
165
|
-
destroy_url = (last_xml_response/'actions/link[@rel="destroy"]').first['href']
|
166
|
-
destroy_url.should_not == nil
|
167
|
-
delete create_url(destroy_url), {}, authenticate
|
168
|
-
last_response.status.should == 302
|
169
|
-
do_xml_request last_response.headers['Location'], {}, true
|
170
|
-
(last_xml_response/'instances').should_not == nil
|
171
|
-
do_xml_request "/api/instances/#{instance_id}", {}, true
|
172
|
-
last_response.status.should == 404
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
private
|
177
|
-
|
178
|
-
def test_instance_attributes(instance)
|
179
|
-
(instance/'name').should_not == nil
|
180
|
-
(instance/'owner_id').should_not == nil
|
181
|
-
['RUNNING', 'STOPPED'].include?((instance/'state').text).should == true
|
182
|
-
|
183
|
-
(instance/'public_addreses').should_not == nil
|
184
|
-
(instance/'public_addresses/address').map.size.should > 0
|
185
|
-
(instance/'public_addresses/address').first.text.should_not == ""
|
186
|
-
|
187
|
-
(instance/'private_addresses').should_not == nil
|
188
|
-
(instance/'private_addresses/address').map.size.should > 0
|
189
|
-
(instance/'private_addresses/address').first.text.should_not == ""
|
190
|
-
|
191
|
-
(instance/'actions/link').map.size.should > 0
|
192
|
-
(instance/'actions/link').each do |link|
|
193
|
-
link['href'].should_not == ""
|
194
|
-
link['rel'].should_not == ""
|
195
|
-
link['method'].should_not == ""
|
196
|
-
['get', 'post', 'delete', 'put'].include?(link['method']).should == true
|
197
|
-
end
|
198
|
-
|
199
|
-
(instance/'image').size.should > 0
|
200
|
-
(instance/'image').first['href'].should_not == ""
|
201
|
-
(instance/'image').first['id'].should_not == ""
|
202
|
-
do_xml_request (instance/'image').first['href'], {}, true
|
203
|
-
(last_xml_response/'image').should_not == nil
|
204
|
-
(last_xml_response/'image').first['href'] == (instance/'image').first['href']
|
205
|
-
|
206
|
-
(instance/'realm').size.should > 0
|
207
|
-
(instance/'realm').first['href'].should_not == ""
|
208
|
-
(instance/'realm').first['id'].should_not == ""
|
209
|
-
do_xml_request (instance/'realm').first['href']
|
210
|
-
(last_xml_response/'realm').should_not == nil
|
211
|
-
(last_xml_response/'realm').first['href'] == (instance/'realm').first['href']
|
212
|
-
|
213
|
-
(instance/'hardware_profile').size.should > 0
|
214
|
-
(instance/'hardware_profile').first['href'].should_not == ""
|
215
|
-
(instance/'hardware_profile').first['id'].should_not == ""
|
216
|
-
do_xml_request (instance/'hardware_profile').first['href']
|
217
|
-
(last_xml_response/'hardware_profile').should_not == nil
|
218
|
-
(last_xml_response/'hardware_profile').first['href'] == (instance/'hardware_profile').first['href']
|
219
|
-
end
|
220
|
-
|
221
|
-
end
|
222
|
-
end
|