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 2012/05/28 10:52:05 UTC

[PATCH core 1/2] EC2 frontend minor fixed and improvements

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


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/ec2/query_parser.rb                  |    4 +++-
 server/lib/ec2/server.rb                        |   12 +++++++++++-
 server/lib/ec2/views/describe_images.haml       |    2 +-
 server/lib/ec2/views/describe_instance_set.haml |    7 ++++---
 server/lib/ec2/views/error.haml                 |    4 ++++
 5 files changed, 23 insertions(+), 6 deletions(-)
 create mode 100644 server/lib/ec2/views/error.haml

diff --git a/server/lib/ec2/query_parser.rb b/server/lib/ec2/query_parser.rb
index 8d2abc9..8050119 100644
--- a/server/lib/ec2/query_parser.rb
+++ b/server/lib/ec2/query_parser.rb
@@ -100,10 +100,12 @@ module Deltacloud::EC2
 
   class QueryParser
 
+    class InvalidAction < StandardError; end
+
     def self.parse(params, request_id)
       parser = new(request_id, params)
       unless parser.valid_action?
-        raise 'Invalid action (%s)' % parser.action
+        raise InvalidAction.new('Invalid action (%s)' % parser.action)
       else
         ActionHandler.new(parser)
       end
diff --git a/server/lib/ec2/server.rb b/server/lib/ec2/server.rb
index d229c94..9b045e4 100644
--- a/server/lib/ec2/server.rb
+++ b/server/lib/ec2/server.rb
@@ -44,13 +44,23 @@ module Deltacloud::EC2
     set :version, Deltacloud[:version]
     set :root_url, Deltacloud[:root_url]
     set :root, File.join(File.dirname(__FILE__), '..', '..')
+    set :views, File.join(File.dirname(__FILE__), 'views')
+
+    error Deltacloud::EC2::QueryParser::InvalidAction do
+      status 400
+      haml :error, :locals => { :code => 'InvalidAction', :message => 'The requested action is not valid for this web service' }
+    end
 
     after do
       headers 'Server' => 'Apache-Deltacloud-EC2/' + settings.version
     end
 
     get '/' do
-      content_type :xml
+      headers 'Connection' => 'close'
+      unless params['Action']
+        redirect settings.root_url, 301
+        halt
+      end
       ec2_action = QueryParser.parse(params, request_id)
       ec2_action.perform!(credentials, driver)
       ec2_action.to_xml(self)
diff --git a/server/lib/ec2/views/describe_images.haml b/server/lib/ec2/views/describe_images.haml
index a49a5ee..2dd5978 100644
--- a/server/lib/ec2/views/describe_images.haml
+++ b/server/lib/ec2/views/describe_images.haml
@@ -4,7 +4,7 @@
       %imageId=item.id
       %imageState=item.state.downcase
       %imageOwnerId=item.owner_id
-      %architecture item.architecture
+      %architecture=item.architecture
       %imageType machine
       %name=item.name
       %description=item.description
diff --git a/server/lib/ec2/views/describe_instance_set.haml b/server/lib/ec2/views/describe_instance_set.haml
index b8c7c1c..7a6a7b8 100644
--- a/server/lib/ec2/views/describe_instance_set.haml
+++ b/server/lib/ec2/views/describe_instance_set.haml
@@ -4,13 +4,14 @@
       %instanceId=item.id
       %imageId=item.image_id
       %instanceType=item.instance_profile.name
-      %launchTime=item.launch_time
+      %launchTime=item.launch_time || Time.now.to_s
       %ipAddress=item.public_addresses.first.address
       %privateIpAddress=item.public_addresses.first.address
       %dnsName=item.public_addresses.first.address
       %privateDnsName=item.private_addresses.first.address
-      %architecture=item.instance_profile.architecture
-      %keyName=item.keyname
+      %architecture=item.instance_profile.architecture || 'i386'
+      - if item.keyname
+        %keyName=item.keyname
       %instanceState
         %code=instance_state_code(item.state.downcase)
         %name=item.state.downcase
diff --git a/server/lib/ec2/views/error.haml b/server/lib/ec2/views/error.haml
new file mode 100644
index 0000000..9b07c73
--- /dev/null
+++ b/server/lib/ec2/views/error.haml
@@ -0,0 +1,4 @@
+%Response
+  %Errors
+    %Code=code
+    %Message=message
-- 
1.7.10.2


Re: [PATCH core 2/2] Core: Fixed displaying drivers using deltacloudd --drivers

Posted by Michal Fojtik <mf...@redhat.com>.
On 05/28/12, marios@redhat.com wrote:
> ACK both

Thanks! Pushed.

