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 2011/08/23 21:03:04 UTC
svn commit: r1160852 - in
/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock: ./
data/blobs/ data/buckets/ data/buckets/blobs/ data/images/ data/instances/
data/storage_snapshots/ data/storage_volumes/
Author: lutter
Date: Tue Aug 23 19:03:03 2011
New Revision: 1160852
URL: http://svn.apache.org/viewvc?rev=1160852&view=rev
Log:
mock driver: split into driver and client
This rewrite takes care of a number of issues with the driver (e.g., newly
created blobs would not show up in the bucket), and cleans up the code so
that it hopefully becomes clearer what driver writers need to do.
The driver now also uses the objects stored in the file system verbatim,
instead of modifying loaded objects on read.
Added:
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob1.yml
- copied, changed from r1160851, incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob1.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob2.yml
- copied, changed from r1160851, incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob2.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob3.yml
- copied, changed from r1160851, incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob3.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob4.yml
- copied, changed from r1160851, incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob4.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob5.yml
- copied, changed from r1160851, incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob5.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_client.rb (with props)
Removed:
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob1.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob2.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob3.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob4.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob5.yml
Modified:
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/bucket1.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/bucket2.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img1.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img2.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img3.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst0.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst1.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst2.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap1.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap2.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap3.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol1.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol2.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol3.yml
incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb
Copied: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob1.yml (from r1160851, incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob1.yml)
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob1.yml?p2=incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob1.yml&p1=incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob1.yml&r1=1160851&r2=1160852&rev=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob1.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob1.yml Tue Aug 23 19:03:03 2011
@@ -1,8 +1,10 @@
---
-:content_type: text/plain
:content_length: 17
-:bucket: bucket1
-:user_metadata:
- SOMENEWKEY: NEWVALUE
+:content_type: text/plain
:last_modified: 2010-09-23 16:44:54 +0100
:content: content of blob 1
+:name: blob1
+:user_metadata:
+ SOMENEWKEY: NEWVALUE
+:bucket: bucket1
+:id: blob1
Copied: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob2.yml (from r1160851, incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob2.yml)
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob2.yml?p2=incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob2.yml&p1=incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob2.yml&r1=1160851&r2=1160852&rev=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob2.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob2.yml Tue Aug 23 19:03:03 2011
@@ -1,8 +1,10 @@
----
-:user_metadata:
- VERSION: "1.2"
-:content_type: text/html
+---
:content_length: 56
-:bucket: bucket1
+:content_type: text/html
:last_modified: 2010-09-23 16:55:05 +0100
:content: <html><head></head><body>content of blob 2</body></html>
+:name: blob2
+:user_metadata:
+ VERSION: "1.2"
+:bucket: bucket1
+:id: blob2
Copied: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob3.yml (from r1160851, incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob3.yml)
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob3.yml?p2=incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob3.yml&p1=incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob3.yml&r1=1160851&r2=1160852&rev=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob3.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob3.yml Tue Aug 23 19:03:03 2011
@@ -1,7 +1,9 @@
-:bucket: bucket1
+---
:content_length: 17
:content_type: text/plain
:last_modified: 2010-08-14 02:14:31 +0100
-:content:
- content of blob 3
-:user_metadata: ''
\ No newline at end of file
+:content: content of blob 3
+:name: blob3
+:user_metadata: ""
+:bucket: bucket1
+:id: blob3
Copied: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob4.yml (from r1160851, incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob4.yml)
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob4.yml?p2=incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob4.yml&p1=incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob4.yml&r1=1160851&r2=1160852&rev=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob4.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob4.yml Tue Aug 23 19:03:03 2011
@@ -1,8 +1,10 @@
-:bucket: bucket2
+---
:content_length: 17
:content_type: application/octet-stream
:last_modified: 2010-09-21 06:17:24 +0100
-:content:
- content of blob 4
+:content: content of blob 4
+:name: blob4
:user_metadata:
- some: "value"
\ No newline at end of file
+ some: value
+:bucket: bucket2
+:id: blob4
Copied: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob5.yml (from r1160851, incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob5.yml)
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob5.yml?p2=incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob5.yml&p1=incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob5.yml&r1=1160851&r2=1160852&rev=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/blobs/blob5.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/blobs/blob5.yml Tue Aug 23 19:03:03 2011
@@ -1,7 +1,9 @@
-:bucket: bucket2
+---
:content_length: 17
:content_type: application/pdf
:last_modified: 2009-07-21 11:12:13 +0100
-:content:
- content of blob 5
-:user_metadata: ''
\ No newline at end of file
+:content: content of blob 5
+:name: blob5
+:user_metadata: ""
+:id: blob5
+:bucket: bucket2
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/bucket1.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/bucket1.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/bucket1.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/bucket1.yml Tue Aug 23 19:03:03 2011
@@ -1,2 +1,8 @@
-:blob_list: [blob1, blob2, blob3]
+---
+:blob_list:
+- blob1
+- blob2
+- blob3
:size: 3
+:name: bucket1
+:id: bucket1
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/bucket2.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/bucket2.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/bucket2.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/buckets/bucket2.yml Tue Aug 23 19:03:03 2011
@@ -1,2 +1,7 @@
-:blob_list: [blob4, blob5]
+---
+:blob_list:
+- blob4
+- blob5
:size: 2
+:name: bucket2
+:id: bucket2
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img1.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img1.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img1.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img1.yml Tue Aug 23 19:03:03 2011
@@ -1,3 +1,7 @@
-:description: Fedora 10
-:owner_id: fedoraproject
+---
:architecture: x86_64
+:owner_id: fedoraproject
+:state: AVAILABLE
+:id: img1
+:name: img1
+:description: Fedora 10
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img2.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img2.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img2.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img2.yml Tue Aug 23 19:03:03 2011
@@ -1,3 +1,7 @@
-:description: Fedora 10
-:owner_id: fedoraproject
+---
:architecture: i386
+:owner_id: fedoraproject
+:state: AVAILABLE
+:id: img2
+:name: img2
+:description: Fedora 10
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img3.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img3.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img3.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/images/img3.yml Tue Aug 23 19:03:03 2011
@@ -1,3 +1,7 @@
-:description: JBoss
-:owner_id: mockuser
+---
:architecture: i386
+:owner_id: mockuser
+:state: AVAILABLE
+:id: img3
+:name: img3
+:description: JBoss
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst0.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst0.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst0.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst0.yml Tue Aug 23 19:03:03 2011
@@ -1,17 +1,18 @@
---
-:realm_id: us
-:public_addresses:
-- img1.inst0.public.com
-:state: RUNNING
-:name: "Mock Instance With Profile Change"
-:private_addresses:
-- img1.inst0.private.com
-:image_id: img1
:instance_profile: !ruby/object:InstanceProfile
- id: m1-large
memory: "12288"
-:owner_id: mockuser
+ id: m1-large
+:realm_id: us
:actions:
- :reboot
- :stop
+:owner_id: mockuser
+:public_addresses:
+- img1.inst0.public.com
+:private_addresses:
+- img1.inst0.private.com
:create_image: true
+:image_id: img1
+:name: Mock Instance With Profile Change
+:id: inst0
+:state: RUNNING
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst1.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst1.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst1.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst1.yml Tue Aug 23 19:03:03 2011
@@ -1,10 +1,17 @@
-:name: MockUserInstance
-:state: RUNNING
-:image_id: img3
-:owner_id: mockuser
-:public_addresses: [ img3.inst1.public.com ]
-:private_addresses: [ img3.inst1.private.com ]
-:realm_id: us
+---
:instance_profile: !ruby/object:InstanceProfile
id: m1-small
+:realm_id: us
+:owner_id: mockuser
+:public_addresses:
+- img3.inst1.public.com
+:private_addresses:
+- img3.inst1.private.com
:create_image: true
+:image_id: img3
+:name: MockUserInstance
+:id: inst1
+:state: RUNNING
+:actions:
+- :reboot
+- :stop
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst2.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst2.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst2.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/instances/inst2.yml Tue Aug 23 19:03:03 2011
@@ -1,10 +1,17 @@
-:name: AnotherInstance
-:state: RUNNING
-:image_id: img1
-:owner_id: anotheruser
-:public_addresses: [ img1.inst2.public.com ]
-:private_addresses: [ img1.inst2.private.com ]
-:realm_id: us
+---
:instance_profile: !ruby/object:InstanceProfile
id: m1-large
+:realm_id: us
+:owner_id: anotheruser
+:public_addresses:
+- img1.inst2.public.com
+:private_addresses:
+- img1.inst2.private.com
:create_image: true
+:image_id: img1
+:name: AnotherInstance
+:id: inst2
+:state: RUNNING
+:actions:
+- :reboot
+- :stop
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap1.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap1.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap1.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap1.yml Tue Aug 23 19:03:03 2011
@@ -1,4 +1,5 @@
-:owner_id: fedoraproject
+---
:created: Wed Jul 29 18:15:24 UTC 2009
-:state: COMPLETED
:storage_volume_id: vol1
+:id: snap1
+:state: COMPLETED
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap2.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap2.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap2.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap2.yml Tue Aug 23 19:03:03 2011
@@ -1,4 +1,5 @@
-:owner_id: mockuser
+---
:created: Wed Jul 29 18:15:24 UTC 2009
-:state: COMPLETED
:storage_volume_id: vol2
+:id: snap2
+:state: COMPLETED
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap3.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap3.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap3.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_snapshots/snap3.yml Tue Aug 23 19:03:03 2011
@@ -1,4 +1,5 @@
-:owner_id: mockuser
+---
:created: Wed Jul 29 18:15:24 UTC 2009
-:state: COMPLETED
:storage_volume_id: vol2
+:id: snap3
+:state: COMPLETED
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol1.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol1.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol1.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol1.yml Tue Aug 23 19:03:03 2011
@@ -1,7 +1,8 @@
-:owner_id: fedoraproject
+---
:realm_id: us
-:created: Thu Jul 30 14:35:11 UTC 2009
-:state: AVAILABLE
:capacity: 1
:device:
+:created: Thu Jul 30 14:35:11 UTC 2009
:instance_id:
+:id: vol1
+:state: AVAILABLE
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol2.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol2.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol2.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol2.yml Tue Aug 23 19:03:03 2011
@@ -1,7 +1,8 @@
-:owner_id: mockuser
+---
:realm_id: us
-:created: Thu Jul 30 14:35:11 UTC 2009
-:state: AVAILABLE
:capacity: 1
:device:
+:created: Thu Jul 30 14:35:11 UTC 2009
:instance_id:
+:id: vol2
+:state: AVAILABLE
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol3.yml
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol3.yml?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol3.yml (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/data/storage_volumes/vol3.yml Tue Aug 23 19:03:03 2011
@@ -1,7 +1,8 @@
-:owner_id: mockuser
+---
:realm_id: us
-:created: Thu Jul 30 14:35:11 UTC 2009
-:state: IN-USE
:capacity: 1
:device: /dev/sda1
+:created: Thu Jul 30 14:35:11 UTC 2009
:instance_id: inst1
+:id: vol3
+:state: IN-USE
Added: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_client.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_client.rb?rev=1160852&view=auto
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_client.rb (added)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_client.rb Tue Aug 23 19:03:03 2011
@@ -0,0 +1,101 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# The mock client does a bunch of filesystem judo. It's mostly there to
+# keep the driver from looking too ugly with all the File I/O
+
+module Deltacloud::Drivers::Mock
+
+ class Client
+ def initialize(storage_root)
+ @storage_root = storage_root
+ @collections = []
+
+ if ! File::directory?(@storage_root)
+ FileUtils::rm_rf(@storage_root)
+ FileUtils::mkdir_p(@storage_root)
+ data = Dir[File::join(File::dirname(__FILE__), "data", "*")]
+ FileUtils::cp_r(data, @storage_root)
+ end
+ end
+
+ def dir(collection)
+ result = File::join(@storage_root, collection.to_s)
+ unless @collections.include?(collection)
+ FileUtils::mkdir_p(result) unless File::directory?(result)
+ @collections << collection
+ end
+ result
+ end
+
+ def file(collection, id)
+ File::join(dir(collection), "#{id}.yml")
+ end
+
+ def files(collection)
+ Dir[File::join(dir(collection), "*.yml")]
+ end
+
+ # Return the ID's of all members of +collection+
+ def members(collection)
+ files(collection).map { |f| File::basename(f, ".yml") }
+ end
+
+ def load(collection, id)
+ fname = file(collection, id)
+ begin
+ YAML.load(File.read(fname))
+ rescue Errno::ENOENT
+ nil
+ end
+ end
+
+ def store(collection, obj)
+ raise "Why no obj[:id] ?" unless obj[:id]
+ File::open(file(collection, obj[:id]), "w") { |f| YAML.dump(obj, f) }
+ end
+
+ # Return the object with id +id+ of class +klass+ from the collection
+ # derived from the classes name
+ def build(klass, id)
+ klass.new(load(collection_name(klass), id))
+ end
+
+ # Return an array of hashes of all the resources in the collection
+ def load_all(collection)
+ members(collection).map { |id| load(collection, id) }
+ end
+
+ # Return an array of model objects of the resources in the collection
+ # corresponding to class. The name of the collection is derived from
+ # the name of the class
+ def build_all(klass)
+ load_all(collection_name(klass)).map { |hash| klass.new(hash) }
+ end
+
+ def destroy(collection, id)
+ fname = file(collection, id)
+ FileUtils.rm(fname) if File::exists?(fname)
+ end
+
+ private
+
+ def collection_name(klass)
+ klass.name.underscore.pluralize
+ end
+ end
+
+end
Propchange: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_client.rb
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb?rev=1160852&r1=1160851&r2=1160852&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb Tue Aug 23 19:03:03 2011
@@ -17,6 +17,7 @@
require 'deltacloud/base_driver'
require 'yaml'
+require 'deltacloud/drivers/mock/mock_client'
module Deltacloud::Drivers::Mock
@@ -87,18 +88,13 @@ module Deltacloud::Drivers::Mock
def initialize
if ENV["DELTACLOUD_MOCK_STORAGE"]
- @storage_root = ENV["DELTACLOUD_MOCK_STORAGE"]
+ storage_root = ENV["DELTACLOUD_MOCK_STORAGE"]
elsif ENV["USER"]
- @storage_root = File::join("/var/tmp", "deltacloud-mock-#{ENV["USER"]}")
+ storage_root = File::join("/var/tmp", "deltacloud-mock-#{ENV["USER"]}")
else
raise "Please set either the DELTACLOUD_MOCK_STORAGE or USER environment variable"
end
- if ! File::directory?(@storage_root)
- FileUtils::rm_rf(@storage_root)
- FileUtils::mkdir_p(@storage_root)
- data = Dir::glob(File::join(File::dirname(__FILE__), "data", "*"))
- FileUtils::cp_r(data, @storage_root)
- end
+ @client = Client.new(storage_root)
end
def realms(credentials, opts=nil)
@@ -114,13 +110,7 @@ module Deltacloud::Drivers::Mock
def images(credentials, opts=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" )
- image[:name] = image[:description]
- image[:state] = "AVAILABLE"
- images << Image.new( image )
- end
+ images = @client.build_all(Image)
images = filter_on( images, :id, opts )
images = filter_on( images, :architecture, opts )
if ( opts && opts[:owner_id] == 'self' )
@@ -138,22 +128,20 @@ module Deltacloud::Drivers::Mock
raise 'CreateImageNotSupported' unless instance and instance.can_create_image?
image = {
:id => opts[:name],
- :name => opts[:name],
- :owner_id => 'root',
+ :name => opts[:name],
+ :owner_id => 'root',
+ :state => "AVAILABLE",
:description => opts[:description],
- :architecture => 'i386',
- :state => 'UP'
+ :architecture => 'i386'
}
- File.open( "#{@storage_root}/images/#{opts[:name]}.yml", 'w' ) do |f|
- YAML.dump( image, f )
- end
+ @client.store(:images, image)
Image.new(image)
end
end
def destroy_image(credentials, id)
check_credentials( credentials )
- FileUtils.rm( "#{@storage_root}/images/#{id}.yml" )
+ @client.destroy(:images, id)
end
#
@@ -162,25 +150,15 @@ module Deltacloud::Drivers::Mock
def instance(credentials, opts={})
check_credentials( credentials )
- instance_filename = File.join(@storage_root, 'instances', "#{opts[:id]}.yml")
- return nil unless File.exists?(instance_filename)
- instance = YAML::load_file(instance_filename)
- instance[:actions] = instance_actions_for( instance[:state] )
- instance[:id] = File::basename(instance_filename, ".yml")
- Instance.new(instance)
+ if instance = @client.load(:instances, opts[:id])
+ Instance.new(instance)
+ end
end
def instances(credentials, opts=nil)
check_credentials( credentials )
- instances = []
- Dir[ "#{@storage_root}/instances/*.yml" ].each do |instance_file|
- instance = YAML::load_file(instance_file)
- if ( instance[:owner_id] == credentials.user )
- instance[:id] = File.basename( instance_file, ".yml" )
- instance[:actions] = instance_actions_for( instance[:state] )
- instances << Instance.new( instance )
- end
- end
+ instances = @client.build_all(Instance)
+ instances = filter_on( instances, :owner_id, :owner_id => credentials.user )
instances = filter_on( instances, :id, opts )
instances = filter_on( instances, :state, opts )
instances
@@ -188,7 +166,7 @@ module Deltacloud::Drivers::Mock
def create_instance(credentials, image_id, opts)
check_credentials( credentials )
- ids = Dir[ "#{@storage_root}/instances/*.yml" ].collect{|e| File.basename( e, ".yml" )}
+ ids = @client.members(:instances)
count = 0
while true
@@ -210,6 +188,7 @@ module Deltacloud::Drivers::Mock
name = opts[:name] || "i-#{Time.now.to_i}"
instance = {
+ :id => next_id,
:name=>name,
:state=>'RUNNING',
:keyname => opts[:keyname],
@@ -223,23 +202,16 @@ module Deltacloud::Drivers::Mock
:actions=>instance_actions_for( 'RUNNING' ),
:user_data => opts[:user_data]
}
- File.open( "#{@storage_root}/instances/#{next_id}.yml", 'w' ) {|f|
- YAML.dump( instance, f )
- }
- instance[:id] = next_id
+ @client.store(:instances, instance)
Instance.new( instance )
end
def update_instance_state(credentials, id, state)
- instance_file = "#{@storage_root}/instances/#{id}.yml"
- instance_yml = YAML.load( File.read( instance_file ) )
- instance_yml[:id] = id
- instance_yml[:state] = state
- instance_yml[:actions] = instance_actions_for( instance_yml[:state] )
- File.open( instance_file, 'w' ) do |f|
- f << YAML.dump( instance_yml )
- end
- Instance.new( instance_yml )
+ instance = @client.load(:instances, id)
+ instance[:state] = state
+ instance[:actions] = instance_actions_for( instance[:state] )
+ @client.store(:instances, instance)
+ Instance.new( instance )
end
def start_instance(credentials, id)
@@ -257,7 +229,7 @@ module Deltacloud::Drivers::Mock
def destroy_instance(credentials, id)
check_credentials( credentials )
- FileUtils.rm( "#{@storage_root}/instances/#{id}.yml" )
+ @client.destroy(:instances, id)
end
#
@@ -266,14 +238,7 @@ module Deltacloud::Drivers::Mock
def storage_volumes(credentials, opts=nil)
check_credentials( credentials )
- volumes = []
- Dir[ "#{@storage_root}/storage_volumes/*.yml" ].each do |storage_volume_file|
- storage_volume = YAML.load( File.read( storage_volume_file ) )
- if ( storage_volume[:owner_id] == credentials.user )
- storage_volume[:id] = File.basename( storage_volume_file, ".yml" )
- volumes << StorageVolume.new( storage_volume )
- end
- end
+ volumes = @client.build_all(StorageVolume)
volumes = filter_on( volumes, :id, opts )
volumes
end
@@ -284,25 +249,14 @@ module Deltacloud::Drivers::Mock
def storage_snapshots(credentials, opts=nil)
check_credentials( credentials )
- snapshots = []
- Dir[ "#{@storage_root}/storage_snapshots/*.yml" ].each do |storage_snapshot_file|
- storage_snapshot = YAML.load( File.read( storage_snapshot_file ) )
- if ( storage_snapshot[:owner_id] == credentials.user )
- storage_snapshot[:id] = File.basename( storage_snapshot_file, ".yml" )
- snapshots << StorageSnapshot.new( storage_snapshot )
- end
- end
- snapshots = filter_on( snapshots, :id, opts )
+ snapshots = @client.build_all(StorageSnapshot)
+ snapshots = filter_on(snapshots, :id, opts )
snapshots
end
def keys(credentials, opts={})
check_credentials(credentials)
- result = []
- key_dir = File.join(@storage_root, 'keys')
- Dir[key_dir + '/*.yml'].each do |key_file|
- result << Key.new(YAML::load(File.read(key_file)))
- end
+ result = @client.build_all(Key)
result = filter_on( result, :id, opts )
result
end
@@ -319,23 +273,15 @@ module Deltacloud::Drivers::Mock
:fingerprint => Key::generate_mock_fingerprint,
:pem_rsa_key => Key::generate_mock_pem
}
- key_dir = File.join(@storage_root, 'keys')
- if File.exists?(key_dir + "/#{key_hash[:id]}.yml")
- raise "KeyExist"
- end
- FileUtils.mkdir_p(key_dir) unless File.directory?(key_dir)
- File.open(key_dir + "/#{key_hash[:id]}.yml", 'w') do |f|
- f.puts(YAML::dump(key_hash))
- end
+
+ raise "KeyExist" if @client.load(:keys, key_hash[:id])
+ @client.store(:keys, key_hash)
return Key.new(key_hash)
end
def destroy_key(credentials, opts={})
key = key(credentials, opts)
- safely do
- key_dir = File.join(@storage_root, 'keys')
- File.delete(key_dir + "/#{key.id}.yml")
- end
+ @client.destroy(:keys, key.id)
end
#--
@@ -343,22 +289,14 @@ module Deltacloud::Drivers::Mock
#--
def buckets(credentials, opts={})
check_credentials(credentials)
- buckets=[]
- safely do
- unless (opts[:id].nil?)
- bucket_file = File::join(@storage_root, 'buckets', "#{opts[:id]}.yml")
- bucket = YAML.load_file(bucket_file)
- bucket[:id] = opts[:id]
- bucket[:name] = bucket[:id]
- buckets << Bucket.new( bucket )
- else
- Dir[ File::join(@storage_root, 'buckets', '*.yml')].each do |bucket_file|
- bucket_id = File.basename( bucket_file, ".yml" )
- buckets << Bucket.new( {:id => bucket_id, :name => bucket_id } )
- end
- end
+ buckets = @client.build_all(Bucket)
+ blob_map = @client.load_all(:blobs).inject({}) do |map, blob|
+ map[blob[:bucket]] ||= []
+ map[blob[:bucket]] << blob[:id]
+ map
end
- buckets = filter_on( buckets, :id, opts )
+ buckets.each { |bucket| bucket.blob_list = blob_map[bucket.id] }
+ filter_on( buckets, :id, opts )
end
#--
@@ -372,7 +310,7 @@ module Deltacloud::Drivers::Mock
:size=>'0',
:blob_list=>[]
}
- File.open( File::join(@storage_root, 'buckets', "#{name}.yml"), 'w') {|b| YAML.dump( bucket, b )}
+ @client.store(:buckets, bucket)
Bucket.new(bucket)
end
@@ -382,12 +320,8 @@ module Deltacloud::Drivers::Mock
def delete_bucket(credentials, name, opts={})
check_credentials(credentials)
bucket = bucket(credentials, {:id => name})
- unless (bucket.size == "0")
- raise "BucketNotEmpty"
- end
- safely do
- File.delete(File::join(@storage_root, 'buckets', "#{name}.yml"))
- end
+ raise "BucketNotEmpty" unless (bucket.size == "0")
+ @client.destroy(:buckets, bucket.id)
end
#--
@@ -395,16 +329,9 @@ module Deltacloud::Drivers::Mock
#--
def blobs(credentials, opts = {})
check_credentials(credentials)
- blobs=[]
- blobfile = File::join("#{@storage_root}", "buckets", "blobs", "#{opts[:id]}.yml")
- safely do
- blob = YAML.load_file(blobfile)
- return [] unless blob[:bucket] == opts['bucket'] #can't return nil since base_driver invokes .first on return
- blob[:id] = File.basename( blobfile, ".yml" )
- blob[:name] = blob[:id]
- blobs << Blob.new( blob )
- blobs = filter_on( blobs, :id, opts )
- end
+ blobs = @client.build_all(Blob)
+ filter_on( blobs, :bucket, :bucket => opts['bucket'] )
+ filter_on( blobs, :id, opts )
end
#--
@@ -412,12 +339,9 @@ module Deltacloud::Drivers::Mock
#--
def blob_data(credentials, bucket_id, blob_id, opts = {})
check_credentials(credentials)
- blob=nil
- safely do
- blobfile = File::join("#{@storage_root}", "buckets", "blobs", "#{opts['blob']}.yml")
- blob = YAML.load_file(blobfile)
+ if blob = @client.load(:blobs, blob_id)
+ blob[:content].each {|part| yield part}
end
- blob[:content].each {|part| yield part}
end
#--
@@ -428,6 +352,7 @@ module Deltacloud::Drivers::Mock
blob_meta = BlobHelper::extract_blob_metadata_hash(opts)
blob = {
:id => blob_id,
+ :name => blob_id,
:bucket => bucket_id,
:content_length => blob_data[:tempfile].length,
:content_type => blob_data[:type],
@@ -435,7 +360,7 @@ module Deltacloud::Drivers::Mock
:user_metadata => BlobHelper::rename_metadata_headers(blob_meta, ''),
:content => blob_data[:tempfile].read
}
- File.open( File::join("#{@storage_root}", "buckets", "blobs", "#{blob_id}.yml"), 'w' ) {|b| YAML.dump( blob, b )}
+ @client.store(:blobs, blob)
Blob.new(blob)
end
@@ -444,12 +369,9 @@ module Deltacloud::Drivers::Mock
#--
def delete_blob(credentials, bucket_id, blob_id, opts={})
check_credentials(credentials)
- blobfile = File::join("#{@storage_root}", "buckets", "blobs", "#{blob_id}.yml")
safely do
- unless File.exists?(blobfile)
- raise "NotExistentBlob"
- end
- File.delete(blobfile)
+ raise "NotExistentBlob" unless @client.load(:blobs, blob_id)
+ @client.destroy(:blobs, blob_id)
end
end
@@ -458,14 +380,11 @@ module Deltacloud::Drivers::Mock
#--
def blob_metadata(credentials, opts={})
check_credentials(credentials)
- blobfile = File::join("#{@storage_root}", "buckets", "blobs", "#{opts[:id]}.yml")
- #safely do - mechanism not suitable here since head requests don't return a body response
- begin
- blob = YAML.load_file(blobfile)
- rescue Errno::ENOENT
- return nil #server.rb picks this up and gives 404
+ if blob = @client.load(:blobs, params[:id])
+ blob[:user_metadata]
+ else
+ nil
end
- blob[:user_metadata]
end
#--
@@ -473,12 +392,11 @@ module Deltacloud::Drivers::Mock
#--
def update_blob_metadata(credentials, opts={})
check_credentials(credentials)
- blobfile = File::join("#{@storage_root}", "buckets", "blobs", "#{opts[:id]}.yml")
safely do
- blob = YAML.load_file(blobfile)
+ blob = @client.load(:blobs, params[:id])
return false unless blob
blob[:user_metadata] = BlobHelper::rename_metadata_headers(opts['meta_hash'], '')
- File.open(File::join("#{@storage_root}", "buckets", "blobs", "#{opts[:id]}.yml"), 'w' ) {|b| YAML.dump( blob, b )}
+ @client.store(:blobs, blob)
end
end