deltacloud-core 1.0.5 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. data/Rakefile +10 -2
  2. data/bin/deltacloudd +10 -10
  3. data/config.ru +2 -1
  4. data/config/drivers/digitalocean.yaml +3 -0
  5. data/deltacloud-core.gemspec +13 -6
  6. data/lib/cimi/collections.rb +1 -1
  7. data/lib/cimi/collections/address_templates.rb +27 -3
  8. data/lib/cimi/collections/addresses.rb +1 -1
  9. data/lib/cimi/collections/base.rb +1 -0
  10. data/lib/cimi/collections/cloud_entry_point.rb +4 -0
  11. data/lib/cimi/collections/credentials.rb +2 -2
  12. data/lib/cimi/collections/machine_images.rb +20 -0
  13. data/lib/cimi/collections/machine_templates.rb +72 -0
  14. data/lib/cimi/collections/machines.rb +50 -41
  15. data/lib/cimi/collections/network_ports.rb +3 -3
  16. data/lib/cimi/collections/networks.rb +4 -4
  17. data/lib/cimi/collections/resource_metadata.rb +1 -1
  18. data/lib/cimi/collections/volume_configurations.rb +25 -0
  19. data/lib/cimi/collections/volume_images.rb +21 -1
  20. data/lib/cimi/collections/volume_templates.rb +69 -0
  21. data/lib/cimi/collections/volumes.rb +5 -10
  22. data/lib/cimi/dependencies.rb +0 -1
  23. data/lib/cimi/helpers.rb +4 -1
  24. data/lib/cimi/helpers/cimi_helper.rb +62 -0
  25. data/lib/cimi/helpers/database_helper.rb +95 -0
  26. data/lib/cimi/models.rb +15 -1
  27. data/lib/cimi/models/address.rb +10 -5
  28. data/lib/cimi/models/address_template.rb +67 -3
  29. data/lib/cimi/models/base.rb +8 -5
  30. data/lib/cimi/models/cloud_entry_point.rb +6 -1
  31. data/lib/cimi/models/collection.rb +9 -4
  32. data/lib/cimi/models/disk.rb +6 -1
  33. data/lib/cimi/models/errors.rb +8 -0
  34. data/lib/cimi/models/machine.rb +68 -42
  35. data/lib/cimi/models/machine_configuration.rb +2 -2
  36. data/lib/cimi/models/machine_image.rb +41 -6
  37. data/lib/cimi/models/machine_template.rb +58 -0
  38. data/lib/cimi/models/machine_volume.rb +51 -3
  39. data/lib/cimi/models/resource_metadata.rb +88 -25
  40. data/lib/cimi/models/schema.rb +19 -5
  41. data/lib/cimi/models/volume.rb +66 -30
  42. data/lib/cimi/models/volume_configuration.rb +53 -21
  43. data/lib/cimi/models/volume_image.rb +24 -9
  44. data/lib/cimi/models/volume_template.rb +61 -0
  45. data/lib/cimi/server.rb +0 -6
  46. data/lib/db.rb +82 -0
  47. data/lib/db/address_template.rb +15 -0
  48. data/lib/db/entity.rb +22 -0
  49. data/lib/db/machine_template.rb +10 -0
  50. data/lib/db/provider.rb +13 -0
  51. data/lib/db/volume_configuration.rb +10 -0
  52. data/lib/db/volume_template.rb +10 -0
  53. data/lib/deltacloud/collections/addresses.rb +1 -1
  54. data/lib/deltacloud/collections/base.rb +12 -1
  55. data/lib/deltacloud/collections/buckets.rb +41 -8
  56. data/lib/deltacloud/collections/drivers.rb +1 -1
  57. data/lib/deltacloud/collections/firewalls.rb +2 -2
  58. data/lib/deltacloud/collections/images.rb +1 -1
  59. data/lib/deltacloud/collections/instances.rb +7 -1
  60. data/lib/deltacloud/collections/keys.rb +1 -1
  61. data/lib/deltacloud/collections/load_balancers.rb +4 -4
  62. data/lib/deltacloud/collections/storage_snapshots.rb +5 -1
  63. data/lib/deltacloud/collections/storage_volumes.rb +7 -3
  64. data/lib/deltacloud/drivers/base_driver.rb +10 -9
  65. data/lib/deltacloud/drivers/cimi_features.rb +42 -0
  66. data/lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb +307 -0
  67. data/lib/deltacloud/drivers/ec2/ec2_driver.rb +40 -14
  68. data/lib/deltacloud/drivers/exceptions.rb +8 -0
  69. data/lib/deltacloud/drivers/features.rb +19 -2
  70. data/lib/deltacloud/drivers/fgcp/fgcp_client.rb +11 -0
  71. data/lib/deltacloud/drivers/fgcp/fgcp_driver.rb +83 -11
  72. data/lib/deltacloud/drivers/gogrid/gogrid_client.rb +1 -1
  73. data/lib/deltacloud/drivers/mock/mock_client.rb +2 -4
  74. data/lib/deltacloud/drivers/mock/mock_driver.rb +29 -0
  75. data/lib/deltacloud/drivers/openstack/openstack_driver.rb +153 -36
  76. data/lib/deltacloud/drivers/rackspace/anti_cache_monkey_patch.rb +20 -0
  77. data/lib/deltacloud/drivers/rackspace/rackspace_driver.rb +1 -0
  78. data/lib/deltacloud/drivers/rhevm/rhevm_driver.rb +30 -12
  79. data/lib/deltacloud/drivers/sbc/sbc_client.rb +0 -1
  80. data/lib/deltacloud/drivers/sbc/sbc_driver.rb +5 -1
  81. data/lib/deltacloud/drivers/vsphere/vsphere_client.rb +1 -1
  82. data/lib/deltacloud/drivers/vsphere/vsphere_driver.rb +19 -9
  83. data/lib/deltacloud/helpers/blob_stream_helper.rb +42 -3
  84. data/lib/deltacloud/helpers/deltacloud_helper.rb +31 -14
  85. data/lib/deltacloud/models/address.rb +9 -0
  86. data/lib/deltacloud/models/base_model.rb +4 -0
  87. data/lib/deltacloud/models/blob.rb +12 -0
  88. data/lib/deltacloud/models/bucket.rb +9 -0
  89. data/lib/deltacloud/models/firewall.rb +13 -1
  90. data/lib/deltacloud/models/firewall_rule.rb +14 -0
  91. data/lib/deltacloud/models/hardware_profile.rb +14 -0
  92. data/lib/deltacloud/models/image.rb +15 -0
  93. data/lib/deltacloud/models/instance.rb +40 -1
  94. data/lib/deltacloud/models/instance_address.rb +9 -0
  95. data/lib/deltacloud/models/key.rb +15 -0
  96. data/lib/deltacloud/models/load_balancer.rb +20 -0
  97. data/lib/deltacloud/models/metric.rb +15 -0
  98. data/lib/deltacloud/models/provider.rb +8 -0
  99. data/lib/deltacloud/models/realm.rb +9 -0
  100. data/lib/deltacloud/models/state_machine.rb +8 -0
  101. data/lib/deltacloud/models/storage_snapshot.rb +11 -0
  102. data/lib/deltacloud/models/storage_volume.rb +24 -0
  103. data/lib/deltacloud/server.rb +1 -3
  104. data/lib/deltacloud/version.rb +2 -1
  105. data/lib/deltacloud_rack.rb +1 -1
  106. data/tests/cimi/db/database_helper_test.rb +190 -0
  107. data/tests/cimi/db/db_helper.rb +30 -0
  108. data/tests/cimi/db/schema_test.rb +94 -0
  109. data/tests/cimi/model/collection_spec.rb +0 -1
  110. data/tests/cimi/model/machine_spec.rb +17 -0
  111. data/tests/cimi/spec_helper.rb +3 -2
  112. data/tests/deltacloud/collections/buckets_collection_test.rb +3 -0
  113. data/tests/deltacloud/collections/drivers_collection_test.rb +10 -0
  114. data/tests/deltacloud/collections/hardware_profiles_collection_test.rb +4 -0
  115. data/tests/deltacloud/collections/images_collection_test.rb +4 -0
  116. data/tests/deltacloud/collections/instances_collection_test.rb +14 -1
  117. data/tests/deltacloud/collections/keys_collection_test.rb +4 -0
  118. data/tests/deltacloud/collections/realms_collection_test.rb +47 -0
  119. data/tests/deltacloud/collections/storage_snapshots_collection_test.rb +47 -0
  120. data/tests/deltacloud/collections/storage_volumes_collection_test.rb +47 -0
  121. data/tests/deltacloud/common.rb +15 -0
  122. data/tests/deltacloud/deltacloud_helper_test.rb +0 -4
  123. data/tests/deltacloud/launcher_test.rb +108 -0
  124. data/tests/drivers/ec2/buckets_test.rb +2 -1
  125. data/tests/drivers/mock/buckets_test.rb +27 -0
  126. data/tests/drivers/mock/instances_test.rb +6 -0
  127. data/tests/drivers/openstack/common.rb +1 -1
  128. data/tests/drivers/openstack/hardware_profiles_test.rb +2 -1
  129. data/tests/drivers/openstack/instances_test.rb +18 -17
  130. data/tests/drivers/rhevm/common.rb +1 -0
  131. data/tests/drivers/rhevm/images_test.rb +1 -1
  132. data/tests/drivers/rhevm/instance_test.rb +7 -7
  133. data/tests/helpers/rack/rack_matrix_params_test.rb +0 -2
  134. data/tests/test_helper.rb +2 -1
  135. data/views/errors/403.xml.haml +6 -0
  136. data/views/errors/409.html.haml +47 -0
  137. data/views/errors/409.xml.haml +11 -0
  138. data/views/errors/502.html.haml +6 -5
  139. data/views/images/show.xml.haml +3 -2
  140. data/views/instances/new.html.haml +1 -1
  141. metadata +77 -30
