On Jun 17, 2011, at 5:06 PM, [email protected] wrote:

ACK.

  -- Michal

> 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
> 

------------------------------------------------------
Michal Fojtik, [email protected]
Deltacloud API: http://deltacloud.org

Reply via email to