From: marios <[email protected]>
Signed-off-by: marios <[email protected]> --- server/lib/deltacloud/base_driver/features.rb | 2 +- server/lib/deltacloud/drivers/ec2/ec2_driver.rb | 6 ++++-- server/lib/deltacloud/models/instance.rb | 1 + server/server.rb | 1 + server/views/instances/new.html.haml | 14 ++++++++++++++ server/views/instances/show.html.haml | 5 +++++ server/views/instances/show.xml.haml | 4 ++++ 7 files changed, 30 insertions(+), 3 deletions(-) diff --git a/server/lib/deltacloud/base_driver/features.rb b/server/lib/deltacloud/base_driver/features.rb index 4a2f1f8..c3e296f 100644 --- a/server/lib/deltacloud/base_driver/features.rb +++ b/server/lib/deltacloud/base_driver/features.rb @@ -187,7 +187,7 @@ module Deltacloud end end - declare_feature :instances, :firewall do + declare_feature :instances, :firewalls do description "Put instance in one or more firewalls (security groups) on launch" operation :create do param :firewalls, :array, :optional, nil, "Array of firewall ID strings" diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb index b0b9712..2b9b0b1 100644 --- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb +++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb @@ -39,7 +39,7 @@ module Deltacloud feature :instances, :user_data feature :instances, :authentication_key - feature :instances, :firewall + feature :instances, :firewalls feature :instances, :instance_count feature :images, :owner_id feature :buckets, :bucket_location @@ -188,7 +188,8 @@ module Deltacloud instance_options.merge!(:key_name => opts[:keyname]) if opts[:keyname] instance_options.merge!(:availability_zone => opts[:realm_id]) if opts[:realm_id] instance_options.merge!(:instance_type => opts[:hwp_id]) if opts[:hwp_id] && opts[:hwp_id].length > 0 - instance_options.merge!(:group_ids => opts[:firewalls]) if opts[:firewalls] + firewalls = opts.inject([]){|res, (k,v)| res << v if k =~ /firewalls\d+$/; res} + instance_options.merge!(:group_ids => firewalls ) unless firewalls.empty? instance_options.merge!( :min_count => opts[:instance_count], :max_count => opts[:instance_count] @@ -743,6 +744,7 @@ module Deltacloud :realm_id => instance[:aws_availability_zone], :private_addresses => instance[:private_dns_name], :public_addresses => instance[:dns_name], + :firewalls => instance[:aws_groups], :create_image => can_create_image ) end diff --git a/server/lib/deltacloud/models/instance.rb b/server/lib/deltacloud/models/instance.rb index c7547e3..83e7e5f 100644 --- a/server/lib/deltacloud/models/instance.rb +++ b/server/lib/deltacloud/models/instance.rb @@ -31,6 +31,7 @@ class Instance < BaseModel attr_accessor :username attr_accessor :password attr_accessor :create_image + attr_accessor :firewalls def can_create_image? self.create_image diff --git a/server/server.rb b/server/server.rb index 67d2b3d..4593637 100644 --- a/server/server.rb +++ b/server/server.rb @@ -261,6 +261,7 @@ get "#{Sinatra::UrlForHelper::DEFAULT_URI_PREFIX}/instances/new" do @hardware_profiles = driver.hardware_profiles(credentials, :architecture => @image.architecture ) @realms = driver.realms(credentials) @keys = driver.keys(credentials) if driver_has_feature?(:authentication_key) + @firewalls = driver.firewalls(credentials) if driver_has_feature?(:firewalls) if driver_has_feature?(:register_to_load_balancer) @load_balancers = driver.load_balancers(credentials) end diff --git a/server/views/instances/new.html.haml b/server/views/instances/new.html.haml index 647bf63..70bd9d2 100644 --- a/server/views/instances/new.html.haml +++ b/server/views/instances/new.html.haml @@ -35,6 +35,20 @@ %option - @keys.each do |key| %option{ :value => key.id } #{key.id} + -if driver_has_feature?(:firewalls) + %p + %label + Firewalls: + %br + %br + - @firewalls.each_index do |i| + - if @firewalls[i].name == 'default' + %input{:type => :checkbox, :value => @firewalls[i].name, :name => "firewalls#{i}", :checked => :true}/ + - else + %input{:type => :checkbox, :value => @firewalls[i].name, :name => "firewalls#{i}"}/ + = @firewalls[i].name + %br + %br - if !@hardware_profiles.empty? %h3 What size machine? - for hwp in @hardware_profiles diff --git a/server/views/instances/show.html.haml b/server/views/instances/show.html.haml index 6c53bde..5fae5fe 100644 --- a/server/views/instances/show.html.haml +++ b/server/views/instances/show.html.haml @@ -50,6 +50,11 @@ %dt Key %dd = @instance.keyname + - if @instance.firewalls + %di + %dt Firewalls + %dd + = @instance.firewalls.join(", ") %di %dt %dd diff --git a/server/views/instances/show.xml.haml b/server/views/instances/show.xml.haml index efbdac1..5fd85fc 100644 --- a/server/views/instances/show.xml.haml +++ b/server/views/instances/show.xml.haml @@ -43,6 +43,10 @@ - @instance.private_addresses.each do |address| %address< =address + - if @instance.firewalls + %firewalls< + - @instance.firewalls.each do |firewall| + %firewall{:href => firewall_url(firewall), :id => firewall } - if driver_has_auth_features? %authentication{ :type => driver_auth_feature_name } - if @instance.authn_feature_failed? -- 1.7.3.4