@@ -1,4 +1,5 @@
1
- require 'minitest/autorun'
1
+ require 'rubygems'
2
+ require 'require_relative' if RUBY_VERSION < '1.9'
2
3
 
3
4
  require_relative File.join('..', '..', '..', 'lib', 'deltacloud', 'api.rb')
4
5
  require_relative 'common.rb'
@@ -0,0 +1,27 @@
1
+ require 'rubygems'
2
+ require 'minitest/autorun'
3
+ require 'require_relative' if RUBY_VERSION < '1.9'
4
+ require_relative 'common.rb'
5
+
6
+ describe 'MockDriver Buckets' do
7
+
8
+ before do
9
+ @driver = Deltacloud::new(:mock, :user => 'mockuser', :password => 'mockpassword')
10
+ end
11
+
12
+ it 'must throw error when wrong credentials for buckets' do
13
+ Proc.new do
14
+ @driver.backend.buckets(OpenStruct.new(:user => 'unknown', :password => 'wrong'))
15
+ end.must_raise Deltacloud::Exceptions::AuthenticationFailure, 'Authentication Failure'
16
+ end
17
+
18
+ it 'can create a new bucket' do
19
+ bucket_name = "mini_test_mock_bucket_name"
20
+ bucket = @driver.create_bucket(bucket_name)
21
+ bucket.id.wont_be_nil
22
+ bucket.name.must_equal bucket_name
23
+ bucket.size.must_equal "0"
24
+ bucket.blob_list.must_be_empty
25
+ end
26
+
27
+ end
@@ -54,6 +54,12 @@ describe 'MockDriver Instances' do
54
54
  @driver.instance(:id => instance.id).must_be_nil
