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 2011/07/27 14:34:29 UTC

[PATCH core] Added type to address element to indicate kind of address (MAC, IPv4, hostname)

From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 .../lib/deltacloud/helpers/application_helper.rb   |   14 ++++++++++++++
 server/tests/drivers/mock/instances_test.rb        |    2 ++
 server/views/instances/show.xml.haml               |    9 +++------
 tests/ec2/instances.feature                        |    1 +
 tests/ec2/step_definitions/instances_steps.rb      |    7 +++++++
 5 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/server/lib/deltacloud/helpers/application_helper.rb b/server/lib/deltacloud/helpers/application_helper.rb
index 527aac4..b837308 100644
--- a/server/lib/deltacloud/helpers/application_helper.rb
+++ b/server/lib/deltacloud/helpers/application_helper.rb
@@ -219,4 +219,18 @@ module ApplicationHelper
     end
     result
   end
+
+  def format_address(address, opts={})
+    address_type = case address
+                    when /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})?$/; :ipv4
+                    when /^(\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2})?$/; :mac
+                    else :hostname
+                  end
+    capture_haml do
+      haml_tag :address, { :type => address_type }.merge(opts) do
+        haml_concat address
+      end
+    end
+  end
+
 end
diff --git a/server/tests/drivers/mock/instances_test.rb b/server/tests/drivers/mock/instances_test.rb
index 3e922d3..0e97c19 100644
--- a/server/tests/drivers/mock/instances_test.rb
+++ b/server/tests/drivers/mock/instances_test.rb
@@ -197,10 +197,12 @@ module DeltacloudUnitTest
       (instance/'public_addreses').should_not == nil
       (instance/'public_addresses/address').to_a.size.should > 0
       (instance/'public_addresses/address').first.text.should_not == ""
+      (instance/'public_addresses/address').first[:type].should == "hostname"
 
       (instance/'private_addresses').should_not == nil
       (instance/'private_addresses/address').to_a.size.should > 0
       (instance/'private_addresses/address').first.text.should_not == ""
+      (instance/'private_addresses/address').first[:type].should == "hostname"
 
       (instance/'actions/link').to_a.size.should > 0
       (instance/'actions/link').each do |link|
diff --git a/server/views/instances/show.xml.haml b/server/views/instances/show.xml.haml
index 5fd85fc..27f04a6 100644
--- a/server/views/instances/show.xml.haml
+++ b/server/views/instances/show.xml.haml
@@ -33,16 +33,13 @@
     %public_addresses<
       - @instance.public_addresses.each do |address|
         - if address.class.eql?(Hash) and address[:address]!=""
-          %address{ :port => address[:port], :type => address[:type], :mac => address[:mac] }<
-            =address[:address]
+          =format_address(address[:address], :port => address[:port], :type => address[:type], :mac => address[:mac])
         - elsif address.class.eql?(String)
-          %address<
-            =address
+          =format_address(address)
   - if @instance.private_addresses
     %private_addresses<
       - @instance.private_addresses.each do |address|
-        %address<
-          =address
+        =format_address(address)
   - if @instance.firewalls
     %firewalls<
       - @instance.firewalls.each do |firewall|
diff --git a/tests/ec2/instances.feature b/tests/ec2/instances.feature
index bbbfcb1..f298fd7 100644
--- a/tests/ec2/instances.feature
+++ b/tests/ec2/instances.feature
@@ -72,6 +72,7 @@ Feature: Managing instances
     | state | RUNNING |
     Then client should get some instances
     And each instance should have 'state' element set to 'RUNNING'
+    And each instance should have address type set to "hostname"
 
   Scenario: Get details about first instance
     Given URI /api/instances exists
