You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2010/10/20 15:49:09 UTC
[PATCH core] Added Key collection into Mock driver
From: Michal Fojtik <mf...@redhat.com>
---
server/lib/deltacloud/drivers/mock/mock_driver.rb | 47 ++++++++++++++++++++-
server/lib/deltacloud/models/key.rb | 16 +++++++
2 files changed, 62 insertions(+), 1 deletions(-)
diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb b/server/lib/deltacloud/drivers/mock/mock_driver.rb
index 847319b..e928960 100644
--- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
+++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
@@ -26,7 +26,7 @@ module Deltacloud
class MockDriver < Deltacloud::BaseDriver
def supported_collections
- DEFAULT_COLLECTIONS + [ :buckets ]
+ DEFAULT_COLLECTIONS + [ :buckets, :keys]
end
( REALMS = [
@@ -254,6 +254,51 @@ class MockDriver < Deltacloud::BaseDriver
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 = filter_on( result, :id, opts )
+ result
+ end
+
+ def key(credentials, opts={})
+ keys(credentials, opts).first
+ end
+
+ def create_key(credentials, opts={})
+ check_credentials(credentials)
+ puts opts.inspect
+ key_hash = {
+ :id => opts[:key_name],
+ :credential_type => :key,
+ :fingerprint => Key::generate_mock_fingerprint,
+ :pem_rsa_key => Key::generate_mock_pem
+ }
+ puts key_hash.inspect
+ key_dir = File.join(@storage_root, 'keys')
+ if File.exists?(key_dir + "/#{key_hash[:id]}.yml")
+ raise Deltacloud::BackendError.new(403, self.class.to_s, "key-exists",
+ ["Key with same name already exists"])
+ 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
+ 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
+ end
+
#--
# Buckets
#--
diff --git a/server/lib/deltacloud/models/key.rb b/server/lib/deltacloud/models/key.rb
index 22a69a6..3c81278 100644
--- a/server/lib/deltacloud/models/key.rb
+++ b/server/lib/deltacloud/models/key.rb
@@ -32,4 +32,20 @@ class Key < BaseModel
true if @credential_type.eql?(:key)
end
+ # Mock fingerprint generator
+ # 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f
+ def self.generate_mock_fingerprint
+ (0..19).map { "%02x" % (rand * 0xff) }.join(':')
+ end
+
+ # Mock PEM file
+ # NOTE: This is a fake PEM file, it will not work against SSH
+ def self.generate_mock_pem
+ chars = (('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a + %w(= / + ))
+ pem_material = (1..21).map do
+ (1..75).collect{|a| chars[rand(chars.size)] }.join
+ end.join("\n") + "\n" + (1..68).collect{|a| chars[rand(chars.size)] }.join
+ "-----BEGIN RSA PRIVATE KEY-----\n"+pem_material+"-----END RSA PRIVATE KEY-----"
+ end
+
end
--
1.7.2.3
Re: [PATCH core] Added Key collection into Mock driver
Posted by Michal Fojtik <mf...@redhat.com>.
On 20/10/10 15:49 +0200, mfojtik@redhat.com wrote:
Fixed 'puts' statemens in create_key. I think this patch is safe to push
into master.
-- Michal
>From: Michal Fojtik <mf...@redhat.com>
>
>---
> server/lib/deltacloud/drivers/mock/mock_driver.rb | 47 ++++++++++++++++++++-
> server/lib/deltacloud/models/key.rb | 16 +++++++
> 2 files changed, 62 insertions(+), 1 deletions(-)
>
>diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb b/server/lib/deltacloud/drivers/mock/mock_driver.rb
>index 847319b..e928960 100644
>--- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
>+++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
>@@ -26,7 +26,7 @@ module Deltacloud
> class MockDriver < Deltacloud::BaseDriver
>
> def supported_collections
>- DEFAULT_COLLECTIONS + [ :buckets ]
>+ DEFAULT_COLLECTIONS + [ :buckets, :keys]
> end
>
> ( REALMS = [
>@@ -254,6 +254,51 @@ class MockDriver < Deltacloud::BaseDriver
> 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 = filter_on( result, :id, opts )
>+ result
>+ end
>+
>+ def key(credentials, opts={})
>+ keys(credentials, opts).first
>+ end
>+
>+ def create_key(credentials, opts={})
>+ check_credentials(credentials)
>+ puts opts.inspect
>+ key_hash = {
>+ :id => opts[:key_name],
>+ :credential_type => :key,
>+ :fingerprint => Key::generate_mock_fingerprint,
>+ :pem_rsa_key => Key::generate_mock_pem
>+ }
>+ puts key_hash.inspect
>+ key_dir = File.join(@storage_root, 'keys')
>+ if File.exists?(key_dir + "/#{key_hash[:id]}.yml")
>+ raise Deltacloud::BackendError.new(403, self.class.to_s, "key-exists",
>+ ["Key with same name already exists"])
>+ 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
>+ 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
>+ end
>+
> #--
> # Buckets
> #--
>diff --git a/server/lib/deltacloud/models/key.rb b/server/lib/deltacloud/models/key.rb
>index 22a69a6..3c81278 100644
>--- a/server/lib/deltacloud/models/key.rb
>+++ b/server/lib/deltacloud/models/key.rb
>@@ -32,4 +32,20 @@ class Key < BaseModel
> true if @credential_type.eql?(:key)
> end
>
>+ # Mock fingerprint generator
>+ # 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f
>+ def self.generate_mock_fingerprint
>+ (0..19).map { "%02x" % (rand * 0xff) }.join(':')
>+ end
>+
>+ # Mock PEM file
>+ # NOTE: This is a fake PEM file, it will not work against SSH
>+ def self.generate_mock_pem
>+ chars = (('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a + %w(= / + ))
>+ pem_material = (1..21).map do
>+ (1..75).collect{|a| chars[rand(chars.size)] }.join
>+ end.join("\n") + "\n" + (1..68).collect{|a| chars[rand(chars.size)] }.join
>+ "-----BEGIN RSA PRIVATE KEY-----\n"+pem_material+"-----END RSA PRIVATE KEY-----"
>+ end
>+
> end
>--
>1.7.2.3
>
--
--------------------------------------------------------
Michal Fojtik, mfojtik@redhat.com
Deltacloud API: http://deltacloud.org
--------------------------------------------------------
Re: [PATCH core] Added Key collection into Mock driver
Posted by Michal Fojtik <mf...@redhat.com>.
On 20/10/10 10:23 -0400, Ladislav Martincik wrote:
>
>----- mfojtik@redhat.com wrote:
>
>> From: Michal Fojtik <mf...@redhat.com>
>>
>> ---
>> server/lib/deltacloud/drivers/mock/mock_driver.rb | 47
>> ++++++++++++++++++++-
>> server/lib/deltacloud/models/key.rb | 16 +++++++
>> 2 files changed, 62 insertions(+), 1 deletions(-)
>>
>> diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb
>> b/server/lib/deltacloud/drivers/mock/mock_driver.rb
>> index 847319b..e928960 100644
>> --- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
>> +++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
>> @@ -26,7 +26,7 @@ module Deltacloud
>> class MockDriver < Deltacloud::BaseDriver
>>
>> def supported_collections
>> - DEFAULT_COLLECTIONS + [ :buckets ]
>> + DEFAULT_COLLECTIONS + [ :buckets, :keys]
>> end
>>
>> ( REALMS = [
>> @@ -254,6 +254,51 @@ class MockDriver < Deltacloud::BaseDriver
>> 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 = filter_on( result, :id, opts )
>> + result
>> + end
>> +
>> + def key(credentials, opts={})
>> + keys(credentials, opts).first
>> + end
>> +
>> + def create_key(credentials, opts={})
>> + check_credentials(credentials)
>> + puts opts.inspect
>> + key_hash = {
>> + :id => opts[:key_name],
>> + :credential_type => :key,
>> + :fingerprint => Key::generate_mock_fingerprint,
>> + :pem_rsa_key => Key::generate_mock_pem
>> + }
>> + puts key_hash.inspect
>> + key_dir = File.join(@storage_root, 'keys')
>> + if File.exists?(key_dir + "/#{key_hash[:id]}.yml")
>> + raise Deltacloud::BackendError.new(403, self.class.to_s,
>> "key-exists",
>> + ["Key with same name
>> already exists"])
>> + 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
>> + return Key.new(key_hash)
>> + end
>
>You forgot 'puts' in create_key() method. :)
Damn, I'm always forget to remove this and also 'ap' statements ;-)
Need to create some git filter ;-)
Thanks for notifying that, it will be removed in push.
>
>> + 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
>> + end
>> +
>> #--
>> # Buckets
>> #--
>> diff --git a/server/lib/deltacloud/models/key.rb
>> b/server/lib/deltacloud/models/key.rb
>> index 22a69a6..3c81278 100644
>> --- a/server/lib/deltacloud/models/key.rb
>> +++ b/server/lib/deltacloud/models/key.rb
>> @@ -32,4 +32,20 @@ class Key < BaseModel
>> true if @credential_type.eql?(:key)
>> end
>>
>> + # Mock fingerprint generator
>> + # 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f
>> + def self.generate_mock_fingerprint
>> + (0..19).map { "%02x" % (rand * 0xff) }.join(':')
>> + end
>> +
>> + # Mock PEM file
>> + # NOTE: This is a fake PEM file, it will not work against SSH
>> + def self.generate_mock_pem
>> + chars = (('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a +
>> %w(= / + ))
>> + pem_material = (1..21).map do
>> + (1..75).collect{|a| chars[rand(chars.size)] }.join
>> + end.join("\n") + "\n" + (1..68).collect{|a|
>> chars[rand(chars.size)] }.join
>> + "-----BEGIN RSA PRIVATE KEY-----\n"+pem_material+"-----END RSA
>> PRIVATE KEY-----"
>> + end
>> +
>> end
>> --
>> 1.7.2.3
--
--------------------------------------------------------
Michal Fojtik, mfojtik@redhat.com
Deltacloud API: http://deltacloud.org
--------------------------------------------------------
Re: [PATCH core] Added Key collection into Mock driver
Posted by Ladislav Martincik <lm...@redhat.com>.
----- mfojtik@redhat.com wrote:
> From: Michal Fojtik <mf...@redhat.com>
>
> ---
> server/lib/deltacloud/drivers/mock/mock_driver.rb | 47
> ++++++++++++++++++++-
> server/lib/deltacloud/models/key.rb | 16 +++++++
> 2 files changed, 62 insertions(+), 1 deletions(-)
>
> diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb
> b/server/lib/deltacloud/drivers/mock/mock_driver.rb
> index 847319b..e928960 100644
> --- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
> +++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
> @@ -26,7 +26,7 @@ module Deltacloud
> class MockDriver < Deltacloud::BaseDriver
>
> def supported_collections
> - DEFAULT_COLLECTIONS + [ :buckets ]
> + DEFAULT_COLLECTIONS + [ :buckets, :keys]
> end
>
> ( REALMS = [
> @@ -254,6 +254,51 @@ class MockDriver < Deltacloud::BaseDriver
> 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 = filter_on( result, :id, opts )
> + result
> + end
> +
> + def key(credentials, opts={})
> + keys(credentials, opts).first
> + end
> +
> + def create_key(credentials, opts={})
> + check_credentials(credentials)
> + puts opts.inspect
> + key_hash = {
> + :id => opts[:key_name],
> + :credential_type => :key,
> + :fingerprint => Key::generate_mock_fingerprint,
> + :pem_rsa_key => Key::generate_mock_pem
> + }
> + puts key_hash.inspect
> + key_dir = File.join(@storage_root, 'keys')
> + if File.exists?(key_dir + "/#{key_hash[:id]}.yml")
> + raise Deltacloud::BackendError.new(403, self.class.to_s,
> "key-exists",
> + ["Key with same name
> already exists"])
> + 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
> + return Key.new(key_hash)
> + end
You forgot 'puts' in create_key() method. :)
> + 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
> + end
> +
> #--
> # Buckets
> #--
> diff --git a/server/lib/deltacloud/models/key.rb
> b/server/lib/deltacloud/models/key.rb
> index 22a69a6..3c81278 100644
> --- a/server/lib/deltacloud/models/key.rb
> +++ b/server/lib/deltacloud/models/key.rb
> @@ -32,4 +32,20 @@ class Key < BaseModel
> true if @credential_type.eql?(:key)
> end
>
> + # Mock fingerprint generator
> + # 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f
> + def self.generate_mock_fingerprint
> + (0..19).map { "%02x" % (rand * 0xff) }.join(':')
> + end
> +
> + # Mock PEM file
> + # NOTE: This is a fake PEM file, it will not work against SSH
> + def self.generate_mock_pem
> + chars = (('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a +
> %w(= / + ))
> + pem_material = (1..21).map do
> + (1..75).collect{|a| chars[rand(chars.size)] }.join
> + end.join("\n") + "\n" + (1..68).collect{|a|
> chars[rand(chars.size)] }.join
> + "-----BEGIN RSA PRIVATE KEY-----\n"+pem_material+"-----END RSA
> PRIVATE KEY-----"
> + end
> +
> end
> --
> 1.7.2.3