55
55
  end
56
56
 
57
+ it 'must respond with proper error when using unknown hardware profile' do
58
+ Proc.new {
59
+ @driver.create_instance('img1', :name => 'inst2-test', :realm_id => 'us', :hwp_id => 'unknown')
60
+ }.must_raise Deltacloud::Exceptions::ValidationFailure
61
+ end
62
+
57
63
  it 'must allow to destroy created instance' do
58
64
  instance = @driver.create_instance('img1', :name => 'inst1-test-destroy')
59
65
  instance.must_be_kind_of Instance
@@ -22,5 +22,5 @@ VCR.configure do |c|
22
22
  c.cassette_library_dir = File.join(File.dirname(__FILE__), 'fixtures')
23
23
  c.hook_into :webmock
24
24
  # Set this to :new_episodes when you want to 're-record'
25
- c.default_cassette_options = { :record => :new_episodes }
25
+ c.default_cassette_options = { :record => :none }
26
26
  end
@@ -1,4 +1,5 @@
1
- require 'minitest/autorun'
1
+ require 'rubygems'
2
+ require 'require_relative' if RUBY_VERSION < '1.9'
2
3
 
3
4
  require_relative File.join('..', '..', '..', 'lib', 'deltacloud', 'api.rb')
4
5
  require_relative 'common.rb'
@@ -1,10 +1,17 @@
1
1
  require 'minitest/autorun'
2
-
3
2
  require_relative File.join('..', '..', '..', 'lib', 'deltacloud', 'api.rb')
4
3
  require_relative 'common.rb'
5
4
 
6
5
  describe 'OpenStackDriver Instances' do
7
6
 
7
+ def credentials
8
+ {
9
+ :user => "foo@fakedomain.eu+foo@fakedomain.eu-default-tenant",
10
+ :password => "1234fake56789",
11
+ :provider => "https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/"
12
+ }
13
+ end
14
+
8
15
  before do
9
16
  @driver = Deltacloud::new(:openstack, credentials)
10
17
  VCR.insert_cassette __name__
@@ -14,9 +21,9 @@ describe 'OpenStackDriver Instances' do
14
21
  VCR.eject_cassette
15
22
  end
16
23
 
17
- it 'must throw error when wrong credentials' do
24
+ it 'must throw error when GET instances with wrong credentials' do
18
25
  Proc.new do
19
- @driver.backend.images(OpenStruct.new(:user => 'unknown+wrong', :password => 'wrong'))
26
+ @driver.backend.instances(OpenStruct.new(:user => 'unknown+wrong', :password => 'wrong'))
20
27
  end.must_raise Deltacloud::Exceptions::AuthenticationFailure, 'Authentication Failure'
21
28
  end
22
29
 
@@ -25,28 +32,23 @@ describe 'OpenStackDriver Instances' do
25
32
  @driver.instances.first.must_be_kind_of Instance
26
33
  end
27
34
 
28
- # FIXME: The tests above will fail because of incompatibility
29
- # in a way how OpenStack handle uuid/id.
30
- # Please uncomment these tests if that will be fixed.
31
-
32
- =begin
33
35
  it 'must allow to filter instances' do
34
- instances = @driver.instances :id => 'fef00348-9991-404c-b0d4-655d18f84345'
36
+ instances = @driver.instances :id => '806837'
35
37
  instances.wont_be_empty
36
38
  instances.must_be_kind_of Array
37
39
  instances.size.must_equal 1
38
40
  puts instances.inspect
39
- instances.first.id.must_equal 'fef00348-9991-404c-b0d4-655d18f84345'
41
+ instances.first.id.must_equal '806837'
40
42
  @driver.instances(:id => 'unknown').must_be_empty
41
43
  end
42
44
 
43
45
  it 'must allow to retrieve single instance' do
44
- instance = @driver.instance :id => 'fef00348-9991-404c-b0d4-655d18f84345'
46
+ instance = @driver.instance :id => '806837'
45
47
  instance.wont_be_nil
46
- instance.id.must_equal 'fef00348-9991-404c-b0d4-655d18f84345'
47
- instance.name.must_equal 'test-3'
48
+ instance.id.must_equal '806837'
49
+ instance.name.must_equal 'Server-1355225740-az-2-region-a-geo-1'
48
50
  instance.state.wont_be_empty
49
- instance.owner_id.must_equal 'admin'
51
+ instance.owner_id.must_equal 'foo@fakedomain.eu'
50
52
  instance.realm_id.wont_be_empty
51
53
  instance.image_id.wont_be_empty
52
54
  instance.instance_profile.wont_be_nil
@@ -54,13 +56,12 @@ describe 'OpenStackDriver Instances' do
54
56
  end
55
57
 
56
58
  it 'must allow to create and destroy an instance' do
