steamcannon-deltacloud-core 0.0.8.1 → 0.1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +3 -9
- data/bin/deltacloudd +17 -15
- data/deltacloud.rb +1 -0
- data/lib/deltacloud/backend_capability.rb +21 -0
- data/lib/deltacloud/base_driver/base_driver.rb +6 -0
- data/lib/deltacloud/base_driver/features.rb +22 -0
- data/lib/deltacloud/base_driver/mock_driver.rb +24 -27
- data/lib/deltacloud/drivers/ec2/ec2_driver.rb +432 -494
- data/lib/deltacloud/drivers/gogrid/gogrid_client.rb +4 -7
- data/lib/deltacloud/drivers/gogrid/gogrid_driver.rb +116 -3
- data/lib/deltacloud/drivers/mock/mock_driver.rb +56 -2
- data/lib/deltacloud/drivers/rhevm/rhevm_driver.rb +5 -19
- data/lib/deltacloud/helpers/application_helper.rb +26 -3
- data/lib/deltacloud/models/image.rb +2 -1
- data/lib/deltacloud/models/instance.rb +22 -5
- data/lib/deltacloud/models/key.rb +17 -0
- data/lib/deltacloud/models/load_balancer.rb +39 -0
- data/lib/deltacloud/models/storage_volume.rb +2 -0
- data/lib/sinatra/rabbit.rb +4 -7
- data/public/javascripts/application.js +10 -24
- data/public/stylesheets/compiled/application.css +2 -0
- data/server.rb +214 -75
- data/views/blobs/new.html.haml +10 -0
- data/views/blobs/show.html.haml +21 -15
- data/views/buckets/index.html.haml +1 -1
- data/views/buckets/show.html.haml +5 -2
- data/views/errors/backend_capability_failure.html.haml +11 -0
- data/views/errors/backend_capability_failure.xml.haml +4 -0
- data/views/errors/backend_error.html.haml +3 -0
- data/views/errors/not_allowed.html.haml +6 -0
- data/views/errors/not_allowed.xml.haml +2 -0
- data/views/instances/index.html.haml +1 -1
- data/views/instances/new.html.haml +8 -0
- data/views/instances/show.html.haml +1 -1
- data/views/keys/show.xml.haml +2 -0
- data/views/load_balancers/index.html.haml +33 -0
- data/views/load_balancers/index.xml.haml +5 -0
- data/views/load_balancers/new.html.haml +38 -0
- data/views/load_balancers/show.html.haml +37 -0
- data/views/load_balancers/show.xml.haml +21 -0
- data/views/realms/index.html.haml +4 -7
- data/views/storage_snapshots/index.html.haml +3 -0
- data/views/storage_snapshots/index.xml.haml +0 -2
- data/views/storage_snapshots/new.html.haml +9 -0
- data/views/storage_snapshots/show.xml.haml +0 -2
- data/views/storage_volumes/attach.html.haml +20 -0
- data/views/storage_volumes/index.html.haml +16 -1
- data/views/storage_volumes/index.xml.haml +1 -20
- data/views/storage_volumes/new.html.haml +17 -0
- data/views/storage_volumes/show.xml.haml +13 -19
- metadata +53 -99
@@ -0,0 +1,10 @@
|
|
1
|
+
%h1 New Blob
|
2
|
+
|
3
|
+
%form{ :action => bucket_url(@bucket_id), :method => :post, :enctype => 'multipart/form-data'}
|
4
|
+
%label
|
5
|
+
Blob Name:
|
6
|
+
%input{ :name => 'blob_id', :size => 512}/
|
7
|
+
Blob Data:
|
8
|
+
%input{ :type => "file", :name => 'blob_data', :size => 50}/
|
9
|
+
%br
|
10
|
+
%input{ :type => :submit, :name => "commit", :value => "create"}/
|
data/views/blobs/show.html.haml
CHANGED
@@ -3,18 +3,24 @@
|
|
3
3
|
= @blob.id
|
4
4
|
|
5
5
|
%dl
|
6
|
-
%
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
6
|
+
%di
|
7
|
+
%dt Bucket
|
8
|
+
%dd
|
9
|
+
= @blob.bucket
|
10
|
+
%dt Content_Length
|
11
|
+
%dd
|
12
|
+
= @blob.content_length
|
13
|
+
%dt Content_Type
|
14
|
+
%dd
|
15
|
+
= @blob.content_type
|
16
|
+
%dt Last_Modified
|
17
|
+
%dd
|
18
|
+
= @blob.last_modified
|
19
|
+
%dt Content
|
20
|
+
%dd
|
21
|
+
=link_to 'Blob content', bucket_url(@blob.bucket) + '/' + @blob.id + '/content'
|
22
|
+
%dt Delete this Blob
|
23
|
+
%dd
|
24
|
+
%form{ :action => bucket_url(@blob.bucket) + '/' + @blob.id , :method => :post }
|
25
|
+
%input{ :type => "hidden", :name => "_method", :value => "delete"}
|
26
|
+
%input{ :type => :submit, :value => "Delete"}/
|
@@ -14,6 +14,9 @@
|
|
14
14
|
%dd
|
15
15
|
-@bucket.blob_list.each do |blob|
|
16
16
|
= link_to blob, bucket_url(@bucket.name) + '/' + blob
|
17
|
-
%dt
|
17
|
+
%dt Delete bucket (must be empty)
|
18
18
|
%dd
|
19
|
-
|
19
|
+
%dt Create a new blob
|
20
|
+
%dd
|
21
|
+
=link_to 'Create Blob', bucket_url(@bucket.name) + '/new_blob'
|
22
|
+
=link_to_action 'Delete', destroy_bucket_url(@bucket.name), :delete
|
@@ -27,4 +27,4 @@
|
|
27
27
|
= instance.state
|
28
28
|
%td
|
29
29
|
-instance.actions.each do |action|
|
30
|
-
=
|
30
|
+
=link_to_action action, self.send(:"#{action}_instance_url", instance.id), instance_action_method(action)
|
@@ -9,6 +9,14 @@
|
|
9
9
|
%label
|
10
10
|
Instance Name:
|
11
11
|
%input{ :name => 'name', :size => 30 }/
|
12
|
+
-if driver_has_feature?(:register_to_load_balancer)
|
13
|
+
%p
|
14
|
+
%label
|
15
|
+
Assign to load balancer:
|
16
|
+
%select{:name => 'load_balancer_id'}
|
17
|
+
%option{:value => ""}
|
18
|
+
- @load_balancers.each do |load_balancer|
|
19
|
+
%option{:value => load_balancer.id} #{load_balancer.id}
|
12
20
|
-if driver_has_feature?(:authentication_key)
|
13
21
|
%p
|
14
22
|
%label
|
@@ -40,4 +40,4 @@
|
|
40
40
|
%dt
|
41
41
|
%dd
|
42
42
|
-@instance.actions.each do |action|
|
43
|
-
=
|
43
|
+
=link_to_action action, self.send(:"#{action}_instance_url", @instance.id), instance_action_method(action)
|
data/views/keys/show.xml.haml
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
%h1 Load Balancers
|
2
|
+
|
3
|
+
%table.display
|
4
|
+
%thead
|
5
|
+
%tr
|
6
|
+
%th ID
|
7
|
+
%th Hostname
|
8
|
+
%th Realm
|
9
|
+
%th Balancer port
|
10
|
+
%th Instances port
|
11
|
+
%th Actions
|
12
|
+
%tbody
|
13
|
+
- @elements.each do |balancer|
|
14
|
+
%tr
|
15
|
+
%td
|
16
|
+
= link_to balancer.id, load_balancer_url( balancer.id )
|
17
|
+
%td
|
18
|
+
= balancer.public_addresses.first
|
19
|
+
%td
|
20
|
+
= link_to balancer.realms.first.id, realm_url( balancer.realms.first.id )
|
21
|
+
%td
|
22
|
+
- balancer.listeners.each do |listener|
|
23
|
+
="#{listener.protocol}[#{listener.load_balancer_port}]<br/>"
|
24
|
+
%td
|
25
|
+
- balancer.listeners.each do |listener|
|
26
|
+
="#{listener.protocol}[#{listener.load_balancer_port}]<br/>"
|
27
|
+
%td
|
28
|
+
=link_to_action 'Destroy', destroy_load_balancer_url(balancer.id), :delete
|
29
|
+
%tfoot
|
30
|
+
%tr
|
31
|
+
%td{:colspan => 6, :style => "text-align:right;"}
|
32
|
+
=link_to 'Create »', "#{url_for('/api/load_balancers/new')}", :class => 'button'
|
33
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
%h1 New Load Balancer
|
2
|
+
|
3
|
+
%form{ :action => '/api/load_balancers', :method => :post }
|
4
|
+
%p
|
5
|
+
%label
|
6
|
+
Name:
|
7
|
+
%input{ :name => 'name', :size => 30 }/
|
8
|
+
-if @instances
|
9
|
+
%p
|
10
|
+
%label
|
11
|
+
Running instance:
|
12
|
+
%select{ :name => 'instance_id'}
|
13
|
+
- @instances.select{|i| i.state=="RUNNING"}.each do |instance|
|
14
|
+
%option{ :value => instance.id } #{instance.id}
|
15
|
+
%p
|
16
|
+
%label
|
17
|
+
Realm:
|
18
|
+
%select{ :name => 'realm_id'}
|
19
|
+
- @realms.each do |realm|
|
20
|
+
%option{ :value => realm.id } #{realm.id} - #{realm.name}
|
21
|
+
%hr
|
22
|
+
%p
|
23
|
+
%label
|
24
|
+
Protocol:
|
25
|
+
%select{ :name => 'listener_protocol'}
|
26
|
+
%option{ :value => 'HTTP'} HTTP
|
27
|
+
%option{ :value => 'TCP'} TCP
|
28
|
+
%p
|
29
|
+
%label
|
30
|
+
Load balancer port:
|
31
|
+
%input{ :name => "listener_lbr_port", :size => 30}
|
32
|
+
%p
|
33
|
+
%label
|
34
|
+
Instances port:
|
35
|
+
%input{ :name => "listener_inst_port", :size => 30}
|
36
|
+
%p
|
37
|
+
%input{ :type => :submit, :name => "commit", :value => "create" }/
|
38
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
%h1
|
2
|
+
= @load_balancer.id
|
3
|
+
|
4
|
+
%dl
|
5
|
+
%di
|
6
|
+
%dt Public addresses
|
7
|
+
%dd
|
8
|
+
= @load_balancer.public_addresses.join(',')
|
9
|
+
- if @load_balancer.created_at
|
10
|
+
%dt Created at
|
11
|
+
%dd
|
12
|
+
= @load_balancer.created_at
|
13
|
+
%dt Realms
|
14
|
+
%dd
|
15
|
+
= @load_balancer.realms.collect { |r| "#{r.id} - #{r.name}" }.join(',')
|
16
|
+
%dt Listeners
|
17
|
+
%dd
|
18
|
+
- @load_balancer.listeners.each do |listener|
|
19
|
+
="Load balancer port: #{listener.load_balancer_port}"
|
20
|
+
%br
|
21
|
+
="Instance port: #{listener.instance_port}"
|
22
|
+
%br
|
23
|
+
- if @load_balancer.instances.class.eql?(Array)
|
24
|
+
%dt Instances
|
25
|
+
- @load_balancer.instances.each do |inst|
|
26
|
+
%dd
|
27
|
+
=inst.id
|
28
|
+
=link_to_action, 'Delete', unregister_load_balancer_url(@load_balancer.id, :instance_id => inst.id), :post
|
29
|
+
|
30
|
+
%form{:action => url_for("/api/load_balancers/#{@load_balancer.id}/register"), :method => :post}
|
31
|
+
%p
|
32
|
+
%strong Add instances to load balancer
|
33
|
+
%p
|
34
|
+
%label Instance
|
35
|
+
%select{:name => :instance_id, :id => "list_instances"}
|
36
|
+
%input{:type => :submit, :value => "Assign"}
|
37
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
- unless defined?(partial)
|
2
|
+
!!! XML
|
3
|
+
%load_balancer{ :href => key_url(@load_balancer.id), :id => @load_balancer.id}
|
4
|
+
%actions
|
5
|
+
%link{ :rel => "destroy", :method => "delete", :href => destroy_load_balancer_url(@load_balancer.id)}
|
6
|
+
%public_addresses
|
7
|
+
- @load_balancer.public_addresses.each do |address|
|
8
|
+
%address #{address}
|
9
|
+
%created_at<
|
10
|
+
= @load_balancer.created_at
|
11
|
+
%realm{ :href => realm_url(@load_balancer.realms.first.id), :id => @load_balancer.realms.first.id}
|
12
|
+
%listeners
|
13
|
+
- @load_balancer.listeners.each do |listener|
|
14
|
+
%listener{ :protocol => listener.protocol}
|
15
|
+
%load_balancer_port #{listener.load_balancer_port}
|
16
|
+
%instance_port #{listener.instance_port}
|
17
|
+
%instances
|
18
|
+
- @load_balancer.instances.each do |instance|
|
19
|
+
%instance{:href => instance_url(instance.id), :id => instance.id}
|
20
|
+
%link{:rel => "unregister", :href => unregister_load_balancer_url(@load_balancer.id, { :instance_id => instance.id})}
|
21
|
+
|
@@ -5,15 +5,13 @@
|
|
5
5
|
%thead
|
6
6
|
%tr
|
7
7
|
%th
|
8
|
-
|
9
|
-
%th
|
10
|
-
Architecture
|
8
|
+
ID
|
11
9
|
%th
|
12
|
-
|
10
|
+
Name
|
13
11
|
%th
|
14
|
-
|
12
|
+
State
|
15
13
|
%th
|
16
|
-
|
14
|
+
Limit
|
17
15
|
%tbody
|
18
16
|
- @realms.each do |realm|
|
19
17
|
%tr
|
@@ -25,5 +23,4 @@
|
|
25
23
|
= realm.state
|
26
24
|
%td
|
27
25
|
= realm.limit
|
28
|
-
%td
|
29
26
|
|
@@ -7,6 +7,7 @@
|
|
7
7
|
%th Volume
|
8
8
|
%th Created
|
9
9
|
%th State
|
10
|
+
%th Actions
|
10
11
|
%tbody
|
11
12
|
- @storage_snapshots.each do |snapshot|
|
12
13
|
%tr
|
@@ -18,3 +19,5 @@
|
|
18
19
|
= snapshot.created
|
19
20
|
%td
|
20
21
|
= snapshot.state
|
22
|
+
%td
|
23
|
+
= link_to_action "Delete", destroy_storage_snapshot_url(snapshot.id), :delete
|
@@ -0,0 +1,9 @@
|
|
1
|
+
%h1 Create new storage volume snapshot
|
2
|
+
|
3
|
+
%form{ :action => '/api/storage_snapshots', :method => :post }
|
4
|
+
%p
|
5
|
+
%label
|
6
|
+
Volume ID:
|
7
|
+
%input{ :name => 'volume_id', :size => 30, :value => params[:volume_id] }
|
8
|
+
%p
|
9
|
+
%input{ :type => :submit, :name => "commit", :value => "create" }/
|
@@ -2,6 +2,4 @@
|
|
2
2
|
%storage_snapshot{:href => storage_snapshot_url(@storage_snapshot.id), :id => @storage_snapshot.id }
|
3
3
|
%created<
|
4
4
|
=@storage_snapshot.created
|
5
|
-
%state<
|
6
|
-
=@storage_snapshot.state
|
7
5
|
%storage_volume{:href => storage_volume_url(@storage_snapshot.storage_volume_id), :id => @storage_snapshot.storage_volume_id}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
%h1 Attach storage volume
|
2
|
+
|
3
|
+
%form{ :action => attach_storage_volume_url(params[:id]), :method => :post }
|
4
|
+
%p
|
5
|
+
%label
|
6
|
+
Instance ID:
|
7
|
+
- if @instances.empty?
|
8
|
+
%select
|
9
|
+
%option There are no instances
|
10
|
+
- else
|
11
|
+
%select{ :name => 'instance_id' }
|
12
|
+
- @instances.each do |i|
|
13
|
+
%option{ :value => "#{i.id}"} #{i.name}
|
14
|
+
%p
|
15
|
+
%label
|
16
|
+
Device name:
|
17
|
+
%input{ :name => "device", :size => 10, :value => "/dev/sdc"}
|
18
|
+
%p
|
19
|
+
%input{ :type => :hidden, :name => :id, :value => params[:id]}
|
20
|
+
%input{ :type => :submit, :name => "commit", :value => "create" }/
|
@@ -5,8 +5,10 @@
|
|
5
5
|
%tr
|
6
6
|
%th ID
|
7
7
|
%th Created
|
8
|
+
%th Realm
|
8
9
|
%th Capacity
|
9
10
|
%th Status
|
11
|
+
%th Actions
|
10
12
|
%tbody
|
11
13
|
- @storage_volumes.each do |volume|
|
12
14
|
%tr
|
@@ -14,8 +16,21 @@
|
|
14
16
|
= link_to volume.id, storage_volume_url( volume.id )
|
15
17
|
%td
|
16
18
|
= volume.created
|
19
|
+
%td
|
20
|
+
= volume.realm_id
|
17
21
|
%td
|
18
22
|
= "#{volume.capacity} GB"
|
19
23
|
%td
|
20
24
|
= "#{volume.state}"
|
21
|
-
|
25
|
+
%td
|
26
|
+
- if ["AVAILABLE", "IN-USE"].include?(volume.state)
|
27
|
+
=link_to_action "Snaphot", url_for("/api/storage_snapshots/new?volume_id=#{volume.id}"), :get
|
28
|
+
- unless volume.instance_id
|
29
|
+
=link_to_action "Delete", destroy_storage_volume_url(volume.id), :delete
|
30
|
+
=link_to_action "Attach", url_for("/api/storage_volumes/attach?id=#{volume.id}"), :get
|
31
|
+
- if volume.instance_id
|
32
|
+
=link_to_action "Detach", detach_storage_volume_url(volume.id), :post
|
33
|
+
%tfoot
|
34
|
+
%tr
|
35
|
+
%td{:colspan => 6}
|
36
|
+
%a{ :href => url_for("/api/storage_volumes/new")} Create volume
|
@@ -1,23 +1,4 @@
|
|
1
1
|
!!!XML
|
2
2
|
%storage_volumes
|
3
3
|
- @elements.each do |volume|
|
4
|
-
|
5
|
-
%created<
|
6
|
-
=volume.created
|
7
|
-
%capacity<
|
8
|
-
=volume.capacity
|
9
|
-
%state<
|
10
|
-
=volume.state
|
11
|
-
%device<
|
12
|
-
=volume.device
|
13
|
-
%instance_id<
|
14
|
-
=volume.instance_id
|
15
|
-
- unless volume.instance_id.nil?
|
16
|
-
%instance{:href => instance_url(volume.instance_id), :id => volume.instance_id}
|
17
|
-
%actions
|
18
|
-
- if driver.respond_to?(:destroy_storage_volume)
|
19
|
-
%link{ :rel => "destroy", :method => "delete", :href => destroy_storage_volume_url(volume.id)}
|
20
|
-
- if driver.respond_to?(:attach_storage_volume)
|
21
|
-
%link{ :rel => "attach", :method => "post", :href => attach_storage_volume_url(volume.id)}
|
22
|
-
- if driver.respond_to?(:detach_storage_volume)
|
23
|
-
%link{ :rel => "detach", :method => "post", :href => detach_storage_volume_url(volume.id)}
|
4
|
+
= haml :'storage_volumes/show', :locals => { :@storage_volume => volume, :partial => true }
|