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/08/27 14:55:30 UTC
[PATCH core 2/5] Added 'assign_instance' feature for EC2
---
server/lib/deltacloud/base_driver/features.rb | 6 ++++++
server/lib/deltacloud/drivers/ec2/ec2_driver.rb | 12 ++++++++++--
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/server/lib/deltacloud/base_driver/features.rb b/server/lib/deltacloud/base_driver/features.rb
index abc97b5..e4808c4 100644
--- a/server/lib/deltacloud/base_driver/features.rb
+++ b/server/lib/deltacloud/base_driver/features.rb
@@ -164,6 +164,12 @@ module Deltacloud
end
end
+ declare_feature :ip_addresses, :assign_instance do
+ operation :create do
+ param :instance_id, :string, :optional
+ end
+ end
+
declare_feature :instances, :hardware_profiles do
description "Size instances according to changes to a hardware profile"
# The parameters are filled in from the hardware profiles
diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
index eea0c41..db48d40 100644
--- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
+++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
@@ -40,6 +40,7 @@ class EC2Driver < Deltacloud::BaseDriver
end
feature :instances, :user_data
+ feature :ip_addresses, :assign_instance
feature :instances, :authentication_key
feature :images, :owner_id
@@ -175,6 +176,7 @@ class EC2Driver < Deltacloud::BaseDriver
def create_instance(credentials, image_id, opts)
ec2 = new_client( credentials )
realm_id = opts[:realm_id]
+ ec2_instance = nil
safely do
image = image(credentials, :id => image_id )
hwp = find_hardware_profile(credentials, opts[:hwp_id], image.id)
@@ -188,8 +190,9 @@ class EC2Driver < Deltacloud::BaseDriver
:disable_api_termination => false,
:instance_initiated_shutdown_behavior => 'terminate'
)
- return convert_instance( ec2_instances.instancesSet.item.first, 'pending' )
+ ec2_instance = convert_instance( ec2_instances.instancesSet.item.first, 'pending' )
end
+ return ec2_instance
end
def generate_instance(ec2, id, backup)
@@ -330,10 +333,15 @@ class EC2Driver < Deltacloud::BaseDriver
def create_ip_address(credentials, opts)
ec2 = new_client( credentials )
+ ip = nil
safely do
ip = ec2.allocate_address().publicIp
- return ip_addresses(credentials, :id => ip)
+ if opts and opts[:instance_id]
+ ec2.associate_address(:public_ip => ip,
+ :instance_id => opts[:instance_id])
+ end
end
+ return ip_addresses(credentials, :id => ip)
end
def destroy_ip_address(credentials, opts)
--
1.7.2.2