57
- instance = @driver.create_instance 'bf7ce59a-d9f9-45d4-9313-f45b16436602', :hwp_id => '1'
59
+ instance = @driver.create_instance '47940', :hwp_id => '100'
58
60
  instance.wont_be_nil
59
- instance.image_id.must_equal 'bf7ce59a-d9f9-45d4-9313-f45b16436602'
61
+ instance.image_id.must_equal '47940'
60
62
  instance.name.wont_be_empty
61
63
  instance.wait_for!(@driver, record_retries('inst_launch')) { |i| i.is_running? }
62
64
  puts @driver.destroy_instance(instance.id).inspect
63
65
  end
64
- =end
65
66
 
66
67
  end
@@ -19,5 +19,6 @@ VCR.configure do |c|
19
19
  c.cassette_library_dir = File.join(File.dirname(__FILE__), 'fixtures')
20
20
  c.hook_into :webmock
21
21
  # Set this to :new_episodes when you want to 're-record'
22
+ #c.default_cassette_options = { :record => :new_episodes }
22
23
  c.default_cassette_options = { :record => :none }
23
24
  end
@@ -57,7 +57,7 @@ describe 'RhevmDriver Images' do
57
57
  image.state.must_equal 'OK'
58
58
  Proc.new {
59
59
  @driver.destroy_image(image.id)
60
- }.must_raise Deltacloud::Exceptions::BackendError, 'Cannot delete Template. Template is being used by the following VMs: test1.'
60
+ }.must_raise Deltacloud::Exceptions::Conflict, 'Cannot delete Template. Template is being used by the following VMs: test1.'
61
61
  end
62
62
  end
63
63
 
@@ -26,10 +26,10 @@ describe 'RhevmDriver Instances' do
26
26
  end
27
27
 
28
28
  it 'must allow to filter instances' do
29
- @driver.instances(:id => 'de048029-c4f8-4e90-ac7b-67cf06102190').wont_be_empty
30
- @driver.instances(:id => 'de048029-c4f8-4e90-ac7b-67cf06102190').must_be_kind_of Array
31
- @driver.instances(:id => 'de048029-c4f8-4e90-ac7b-67cf06102190').size.must_equal 1
32
- @driver.instances(:id => 'de048029-c4f8-4e90-ac7b-67cf06102190').first.id.must_equal 'de048029-c4f8-4e90-ac7b-67cf06102190'
29
+ @driver.instances(:id =>'a949192d-55eb-465c-9ef1-d59581a562a3').wont_be_empty
30
+ @driver.instances(:id =>'a949192d-55eb-465c-9ef1-d59581a562a3').must_be_kind_of Array
31
+ @driver.instances(:id =>'a949192d-55eb-465c-9ef1-d59581a562a3').size.must_equal 1
32
+ @driver.instances(:id => 'a949192d-55eb-465c-9ef1-d59581a562a3').first.id.must_equal 'a949192d-55eb-465c-9ef1-d59581a562a3'
33
33
  @driver.instances(:owner_id => 'admin@internal').wont_be_empty
34
34
  @driver.instances(:owner_id => 'admin@internal').each do |inst|
35
35
  inst.owner_id.must_equal 'admin@internal'
@@ -39,9 +39,9 @@ describe 'RhevmDriver Instances' do
39
39
  end
40
40
 
41
41
  it 'must allow to retrieve single instance' do
42
- @driver.instance(:id => 'de048029-c4f8-4e90-ac7b-67cf06102190').wont_be_nil
43
- @driver.instance(:id => 'de048029-c4f8-4e90-ac7b-67cf06102190').must_be_kind_of Instance
44
- @driver.instance(:id => 'de048029-c4f8-4e90-ac7b-67cf06102190').id.must_equal 'de048029-c4f8-4e90-ac7b-67cf06102190'
42
+ @driver.instance(:id => 'a949192d-55eb-465c-9ef1-d59581a562a3').wont_be_nil
43
+ @driver.instance(:id => 'a949192d-55eb-465c-9ef1-d59581a562a3').must_be_kind_of Instance
44
+ @driver.instance(:id => 'a949192d-55eb-465c-9ef1-d59581a562a3').id.must_equal 'a949192d-55eb-465c-9ef1-d59581a562a3'
45
45
  @driver.instance(:id => 'i-00000000').must_be_nil
46
46
  @driver.instance(:id => 'unknown').must_be_nil
47
47
  end
@@ -3,8 +3,6 @@ require 'require_relative' if RUBY_VERSION < '1.9'
3
3
  require_relative '../../test_helper.rb'
4
4
  require_relative './common.rb'
5
5
 
6
- require 'json'
7
-
8
6
  class TestMatrixApp < Sinatra::Base
9
7
  use Rack::MatrixParams
10
8
  get '/' do
@@ -24,7 +24,8 @@ end
24
24
  #
25
25
  begin
26
26
  require 'turn'
27
- rescue LoadError
27
+ rescue LoadError => e
28
+ warn "[WARN] The 'turn' gem is not available. (#{e.message})"
28
29
  end
29
30
 
30
31
  begin
@@ -1,2 +1,8 @@
1
1
  %error{:url => "#{request.env['REQUEST_URI']}", :status => "#{response.status}"}
2
+ %backend{ :driver => driver_symbol, :provider => "#{Thread::current[:provider] || ENV['API_PROVIDER'] || 'default'}" }
3
+ %backtrace=cdata(@error.backtrace.join("\n"))
4
+ - if params
5
+ %request
6
+ - params.each do |k, v|
7
+ %param{ :name => k}=v
2
8
  %message Method not allowed for this resource