diff --git a/tests/ec2/step_definitions/instances_steps.rb b/tests/ec2/step_definitions/instances_steps.rb
index 142e756..80474c9 100644
--- a/tests/ec2/step_definitions/instances_steps.rb
+++ b/tests/ec2/step_definitions/instances_steps.rb
@@ -64,6 +64,13 @@ Then /^this instance should be in '(.+)' state$/ do |state|
   output_xml.xpath('/instance/state').first.text.should == state
 end
 
+Then /^each instance should have address type set to "([^"]*)"$/ do |t|
+  puts output_xml
+  output_xml.xpath('/instances/instance/public_addresses/address').first[:type].should == t
+  output_xml.xpath('/instances/instance/private_addresses/address').first[:type].should == t
+end
+
+
 When /^client want to create a new instance$/ do
 end
 
-- 
1.7.4.1


Re: [PATCH core] Added type to address element to indicate kind of address (MAC, IPv4, hostname)

Posted by Michal Fojtik <mi...@mifo.sk>.
On Jul 27, 2011, at 2:42 PM, Francesco Vollero wrote:

> Ack'd. Small issue, json does not return the ipv4 type but just public_address:<mac>||<ip>.

Fixed && pushed!

  -- Michal

> 
> Cheers,
> Francesco Vollero
> 
> On Wed, Jul 27, 2011 at 02:34:29PM +0200, mfojtik@redhat.com wrote:
>> From: Michal Fojtik <mf...@redhat.com>
>> 
>> 
>> Signed-off-by: Michal fojtik <mf...@redhat.com>
>> ---
>> .../lib/deltacloud/helpers/application_helper.rb   |   14 ++++++++++++++
>> server/tests/drivers/mock/instances_test.rb        |    2 ++
>> server/views/instances/show.xml.haml               |    9 +++------
>> tests/ec2/instances.feature                        |    1 +
>> tests/ec2/step_definitions/instances_steps.rb      |    7 +++++++
>> 5 files changed, 27 insertions(+), 6 deletions(-)
>> 
>> diff --git a/server/lib/deltacloud/helpers/application_helper.rb b/server/lib/deltacloud/helpers/application_helper.rb
>> index 527aac4..b837308 100644
>> --- a/server/lib/deltacloud/helpers/application_helper.rb
>> +++ b/server/lib/deltacloud/helpers/application_helper.rb
>> @@ -219,4 +219,18 @@ module ApplicationHelper
>>     end
>>     result
>>   end
>> +
>> +  def format_address(address, opts={})
>> +    address_type = case address
>> +                    when /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})?$/; :ipv4
>> +                    when /^(\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2})?$/; :mac
>> +                    else :hostname
>> +                  end
>> +    capture_haml do
>> +      haml_tag :address, { :type => address_type }.merge(opts) do
>> +        haml_concat address
>> +      end
>> +    end
>> +  end
>> +
>> end
>> diff --git a/server/tests/drivers/mock/instances_test.rb b/server/tests/drivers/mock/instances_test.rb
>> index 3e922d3..0e97c19 100644
>> --- a/server/tests/drivers/mock/instances_test.rb
>> +++ b/server/tests/drivers/mock/instances_test.rb
>> @@ -197,10 +197,12 @@ module DeltacloudUnitTest
>>       (instance/'public_addreses').should_not == nil
>>       (instance/'public_addresses/address').to_a.size.should > 0
>>       (instance/'public_addresses/address').first.text.should_not == ""
>> +      (instance/'public_addresses/address').first[:type].should == "hostname"
>> 
>>       (instance/'private_addresses').should_not == nil
>>       (instance/'private_addresses/address').to_a.size.should > 0
>>       (instance/'private_addresses/address').first.text.should_not == ""
>> +      (instance/'private_addresses/address').first[:type].should == "hostname"
>> 
>>       (instance/'actions/link').to_a.size.should > 0
>>       (instance/'actions/link').each do |link|
>> diff --git a/server/views/instances/show.xml.haml b/server/views/instances/show.xml.haml
>> index 5fd85fc..27f04a6 100644
>> --- a/server/views/instances/show.xml.haml
>> +++ b/server/views/instances/show.xml.haml
>> @@ -33,16 +33,13 @@
>>     %public_addresses<
>>       - @instance.public_addresses.each do |address|
>>         - if address.class.eql?(Hash) and address[:address]!=""
>> -          %address{ :port => address[:port], :type => address[:type], :mac => address[:mac] }<
>> -            =address[:address]
>> +          =format_address(address[:address], :port => address[:port], :type => address[:type], :mac => address[:mac])
>>         - elsif address.class.eql?(String)
>> -          %address<
>> -            =address
>> +          =format_address(address)
>>   - if @instance.private_addresses
>>     %private_addresses<
>>       - @instance.private_addresses.each do |address|
>> -        %address<
>> -          =address
>> +        =format_address(address)
>>   - if @instance.firewalls
>>     %firewalls<
>>       - @instance.firewalls.each do |firewall|
>> diff --git a/tests/ec2/instances.feature b/tests/ec2/instances.feature
>> index bbbfcb1..f298fd7 100644
>> --- a/tests/ec2/instances.feature
>> +++ b/tests/ec2/instances.feature
>> @@ -72,6 +72,7 @@ Feature: Managing instances
>>     | state | RUNNING |
>>     Then client should get some instances
>>     And each instance should have 'state' element set to 'RUNNING'
>> +    And each instance should have address type set to "hostname"
>> 
>>   Scenario: Get details about first instance
>>     Given URI /api/instances exists
>> diff --git a/tests/ec2/step_definitions/instances_steps.rb b/tests/ec2/step_definitions/instances_steps.rb
>> index 142e756..80474c9 100644
>> --- a/tests/ec2/step_definitions/instances_steps.rb
>> +++ b/tests/ec2/step_definitions/instances_steps.rb
>> @@ -64,6 +64,13 @@ Then /^this instance should be in '(.+)' state$/ do |state|
>>   output_xml.xpath('/instance/state').first.text.should == state
>> end
>> 
>> +Then /^each instance should have address type set to "([^"]*)"$/ do |t|
>> +  puts output_xml
>> +  output_xml.xpath('/instances/instance/public_addresses/address').first[:type].should == t
>> +  output_xml.xpath('/instances/instance/private_addresses/address').first[:type].should == t
>> +end
>> +
>> +
>> When /^client want to create a new instance$/ do
>> end
>> 
>> -- 
>> 1.7.4.1
>> 


