You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by lu...@apache.org on 2010/07/09 01:16:51 UTC
svn commit: r962011 - in /incubator/deltacloud/trunk/drivers/mock: ./ data/
data/images/ data/instances/ data/storage_snapshots/ data/storage_volumes/
lib/
Author: lutter
Date: Thu Jul 8 23:16:51 2010
New Revision: 962011
URL: http://svn.apache.org/viewvc?rev=962011&view=rev
Log:
Break mock driver out of the framework
Added:
incubator/deltacloud/trunk/drivers/mock/
incubator/deltacloud/trunk/drivers/mock/.gitignore
incubator/deltacloud/trunk/drivers/mock/data/
incubator/deltacloud/trunk/drivers/mock/data/images/
incubator/deltacloud/trunk/drivers/mock/data/images/.gitignore
incubator/deltacloud/trunk/drivers/mock/data/images/img1.yml
incubator/deltacloud/trunk/drivers/mock/data/images/img2.yml
incubator/deltacloud/trunk/drivers/mock/data/images/img3.yml
incubator/deltacloud/trunk/drivers/mock/data/instances/
incubator/deltacloud/trunk/drivers/mock/data/instances/.gitignore
incubator/deltacloud/trunk/drivers/mock/data/instances/inst1.yml
incubator/deltacloud/trunk/drivers/mock/data/instances/inst2.yml
incubator/deltacloud/trunk/drivers/mock/data/storage_snapshots/
incubator/deltacloud/trunk/drivers/mock/data/storage_snapshots/.gitignore
incubator/deltacloud/trunk/drivers/mock/data/storage_volumes/
incubator/deltacloud/trunk/drivers/mock/data/storage_volumes/.gitignore
incubator/deltacloud/trunk/drivers/mock/lib/
incubator/deltacloud/trunk/drivers/mock/lib/mock_driver.rb
Added: incubator/deltacloud/trunk/drivers/mock/.gitignore
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/.gitignore?rev=962011&view=auto
==============================================================================
--- incubator/deltacloud/trunk/drivers/mock/.gitignore (added)
+++ incubator/deltacloud/trunk/drivers/mock/.gitignore Thu Jul 8 23:16:51 2010
@@ -0,0 +1 @@
+*.swp
Added: incubator/deltacloud/trunk/drivers/mock/data/images/.gitignore
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/data/images/.gitignore?rev=962011&view=auto
==============================================================================
(empty)
Added: incubator/deltacloud/trunk/drivers/mock/data/images/img1.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/data/images/img1.yml?rev=962011&view=auto
==============================================================================
--- incubator/deltacloud/trunk/drivers/mock/data/images/img1.yml (added)
+++ incubator/deltacloud/trunk/drivers/mock/data/images/img1.yml Thu Jul 8 23:16:51 2010
@@ -0,0 +1,3 @@
+:description: Fedora 10
+:owner_id: fedoraproject
+:architecture: x86_64
Added: incubator/deltacloud/trunk/drivers/mock/data/images/img2.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/data/images/img2.yml?rev=962011&view=auto
==============================================================================
--- incubator/deltacloud/trunk/drivers/mock/data/images/img2.yml (added)
+++ incubator/deltacloud/trunk/drivers/mock/data/images/img2.yml Thu Jul 8 23:16:51 2010
@@ -0,0 +1,3 @@
+:description: Fedora 10
+:owner_id: fedoraproject
+:architecture: i386
Added: incubator/deltacloud/trunk/drivers/mock/data/images/img3.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/data/images/img3.yml?rev=962011&view=auto
==============================================================================
--- incubator/deltacloud/trunk/drivers/mock/data/images/img3.yml (added)
+++ incubator/deltacloud/trunk/drivers/mock/data/images/img3.yml Thu Jul 8 23:16:51 2010
@@ -0,0 +1,3 @@
+:description: JBoss
+:owner_id: mockuser
+:architecture: i386
Added: incubator/deltacloud/trunk/drivers/mock/data/instances/.gitignore
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/data/instances/.gitignore?rev=962011&view=auto
==============================================================================
(empty)
Added: incubator/deltacloud/trunk/drivers/mock/data/instances/inst1.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/data/instances/inst1.yml?rev=962011&view=auto
==============================================================================
--- incubator/deltacloud/trunk/drivers/mock/data/instances/inst1.yml (added)
+++ incubator/deltacloud/trunk/drivers/mock/data/instances/inst1.yml Thu Jul 8 23:16:51 2010
@@ -0,0 +1,6 @@
+:state: RUNNING
+:image_id: img3
+:owner_id: mockuser
+:public_address: img3.inst1.public.com
+:private_address: img3.inst1.private.com
+:flavor_id: m1-small
Added: incubator/deltacloud/trunk/drivers/mock/data/instances/inst2.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/data/instances/inst2.yml?rev=962011&view=auto
==============================================================================
--- incubator/deltacloud/trunk/drivers/mock/data/instances/inst2.yml (added)
+++ incubator/deltacloud/trunk/drivers/mock/data/instances/inst2.yml Thu Jul 8 23:16:51 2010
@@ -0,0 +1,6 @@
+:state: RUNNING
+:image_id: img1
+:owner_id: anotheruser
+:public_address: img1.inst2.public.com
+:private_address: img1.inst2.private.com
+:flavor_id: m1-small
Added: incubator/deltacloud/trunk/drivers/mock/data/storage_snapshots/.gitignore
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/data/storage_snapshots/.gitignore?rev=962011&view=auto
==============================================================================
(empty)
Added: incubator/deltacloud/trunk/drivers/mock/data/storage_volumes/.gitignore
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/data/storage_volumes/.gitignore?rev=962011&view=auto
==============================================================================
(empty)
Added: incubator/deltacloud/trunk/drivers/mock/lib/mock_driver.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/drivers/mock/lib/mock_driver.rb?rev=962011&view=auto
==============================================================================
--- incubator/deltacloud/trunk/drivers/mock/lib/mock_driver.rb (added)
+++ incubator/deltacloud/trunk/drivers/mock/lib/mock_driver.rb Thu Jul 8 23:16:51 2010
@@ -0,0 +1,150 @@
+
+require 'deltacloud/base_driver'
+
+class MockDriver < DeltaCloud::BaseDriver
+
+ STORAGE_ROOT = File.dirname(__FILE__) + '/../data'
+
+ #
+ # Flavors
+ #
+
+ FLAVORS = [
+ {
+ :id=>'m1-small',
+ :memory=>1.7,
+ :storage=>160,
+ :architecture=>'i386',
+ },
+ {
+ :id=>'m1-large',
+ :memory=>7.5,
+ :storage=>850,
+ :architecture=>'x86_64',
+ },
+ {
+ :id=>'m1-xlarge',
+ :memory=>15,
+ :storage=>1690,
+ :architecture=>'x86_64',
+ },
+ {
+ :id=>'c1-medium',
+ :memory=>1.7,
+ :storage=>350,
+ :architecture=>'x86_64',
+ },
+ {
+ :id=>'c1-xlarge',
+ :memory=>7,
+ :storage=>1690,
+ :architecture=>'x86_64',
+ },
+ ]
+
+ def flavors(credentials, ids=nil)
+ return FLAVORS if ( ids.nil? )
+ FLAVORS.select{|f| ids.include?(f[:id])}
+ end
+
+ #
+ # Images
+ #
+
+ def images(credentials, ids_or_owner=nil )
+ check_credentials( credentials )
+ images = []
+ Dir[ "#{STORAGE_ROOT}/images/*.yml" ].each do |image_file|
+ image = YAML.load( File.read( image_file ) )
+ image[:id] = File.basename( image_file, ".yml" )
+ images << image
+ end
+ if ( ids_or_owner.is_a?( Array ) )
+ images = images.select{|e| ids_or_owner.include?( e[:id] )}
+ elsif ( ids_or_owner == 'self' )
+ images = images.select{|e| e[:owner_id] == credentials[:name] }
+ elsif ( ! ids_or_owner.nil? )
+ images = images.select{|e| e[:owner_id] == ids_or_owner }
+ end
+ images.sort_by{|e| [e[:owner_id],e[:description]]}
+ end
+
+ #
+ # Instances
+ #
+
+ def instances(credentials, ids=nil)
+ check_credentials( credentials )
+ instances = []
+ Dir[ "#{STORAGE_ROOT}/instances/*.yml" ].each do |instance_file|
+ instance = YAML.load( File.read( instance_file ) )
+ if ( instance[:owner_id] == credentials[:name] )
+ instance[:id] = File.basename( instance_file, ".yml" )
+ instances << instance
+ end
+ end
+ unless ( ids.nil? || ids.empty? )
+ instances = instances.select{|e| ids.include?( e[:id] )}
+ end
+ instances
+ end
+
+ def create_instance(credentials, image_id, flavor_id)
+ check_credentials( credentials )
+ ids = Dir[ "#{STORAGE_ROOT}/instances/*.yml" ].collect{|e| File.basename( e, ".yml" )}
+ next_id = ids.sort.last.succ
+ instance = {
+ :state=>'running',
+ :image_id=>image_id,
+ :owner_id=>credentials[:name],
+ :public_address=>"#{image_id}.#{next_id}.public.com",
+ :private_address=>"#{image_id}.#{next_id}.private.com",
+ :flavor_id=>flavor_id,
+ }
+ File.open( "#{STORAGE_ROOT}/instances/#{next_id}.yml", 'w' ) {|f|
+ YAML.dump( instance, f )
+ }
+ instance[:id] = next_id
+ instance
+ end
+
+ def reboot_instance(credentials, id)
+ end
+
+ def delete_instance(credentials, id)
+ check_credentials( credentials )
+ FileUtils.rm( "#{STORAGE_ROOT}/instances/#{id}.yml" )
+ end
+
+ #
+ # Storage Volumes
+ #
+
+ def volumes(credentials, ids=nil)
+ volumes = []
+ volumes
+ end
+
+ #
+ # Storage Snapshots
+ #
+
+ def snapshots(credentials, ids=nil)
+ snapshots = []
+ snapshots
+ end
+
+ private
+
+ def check_credentials(credentials)
+ if ( credentials[:name] != 'mockuser' )
+ raise Drivers::AuthException.new
+ end
+
+ if ( credentials[:password] != 'mockpassword' )
+ raise Drivers::AuthException.new
+ end
+ end
+
+
+end