@@ -0,0 +1,47 @@
1
+ %div{ :'data-role' => :content, :'data-theme' => 'b'}
2
+ %ul{ :'data-role' => :listview , :'data-inset' => :true, :'data-divider-theme' => 'e'}
3
+ %li{ :'data-role' => 'list-divider'} Server message
4
+ %li
5
+ %h3= h [@error.class.name, @error.message].join(' - ')
6
+ %li{ :'data-role' => 'list-divider'} Original request URI
7
+ %li
8
+ %a{ :href => request.env['REQUEST_URI'], :'data-ajax' => 'false'}
9
+ %span=request.env['REQUEST_URI']
10
+ %span{ :class => 'ui-li-count'} Retry
11
+ %li{ :'data-role' => 'list-divider'} Error details
12
+ %li
13
+ - if @error.class.method_defined? :details
14
+ %p= h @error.details
15
+ - else
16
+ %em No details
17
+ %li{ :'data-role' => 'list-divider'} Backtrace
18
+ %li
19
+ %em No details
20
+
21
+ - if @error.backtrace
22
+ %div{ 'data-role' => :collapsible, 'data-collapsed' => "true"}
23
+ %h3 Backtrace
24
+ %ul{ :'data-role' => :listview , :'data-inset' => :true, :'data-divider-theme' => 'e'}
25
+ %li
26
+ %pre= h @error.backtrace.join("\n")
27
+
28
+ %div{ 'data-role' => :collapsible, 'data-collapsed' => "true"}
29
+ %h3 Parameters
30
+ %ul{ :'data-role' => :listview , :'data-inset' => :true, :'data-divider-theme' => 'e'}
31
+ - if params.keys.empty?
32
+ %li{ :'data-role' => 'list-divider'} No parameters
33
+ - params.each do |key, value|
34
+ - next if value.inspect.to_s == '#'
35
+ %li{ :'data-role' => 'list-divider'}=key
36
+ %li
37
+ %span{:style => 'font-weight:normal;'}=value.inspect
38
+
39
+
40
+ %div{ 'data-role' => :collapsible, 'data-collapsed' => "true"}
41
+ %h3 Request details
42
+ %ul{ :'data-role' => :listview , :'data-inset' => :true, :'data-divider-theme' => 'e'}
43
+ - request.env.each do |key, value|
44
+ - next if value.inspect.to_s == '#'
45
+ %li{ :'data-role' => 'list-divider'}=key
46
+ %li
47
+ %span{:style => 'font-weight:normal;'}= h value.inspect
@@ -0,0 +1,11 @@
1
+ - unless defined?(partial)
2
+ !!! XML
3
+ %error{:url => "#{request.env['REQUEST_URI']}", :status => "#{response.status}"}
4
+ %kind backend_error
5
+ %backend{ :driver => driver_symbol, :provider => "#{Thread::current[:provider] || ENV['API_PROVIDER'] || 'default'}" }
6
+ %code=response.status
7
+ %message< #{cdata @error.message}
8
+ - if params
9
+ %request
10
+ - params.each do |k, v|
11
+ %param{ :name => k}=v
@@ -15,11 +15,12 @@
15
15
  - else
16
16
  %em No details
17
17
 
18
- %div{ 'data-role' => :collapsible, 'data-collapsed' => "true"}
19
- %h3 Backtrace
20
- %ul{ :'data-role' => :listview , :'data-inset' => :true, :'data-divider-theme' => 'e'}
21
- %li
22
- %pre=@error.backtrace.join("\n")
18
+ - if @error.backtrace
19
+ %div{ 'data-role' => :collapsible, 'data-collapsed' => "true"}
20
+ %h3 Backtrace
21
+ %ul{ :'data-role' => :listview , :'data-inset' => :true, :'data-divider-theme' => 'e'}
22
+ %li
23
+ %pre=@error.backtrace.join("\n")
23
24
 
24
25
  %div{ 'data-role' => :collapsible, 'data-collapsed' => "true"}
25
26
  %h3 Parameters
@@ -12,7 +12,8 @@
12
12
  - if @image.hardware_profiles
13
13
  %hardware_profiles
14
14
  - @image.hardware_profiles.each do |profile|
15
- %hardware_profile{ :href => hardware_profile_url(profile.name), :id => profile.name, :rel => :hardware_profile }
15
+ %hardware_profile{ :href => hardware_profile_url(profile.id), :id => profile.id, :rel => :hardware_profile }
16
16
  %actions
17
17
  %link{ :rel => 'create_instance', :method => :post, :href => "#{instances_url};image_id=#{@image.id}"}
18
- %link{ :rel => 'destroy_image', :method => :delete, :href => "#{destroy_image_url(@image.id)}" }
18
+ - if driver.respond_to? :destroy_image
19
+ %link{ :rel => 'destroy_image', :method => :delete, :href => "#{destroy_image_url(@image.id)}" }
@@ -90,7 +90,7 @@
90
90
  %fieldset{ :'data-role' => :fieldcontain}
91
91
  - @hardware_profiles.each do |profile|
92
92
  %input{ :type => :radio, :name => 'hwp_id', :value => profile.id, :id => profile.name, :'data-theme' => 'b'}/
93
- %label{ :for => profile.name, :onclick => "expandHWP('#{profile.name}');"}=profile.name
93
+ %label{ :for => profile.name, :onclick => "expandHWP('#{profile.name}');"}="#{profile.name} - #{profile.memory} MB"
94
94
  %div{ :'data-role' => :fieldcontain, :id => "property_container_#{profile.name}", :class => 'hwp_properties'}
