From 23f3bcaf2ee75cbceedf0a032123d2a9882098ff Mon Sep 17 00:00:00 2001 From: Decklin Foster Date: Mon, 13 Feb 2012 10:11:50 -0500 Subject: [PATCH] [ibm] Fix key model for passing public_key, add setting/testing whether key is default --- lib/fog/ibm/models/compute/key.rb | 14 +++++++++++--- lib/fog/ibm/models/compute/keys.rb | 8 ++++++++ lib/fog/ibm/requests/compute/create_key.rb | 14 +++++++------- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/lib/fog/ibm/models/compute/key.rb b/lib/fog/ibm/models/compute/key.rb index 452fb5ec9..a22b363c8 100644 --- a/lib/fog/ibm/models/compute/key.rb +++ b/lib/fog/ibm/models/compute/key.rb @@ -7,13 +7,14 @@ module Fog identity :name, :aliases => 'keyName' attribute :default attribute :public_key, :aliases => 'keyMaterial' - attribute :last_modified, :aliases => 'lastModifiedTime' + attribute :instance_ids, :aliases => 'instanceIds' + attribute :modified_at, :aliases => 'lastModifiedTime' def save - requires :name, :public_key + requires :name data = connection.create_key(name, public_key) merge_attributes(data.body) - data.body['success'] + data.body['keyName'] == name end def destroy @@ -21,6 +22,13 @@ module Fog data.body['success'] end + def default? + default + end + + def instances + instance_ids.map { Fog::Compute[:ibm].servers.get(instance_id) } + end end end end diff --git a/lib/fog/ibm/models/compute/keys.rb b/lib/fog/ibm/models/compute/keys.rb index 7aa32a4bc..b040c4807 100644 --- a/lib/fog/ibm/models/compute/keys.rb +++ b/lib/fog/ibm/models/compute/keys.rb @@ -21,6 +21,14 @@ module Fog end end + def default + find {|key| key.default? } + end + + def default=(key_name) + connection.modify_key(key_name, 'default' => true) + end + end end end diff --git a/lib/fog/ibm/requests/compute/create_key.rb b/lib/fog/ibm/requests/compute/create_key.rb index 7cbb92df3..851269609 100644 --- a/lib/fog/ibm/requests/compute/create_key.rb +++ b/lib/fog/ibm/requests/compute/create_key.rb @@ -44,14 +44,14 @@ module Fog "instanceIds" => [], } if public_key.nil? - private_key = Fog::IBM::Mock.key_material - public_key = private_key.public_key - public_key = { "keyMaterial" => public_key.to_s }.merge(attributes.dup) - self.data[:keys][name] = public_key - private_key = { "keyMaterial" => private_key.to_s }.merge(attributes.dup) - self.data[:private_keys][name] = private_key - response.body = private_key + private_key = Fog::IBM::Mock.key_material + public_key = private_key.public_key end + public_key = { "keyMaterial" => public_key.to_s }.merge(attributes.dup) + private_key = { "keyMaterial" => private_key.to_s }.merge(attributes.dup) + response.body = private_key + self.data[:keys][name] = public_key + self.data[:private_keys][name] = private_key response end