From: marios <mar...@redhat.com>
Signed-off-by: marios <mar...@redhat.com> --- server/lib/deltacloud/drivers/base_driver.rb | 3 +++ server/lib/deltacloud/drivers/ec2/ec2_driver.rb | 35 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/server/lib/deltacloud/drivers/base_driver.rb b/server/lib/deltacloud/drivers/base_driver.rb index 4496a46..9ac38d4 100644 --- a/server/lib/deltacloud/drivers/base_driver.rb +++ b/server/lib/deltacloud/drivers/base_driver.rb @@ -256,6 +256,9 @@ module Deltacloud addresses(credentials, opts).first if has_capability?(:addresses) end + def network(credentials, opts={}) + networks(credentials, opts).first if has_capability?(:networks) + end MEMBER_SHOW_METHODS = [ :realm, :image, :instance, :storage_volume, :bucket, :blob, :key, :firewall ] unless defined?(MEMBER_SHOW_METHODS) diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb index 9c10ff8..115180d 100644 --- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb +++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb @@ -826,6 +826,33 @@ module Deltacloud end end + #Deltacloud Networks == Amazon VPC + def networks(credentials, opts={}) + ec2 = new_client(credentials) + networks=[] + safely do + ec2.describe_vpcs.each do |vpc| + networks << convert_vpc(vpc) + end + end + networks = filter_on(networks, :id, opts) + end + + def create_network(credentials, opts={}) + ec2 = new_client(credentials) + safely do + network = ec2.create_vpc(opts[:address_block]).first + convert_vpc(network) + end + end + + def destroy_network(credentials, opts={}) + ec2 = new_client(credentials) + safely do + ec2.delete_vpc(opts[:id]) + end + end + def providers(credentials, opts={}) ec2 = new_client(credentials) @providers ||= ec2.describe_regions.map{|r| Provider.new( {:id=>r, :name=>r, @@ -1145,6 +1172,14 @@ module Deltacloud end end + def convert_vpc(vpc) + Network.new({ :id => vpc[:vpc_id], + :name => vpc[:vpc_id], + :state=> vpc[:state], + :address_block=> vpc[:cidr_block] }) + end + + exceptions do on /(AuthFailure|InvalidAccessKeyId)/ do status 401 -- 1.7.11.7