95
95
 
96
96
  - if !@realms.empty?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deltacloud-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-12 00:00:00.000000000 Z
12
+ date: 2013-02-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -76,13 +76,13 @@ dependencies:
76
76
  - !ruby/object:Gem::Version
77
77
  version: 1.0.11
78
78
  - !ruby/object:Gem::Dependency
79
- name: crack
79
+ name: rack
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
83
  - - ! '>='
84
84
  - !ruby/object:Gem::Version
85
- version: '0'
85
+ version: 1.0.0
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,15 +90,15 @@ dependencies:
90
90
  requirements:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
- version: '0'
93
+ version: 1.0.0
94
94
  - !ruby/object:Gem::Dependency
95
- name: rack
95
+ name: rack-accept
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ! '>='
100
100
  - !ruby/object:Gem::Version
101
- version: 1.0.0
101
+ version: '0'
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,15 +106,15 @@ dependencies:
106
106
  requirements:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
- version: 1.0.0
109
+ version: '0'
110
110
  - !ruby/object:Gem::Dependency
111
- name: rack-accept
111
+ name: json
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements:
115
115
  - - ! '>='
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 1.1.9
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -122,15 +122,15 @@ dependencies:
122
122
  requirements:
123
123
  - - ! '>='
124
124
  - !ruby/object:Gem::Version
125
- version: '0'
125
+ version: 1.1.9
126
126
  - !ruby/object:Gem::Dependency
127
- name: json
127
+ name: net-ssh
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
131
  - - ! '>='
132
132
  - !ruby/object:Gem::Version
133
- version: 1.1.9
133
+ version: 2.0.0
134
134
  type: :runtime
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
@@ -138,15 +138,15 @@ dependencies:
138
138
  requirements:
139
139
  - - ! '>='
140
140
  - !ruby/object:Gem::Version
141
- version: 1.1.9
141
+ version: 2.0.0
142
142
  - !ruby/object:Gem::Dependency
143
- name: net-ssh
143
+ name: nokogiri
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  none: false
146
146
  requirements:
147
147
  - - ! '>='
148
148
  - !ruby/object:Gem::Version
149
- version: 2.0.0
149
+ version: 1.4.3
150
150
  type: :runtime
151
151
  prerelease: false
152
152
  version_requirements: !ruby/object:Gem::Requirement
@@ -154,15 +154,31 @@ dependencies:
154
154
  requirements:
155
155
  - - ! '>='
156
156
  - !ruby/object:Gem::Version
157
- version: 2.0.0
157
+ version: 1.4.3
158
158
  - !ruby/object:Gem::Dependency
159
- name: thin
159
+ name: sequel
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - <=
164
+ - !ruby/object:Gem::Version
165
+ version: 3.42.0
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - <=
172
+ - !ruby/object:Gem::Version
173
+ version: 3.42.0
174
+ - !ruby/object:Gem::Dependency
175
+ name: sqlite3
160
176
  requirement: !ruby/object:Gem::Requirement
161
177
  none: false
162
178
  requirements:
163
179
  - - ! '>='
164
180
  - !ruby/object:Gem::Version
165
- version: 1.2.5
181
+ version: '0'
166
182
  type: :runtime
167
183
  prerelease: false
168
184
  version_requirements: !ruby/object:Gem::Requirement
@@ -170,15 +186,15 @@ dependencies:
170
186
  requirements:
171
187
  - - ! '>='
172
188
  - !ruby/object:Gem::Version
173
- version: 1.2.5
189
+ version: '0'
174
190
  - !ruby/object:Gem::Dependency
175
- name: nokogiri
191
+ name: thin
176
192
  requirement: !ruby/object:Gem::Requirement
177
193
  none: false
178
194
  requirements:
179
195
  - - ! '>='
180
196
  - !ruby/object:Gem::Version
181
- version: 1.4.3
197
+ version: 1.2.5
182
198
  type: :runtime
183
199
  prerelease: false
184
200
  version_requirements: !ruby/object:Gem::Requirement
@@ -186,7 +202,7 @@ dependencies:
186
202
  requirements:
187
203
  - - ! '>='
188
204
  - !ruby/object:Gem::Version
189
- version: 1.4.3
205
+ version: 1.2.5
190
206
  - !ruby/object:Gem::Dependency
191
207
  name: rbovirt
192
208
  requirement: !ruby/object:Gem::Requirement
@@ -194,7 +210,7 @@ dependencies:
194
210
  requirements:
195
211
  - - ! '>='
196
212
  - !ruby/object:Gem::Version
197
- version: 0.0.13
213
+ version: 0.0.16
198
214
  type: :runtime
199
215
  prerelease: false
200
216
  version_requirements: !ruby/object:Gem::Requirement
@@ -202,7 +218,7 @@ dependencies:
202
218
  requirements:
203
219
  - - ! '>='
204
220
  - !ruby/object:Gem::Version
205
- version: 0.0.13
221
+ version: 0.0.16
206
222
  - !ruby/object:Gem::Dependency
207
223
  name: aws
208
224
  requirement: !ruby/object:Gem::Requirement
@@ -210,7 +226,7 @@ dependencies:
210
226
  requirements:
211
227
  - - ! '>='
212
228
  - !ruby/object:Gem::Version
213
- version: 2.5.4
229
+ version: 2.6.0
214
230
  type: :runtime
215
231
  prerelease: false
216
232
  version_requirements: !ruby/object:Gem::Requirement
@@ -218,7 +234,7 @@ dependencies:
218
234
  requirements:
