steamcannon-deltacloud-core 0.1.1.3 → 0.1.2.1
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.
- data/bin/deltacloudd +7 -1
- data/config.ru +19 -1
- data/deltacloud.rb +20 -1
- data/lib/deltacloud/backend_capability.rb +33 -1
- data/lib/deltacloud/base_driver.rb +1 -1
- data/lib/deltacloud/base_driver/base_driver.rb +62 -73
- data/lib/deltacloud/base_driver/features.rb +6 -6
- data/lib/deltacloud/drivers/azure/azure_driver.rb +32 -1
- data/lib/deltacloud/drivers/ec2/ec2_driver.rb +107 -23
- data/lib/deltacloud/drivers/ec2/ec2_mock_driver.rb +18 -0
- data/lib/deltacloud/drivers/gogrid/gogrid_client.rb +0 -1
- data/lib/deltacloud/drivers/gogrid/gogrid_driver.rb +20 -5
- data/lib/deltacloud/drivers/mock/mock_driver.rb +1 -1
- data/lib/deltacloud/drivers/rackspace/rackspace_client.rb +1 -1
- data/lib/deltacloud/drivers/rackspace/rackspace_driver.rb +28 -1
- data/lib/deltacloud/hardware_profile.rb +17 -0
- data/lib/deltacloud/helpers.rb +18 -0
- data/lib/deltacloud/helpers/application_helper.rb +2 -2
- data/lib/deltacloud/helpers/blob_stream.rb +5 -1
- data/lib/deltacloud/helpers/conversion_helper.rb +1 -2
- data/lib/deltacloud/helpers/hardware_profiles_helper.rb +17 -0
- data/lib/deltacloud/method_serializer.rb +1 -1
- data/lib/deltacloud/models/base_model.rb +1 -1
- data/lib/deltacloud/models/blob.rb +3 -1
- data/lib/deltacloud/models/bucket.rb +2 -1
- data/lib/deltacloud/models/image.rb +1 -1
- data/lib/deltacloud/models/instance.rb +1 -2
- data/lib/deltacloud/models/instance_profile.rb +2 -1
- data/lib/deltacloud/models/key.rb +1 -1
- data/lib/deltacloud/models/load_balancer.rb +1 -1
- data/lib/deltacloud/models/realm.rb +1 -1
- data/lib/deltacloud/models/storage_snapshot.rb +1 -1
- data/lib/deltacloud/models/storage_volume.rb +1 -1
- data/lib/deltacloud/state_machine.rb +17 -0
- data/lib/deltacloud/validation.rb +18 -0
- data/lib/drivers.rb +69 -43
- data/lib/sinatra/lazy_auth.rb +1 -1
- data/lib/sinatra/rabbit.rb +5 -5
- data/lib/sinatra/rack_driver_select.rb +29 -0
- data/server.rb +45 -16
- data/views/api/drivers.xml.haml +6 -0
- data/views/api/show.html.haml +2 -2
- data/views/api/show.xml.haml +1 -1
- data/views/buckets/index.html.haml +2 -1
- data/views/buckets/show.html.haml +4 -3
- data/views/errors/backend_error.xml.haml +1 -1
- data/views/images/index.xml.haml +5 -1
- data/views/layout.html.haml +1 -1
- metadata +6 -5
- data/lib/deltacloud/drivers/gogrid/test.rb +0 -13
data/lib/sinatra/lazy_auth.rb
CHANGED
data/lib/sinatra/rabbit.rb
CHANGED
@@ -60,7 +60,7 @@ module Sinatra
|
|
60
60
|
def control(&block)
|
61
61
|
op = self
|
62
62
|
@control = Proc.new do
|
63
|
-
op.check_capability(driver)
|
63
|
+
op.check_capability(Deltacloud::driver)
|
64
64
|
op.validate(params)
|
65
65
|
instance_eval(&block)
|
66
66
|
end
|
@@ -72,7 +72,7 @@ module Sinatra
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def path(args = {})
|
75
|
-
l_prefix = args[:prefix]
|
75
|
+
l_prefix = args[:prefix] || prefix
|
76
76
|
if @member
|
77
77
|
if standard?
|
78
78
|
"#{l_prefix}/#{@collection.name}/:id"
|
@@ -133,7 +133,7 @@ module Sinatra
|
|
133
133
|
end
|
134
134
|
|
135
135
|
def generate_documentation
|
136
|
-
coll, oper, features = self, @operations, driver.features(name)
|
136
|
+
coll, oper, features = self, @operations, Deltacloud::driver.features(name)
|
137
137
|
::Sinatra::Application.get("/api/docs/#{@name}") do
|
138
138
|
@collection, @operations, @features = coll, oper, features
|
139
139
|
respond_to do |format|
|
@@ -206,9 +206,9 @@ module Sinatra
|
|
206
206
|
# operation on this collection.
|
207
207
|
def collection(name, &block)
|
208
208
|
raise DuplicateCollectionException if collections[name]
|
209
|
-
return unless driver.has_collection?(name.to_sym)
|
209
|
+
return unless Deltacloud::driver.has_collection?(name.to_sym)
|
210
210
|
collections[name] = Collection.new(name, &block)
|
211
|
-
collections[name].add_feature_params(driver.features(name))
|
211
|
+
collections[name].add_feature_params(Deltacloud::driver.features(name))
|
212
212
|
collections[name].generate
|
213
213
|
end
|
214
214
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class RackDriverSelect
|
2
|
+
|
3
|
+
def initialize(app, opts={})
|
4
|
+
@app = app
|
5
|
+
@opts = opts
|
6
|
+
end
|
7
|
+
|
8
|
+
HEADER_TO_ENV_MAP = {
|
9
|
+
'HTTP_X_DELTACLOUD_DRIVER' => :driver,
|
10
|
+
'HTTP_X_DELTACLOUD_PROVIDER' => :provider
|
11
|
+
}
|
12
|
+
|
13
|
+
def call(env)
|
14
|
+
original_settings = { }
|
15
|
+
HEADER_TO_ENV_MAP.each do |header, name|
|
16
|
+
original_settings[name] = Thread.current[name]
|
17
|
+
new_setting = extract_header(env, header)
|
18
|
+
Thread.current[name] = new_setting if new_setting
|
19
|
+
end
|
20
|
+
@app.call(env)
|
21
|
+
ensure
|
22
|
+
original_settings.each { |name, value| Thread.current[name] = value }
|
23
|
+
end
|
24
|
+
|
25
|
+
def extract_header(env, header)
|
26
|
+
env[header].downcase if env[header]
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/server.rb
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
# Copyright (C) 2009, 2010 Red Hat, Inc.
|
2
|
+
#
|
3
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
4
|
+
# contributor license agreements. See the NOTICE file distributed with
|
5
|
+
# this work for additional information regarding copyright ownership. The
|
6
|
+
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
7
|
+
# "License"); you may not use this file except in compliance with the
|
8
|
+
# License. You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
14
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
15
|
+
# License for the specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
1
18
|
require 'sinatra'
|
2
19
|
require 'deltacloud'
|
3
20
|
require 'drivers'
|
@@ -10,6 +27,12 @@ require 'erb'
|
|
10
27
|
require 'haml'
|
11
28
|
require 'open3'
|
12
29
|
require 'lib/deltacloud/helpers/blob_stream'
|
30
|
+
require 'sinatra/rack_driver_select'
|
31
|
+
|
32
|
+
set :version, '0.1.0'
|
33
|
+
|
34
|
+
|
35
|
+
use RackDriverSelect
|
13
36
|
|
14
37
|
configure do
|
15
38
|
set :raise_errors => false
|
@@ -46,25 +69,30 @@ end
|
|
46
69
|
Sinatra::Application.register Sinatra::RespondTo
|
47
70
|
|
48
71
|
# Redirect to /api
|
49
|
-
get '/' do redirect url_for('/api'); end
|
72
|
+
get '/' do redirect url_for('/api'), 301; end
|
73
|
+
|
74
|
+
get '/api/drivers\/?' do
|
75
|
+
respond_to do |format|
|
76
|
+
format.xml { haml :"api/drivers" }
|
77
|
+
end
|
78
|
+
end
|
50
79
|
|
51
80
|
get '/api\/?' do
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
}.to_json
|
65
|
-
end
|
66
|
-
format.html { haml :"api/show" }
|
81
|
+
if params[:force_auth]
|
82
|
+
return [401, 'Authentication failed'] unless driver.valid_credentials?(credentials)
|
83
|
+
end
|
84
|
+
respond_to do |format|
|
85
|
+
format.xml { haml :"api/show" }
|
86
|
+
format.json do
|
87
|
+
{ :api => {
|
88
|
+
:version => settings.version,
|
89
|
+
:driver => driver_symbol,
|
90
|
+
:links => entry_points.collect { |l| { :rel => l[0], :href => l[1]} }
|
91
|
+
}
|
92
|
+
}.to_json
|
67
93
|
end
|
94
|
+
format.html { haml :"api/show" }
|
95
|
+
end
|
68
96
|
end
|
69
97
|
|
70
98
|
# Rabbit DSL
|
@@ -595,6 +623,7 @@ get '/api/buckets/:bucket/:blob/content' do
|
|
595
623
|
@blob = driver.blob(credentials, { :id => params[:blob], 'bucket' => params[:bucket]})
|
596
624
|
params['content_length'] = @blob.content_length
|
597
625
|
params['content_type'] = @blob.content_type
|
626
|
+
params['content_disposition'] = "attachment; filename=#{@blob.id}"
|
598
627
|
BlobStream.call(env, credentials, params)
|
599
628
|
end
|
600
629
|
|
data/views/api/show.html.haml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
%h1
|
2
|
-
API v#{
|
2
|
+
API v#{settings.version}
|
3
3
|
|
4
4
|
%ul
|
5
5
|
- collections.keys.sort_by { |k| k.to_s }.each do |key|
|
@@ -12,4 +12,4 @@
|
|
12
12
|
= op
|
13
13
|
%li
|
14
14
|
%strong
|
15
|
-
%a{:href => url_for("/api/docs")} Documentation (
|
15
|
+
%a{:href => url_for("/api/docs")} Documentation (#{settings.version})
|
data/views/api/show.xml.haml
CHANGED
@@ -14,9 +14,10 @@
|
|
14
14
|
%dd
|
15
15
|
-@bucket.blob_list.each do |blob|
|
16
16
|
= link_to blob, bucket_url(@bucket.name) + '/' + blob
|
17
|
-
%dt Delete bucket (must be empty)
|
18
|
-
%dd
|
19
17
|
%dt Create a new blob
|
20
18
|
%dd
|
21
19
|
=link_to 'Create Blob', bucket_url(@bucket.name) + '/new_blob'
|
22
|
-
|
20
|
+
%dt Delete bucket (must be empty)
|
21
|
+
%dd
|
22
|
+
-if @bucket.size == 0
|
23
|
+
=link_to_action 'Delete', destroy_bucket_url(@bucket.name), :delete
|
data/views/images/index.xml.haml
CHANGED
@@ -4,5 +4,9 @@
|
|
4
4
|
%image{:href => image_url(image.id), :id => image.id}
|
5
5
|
- image.attributes.select{ |attr| attr!=:id }.each do |attribute|
|
6
6
|
- haml_tag("#{attribute}".tr('-', '_'), :<) do
|
7
|
-
-
|
7
|
+
- if [:name, :description].include?(attribute)
|
8
|
+
=cdata do
|
9
|
+
- haml_concat image.send(attribute)
|
10
|
+
- else
|
11
|
+
- haml_concat image.send(attribute)
|
8
12
|
|
data/views/layout.html.haml
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: steamcannon-deltacloud-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 77
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
+
- 2
|
9
10
|
- 1
|
10
|
-
|
11
|
-
version: 0.1.1.3
|
11
|
+
version: 0.1.2.1
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Red Hat, Inc.
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-12-
|
19
|
+
date: 2010-12-23 00:00:00 -05:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -230,7 +230,6 @@ files:
|
|
230
230
|
- lib/deltacloud/backend_capability.rb
|
231
231
|
- lib/deltacloud/drivers/rackspace/rackspace_client.rb
|
232
232
|
- lib/deltacloud/drivers/rackspace/rackspace_driver.rb
|
233
|
-
- lib/deltacloud/drivers/gogrid/test.rb
|
234
233
|
- lib/deltacloud/drivers/gogrid/gogrid_client.rb
|
235
234
|
- lib/deltacloud/drivers/gogrid/gogrid_driver.rb
|
236
235
|
- lib/deltacloud/drivers/opennebula/occi_client.rb
|
@@ -273,6 +272,7 @@ files:
|
|
273
272
|
- lib/sinatra/url_for.rb
|
274
273
|
- lib/sinatra/static_assets.rb
|
275
274
|
- lib/sinatra/accept_media_types.rb
|
275
|
+
- lib/sinatra/rack_driver_select.rb
|
276
276
|
- lib/sinatra/rabbit.rb
|
277
277
|
- lib/deltacloud/drivers/mock/data/storage_volumes/vol3.yml
|
278
278
|
- lib/deltacloud/drivers/mock/data/storage_volumes/vol1.yml
|
@@ -338,6 +338,7 @@ files:
|
|
338
338
|
- views/images/show.html.haml
|
339
339
|
- views/accounts/index.html.haml
|
340
340
|
- views/accounts/show.html.haml
|
341
|
+
- views/api/drivers.xml.haml
|
341
342
|
- views/api/show.xml.haml
|
342
343
|
- views/api/show.html.haml
|
343
344
|
- views/docs/collection.xml.haml
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'gogrid_client'
|
2
|
-
require 'ap'
|
3
|
-
|
4
|
-
user='fbb1de3897597ccf'
|
5
|
-
password='ngieth10'
|
6
|
-
|
7
|
-
client=GoGridClient.new('https://api.gogrid.com/api', user, password)
|
8
|
-
|
9
|
-
ap client.request('grid/ip/list', {
|
10
|
-
'ip.type' => '1',
|
11
|
-
'ip.state' => '1',
|
12
|
-
'datacenter' => '1'
|
13
|
-
})
|