Class: Deltacloud::Drivers::Rackspace::RackspaceDriver
- Inherits:
-
BaseDriver
- Object
- BaseDriver
- Deltacloud::Drivers::Rackspace::RackspaceDriver
- Defined in:
- lib/deltacloud/drivers/rackspace/rackspace_driver.rb
Constant Summary
Constants inherited from BaseDriver
BaseDriver::MEMBER_SHOW_METHODS
Instance Method Summary collapse
-
#blob_data(credentials, bucket_id, blob_id, opts) ⇒ Object
-
Blob data -.
-
-
#blobs(credentials, opts) ⇒ Object
– Blobs –.
-
#buckets(credentials, opts) ⇒ Object
– Buckets –.
-
#create_blob(credentials, bucket_id, blob_id, blob_data, opts = nil) ⇒ Object
– Create Blob –.
-
#create_bucket(credentials, name, opts) ⇒ Object
– Create Bucket –.
-
#create_instance(credentials, image_id, opts) ⇒ Object
create instance.
-
#delete_blob(credentials, bucket_id, blob_id, opts = nil) ⇒ Object
– Delete Blob –.
-
#delete_bucket(credentials, name, opts) ⇒ Object
– Delete Bucket –.
- #destroy_instance(credentials, id) ⇒ Object
- #hardware_profiles(credentials, opts = nil) ⇒ Object
- #images(credentials, opts = nil) ⇒ Object
-
#instances(credentials, opts = nil) ⇒ Object
Instances.
-
#realms(credentials, opts = nil) ⇒ Object
rackspace does not at this stage have realms…
- #reboot_instance(credentials, id) ⇒ Object
- #stop_instance(credentials, id) ⇒ Object
- #supported_collections ⇒ Object
- #valid_credentials?(credentials) ⇒ Boolean
Methods inherited from BaseDriver
#blob, #bucket, #catched_exceptions_list, declare_feature, define_hardware_profile, define_instance_states, feature, feature_decl_for, feature_decls, #features, features, #features_for_operation, #filter_hardware_profiles, #filter_on, #find_hardware_profile, #hardware_profile, hardware_profiles, #has_capability?, #has_collection?, #image, #instance, #instance_actions_for, instance_state_machine, #instance_state_machine, #key, #realm, #storage_snapshot, #storage_volume
Instance Method Details
#blob_data(credentials, bucket_id, blob_id, opts) ⇒ Object
- Blob data -
224 225 226 227 228 229 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 224 def blob_data(credentials, bucket_id, blob_id, opts) cf = cloudfiles_client(credentials) cf.container(bucket_id).object(blob_id).data_stream do |chunk| yield chunk end end |
#blobs(credentials, opts) ⇒ Object
– Blobs –
208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 208 def blobs(credentials, opts) cf = cloudfiles_client(credentials) blobs = [] safely do cf_container = cf.container(opts['bucket']) cf_container.objects.each do |object_name| blobs << convert_object(cf_container.object(object_name)) end end blobs = filter_on(blobs, :id, opts) blobs end |
#buckets(credentials, opts) ⇒ Object
– Buckets –
169 170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 169 def buckets(credentials, opts) bucket_list = [] cf = cloudfiles_client(credentials) safely do cf.containers.each do |container_name| current = cf.container(container_name) bucket_list << convert_container(current) end #containers.each end #safely bucket_list = filter_on(bucket_list, :id, opts) bucket_list end |
#create_blob(credentials, bucket_id, blob_id, blob_data, opts = nil) ⇒ Object
– Create Blob –
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 234 def create_blob(credentials, bucket_id, blob_id, blob_data, opts=nil) cf = cloudfiles_client(credentials) #must first create the object using cloudfiles_client.create_object #then can write using object.write(data) object = cf.container(bucket_id).create_object(blob_id) #blob_data is a construct with data in .tempfile and content-type in {:type} res = object.write(blob_data[:tempfile], {'Content-Type' => blob_data[:type]}) Blob.new( { :id => object.name, :bucket => object.container.name, :content_length => blob_data[:tempfile].length, :content_type => blob_data[:type], :last_modified => '' } ) end |
#create_bucket(credentials, name, opts) ⇒ Object
– Create Bucket –
185 186 187 188 189 190 191 192 193 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 185 def create_bucket(credentials, name, opts) bucket = nil cf = cloudfiles_client(credentials) safely do new_bucket = cf.create_container(name) bucket = convert_container(new_bucket) end bucket end |
#create_instance(credentials, image_id, opts) ⇒ Object
create instance. Default to flavor 1 - really need a name though… In rackspace, all flavors work with all images.
111 112 113 114 115 116 117 118 119 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 111 def create_instance(credentials, image_id, opts) racks = new_client( credentials ) hwp_id = opts[:hwp_id] || 1 name = Time.now.to_s if (opts[:name]) then name = opts[:name] end safely do return convert_srv_to_instance(racks.start_server(image_id, hwp_id, name)) end end |
#delete_blob(credentials, bucket_id, blob_id, opts = nil) ⇒ Object
– Delete Blob –
253 254 255 256 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 253 def delete_blob(credentials, bucket_id, blob_id, opts=nil) cf = cloudfiles_client(credentials) cf.container(bucket_id).delete_object(blob_id) end |
#delete_bucket(credentials, name, opts) ⇒ Object
– Delete Bucket –
198 199 200 201 202 203 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 198 def delete_bucket(credentials, name, opts) cf = cloudfiles_client(credentials) safely do cf.delete_container(name) end end |
#destroy_instance(credentials, id) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 94 def destroy_instance(credentials, id) racks = new_client(credentials) safely do racks.delete_server(id) end Instance.new( { :id => id, :state => "STOPPED", :actions => instance_actions_for( "STOPPED" ), } ) end |
#hardware_profiles(credentials, opts = nil) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 35 def hardware_profiles(credentials, opts = nil) racks = new_client( credentials ) results="" safely do results = racks.list_flavors.map do |flav| HardwareProfile.new(flav["id"].to_s) do architecture 'x86_64' memory flav["ram"].to_i storage flav["disk"].to_i end end end filter_hardware_profiles(results, opts) end |
#images(credentials, opts = nil) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 50 def images(credentials, opts=nil) racks = new_client( credentials ) results="" safely do results = racks.list_images.map do |img| Image.new( { :id=>img["id"].to_s, :name=>img["name"], :description => img["name"] + " " + img["status"] + "", :owner_id=>"root", :architecture=>'x86_64' } ) end end results.sort_by{|e| [e.description]} results = filter_on( results, :id, opts ) results end |
#instances(credentials, opts = nil) ⇒ Object
Instances
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 124 def instances(credentials, opts=nil) racks = new_client(credentials) instances = [] safely do if (opts.nil?) instances = racks.list_servers.map do |srv| convert_srv_to_instance(srv) end else instances << convert_srv_to_instance(racks.load_server_details(opts[:id])) end end instances = filter_on( instances, :id, opts ) instances = filter_on( instances, :state, opts ) instances end |
#realms(credentials, opts = nil) ⇒ Object
rackspace does not at this stage have realms… its all US/TX, all the time (at least at time of writing)
70 71 72 73 74 75 76 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 70 def realms(credentials, opts=nil) [Realm.new( { :id=>"us", :name=>"United States", :state=> "AVAILABLE" } )] end |
#reboot_instance(credentials, id) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 78 def reboot_instance(credentials, id) racks = new_client(credentials) safely do racks.reboot_server(id) end Instance.new( { :id => id, :state => "RUNNING", :actions => instance_actions_for( "RUNNING" ), } ) end |
#stop_instance(credentials, id) ⇒ Object
90 91 92 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 90 def stop_instance(credentials, id) destroy_instance(credentials, id) end |
#supported_collections ⇒ Object
31 32 33 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 31 def supported_collections DEFAULT_COLLECTIONS + [ :buckets ] end |
#valid_credentials?(credentials) ⇒ Boolean
141 142 143 144 145 146 147 148 |
# File 'lib/deltacloud/drivers/rackspace/rackspace_driver.rb', line 141 def valid_credentials?(credentials) begin new_client(credentials) rescue return false end true end |