219
235
  - - ! '>='
220
236
  - !ruby/object:Gem::Version
221
- version: 2.5.4
237
+ version: 2.6.0
222
238
  - !ruby/object:Gem::Dependency
223
239
  name: waz-storage
224
240
  requirement: !ruby/object:Gem::Requirement
@@ -338,7 +354,7 @@ dependencies:
338
354
  requirements:
339
355
  - - ! '>='
340
356
  - !ruby/object:Gem::Version
341
- version: 1.0.6
357
+ version: 1.0.7
342
358
  type: :runtime
343
359
  prerelease: false
344
360
  version_requirements: !ruby/object:Gem::Requirement
@@ -346,7 +362,7 @@ dependencies:
346
362
  requirements:
347
363
  - - ! '>='
348
364
  - !ruby/object:Gem::Version
349
- version: 1.0.6
365
+ version: 1.0.7
350
366
  - !ruby/object:Gem::Dependency
351
367
  name: savon
352
368
  requirement: !ruby/object:Gem::Requirement
@@ -402,6 +418,7 @@ files:
402
418
  - config/drivers/openstack.yaml
403
419
  - config/drivers/fgcp.yaml
404
420
  - config/drivers/eucalyptus.yaml
421
+ - config/drivers/digitalocean.yaml
405
422
  - config/drivers/sbc.yaml
406
423
  - config/drivers/mock.yaml
407
424
  - config/drivers/condor.yaml
@@ -426,6 +443,7 @@ files:
426
443
  - support/condor/config/condor-cloud
427
444
  - support/condor/config/50condor_cloud.config
428
445
  - support/condor/config/50condor_cloud_node.config
446
+ - lib/db.rb
429
447
  - lib/deltacloud_rack.rb
430
448
  - lib/ec2/helpers.rb
431
449
  - lib/ec2/server.rb
@@ -437,6 +455,7 @@ files:
437
455
  - lib/cimi/dependencies.rb
438
456
  - lib/cimi/models.rb
439
457
  - lib/cimi/helpers/cimi_helper.rb
458
+ - lib/cimi/helpers/database_helper.rb
440
459
  - lib/cimi/models/volume_image.rb
441
460
  - lib/cimi/models/network_port_configuration.rb
442
461
  - lib/cimi/models/network.rb
@@ -466,6 +485,7 @@ files:
466
485
  - lib/cimi/models/machine_volume.rb
467
486
  - lib/cimi/models/resource_metadata.rb
468
487
  - lib/cimi/collections.rb
488
+ - lib/cimi/collections/machine_templates.rb
469
489
  - lib/cimi/collections/credentials.rb
470
490
  - lib/cimi/collections/base.rb
471
491
  - lib/cimi/collections/machine_images.rb
@@ -473,6 +493,7 @@ files:
473
493
  - lib/cimi/collections/address_templates.rb
474
494
  - lib/cimi/collections/forwarding_group_templates.rb
475
495
  - lib/cimi/collections/forwarding_groups.rb
496
+ - lib/cimi/collections/volume_templates.rb
476
497
  - lib/cimi/collections/network_templates.rb
477
498
  - lib/cimi/collections/volume_images.rb
478
499
  - lib/cimi/collections/cloud_entry_point.rb
@@ -557,6 +578,7 @@ files:
557
578
  - lib/deltacloud/drivers/condor/ip_agents/default.rb
558
579
  - lib/deltacloud/drivers/openstack/openstack_driver.rb
559
580
  - lib/deltacloud/drivers/google/google_driver.rb
581
+ - lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb
560
582
  - lib/deltacloud/drivers/azure/azure_driver.rb
561
583
  - lib/deltacloud/drivers/base_driver.rb
562
584
  - lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb
@@ -570,6 +592,7 @@ files:
570
592
  - lib/deltacloud/drivers/ec2/aws_vpc_monkey_patch.rb
571
593
  - lib/deltacloud/drivers/ec2/ec2_driver.rb
572
594
  - lib/deltacloud/drivers/rackspace/rackspace_driver.rb
595
+ - lib/deltacloud/drivers/rackspace/anti_cache_monkey_patch.rb
573
596
  - lib/deltacloud/drivers/gogrid/gogrid_driver.rb
574
597
  - lib/deltacloud/drivers/gogrid/gogrid_client.rb
575
598
  - lib/deltacloud/drivers/sbc/sbc_driver.rb
@@ -579,10 +602,17 @@ files:
579
602
  - lib/deltacloud/drivers/opennebula/occi_client.rb
580
603
  - lib/deltacloud/drivers/opennebula/cloud_client.rb
581
604
  - lib/deltacloud/drivers/opennebula/opennebula_driver.rb
605
+ - lib/deltacloud/drivers/cimi_features.rb
582
606
  - lib/deltacloud/drivers/exceptions.rb
583
607
  - lib/deltacloud/drivers/terremark/terremark_driver.rb
584
608
  - lib/deltacloud/drivers/aruba/aruba_driver.rb
585
609
  - lib/sinatra.rb
610
+ - lib/db/volume_template.rb
611
+ - lib/db/machine_template.rb
612
+ - lib/db/volume_configuration.rb
613
+ - lib/db/entity.rb
614
+ - lib/db/provider.rb
615
+ - lib/db/address_template.rb
586
616
  - lib/deltacloud/drivers/mock/data/instances/inst0.yml
587
617
  - lib/deltacloud/drivers/mock/data/instances/inst2.yml
588
618
  - lib/deltacloud/drivers/mock/data/instances/inst1.yml