> 
> On 28/05/12 11:52, mfojtik@redhat.com wrote:
> > From: Michal Fojtik <mf...@redhat.com>
> > 
> > 
> > Signed-off-by: Michal fojtik <mf...@redhat.com>
> > ---
> >  server/bin/deltacloudd            |    4 ++--
> >  server/lib/deltacloud/core_ext.rb |    8 ++++++++
> >  2 files changed, 10 insertions(+), 2 deletions(-)
> > 
> > diff --git a/server/bin/deltacloudd b/server/bin/deltacloudd
> > index 8eb448d..3dbe967 100755
> > --- a/server/bin/deltacloudd
> > +++ b/server/bin/deltacloudd
> > @@ -128,9 +128,9 @@ end
> >  if options[:drivers]
> >    $:.unshift File.join($top_srcdir, 'lib')
> >    server_dir = ENV['API_FRONTEND'] == 'cimi' ? 'cimi' : 'deltacloud'
> > -  load File.join($top_srcdir, 'lib', server_dir, 'server.rb')
> > +  load File.join($top_srcdir, 'lib', server_dir, 'api.rb')
> >    puts "Available drivers:\n\n"
> > -  puts "* " + driver_config.keys.map{ |d| d.to_s }.join("\n* ")
> > +  puts Deltacloud.drivers.keys.join("\n")
> >    puts
> >    exit(0)
> >  end
> > diff --git a/server/lib/deltacloud/core_ext.rb b/server/lib/deltacloud/core_ext.rb
> > index edaaa00..b448adb 100644
> > --- a/server/lib/deltacloud/core_ext.rb
> > +++ b/server/lib/deltacloud/core_ext.rb
> > @@ -14,6 +14,14 @@
> >  # under the License.
> >  #
> >  
> > +unless Kernel.respond_to?(:require_relative)
> > +  module Kernel
> > +    def require_relative(path)
> > +      require File.join(File.dirname(caller[0]), path.to_str)
> > +    end
> > +  end
> > +end
> > +
> >  require_relative './core_ext/array'
> >  require_relative './core_ext/hash'
> >  require_relative './core_ext/integer'
> 

-- 
Michal Fojtik
Sr. Software Engineer, Deltacloud API (http://deltacloud.org)

Re: [PATCH core 2/2] Core: Fixed displaying drivers using deltacloudd --drivers

Posted by "marios@redhat.com" <ma...@redhat.com>.
ACK both

On 28/05/12 11:52, mfojtik@redhat.com wrote:
> From: Michal Fojtik <mf...@redhat.com>
> 
> 
> Signed-off-by: Michal fojtik <mf...@redhat.com>
> ---
>  server/bin/deltacloudd            |    4 ++--
>  server/lib/deltacloud/core_ext.rb |    8 ++++++++
>  2 files changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/server/bin/deltacloudd b/server/bin/deltacloudd
> index 8eb448d..3dbe967 100755
> --- a/server/bin/deltacloudd
> +++ b/server/bin/deltacloudd
> @@ -128,9 +128,9 @@ end
>  if options[:drivers]
>    $:.unshift File.join($top_srcdir, 'lib')
>    server_dir = ENV['API_FRONTEND'] == 'cimi' ? 'cimi' : 'deltacloud'
> -  load File.join($top_srcdir, 'lib', server_dir, 'server.rb')
> +  load File.join($top_srcdir, 'lib', server_dir, 'api.rb')
>    puts "Available drivers:\n\n"
> -  puts "* " + driver_config.keys.map{ |d| d.to_s }.join("\n* ")
> +  puts Deltacloud.drivers.keys.join("\n")
>    puts
>    exit(0)
>  end
> diff --git a/server/lib/deltacloud/core_ext.rb b/server/lib/deltacloud/core_ext.rb
> index edaaa00..b448adb 100644
> --- a/server/lib/deltacloud/core_ext.rb
> +++ b/server/lib/deltacloud/core_ext.rb
> @@ -14,6 +14,14 @@
>  # under the License.
>  #
>  
> +unless Kernel.respond_to?(:require_relative)
> +  module Kernel
> +    def require_relative(path)
> +      require File.join(File.dirname(caller[0]), path.to_str)
> +    end
> +  end
> +end
> +
>  require_relative './core_ext/array'
>  require_relative './core_ext/hash'
>  require_relative './core_ext/integer'


[PATCH core 2/2] Core: Fixed displaying drivers using deltacloudd --drivers

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


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/bin/deltacloudd            |    4 ++--
 server/lib/deltacloud/core_ext.rb |    8 ++++++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/server/bin/deltacloudd b/server/bin/deltacloudd
index 8eb448d..3dbe967 100755
--- a/server/bin/deltacloudd
+++ b/server/bin/deltacloudd
@@ -128,9 +128,9 @@ end
 if options[:drivers]
   $:.unshift File.join($top_srcdir, 'lib')
   server_dir = ENV['API_FRONTEND'] == 'cimi' ? 'cimi' : 'deltacloud'
-  load File.join($top_srcdir, 'lib', server_dir, 'server.rb')
+  load File.join($top_srcdir, 'lib', server_dir, 'api.rb')
   puts "Available drivers:\n\n"
-  puts "* " + driver_config.keys.map{ |d| d.to_s }.join("\n* ")
+  puts Deltacloud.drivers.keys.join("\n")
   puts
   exit(0)
 end
diff --git a/server/lib/deltacloud/core_ext.rb b/server/lib/deltacloud/core_ext.rb
index edaaa00..b448adb 100644
--- a/server/lib/deltacloud/core_ext.rb
+++ b/server/lib/deltacloud/core_ext.rb
@@ -14,6 +14,14 @@
 # under the License.
 #
 
+unless Kernel.respond_to?(:require_relative)
+  module Kernel
+    def require_relative(path)
+      require File.join(File.dirname(caller[0]), path.to_str)
+    end
+  end
+end
+
 require_relative './core_ext/array'
 require_relative './core_ext/hash'
 require_relative './core_ext/integer'
-- 
1.7.10.2