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