@@ -641,6 +671,9 @@ files:
641
671
  - tests/cimi/collections/machines_test.rb
642
672
  - tests/cimi/collections/machine_images_test.rb
643
673
  - tests/cimi/collections/url_helper_test.rb
674
+ - tests/cimi/db/schema_test.rb
675
+ - tests/cimi/db/database_helper_test.rb
676
+ - tests/cimi/db/db_helper.rb
644
677
  - tests/helpers/rack/rack_etag_test.rb
645
678
  - tests/helpers/rack/rack_accept_test.rb
646
679
  - tests/helpers/rack/rack_matrix_params_test.rb
@@ -654,12 +687,16 @@ files:
654
687
  - tests/deltacloud/server_test.rb
655
688
  - tests/deltacloud/rack_test.rb
656
689
  - tests/deltacloud/deltacloud_helper_test.rb
690
+ - tests/deltacloud/launcher_test.rb
657
691
  - tests/deltacloud/common.rb
658
692
  - tests/deltacloud/collections_test.rb
659
693
  - tests/deltacloud/collections/images_collection_test.rb
660
694
  - tests/deltacloud/collections/buckets_collection_test.rb
695
+ - tests/deltacloud/collections/realms_collection_test.rb
696
+ - tests/deltacloud/collections/storage_volumes_collection_test.rb
661
697
  - tests/deltacloud/collections/instance_states_collection_test.rb
662
698
  - tests/deltacloud/collections/drivers_collection_test.rb
699
+ - tests/deltacloud/collections/storage_snapshots_collection_test.rb
663
700
  - tests/deltacloud/collections/instances_collection_test.rb
664
701
  - tests/deltacloud/collections/keys_collection_test.rb
665
702
  - tests/deltacloud/collections/hardware_profiles_collection_test.rb
@@ -690,6 +727,7 @@ files:
690
727
  - tests/drivers/mock/storage_snapshots_test.rb
691
728
  - tests/drivers/mock/common.rb
692
729
  - tests/drivers/mock/keys_test.rb
730
+ - tests/drivers/mock/buckets_test.rb
693
731
  - tests/drivers/ec2/realms_test.rb
694
732
  - tests/drivers/ec2/images_test.rb
695
733
  - tests/drivers/ec2/instance_test.rb
@@ -741,6 +779,7 @@ files:
741
779
  - views/realms/index.xml.haml
742
780
  - views/realms/show.html.haml
743
781
  - views/errors/504.html.haml
782
+ - views/errors/409.xml.haml
744
783
  - views/errors/501.xml.haml
745
784
  - views/errors/404.html.haml
746
785
  - views/errors/502.html.haml
@@ -758,6 +797,7 @@ files:
758
797
  - views/errors/401.html.haml
759
798
  - views/errors/500.xml.haml
760
799
  - views/errors/403.xml.haml
800
+ - views/errors/409.html.haml
761
801
  - views/errors/500.html.haml
762
802
  - views/errors/504.xml.haml
763
803
  - views/load_balancers/show.xml.haml
@@ -905,7 +945,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
905
945
  version: '0'
906
946
  segments:
907
947
  - 0
908
- hash: -4407904158893794863
948
+ hash: -2467979139256162930
909
949
  requirements: []
910
950
  rubyforge_project:
911
951
  rubygems_version: 1.8.23
@@ -919,6 +959,8 @@ test_files:
919
959
  - tests/cimi/collections/machines_test.rb
920
960
  - tests/cimi/collections/machine_images_test.rb
921
961
  - tests/cimi/collections/url_helper_test.rb
962
+ - tests/cimi/db/schema_test.rb
963
+ - tests/cimi/db/database_helper_test.rb
922
964
  - tests/helpers/rack/rack_etag_test.rb
923
965
  - tests/helpers/rack/rack_accept_test.rb
924
966
  - tests/helpers/rack/rack_matrix_params_test.rb
@@ -931,11 +973,15 @@ test_files:
931
973
  - tests/deltacloud/server_test.rb
932
974
  - tests/deltacloud/rack_test.rb
933
975
  - tests/deltacloud/deltacloud_helper_test.rb
976
+ - tests/deltacloud/launcher_test.rb
934
977
  - tests/deltacloud/collections_test.rb
935
978
  - tests/deltacloud/collections/images_collection_test.rb
936
979
  - tests/deltacloud/collections/buckets_collection_test.rb
980
+ - tests/deltacloud/collections/realms_collection_test.rb
981
+ - tests/deltacloud/collections/storage_volumes_collection_test.rb
937
982
  - tests/deltacloud/collections/instance_states_collection_test.rb
938
983
  - tests/deltacloud/collections/drivers_collection_test.rb
984
+ - tests/deltacloud/collections/storage_snapshots_collection_test.rb
939
985
  - tests/deltacloud/collections/instances_collection_test.rb
940
986
  - tests/deltacloud/collections/keys_collection_test.rb
941
987
  - tests/deltacloud/collections/hardware_profiles_collection_test.rb
@@ -960,6 +1006,7 @@ test_files:
960
1006
  - tests/drivers/mock/instances_test.rb
961
1007
  - tests/drivers/mock/storage_snapshots_test.rb
962
1008
  - tests/drivers/mock/keys_test.rb
1009
+ - tests/drivers/mock/buckets_test.rb
963
1010
  - tests/drivers/ec2/realms_test.rb
964
1011
  - tests/drivers/ec2/images_test.rb
965
1012
  - tests/drivers/ec2/instance_test.rb