Re: [PATCH core] Added type to address element to indicate kind of address (MAC, IPv4, hostname)

Posted by Francesco Vollero <fv...@redhat.com>.
Ack'd. Small issue, json does not return the ipv4 type but just public_address:<mac>||<ip>.

Cheers,
Francesco Vollero

On Wed, Jul 27, 2011 at 02:34:29PM +0200, mfojtik@redhat.com wrote:
> From: Michal Fojtik <mf...@redhat.com>
> 
> 
> Signed-off-by: Michal fojtik <mf...@redhat.com>
> ---
>  .../lib/deltacloud/helpers/application_helper.rb   |   14 ++++++++++++++
>  server/tests/drivers/mock/instances_test.rb        |    2 ++
>  server/views/instances/show.xml.haml               |    9 +++------
>  tests/ec2/instances.feature                        |    1 +
>  tests/ec2/step_definitions/instances_steps.rb      |    7 +++++++
>  5 files changed, 27 insertions(+), 6 deletions(-)
> 
> diff --git a/server/lib/deltacloud/helpers/application_helper.rb b/server/lib/deltacloud/helpers/application_helper.rb
> index 527aac4..b837308 100644
> --- a/server/lib/deltacloud/helpers/application_helper.rb
> +++ b/server/lib/deltacloud/helpers/application_helper.rb
> @@ -219,4 +219,18 @@ module ApplicationHelper
>      end
>      result
>    end
> +
> +  def format_address(address, opts={})
> +    address_type = case address
> +                    when /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})?$/; :ipv4
> +                    when /^(\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2}:\S{1,2})?$/; :mac
> +                    else :hostname
> +                  end
> +    capture_haml do
> +      haml_tag :address, { :type => address_type }.merge(opts) do
> +        haml_concat address
> +      end
> +    end
> +  end
> +
>  end
> diff --git a/server/tests/drivers/mock/instances_test.rb b/server/tests/drivers/mock/instances_test.rb
> index 3e922d3..0e97c19 100644
> --- a/server/tests/drivers/mock/instances_test.rb
> +++ b/server/tests/drivers/mock/instances_test.rb
> @@ -197,10 +197,12 @@ module DeltacloudUnitTest
>        (instance/'public_addreses').should_not == nil
>        (instance/'public_addresses/address').to_a.size.should > 0
>        (instance/'public_addresses/address').first.text.should_not == ""
> +      (instance/'public_addresses/address').first[:type].should == "hostname"
>  
>        (instance/'private_addresses').should_not == nil
>        (instance/'private_addresses/address').to_a.size.should > 0
>        (instance/'private_addresses/address').first.text.should_not == ""
> +      (instance/'private_addresses/address').first[:type].should == "hostname"
>  
>        (instance/'actions/link').to_a.size.should > 0
>        (instance/'actions/link').each do |link|
> diff --git a/server/views/instances/show.xml.haml b/server/views/instances/show.xml.haml
> index 5fd85fc..27f04a6 100644
> --- a/server/views/instances/show.xml.haml
> +++ b/server/views/instances/show.xml.haml
> @@ -33,16 +33,13 @@
>      %public_addresses<
>        - @instance.public_addresses.each do |address|
>          - if address.class.eql?(Hash) and address[:address]!=""
> -          %address{ :port => address[:port], :type => address[:type], :mac => address[:mac] }<
> -            =address[:address]
> +          =format_address(address[:address], :port => address[:port], :type => address[:type], :mac => address[:mac])
>          - elsif address.class.eql?(String)
> -          %address<
> -            =address
> +          =format_address(address)
>    - if @instance.private_addresses
>      %private_addresses<
>        - @instance.private_addresses.each do |address|
> -        %address<
> -          =address
> +        =format_address(address)
>    - if @instance.firewalls
>      %firewalls<
>        - @instance.firewalls.each do |firewall|
> diff --git a/tests/ec2/instances.feature b/tests/ec2/instances.feature
> index bbbfcb1..f298fd7 100644
> --- a/tests/ec2/instances.feature
> +++ b/tests/ec2/instances.feature
> @@ -72,6 +72,7 @@ Feature: Managing instances
>      | state | RUNNING |
>      Then client should get some instances
>      And each instance should have 'state' element set to 'RUNNING'
> +    And each instance should have address type set to "hostname"
>  
>    Scenario: Get details about first instance
>      Given URI /api/instances exists
> diff --git a/tests/ec2/step_definitions/instances_steps.rb b/tests/ec2/step_definitions/instances_steps.rb
> index 142e756..80474c9 100644
> --- a/tests/ec2/step_definitions/instances_steps.rb
> +++ b/tests/ec2/step_definitions/instances_steps.rb
> @@ -64,6 +64,13 @@ Then /^this instance should be in '(.+)' state$/ do |state|
>    output_xml.xpath('/instance/state').first.text.should == state
>  end
>  
> +Then /^each instance should have address type set to "([^"]*)"$/ do |t|
> +  puts output_xml
> +  output_xml.xpath('/instances/instance/public_addresses/address').first[:type].should == t
> +  output_xml.xpath('/instances/instance/private_addresses/address').first[:type].should == t
> +end
> +
> +
>  When /^client want to create a new instance$/ do
>  end
>  
> -- 
> 1.7.4.1
>