You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by "marios@redhat.com" <ma...@redhat.com> on 2010/12/03 14:50:06 UTC

Re: [PATCH core] Added ASF license header to files

ACK (but reminder to fix it so you don't push the new ec2 driver [or old 
one even])

On 23/11/10 17:00, mfojtik@redhat.com wrote:
> From: Michal Fojtik<mf...@redhat.com>
>
> ---
>   server/config.ru                                   |   20 +-
>   server/deltacloud.rb                               |   21 +-
>   server/lib/deltacloud/backend_capability.rb        |   18 +
>   server/lib/deltacloud/base_driver.rb               |    2 +-
>   server/lib/deltacloud/drivers/ec2/ec2_driver.rb    |    3 +-
>   .../lib/deltacloud/drivers/ec2/ec2_mock_driver.rb  |   18 +
>   .../lib/deltacloud/drivers/ec2/old_ec2_driver.rb   |  546 ++++++++++++++++++++
>   .../lib/deltacloud/drivers/gogrid/gogrid_client.rb |    1 -
>   .../lib/deltacloud/drivers/gogrid/gogrid_driver.rb |    2 +-
>   server/lib/deltacloud/drivers/gogrid/test.rb       |   13 -
>   server/lib/deltacloud/drivers/mock/mock_driver.rb  |    2 +-
>   .../drivers/rackspace/rackspace_client.rb          |    2 +-
>   server/lib/deltacloud/hardware_profile.rb          |   17 +
>   server/lib/deltacloud/helpers.rb                   |   18 +
>   .../lib/deltacloud/helpers/application_helper.rb   |    4 +-
>   server/lib/deltacloud/helpers/conversion_helper.rb |    3 +-
>   .../deltacloud/helpers/hardware_profiles_helper.rb |   17 +
>   server/lib/deltacloud/method_serializer.rb         |    2 +-
>   server/lib/deltacloud/models/base_model.rb         |    2 +-
>   server/lib/deltacloud/models/blob.rb               |    4 +-
>   server/lib/deltacloud/models/bucket.rb             |    3 +-
>   server/lib/deltacloud/models/image.rb              |    5 +-
>   server/lib/deltacloud/models/instance.rb           |    3 +-
>   server/lib/deltacloud/models/instance_profile.rb   |    3 +-
>   server/lib/deltacloud/models/key.rb                |    2 +-
>   server/lib/deltacloud/models/load_balancer.rb      |    2 +-
>   server/lib/deltacloud/models/realm.rb              |    2 +-
>   server/lib/deltacloud/models/storage_snapshot.rb   |    2 +-
>   server/lib/deltacloud/models/storage_volume.rb     |    2 +-
>   server/lib/deltacloud/state_machine.rb             |   17 +
>   server/lib/deltacloud/validation.rb                |   18 +
>   server/lib/drivers.rb                              |   18 +
>   server/libexec/app/views/api/show.html.erb         |    7 -
>   .../libexec/app/views/layouts/application.html.erb |   32 --
>   server/libexec/app/views/layouts/old.html.erb      |   32 --
>   server/libexec/public/stylesheets/application.css  |   96 ----
>   .../public/stylesheets/sass/application.sass       |  109 ----
>   server/public/stylesheets/application.sass         |  109 ++++
>   server/server.rb                                   |   25 +-
>   39 files changed, 881 insertions(+), 321 deletions(-)
>   create mode 100644 server/lib/deltacloud/drivers/ec2/old_ec2_driver.rb
>   delete mode 100644 server/lib/deltacloud/drivers/gogrid/test.rb
>   delete mode 100644 server/libexec/app/views/api/show.html.erb
>   delete mode 100644 server/libexec/app/views/layouts/application.html.erb
>   delete mode 100644 server/libexec/app/views/layouts/old.html.erb
>   delete mode 100644 server/libexec/public/stylesheets/application.css
>   delete mode 100644 server/libexec/public/stylesheets/sass/application.sass
>   create mode 100644 server/public/stylesheets/application.sass
>
> diff --git a/server/config.ru b/server/config.ru
> index cb38ca8..74f659b 100644
> --- a/server/config.ru
> +++ b/server/config.ru
> @@ -1,7 +1,25 @@
> +#
> +# Copyright (C) 2009,2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
> +
>   require 'rubygems'
> -require 'sinatra'
>
>   $:.unshift File.join(File.dirname(__FILE__), '.')
>
>   require 'server.rb'
> +
>   run Sinatra::Application
> diff --git a/server/deltacloud.rb b/server/deltacloud.rb
> index 02d6c2e..516963e 100644
> --- a/server/deltacloud.rb
> +++ b/server/deltacloud.rb
> @@ -1,6 +1,25 @@
> -# Add ./lib into load path
> +#
> +# Copyright (C) 2009,2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
> +
>   $:.unshift File.join(File.dirname(__FILE__), 'lib')
>
> +require 'drivers'
> +
>   require 'deltacloud/base_driver'
>   require 'deltacloud/hardware_profile'
>   require 'deltacloud/state_machine'
> diff --git a/server/lib/deltacloud/backend_capability.rb b/server/lib/deltacloud/backend_capability.rb
> index bec8714..ba37e1e 100644
> --- a/server/lib/deltacloud/backend_capability.rb
> +++ b/server/lib/deltacloud/backend_capability.rb
> @@ -1,3 +1,21 @@
> +#
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
> +
>   module Deltacloud::BackendCapability
>
>     class Failure<  StandardError
> diff --git a/server/lib/deltacloud/base_driver.rb b/server/lib/deltacloud/base_driver.rb
> index b540562..fcec3a7 100644
> --- a/server/lib/deltacloud/base_driver.rb
> +++ b/server/lib/deltacloud/base_driver.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009,2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
> index 45f2e01..51e34ce 100644
> --- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
> +++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> @@ -16,7 +16,6 @@
>   # License for the specific language governing permissions and limitations
>   # under the License.
>
> -
>   require 'deltacloud/base_driver'
>   require 'active_support'
>   require 'AWS'
> diff --git a/server/lib/deltacloud/drivers/ec2/ec2_mock_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_mock_driver.rb
> index 1c63ff6..6a9c051 100644
> --- a/server/lib/deltacloud/drivers/ec2/ec2_mock_driver.rb
> +++ b/server/lib/deltacloud/drivers/ec2/ec2_mock_driver.rb
> @@ -1,3 +1,21 @@
> +#
> +# Copyright (C) 2009,2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
> +
>   module RightAws
>     class MockEc2
>
> diff --git a/server/lib/deltacloud/drivers/ec2/old_ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/old_ec2_driver.rb
> new file mode 100644
> index 0000000..9b37069
> --- /dev/null
> +++ b/server/lib/deltacloud/drivers/ec2/old_ec2_driver.rb
> @@ -0,0 +1,546 @@
> +#
> +# Copyright (C) 2009  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
> +
> +
> +require 'deltacloud/base_driver'
> +require 'active_support'
> +require 'AWS'
> +require 'right_aws'
> +
> +class Instance
> +  attr_accessor :keyname
> +  attr_accessor :authn_error
> +
> +  def authn_feature_failed?
> +    return true unless authn_error.nil?
> +  end
> +
> +end
> +
> +module Deltacloud
> +  module Drivers
> +    module EC2
> +class EC2Driver<  Deltacloud::BaseDriver
> +
> +  def supported_collections
> +    DEFAULT_COLLECTIONS + [ :keys, :buckets ]
> +  end
> +
> +  feature :instances, :user_data
> +  feature :instances, :authentication_key
> +  feature :images, :owner_id
> +  feature :buckets, :bucket_location
> +
> +  define_hardware_profile('m1.small') do
> +    cpu                1
> +    memory             1.7 * 1024
> +    storage            160
> +    architecture       'i386'
> +  end
> +
> +  define_hardware_profile('m1.large') do
> +    cpu                4
> +    memory             7.5 * 1024
> +    storage            850
> +    architecture       'x86_64'
> +  end
> +
> +  define_hardware_profile('m1.xlarge') do
> +    cpu                8
> +    memory             15 * 1024
> +    storage            1690
> +    architecture       'x86_64'
> +  end
> +
> +  define_hardware_profile('c1.medium') do
> +    cpu                5
> +    memory             1.7 * 1024
> +    storage            350
> +    architecture       'i386'
> +  end
> +
> +  define_hardware_profile('c1.xlarge') do
> +    cpu                20
> +    memory             7 * 1024
> +    storage            1690
> +    architecture       'x86_64'
> +  end
> +
> +  define_hardware_profile('m2.xlarge') do
> +    cpu                6.5
> +    memory             17.1 * 1024
> +    storage            420
> +    architecture       'x86_64'
> +  end
> +
> +  define_hardware_profile('m2.2xlarge') do
> +    cpu                13
> +    memory             34.2 * 1024
> +    storage            850
> +    architecture       'x86_64'
> +  end
> +
> +  define_hardware_profile('m2.4xlarge') do
> +    cpu                26
> +    memory             68.4 * 1024
> +    storage            1690
> +    architecture       'x86_64'
> +  end
> +
> +  define_instance_states do
> +    start.to( :pending )          .automatically
> +    pending.to( :running )        .automatically
> +    pending.to( :stopping )       .on( :stop )
> +    pending.to( :stopped )        .automatically
> +    stopped.to( :running )        .on( :start )
> +    running.to( :running )        .on( :reboot )
> +    running.to( :stopping )       .on( :stop )
> +    shutting_down.to( :stopped )  .automatically
> +    stopped.to( :finish )         .automatically
> +  end
> +
> +  #
> +  # Images
> +  #
> +
> +  def images(credentials, opts={} )
> +    ec2 = new_client(credentials)
> +    img_arr = []
> +    # if we know the image_id, we don't want to limit by owner_id, since this
> +    # will exclude public images
> +    if (opts and opts[:id])
> +      config = { :image_id =>  opts[:id] }
> +    else
> +      config = { :owner_id =>  "amazon" }
> +      config.merge!({ :owner_id =>  opts[:owner_id] }) if opts and opts[:owner_id]
> +    end
> +    safely do
> +      image_set = ec2.describe_images(config).imagesSet
> +      unless image_set.nil?
> +        image_set.item.each do |image|
> +          img_arr<<  convert_image(image)
> +        end
> +      end
> +    end
> +    img_arr = filter_on( img_arr, :architecture, opts )
> +    img_arr.sort_by{|e| [e.owner_id, e.name]}
> +  end
> +
> +  #
> +  # Realms
> +  #
> +
> +  def realms(credentials, opts=nil)
> +    ec2 = new_client(credentials)
> +    realms = []
> +    safely do
> +      ec2.describe_availability_zones.availabilityZoneInfo.item.each do |ec2_realm|
> +        realms<<  convert_realm( ec2_realm )
> +      end
> +    end
> +    realms
> +  end
> +
> +  #
> +  # Instances
> +  #
> +  def instances(credentials, opts=nil)
> +    ec2 = new_client(credentials)
> +    instances = []
> +    safely do
> +      param = opts.nil? ? nil : opts[:id]
> +      ec2_instances = ec2.describe_instances.reservationSet
> +      return [] unless ec2_instances
> +      ec2_instances.item.each do |item|
> +        item.instancesSet.item.each do |ec2_instance|
> +          instances<<  convert_instance( ec2_instance, item.ownerId )
> +        end
> +      end
> +    end
> +    instances = filter_on( instances, :id, opts )
> +    instances = filter_on( instances, :state, opts )
> +    instances
> +  end
> +
> +
> +  def create_instance(credentials, image_id, opts)
> +    ec2 = new_client( credentials )
> +    realm_id = opts[:realm_id]
> +    safely do
> +      image = image(credentials, :id =>  image_id )
> +      hwp = find_hardware_profile(credentials, opts[:hwp_id], image.id)
> +      ec2_instances = ec2.run_instances(
> +        :image_id =>  image.id,
> +        :user_data =>  opts[:user_data],
> +        :key_name =>  opts[:keyname],
> +        :availability_zone =>  realm_id,
> +        :monitoring_enabled =>  true,
> +        :instance_type =>  hwp.name,
> +        :disable_api_termination =>  false,
> +        :instance_initiated_shutdown_behavior =>  'terminate'
> +      )
> +      return convert_instance( ec2_instances.instancesSet.item.first, 'pending' )
> +    end
> +  end
> +
> +  def generate_instance(ec2, id, backup)
> +    begin
> +      this_instance = ec2.describe_instances( :instance_id =>  id ).reservationSet.item.first.instancesSet.item.first
> +      convert_instance(this_instance, this_instance.ownerId)
> +    rescue Exception =>  e
> +      puts "WARNING: ignored error during instance refresh: #{e.message}"
> +      # at this point, the action has succeeded but our follow-up
> +      # "describe_instances" failed for some reason.  Create a simple Instance
> +      # object with only the ID and new state in place
> +      state = convert_state(backup.instancesSet.item.first.currentState.name)
> +      Instance.new( {
> +        :id =>  id,
> +        :state =>  state,
> +        :actions =>  instance_actions_for( state ),
> +      } )
> +    end
> +  end
> +
> +  def reboot_instance(credentials, id)
> +    ec2 = new_client(credentials)
> +    backup = ec2.reboot_instances( :instance_id =>  id )
> +
> +    generate_instance(ec2, id, backup)
> +  end
> +
> +  def stop_instance(credentials, id)
> +    ec2 = new_client(credentials)
> +    backup = ec2.terminate_instances( :instance_id =>  id )
> +
> +    generate_instance(ec2, id, backup)
> +  end
> +
> +  def destroy_instance(credentials, id)
> +    ec2 = new_client(credentials)
> +    backup = ec2.terminate_instances( :instance_id =>  id )
> +
> +    generate_instance(ec2, id, backup)
> +  end
> +
> +  #
> +  # Storage Volumes
> +  #
> +
> +  def storage_volumes(credentials, opts=nil)
> +    ec2 = new_client( credentials )
> +    volumes = []
> +    safely do
> +      if (opts)
> +        ec2.describe_volumes(:volume_id =>  opts[:id]).volumeSet.item.each do |ec2_volume|
> +          volumes<<  convert_volume( ec2_volume )
> +        end
> +      else
> +        ec2_volumes = ec2.describe_volumes.volumeSet
> +        return [] unless ec2_volumes
> +        ec2_volumes.item.each do |ec2_volume|
> +          volumes<<  convert_volume( ec2_volume )
> +        end
> +      end
> +    end
> +    volumes
> +  end
> +
> +  #
> +  # Storage Snapshots
> +  #
> +
> +  def storage_snapshots(credentials, opts=nil)
> +    ec2 = new_client( credentials )
> +    snapshots = []
> +    safely do
> +      if (opts)
> +        ec2.describe_snapshots(:owner =>  'self', :snapshot_id =>  opts[:id]).snapshotSet.item.each do |ec2_snapshot|
> +          snapshots<<  convert_snapshot( ec2_snapshot )
> +        end
> +      else
> +        ec2_snapshots = ec2.describe_snapshots(:owner =>  'self').snapshotSet
> +        return [] unless ec2_snapshots
> +        ec2_snapshots.item.each do |ec2_snapshot|
> +          snapshots<<  convert_snapshot( ec2_snapshot )
> +        end
> +      end
> +    end
> +    snapshots
> +  end
> +
> +  def key(credentials, opts=nil)
> +    keys(credentials, opts).first
> +  end
> +
> +  def keys(credentials, opts=nil)
> +    ec2 = new_client( credentials )
> +    opts[:key_name] = opts[:id] if opts and opts[:id]
> +    keypairs = ec2.describe_keypairs(opts || {})
> +    result = []
> +    safely do
> +      keypairs.keySet.item.each do |keypair|
> +        result<<  convert_key(keypair)
> +      end
> +    end
> +    result
> +  end
> +
> +  def create_key(credentials, opts={})
> +    key = Key.new
> +    ec2 = new_client( credentials )
> +    safely do
> +      key = convert_key(ec2.create_keypair(opts))
> +    end
> +    return key
> +  end
> +
> +  def destroy_key(credentials, opts={})
> +    safely do
> +      ec2 = new_client( credentials )
> +      ec2.delete_keypair(opts)
> +    end
> +  end
> +
> +  def valid_credentials?(credentials)
> +    client = new_client(credentials)
> +    # FIXME: We need to do this call to determine if
> +    #        EC2 is working with given credentials. There is no
> +    #        other way to check, if given credentials are valid or not.
> +    realms = client.describe_availability_zones rescue false
> +    return realms ? true : false
> +  end
> +
> +#--
> +# Buckets
> +#-- get a list of your buckets from the s3 service
> +  def buckets(credentials, opts)
> +    buckets = []
> +    safely do
> +      s3_client = s3_client(credentials)
> +      bucket_list = s3_client.buckets
> +      bucket_list.each do |current|
> +        buckets<<  convert_bucket(current)
> +      end
> +    end
> +    buckets = filter_on(buckets, :id, opts)
> +    buckets
> +  end
> +
> +#--
> +# Create bucket
> +#--
> +#valid values for bucket location: 'EU'|'us-west1'|'ap-southeast-1' - if you
> +#don't specify a location then by default buckets are created in 'us-east'
> +#[but if you *do* specify 'us-east' things blow up]
> +  def create_bucket(credentials, name, opts={})
> +    bucket = nil
> +    safely do
> +      begin
> +        s3_client = s3_client(credentials)
> +        bucket_location = opts['location']
> +        if bucket_location
> +          bucket = RightAws::S3::Bucket.create(s3_client, name, true, nil, :location =>  bucket_location)
> +        else
> +          bucket = RightAws::S3::Bucket.create(s3_client, name, true)
> +        end #if
> +        rescue RightAws::AwsError =>  e
> +          raise e unless e.message =~ /BucketAlreadyExists/
> +          raise Deltacloud::BackendError.new(409, e.class.to_s, e.message, e.backtrace)
> +      end #begin
> +    end #do
> +    convert_bucket(bucket)
> +  end
> +
> +#--
> +# Delete_bucket
> +#--
> +  def delete_bucket(credentials, name, opts={})
> +    s3_client = s3_client(credentials)
> +    safely do
> +      s3_client.interface.delete_bucket(name)
> +    end
> +  end
> +
> +#--
> +# Blobs
> +#--
> +  def blobs(credentials, opts = nil)
> +    s3_client = s3_client(credentials)
> +    blobs = []
> +    safely do
> +      s3_bucket = s3_client.bucket(opts['bucket'])
> +      s3_bucket.keys({}, true).each do |s3_object|
> +        blobs<<  convert_object(s3_object)
> +      end
> +    end
> +    blobs = filter_on(blobs, :id, opts)
> +    blobs
> +  end
> +
> +#--
> +# Blob data
> +#--
> +  def blob_data(credentials, bucket_id, blob_id, opts)
> +    s3_client = s3_client(credentials)
> +    s3_client.interface.get(bucket_id, blob_id) do |chunk|
> +      yield chunk
> +    end
> +  end
> +
> +  private
> +
> +  def new_client(credentials)
> +    opts = {
> +      :access_key_id =>  credentials.user,
> +      :secret_access_key =>  credentials.password
> +    }
> +    opts[:server] = ENV['DCLOUD_EC2_URL'] if ENV['DCLOUD_EC2_URL']
> +    safely do
> +      AWS::EC2::Base.new(opts)
> +    end
> +  end
> +
> +  def convert_key(key)
> +    Key.new({
> +      :id =>  key['keyName'],
> +      :fingerprint =>  key['keyFingerprint'],
> +      :credential_type =>  :key,
> +      :pem_rsa_key =>  key['keyMaterial']
> +    })
> +  end
> +
> +  def convert_image(ec2_image)
> +    Image.new( {
> +      :id=>ec2_image['imageId'],
> +      :name=>ec2_image['name'] || ec2_image['imageId'],
> +      :description=>ec2_image['description'] || ec2_image['imageLocation'] || '',
> +      :owner_id=>ec2_image['imageOwnerId'],
> +      :architecture=>ec2_image['architecture'],
> +    } )
> +  end
> +
> +  def convert_realm(ec2_realm)
> +    Realm.new( {
> +      :id=>ec2_realm['zoneName'],
> +      :name=>ec2_realm['zoneName'],
> +      :limit=>ec2_realm['zoneState'].eql?('available') ? :unlimited : 0,
> +      :state=>ec2_realm['zoneState'].upcase,
> +    } )
> +  end
> +
> +  def convert_state(ec2_state)
> +    case ec2_state
> +    when "terminated"
> +      "STOPPED"
> +    when "stopped"
> +      "STOPPED"
> +    when "running"
> +      "RUNNING"
> +    when "pending"
> +      "PENDING"
> +    when "shutting-down"
> +      "STOPPED"
> +    end
> +  end
> +
> +  def convert_instance(ec2_instance, owner_id)
> +    state = convert_state(ec2_instance['instanceState']['name'])
> +    realm_id = ec2_instance['placement']['availabilityZone']
> +    (realm_id = nil ) if ( realm_id == '' )
> +    hwp_name = ec2_instance['instanceType']
> +    instance = Instance.new( {
> +      :id=>ec2_instance['instanceId'],
> +      :name =>  ec2_instance['imageId'],
> +      :state=>state,
> +      :image_id=>ec2_instance['imageId'],
> +      :owner_id=>owner_id,
> +      :realm_id=>realm_id,
> +      :public_addresses=>( ec2_instance['dnsName'] == '' ? [] : [ec2_instance['dnsName']] ),
> +      :private_addresses=>( ec2_instance['privateDnsName'] == '' ? [] : [ec2_instance['privateDnsName']] ),
> +      :instance_profile =>InstanceProfile.new(hwp_name),
> +      :actions=>instance_actions_for( state ),
> +      :keyname =>  ec2_instance['keyName'],
> +      :launch_time =>  ec2_instance['launchTime']
> +    } )
> +    instance.authn_error = "Key not set for instance" unless ec2_instance['keyName']
> +    return instance
> +  end
> +
> +  def convert_volume(ec2_volume)
> +    StorageVolume.new( {
> +      :id=>ec2_volume['volumeId'],
> +      :created=>ec2_volume['createTime'],
> +      :state=>ec2_volume['status'].upcase,
> +      :capacity=>ec2_volume['size'],
> +      :instance_id=>ec2_volume['snapshotId'],
> +      :device=>ec2_volume['attachmentSet'],
> +    } )
> +  end
> +
> +  def convert_snapshot(ec2_snapshot)
> +    StorageSnapshot.new( {
> +      :id=>ec2_snapshot['snapshotId'],
> +      :state=>ec2_snapshot['status'].upcase,
> +      :storage_volume_id=>ec2_snapshot['volumeId'],
> +      :created=>ec2_snapshot['startTime'],
> +    } )
> +  end
> +
> +  def s3_client(credentials)
> +    safely do
> +      s3_client = RightAws::S3.new(credentials.user, credentials.password)
> +    end
> +  end
> +
> +  def convert_bucket(s3_bucket)
> +    #get blob list:
> +    blob_list = []
> +    s3_bucket.keys.each do |s3_object|
> +      blob_list<<  s3_object.name
> +    end
> +    #can use AWS::S3::Owner.current.display_name or current.id
> +    Bucket.new(  { :id =>  s3_bucket.name,
> +                      :name =>  s3_bucket.name,
> +                      :size =>  s3_bucket.keys.length,
> +                      :blob_list =>  blob_list
> +                    }
> +                 )
> +  end
> +
> +  def convert_object(s3_object)
> +    Blob.new({   :id =>  s3_object.name,
> +                 :bucket =>  s3_object.bucket.name.to_s,
> +                 :content_length =>  s3_object.size,
> +                 :content_type =>  s3_object.content_type,
> +                 :last_modified =>  s3_object.last_modified
> +              })
> +  end
> +
> +  def catched_exceptions_list
> +    {
> +      :auth =>  [ AWS::AuthFailure ],
> +      :error =>  [],
> +      :glob =>  [ /AWS::(\w+)/ ]
> +    }
> +  end
> +
> +end
> +
> +    end
> +  end
> +end
> diff --git a/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb b/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb
> index c463fa6..43da112 100644
> --- a/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb
> +++ b/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb
> @@ -1,7 +1,6 @@
>   require 'digest/md5'
>   require 'cgi'
>   require 'open-uri'
> -require 'json'
>
>   class GoGridClient
>
> diff --git a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
> index fd8e756..7de34e2 100644
> --- a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
> +++ b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/drivers/gogrid/test.rb b/server/lib/deltacloud/drivers/gogrid/test.rb
> deleted file mode 100644
> index 809081d..0000000
> --- a/server/lib/deltacloud/drivers/gogrid/test.rb
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -require 'gogrid_client'
> -require 'ap'
> -
> -user='fbb1de3897597ccf'
> -password='ngieth10'
> -
> -client=GoGridClient.new('https://api.gogrid.com/api', user, password)
> -
> -ap client.request('grid/ip/list', {
> -  'ip.type' =>  '1',
> -  'ip.state' =>  '1',
> -  'datacenter' =>  '1'
> -})
> diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb b/server/lib/deltacloud/drivers/mock/mock_driver.rb
> index e1b9e0a..2ef289f 100644
> --- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
> +++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/drivers/rackspace/rackspace_client.rb b/server/lib/deltacloud/drivers/rackspace/rackspace_client.rb
> index 3d42a06..d803302 100644
> --- a/server/lib/deltacloud/drivers/rackspace/rackspace_client.rb
> +++ b/server/lib/deltacloud/drivers/rackspace/rackspace_client.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/hardware_profile.rb b/server/lib/deltacloud/hardware_profile.rb
> index 62aca33..9ba235a 100644
> --- a/server/lib/deltacloud/hardware_profile.rb
> +++ b/server/lib/deltacloud/hardware_profile.rb
> @@ -1,3 +1,20 @@
> +#
> +# Copyright (C) 2009,2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
>
>   module Deltacloud
>     class HardwareProfile
> diff --git a/server/lib/deltacloud/helpers.rb b/server/lib/deltacloud/helpers.rb
> index 0765962..6cae81c 100644
> --- a/server/lib/deltacloud/helpers.rb
> +++ b/server/lib/deltacloud/helpers.rb
> @@ -1,3 +1,21 @@
> +#
> +# Copyright (C) 2009,2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
> +
>   require 'deltacloud/helpers/application_helper'
>   require 'deltacloud/helpers/conversion_helper'
>   require 'deltacloud/helpers/hardware_profiles_helper'
> diff --git a/server/lib/deltacloud/helpers/application_helper.rb b/server/lib/deltacloud/helpers/application_helper.rb
> index 00e8bc9..ead4c58 100644
> --- a/server/lib/deltacloud/helpers/application_helper.rb
> +++ b/server/lib/deltacloud/helpers/application_helper.rb
> @@ -1,5 +1,4 @@
> -#
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> @@ -17,6 +16,7 @@
>   # under the License.
>
>   # Methods added to this helper will be available to all templates in the application.
> +
>   module ApplicationHelper
>
>     def bread_crumb
> diff --git a/server/lib/deltacloud/helpers/conversion_helper.rb b/server/lib/deltacloud/helpers/conversion_helper.rb
> index e96f9b7..d553253 100644
> --- a/server/lib/deltacloud/helpers/conversion_helper.rb
> +++ b/server/lib/deltacloud/helpers/conversion_helper.rb
> @@ -1,5 +1,4 @@
> -#
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/helpers/hardware_profiles_helper.rb b/server/lib/deltacloud/helpers/hardware_profiles_helper.rb
> index ff7f239..a394e9f 100644
> --- a/server/lib/deltacloud/helpers/hardware_profiles_helper.rb
> +++ b/server/lib/deltacloud/helpers/hardware_profiles_helper.rb
> @@ -1,3 +1,20 @@
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
> +
>   module HardwareProfilesHelper
>
>     def format_hardware_property(prop)
> diff --git a/server/lib/deltacloud/method_serializer.rb b/server/lib/deltacloud/method_serializer.rb
> index 45660c5..c0031bb 100644
> --- a/server/lib/deltacloud/method_serializer.rb
> +++ b/server/lib/deltacloud/method_serializer.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009,2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/models/base_model.rb b/server/lib/deltacloud/models/base_model.rb
> index bf2a4d2..2c0901e 100644
> --- a/server/lib/deltacloud/models/base_model.rb
> +++ b/server/lib/deltacloud/models/base_model.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/models/blob.rb b/server/lib/deltacloud/models/blob.rb
> index 44c209d..dfa67fe 100644
> --- a/server/lib/deltacloud/models/blob.rb
> +++ b/server/lib/deltacloud/models/blob.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> @@ -17,10 +17,12 @@
>   # under the License.
>
>   class Blob<  BaseModel
> +
>     #already has an id from basemodel (for the key)
>     attr_accessor :bucket
>     attr_accessor :content_length
>     attr_accessor :content_type
>     attr_accessor :last_modified
>     attr_accessor :content
> +
>   end
> diff --git a/server/lib/deltacloud/models/bucket.rb b/server/lib/deltacloud/models/bucket.rb
> index 95ead24..1a68c5c 100644
> --- a/server/lib/deltacloud/models/bucket.rb
> +++ b/server/lib/deltacloud/models/bucket.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> @@ -21,4 +21,5 @@ class Bucket<  BaseModel
>     attr_accessor :name
>     attr_accessor :size
>     attr_accessor :blob_list
> +
>   end
> diff --git a/server/lib/deltacloud/models/image.rb b/server/lib/deltacloud/models/image.rb
> index f921235..6a98657 100644
> --- a/server/lib/deltacloud/models/image.rb
> +++ b/server/lib/deltacloud/models/image.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> @@ -16,7 +16,6 @@
>   # License for the specific language governing permissions and limitations
>   # under the License.
>
> -
>   class Image<  BaseModel
>
>     attr_accessor :name
> @@ -24,4 +23,4 @@ class Image<  BaseModel
>     attr_accessor :description
>     attr_accessor :architecture
>
> -end
> \ No newline at end of file
> +end
> diff --git a/server/lib/deltacloud/models/instance.rb b/server/lib/deltacloud/models/instance.rb
> index 0167331..38419e9 100644
> --- a/server/lib/deltacloud/models/instance.rb
> +++ b/server/lib/deltacloud/models/instance.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> @@ -16,7 +16,6 @@
>   # License for the specific language governing permissions and limitations
>   # under the License.
>
> -
>   class Instance<  BaseModel
>
>     attr_accessor :owner_id
> diff --git a/server/lib/deltacloud/models/instance_profile.rb b/server/lib/deltacloud/models/instance_profile.rb
> index 05e80c6..4e0ce74 100644
> --- a/server/lib/deltacloud/models/instance_profile.rb
> +++ b/server/lib/deltacloud/models/instance_profile.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> @@ -18,6 +18,7 @@
>
>   # Model to store the hardware profile applied to an instance together with
>   # any instance-specific overrides
> +
>   class InstanceProfile<  BaseModel
>     attr_accessor :memory
>     attr_accessor :storage
> diff --git a/server/lib/deltacloud/models/key.rb b/server/lib/deltacloud/models/key.rb
> index 22a69a6..b902ede 100644
> --- a/server/lib/deltacloud/models/key.rb
> +++ b/server/lib/deltacloud/models/key.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010 Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/models/load_balancer.rb b/server/lib/deltacloud/models/load_balancer.rb
> index 546a25f..439b073 100644
> --- a/server/lib/deltacloud/models/load_balancer.rb
> +++ b/server/lib/deltacloud/models/load_balancer.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/models/realm.rb b/server/lib/deltacloud/models/realm.rb
> index a4c49e9..a7f008a 100644
> --- a/server/lib/deltacloud/models/realm.rb
> +++ b/server/lib/deltacloud/models/realm.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/models/storage_snapshot.rb b/server/lib/deltacloud/models/storage_snapshot.rb
> index 0c3448b..01702d6 100644
> --- a/server/lib/deltacloud/models/storage_snapshot.rb
> +++ b/server/lib/deltacloud/models/storage_snapshot.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/models/storage_volume.rb b/server/lib/deltacloud/models/storage_volume.rb
> index 5e9e948..0673f85 100644
> --- a/server/lib/deltacloud/models/storage_volume.rb
> +++ b/server/lib/deltacloud/models/storage_volume.rb
> @@ -1,5 +1,5 @@
>   #
> -# Copyright (C) 2009  Red Hat, Inc.
> +# Copyright (C) 2009, 2010  Red Hat, Inc.
>   #
>   # Licensed to the Apache Software Foundation (ASF) under one or more
>   # contributor license agreements.  See the NOTICE file distributed with
> diff --git a/server/lib/deltacloud/state_machine.rb b/server/lib/deltacloud/state_machine.rb
> index 9c4f7ba..8812276 100644
> --- a/server/lib/deltacloud/state_machine.rb
> +++ b/server/lib/deltacloud/state_machine.rb
> @@ -1,3 +1,20 @@
> +#
> +# Copyright (C) 2009,2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
>
>   module Deltacloud
>     class StateMachine
> diff --git a/server/lib/deltacloud/validation.rb b/server/lib/deltacloud/validation.rb
> index b4eb3ae..18e71cc 100644
> --- a/server/lib/deltacloud/validation.rb
> +++ b/server/lib/deltacloud/validation.rb
> @@ -1,3 +1,21 @@
> +#
> +# Copyright (C) 2009,2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
> +
>   module Deltacloud::Validation
>
>     class Failure<  StandardError
> diff --git a/server/lib/drivers.rb b/server/lib/drivers.rb
> index 6e31bb7..83bdebd 100644
> --- a/server/lib/drivers.rb
> +++ b/server/lib/drivers.rb
> @@ -1,3 +1,21 @@
> +#
> +# Copyright (C) 2009,2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
> +
>   DRIVERS = {
>     :ec2 =>  { :name =>  "EC2" },
>     :rackspace =>  { :name =>  "Rackspace" },
> diff --git a/server/libexec/app/views/api/show.html.erb b/server/libexec/app/views/api/show.html.erb
> deleted file mode 100644
> index 33a9d77..0000000
> --- a/server/libexec/app/views/api/show.html.erb
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -<h1>API v<%= @version %></h1>
> -
> -<ul>
> -<% for entry_point in @entry_points %>
> -<li><%= link_to entry_point[0], entry_point[1] %></li>
> -<% end %>
> -</ul>
> diff --git a/server/libexec/app/views/layouts/application.html.erb b/server/libexec/app/views/layouts/application.html.erb
> deleted file mode 100644
> index 2b05901..0000000
> --- a/server/libexec/app/views/layouts/application.html.erb
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
> -
> -<html>
> -<head>
> -<title>Deltacloud Foundation</title>
> -<%= stylesheet_link_tag '/yui/reset-fonts-grids/reset-fonts-grids.css' %>
> -<%= stylesheet_link_tag 'application.css' %>
> -</head>
> -
> -<body>
> -<div id="doc" class="yui-t2">
> -<div id="hd">
> -<%= link_to image_tag( "logo-wide.png" ), root_url %>
> -<%= bread_crumb -%>
> -</div>
> -<div id="bd">
> -<div id="yui-main">
> -<div id="content">
> -<%= yield %>
> -</div>
> -</div>
> -</div>
> -<div id="ft">
> -<div style="float: right; text-align: right; font-size: 90%;">
> -          Driver:<%= DRIVER %><br/>
> -          Copyright 2009<%= link_to 'Red Hat', 'http://redhat.com' %>  <br />
> -</div>
> -</div>
> -</div>
> -</body>
> -</html>
> diff --git a/server/libexec/app/views/layouts/old.html.erb b/server/libexec/app/views/layouts/old.html.erb
> deleted file mode 100644
> index 78fcbc3..0000000
> --- a/server/libexec/app/views/layouts/old.html.erb
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
> -
> -<html>
> -<head>
> -<title>Deltacloud Foundation</title>
> -<%= stylesheet_link_tag '/yui/reset-fonts-grids/reset-fonts-grids.css' %>
> -<%= stylesheet_link_tag 'application.css' %>
> -</head>
> -
> -<body>
> -<div id="doc" class="yui-t2">
> -<div id="hd">
> -<%= link_to image_tag( "logo-wide.png" ), root_url %>
> -<%= bread_crumb -%>
> -</div>
> -<div id="bd">
> -<div id="yui-main">
> -<div id="content">
> -<%= yield %>
> -</div>
> -</div>
> -</div>
> -<div id="ft">
> -<div style="float: right; text-align: right; font-size: 90%;">
> -          Driver:<%= DRIVER %><br/>
> -          Copyright 2009<%= link_to 'Red Hat', 'http://redhat.com' %>  and individual contributors.<br />
> -</div>
> -</div>
> -</div>
> -</body>
> -</html>
> diff --git a/server/libexec/public/stylesheets/application.css b/server/libexec/public/stylesheets/application.css
> deleted file mode 100644
> index 2ea2ce6..0000000
> --- a/server/libexec/public/stylesheets/application.css
> +++ /dev/null
> @@ -1,96 +0,0 @@
> -html {
> -  background-color: white; }
> -
> -body {
> -  font-family: "Trebuchet MS"; }
> -  body a {
> -    color: #441111; }
> -
> -#hd {
> -  padding: 1em;
> -  background-image: url('/images/topbar-bg.png');
> -  margin-bottom: 2em; }
> -  #hd img {
> -    margin-bottom: 1em; }
> -
> -#bd {
> -  margin-bottom: 2em; }
> -
> -
> -#bd h1 {
> -  font-size: 160%;
> -  margin-bottom: 1ex; }
> -#bd h2 {
> -  font-size: 140%;
> -  margin-bottom: 1ex; }
> -#bd h3 {
> -  font-size: 120%;
> -  margin-bottom: 1ex; }
> -#bd dl {
> -  font-size: 90%;
> -  margin-bottom: 1em; }
> -  #bd dl di {
> -    display: block;
> -    margin-bottom: 1em; }
> -    #bd dl di dt, #bd dl di dd {
> -      padding: .5ex; }
> -    #bd dl di dt {
> -      font-weight: bold;
> -      background-color: #cccccc; }
> -    #bd dl di dd {
> -      padding-left: 1em;
> -      background-color: #eeeeee; }
> -#bd ul li {
> -  list-style-type: square;
> -  margin-left: 1em; }
> -#bd em {
> -  font-style: italic; }
> -
> -ul.breadcrumb {
> -  background-color: #eee;
> -  border: 1px solid #46A;
> -  padding: 1ex; }
> -  ul.breadcrumb li {
> -    display: inline; }
> -    ul.breadcrumb li.subsequent:before {
> -      content: ">>  "; }
> -
> -table {
> -  width: 100%; }
> -  table th, table td {
> -    padding: .5ex;
> -    font-size: 90%; }
> -  table th {
> -    font-weight: bold;
> -    background-color: #cccccc; }
> -  table td {
> -    background-color: #eeeeee; }
> -
> -table.states tr {
> -  border-bottom: 1px solid #bbbbbb; }
> -table.states th, table.states td {
> -  vertical-align: top; }
> -
> -.radio-group {
> -  font-size: 90%;
> -  margin-bottom: 1em;
> -  background-color: #cccccc; }
> -  .radio-group label {
> -    font-weight: bold; }
> -
> -.radio-group-details {
> -  font-weight: normal;
> -  display: block;
> -  padding-left: 1em;
> -  background-color: #eeeeee;
> -  padding: 1ex; }
> -
> -input[type='radio'] {
> -  margin-top: 1ex;
> -  margin-left: 1ex;
> -  margin-bottom: 1ex; }
> -
> -#state_graph {
> -  display: block;
> -  margin-bottom: 2em;
> -  text-align: center; }
> diff --git a/server/libexec/public/stylesheets/sass/application.sass b/server/libexec/public/stylesheets/sass/application.sass
> deleted file mode 100644
> index a36bd48..0000000
> --- a/server/libexec/public/stylesheets/sass/application.sass
> +++ /dev/null
> @@ -1,109 +0,0 @@
> -!main_bg = #ffffff
> -
> -!th_bg = #cccccc
> -!td_bg = #eeeeee
> -
> -html
> -  :background-color = !main_bg
> -
> -body
> -  :font-family "Trebuchet MS"
> -  a
> -    :color = #411
> -
> -#hd
> -  :padding 1em
> -  :background-image url('/images/topbar-bg.png')
> -  :margin-bottom 2em
> -  img
> -    :margin-bottom 1em
> -
> -#bd
> -  :margin-bottom 2em
> -
> -#ft
> -
> -#bd
> -  h1
> -    :font-size     160%
> -    :margin-bottom 1ex
> -  h2
> -    :font-size     140%
> -    :margin-bottom 1ex
> -  h3
> -    :font-size     120%
> -    :margin-bottom 1ex
> -  dl
> -    :font-size 90%
> -    :margin-bottom 1em
> -    di
> -      :display block
> -      :margin-bottom 1em
> -      dt, dd
> -        :padding .5ex
> -      dt
> -        :font-weight bold
> -        :background-color = !th_bg
> -      dd
> -        :padding-left 1em
> -        :background-color = !td_bg
> -  ul
> -    li
> -      :list-style-type square
> -      :margin-left 1em
> -
> -  em
> -    :font-style italic
> -
> -
> -ul.breadcrumb
> -  :background-color #eee
> -  :border 1px solid #46A
> -  :padding 1ex
> -  li
> -    :display inline
> -
> -&.subsequent:before
> -      content: ">>  "
> -
> -table
> -  :width 100%
> -  th, td
> -    :padding .5ex
> -    :font-size 90%
> -  th
> -    :font-weight bold
> -    :background-color = !th_bg
> -  td
> -    :background-color = !td_bg
> -
> -table.states
> -  tr
> -    :border-bottom = 1px solid !th_bg - #111
> -  th, td
> -    :vertical-align top
> -
> -.radio-group
> -  :font-size 90%
> -  :margin-bottom 1em
> -  :background-color = !th_bg
> -  label
> -    :font-weight bold
> -
> -.radio-group-details
> -  :font-weight normal
> -  :display block
> -  :padding-left 1em
> -  :background-color = !td_bg
> -  :padding 1ex
> -
> -input[type='radio']
> -  :margin-top 1ex
> -  :margin-left 1ex
> -  :margin-bottom 1ex
> -
> -#state_graph
> -  :display block
> -  :margin-bottom 2em
> -  :text-align center
> -
> diff --git a/server/public/stylesheets/application.sass b/server/public/stylesheets/application.sass
> new file mode 100644
> index 0000000..a36bd48
> --- /dev/null
> +++ b/server/public/stylesheets/application.sass
> @@ -0,0 +1,109 @@
> +!main_bg = #ffffff
> +
> +!th_bg = #cccccc
> +!td_bg = #eeeeee
> +
> +html
> +  :background-color = !main_bg
> +
> +body
> +  :font-family "Trebuchet MS"
> +  a
> +    :color = #411
> +
> +#hd
> +  :padding 1em
> +  :background-image url('/images/topbar-bg.png')
> +  :margin-bottom 2em
> +  img
> +    :margin-bottom 1em
> +
> +#bd
> +  :margin-bottom 2em
> +
> +#ft
> +
> +#bd
> +  h1
> +    :font-size     160%
> +    :margin-bottom 1ex
> +  h2
> +    :font-size     140%
> +    :margin-bottom 1ex
> +  h3
> +    :font-size     120%
> +    :margin-bottom 1ex
> +  dl
> +    :font-size 90%
> +    :margin-bottom 1em
> +    di
> +      :display block
> +      :margin-bottom 1em
> +      dt, dd
> +        :padding .5ex
> +      dt
> +        :font-weight bold
> +        :background-color = !th_bg
> +      dd
> +        :padding-left 1em
> +        :background-color = !td_bg
> +  ul
> +    li
> +      :list-style-type square
> +      :margin-left 1em
> +
> +  em
> +    :font-style italic
> +
> +
> +ul.breadcrumb
> +  :background-color #eee
> +  :border 1px solid #46A
> +  :padding 1ex
> +  li
> +    :display inline
> +
> +&.subsequent:before
> +      content: ">>  "
> +
> +table
> +  :width 100%
> +  th, td
> +    :padding .5ex
> +    :font-size 90%
> +  th
> +    :font-weight bold
> +    :background-color = !th_bg
> +  td
> +    :background-color = !td_bg
> +
> +table.states
> +  tr
> +    :border-bottom = 1px solid !th_bg - #111
> +  th, td
> +    :vertical-align top
> +
> +.radio-group
> +  :font-size 90%
> +  :margin-bottom 1em
> +  :background-color = !th_bg
> +  label
> +    :font-weight bold
> +
> +.radio-group-details
> +  :font-weight normal
> +  :display block
> +  :padding-left 1em
> +  :background-color = !td_bg
> +  :padding 1ex
> +
> +input[type='radio']
> +  :margin-top 1ex
> +  :margin-left 1ex
> +  :margin-bottom 1ex
> +
> +#state_graph
> +  :display block
> +  :margin-bottom 2em
> +  :text-align center
> +
> diff --git a/server/server.rb b/server/server.rb
> index 5ccf9f6..8222f42 100644
> --- a/server/server.rb
> +++ b/server/server.rb
> @@ -1,14 +1,31 @@
> +#
> +# Copyright (C) 2009,2010  Red Hat, Inc.
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one or more
> +# contributor license agreements.  See the NOTICE file distributed with
> +# this work for additional information regarding copyright ownership.  The
> +# ASF licenses this file to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance with the
> +# License.  You may obtain a copy of the License at
> +#
> +#       http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
> +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
> +# License for the specific language governing permissions and limitations
> +# under the License.
> +
>   require 'sinatra'
> -require 'deltacloud'
> -require 'drivers'
> +require 'haml'
>   require 'json'
> +require 'deltacloud'
>   require 'sinatra/respond_to'
>   require 'sinatra/static_assets'
>   require 'sinatra/rabbit'
>   require 'sinatra/lazy_auth'
> -require 'erb'
> -require 'haml'
>   require 'open3'
> +require 'erb'
>   require 'lib/deltacloud/helpers/blob_stream'
>
>   configure do


Re: [PATCH core] Added ASF license header to files

Posted by Michal Fojtik <mf...@redhat.com>.
On 03/12/10 15:50 +0200, marios@redhat.com wrote:
>ACK (but reminder to fix it so you don't push the new ec2 driver [or 
>old one even])

Thanks Marios,

I rebased everything and removed 'new' driver stuff. Should be pushed
to master now.

   -- Michal

>
>On 23/11/10 17:00, mfojtik@redhat.com wrote:
>>From: Michal Fojtik<mf...@redhat.com>
>>
>>---
>>  server/config.ru                                   |   20 +-
>>  server/deltacloud.rb                               |   21 +-
>>  server/lib/deltacloud/backend_capability.rb        |   18 +
>>  server/lib/deltacloud/base_driver.rb               |    2 +-
>>  server/lib/deltacloud/drivers/ec2/ec2_driver.rb    |    3 +-
>>  .../lib/deltacloud/drivers/ec2/ec2_mock_driver.rb  |   18 +
>>  .../lib/deltacloud/drivers/ec2/old_ec2_driver.rb   |  546 ++++++++++++++++++++
>>  .../lib/deltacloud/drivers/gogrid/gogrid_client.rb |    1 -
>>  .../lib/deltacloud/drivers/gogrid/gogrid_driver.rb |    2 +-
>>  server/lib/deltacloud/drivers/gogrid/test.rb       |   13 -
>>  server/lib/deltacloud/drivers/mock/mock_driver.rb  |    2 +-
>>  .../drivers/rackspace/rackspace_client.rb          |    2 +-
>>  server/lib/deltacloud/hardware_profile.rb          |   17 +
>>  server/lib/deltacloud/helpers.rb                   |   18 +
>>  .../lib/deltacloud/helpers/application_helper.rb   |    4 +-
>>  server/lib/deltacloud/helpers/conversion_helper.rb |    3 +-
>>  .../deltacloud/helpers/hardware_profiles_helper.rb |   17 +
>>  server/lib/deltacloud/method_serializer.rb         |    2 +-
>>  server/lib/deltacloud/models/base_model.rb         |    2 +-
>>  server/lib/deltacloud/models/blob.rb               |    4 +-
>>  server/lib/deltacloud/models/bucket.rb             |    3 +-
>>  server/lib/deltacloud/models/image.rb              |    5 +-
>>  server/lib/deltacloud/models/instance.rb           |    3 +-
>>  server/lib/deltacloud/models/instance_profile.rb   |    3 +-
>>  server/lib/deltacloud/models/key.rb                |    2 +-
>>  server/lib/deltacloud/models/load_balancer.rb      |    2 +-
>>  server/lib/deltacloud/models/realm.rb              |    2 +-
>>  server/lib/deltacloud/models/storage_snapshot.rb   |    2 +-
>>  server/lib/deltacloud/models/storage_volume.rb     |    2 +-
>>  server/lib/deltacloud/state_machine.rb             |   17 +
>>  server/lib/deltacloud/validation.rb                |   18 +
>>  server/lib/drivers.rb                              |   18 +
>>  server/libexec/app/views/api/show.html.erb         |    7 -
>>  .../libexec/app/views/layouts/application.html.erb |   32 --
>>  server/libexec/app/views/layouts/old.html.erb      |   32 --
>>  server/libexec/public/stylesheets/application.css  |   96 ----
>>  .../public/stylesheets/sass/application.sass       |  109 ----
>>  server/public/stylesheets/application.sass         |  109 ++++
>>  server/server.rb                                   |   25 +-
>>  39 files changed, 881 insertions(+), 321 deletions(-)
>>  create mode 100644 server/lib/deltacloud/drivers/ec2/old_ec2_driver.rb
>>  delete mode 100644 server/lib/deltacloud/drivers/gogrid/test.rb
>>  delete mode 100644 server/libexec/app/views/api/show.html.erb
>>  delete mode 100644 server/libexec/app/views/layouts/application.html.erb
>>  delete mode 100644 server/libexec/app/views/layouts/old.html.erb
>>  delete mode 100644 server/libexec/public/stylesheets/application.css
>>  delete mode 100644 server/libexec/public/stylesheets/sass/application.sass
>>  create mode 100644 server/public/stylesheets/application.sass
>>
>>diff --git a/server/config.ru b/server/config.ru
>>index cb38ca8..74f659b 100644
>>--- a/server/config.ru
>>+++ b/server/config.ru
>>@@ -1,7 +1,25 @@
>>+#
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>+
>>  require 'rubygems'
>>-require 'sinatra'
>>
>>  $:.unshift File.join(File.dirname(__FILE__), '.')
>>
>>  require 'server.rb'
>>+
>>  run Sinatra::Application
>>diff --git a/server/deltacloud.rb b/server/deltacloud.rb
>>index 02d6c2e..516963e 100644
>>--- a/server/deltacloud.rb
>>+++ b/server/deltacloud.rb
>>@@ -1,6 +1,25 @@
>>-# Add ./lib into load path
>>+#
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>+
>>  $:.unshift File.join(File.dirname(__FILE__), 'lib')
>>
>>+require 'drivers'
>>+
>>  require 'deltacloud/base_driver'
>>  require 'deltacloud/hardware_profile'
>>  require 'deltacloud/state_machine'
>>diff --git a/server/lib/deltacloud/backend_capability.rb b/server/lib/deltacloud/backend_capability.rb
>>index bec8714..ba37e1e 100644
>>--- a/server/lib/deltacloud/backend_capability.rb
>>+++ b/server/lib/deltacloud/backend_capability.rb
>>@@ -1,3 +1,21 @@
>>+#
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>+
>>  module Deltacloud::BackendCapability
>>
>>    class Failure<  StandardError
>>diff --git a/server/lib/deltacloud/base_driver.rb b/server/lib/deltacloud/base_driver.rb
>>index b540562..fcec3a7 100644
>>--- a/server/lib/deltacloud/base_driver.rb
>>+++ b/server/lib/deltacloud/base_driver.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
>>index 45f2e01..51e34ce 100644
>>--- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
>>+++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>@@ -16,7 +16,6 @@
>>  # License for the specific language governing permissions and limitations
>>  # under the License.
>>
>>-
>>  require 'deltacloud/base_driver'
>>  require 'active_support'
>>  require 'AWS'
>>diff --git a/server/lib/deltacloud/drivers/ec2/ec2_mock_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_mock_driver.rb
>>index 1c63ff6..6a9c051 100644
>>--- a/server/lib/deltacloud/drivers/ec2/ec2_mock_driver.rb
>>+++ b/server/lib/deltacloud/drivers/ec2/ec2_mock_driver.rb
>>@@ -1,3 +1,21 @@
>>+#
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>+
>>  module RightAws
>>    class MockEc2
>>
>>diff --git a/server/lib/deltacloud/drivers/ec2/old_ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/old_ec2_driver.rb
>>new file mode 100644
>>index 0000000..9b37069
>>--- /dev/null
>>+++ b/server/lib/deltacloud/drivers/ec2/old_ec2_driver.rb
>>@@ -0,0 +1,546 @@
>>+#
>>+# Copyright (C) 2009  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>+
>>+
>>+require 'deltacloud/base_driver'
>>+require 'active_support'
>>+require 'AWS'
>>+require 'right_aws'
>>+
>>+class Instance
>>+  attr_accessor :keyname
>>+  attr_accessor :authn_error
>>+
>>+  def authn_feature_failed?
>>+    return true unless authn_error.nil?
>>+  end
>>+
>>+end
>>+
>>+module Deltacloud
>>+  module Drivers
>>+    module EC2
>>+class EC2Driver<  Deltacloud::BaseDriver
>>+
>>+  def supported_collections
>>+    DEFAULT_COLLECTIONS + [ :keys, :buckets ]
>>+  end
>>+
>>+  feature :instances, :user_data
>>+  feature :instances, :authentication_key
>>+  feature :images, :owner_id
>>+  feature :buckets, :bucket_location
>>+
>>+  define_hardware_profile('m1.small') do
>>+    cpu                1
>>+    memory             1.7 * 1024
>>+    storage            160
>>+    architecture       'i386'
>>+  end
>>+
>>+  define_hardware_profile('m1.large') do
>>+    cpu                4
>>+    memory             7.5 * 1024
>>+    storage            850
>>+    architecture       'x86_64'
>>+  end
>>+
>>+  define_hardware_profile('m1.xlarge') do
>>+    cpu                8
>>+    memory             15 * 1024
>>+    storage            1690
>>+    architecture       'x86_64'
>>+  end
>>+
>>+  define_hardware_profile('c1.medium') do
>>+    cpu                5
>>+    memory             1.7 * 1024
>>+    storage            350
>>+    architecture       'i386'
>>+  end
>>+
>>+  define_hardware_profile('c1.xlarge') do
>>+    cpu                20
>>+    memory             7 * 1024
>>+    storage            1690
>>+    architecture       'x86_64'
>>+  end
>>+
>>+  define_hardware_profile('m2.xlarge') do
>>+    cpu                6.5
>>+    memory             17.1 * 1024
>>+    storage            420
>>+    architecture       'x86_64'
>>+  end
>>+
>>+  define_hardware_profile('m2.2xlarge') do
>>+    cpu                13
>>+    memory             34.2 * 1024
>>+    storage            850
>>+    architecture       'x86_64'
>>+  end
>>+
>>+  define_hardware_profile('m2.4xlarge') do
>>+    cpu                26
>>+    memory             68.4 * 1024
>>+    storage            1690
>>+    architecture       'x86_64'
>>+  end
>>+
>>+  define_instance_states do
>>+    start.to( :pending )          .automatically
>>+    pending.to( :running )        .automatically
>>+    pending.to( :stopping )       .on( :stop )
>>+    pending.to( :stopped )        .automatically
>>+    stopped.to( :running )        .on( :start )
>>+    running.to( :running )        .on( :reboot )
>>+    running.to( :stopping )       .on( :stop )
>>+    shutting_down.to( :stopped )  .automatically
>>+    stopped.to( :finish )         .automatically
>>+  end
>>+
>>+  #
>>+  # Images
>>+  #
>>+
>>+  def images(credentials, opts={} )
>>+    ec2 = new_client(credentials)
>>+    img_arr = []
>>+    # if we know the image_id, we don't want to limit by owner_id, since this
>>+    # will exclude public images
>>+    if (opts and opts[:id])
>>+      config = { :image_id =>  opts[:id] }
>>+    else
>>+      config = { :owner_id =>  "amazon" }
>>+      config.merge!({ :owner_id =>  opts[:owner_id] }) if opts and opts[:owner_id]
>>+    end
>>+    safely do
>>+      image_set = ec2.describe_images(config).imagesSet
>>+      unless image_set.nil?
>>+        image_set.item.each do |image|
>>+          img_arr<<  convert_image(image)
>>+        end
>>+      end
>>+    end
>>+    img_arr = filter_on( img_arr, :architecture, opts )
>>+    img_arr.sort_by{|e| [e.owner_id, e.name]}
>>+  end
>>+
>>+  #
>>+  # Realms
>>+  #
>>+
>>+  def realms(credentials, opts=nil)
>>+    ec2 = new_client(credentials)
>>+    realms = []
>>+    safely do
>>+      ec2.describe_availability_zones.availabilityZoneInfo.item.each do |ec2_realm|
>>+        realms<<  convert_realm( ec2_realm )
>>+      end
>>+    end
>>+    realms
>>+  end
>>+
>>+  #
>>+  # Instances
>>+  #
>>+  def instances(credentials, opts=nil)
>>+    ec2 = new_client(credentials)
>>+    instances = []
>>+    safely do
>>+      param = opts.nil? ? nil : opts[:id]
>>+      ec2_instances = ec2.describe_instances.reservationSet
>>+      return [] unless ec2_instances
>>+      ec2_instances.item.each do |item|
>>+        item.instancesSet.item.each do |ec2_instance|
>>+          instances<<  convert_instance( ec2_instance, item.ownerId )
>>+        end
>>+      end
>>+    end
>>+    instances = filter_on( instances, :id, opts )
>>+    instances = filter_on( instances, :state, opts )
>>+    instances
>>+  end
>>+
>>+
>>+  def create_instance(credentials, image_id, opts)
>>+    ec2 = new_client( credentials )
>>+    realm_id = opts[:realm_id]
>>+    safely do
>>+      image = image(credentials, :id =>  image_id )
>>+      hwp = find_hardware_profile(credentials, opts[:hwp_id], image.id)
>>+      ec2_instances = ec2.run_instances(
>>+        :image_id =>  image.id,
>>+        :user_data =>  opts[:user_data],
>>+        :key_name =>  opts[:keyname],
>>+        :availability_zone =>  realm_id,
>>+        :monitoring_enabled =>  true,
>>+        :instance_type =>  hwp.name,
>>+        :disable_api_termination =>  false,
>>+        :instance_initiated_shutdown_behavior =>  'terminate'
>>+      )
>>+      return convert_instance( ec2_instances.instancesSet.item.first, 'pending' )
>>+    end
>>+  end
>>+
>>+  def generate_instance(ec2, id, backup)
>>+    begin
>>+      this_instance = ec2.describe_instances( :instance_id =>  id ).reservationSet.item.first.instancesSet.item.first
>>+      convert_instance(this_instance, this_instance.ownerId)
>>+    rescue Exception =>  e
>>+      puts "WARNING: ignored error during instance refresh: #{e.message}"
>>+      # at this point, the action has succeeded but our follow-up
>>+      # "describe_instances" failed for some reason.  Create a simple Instance
>>+      # object with only the ID and new state in place
>>+      state = convert_state(backup.instancesSet.item.first.currentState.name)
>>+      Instance.new( {
>>+        :id =>  id,
>>+        :state =>  state,
>>+        :actions =>  instance_actions_for( state ),
>>+      } )
>>+    end
>>+  end
>>+
>>+  def reboot_instance(credentials, id)
>>+    ec2 = new_client(credentials)
>>+    backup = ec2.reboot_instances( :instance_id =>  id )
>>+
>>+    generate_instance(ec2, id, backup)
>>+  end
>>+
>>+  def stop_instance(credentials, id)
>>+    ec2 = new_client(credentials)
>>+    backup = ec2.terminate_instances( :instance_id =>  id )
>>+
>>+    generate_instance(ec2, id, backup)
>>+  end
>>+
>>+  def destroy_instance(credentials, id)
>>+    ec2 = new_client(credentials)
>>+    backup = ec2.terminate_instances( :instance_id =>  id )
>>+
>>+    generate_instance(ec2, id, backup)
>>+  end
>>+
>>+  #
>>+  # Storage Volumes
>>+  #
>>+
>>+  def storage_volumes(credentials, opts=nil)
>>+    ec2 = new_client( credentials )
>>+    volumes = []
>>+    safely do
>>+      if (opts)
>>+        ec2.describe_volumes(:volume_id =>  opts[:id]).volumeSet.item.each do |ec2_volume|
>>+          volumes<<  convert_volume( ec2_volume )
>>+        end
>>+      else
>>+        ec2_volumes = ec2.describe_volumes.volumeSet
>>+        return [] unless ec2_volumes
>>+        ec2_volumes.item.each do |ec2_volume|
>>+          volumes<<  convert_volume( ec2_volume )
>>+        end
>>+      end
>>+    end
>>+    volumes
>>+  end
>>+
>>+  #
>>+  # Storage Snapshots
>>+  #
>>+
>>+  def storage_snapshots(credentials, opts=nil)
>>+    ec2 = new_client( credentials )
>>+    snapshots = []
>>+    safely do
>>+      if (opts)
>>+        ec2.describe_snapshots(:owner =>  'self', :snapshot_id =>  opts[:id]).snapshotSet.item.each do |ec2_snapshot|
>>+          snapshots<<  convert_snapshot( ec2_snapshot )
>>+        end
>>+      else
>>+        ec2_snapshots = ec2.describe_snapshots(:owner =>  'self').snapshotSet
>>+        return [] unless ec2_snapshots
>>+        ec2_snapshots.item.each do |ec2_snapshot|
>>+          snapshots<<  convert_snapshot( ec2_snapshot )
>>+        end
>>+      end
>>+    end
>>+    snapshots
>>+  end
>>+
>>+  def key(credentials, opts=nil)
>>+    keys(credentials, opts).first
>>+  end
>>+
>>+  def keys(credentials, opts=nil)
>>+    ec2 = new_client( credentials )
>>+    opts[:key_name] = opts[:id] if opts and opts[:id]
>>+    keypairs = ec2.describe_keypairs(opts || {})
>>+    result = []
>>+    safely do
>>+      keypairs.keySet.item.each do |keypair|
>>+        result<<  convert_key(keypair)
>>+      end
>>+    end
>>+    result
>>+  end
>>+
>>+  def create_key(credentials, opts={})
>>+    key = Key.new
>>+    ec2 = new_client( credentials )
>>+    safely do
>>+      key = convert_key(ec2.create_keypair(opts))
>>+    end
>>+    return key
>>+  end
>>+
>>+  def destroy_key(credentials, opts={})
>>+    safely do
>>+      ec2 = new_client( credentials )
>>+      ec2.delete_keypair(opts)
>>+    end
>>+  end
>>+
>>+  def valid_credentials?(credentials)
>>+    client = new_client(credentials)
>>+    # FIXME: We need to do this call to determine if
>>+    #        EC2 is working with given credentials. There is no
>>+    #        other way to check, if given credentials are valid or not.
>>+    realms = client.describe_availability_zones rescue false
>>+    return realms ? true : false
>>+  end
>>+
>>+#--
>>+# Buckets
>>+#-- get a list of your buckets from the s3 service
>>+  def buckets(credentials, opts)
>>+    buckets = []
>>+    safely do
>>+      s3_client = s3_client(credentials)
>>+      bucket_list = s3_client.buckets
>>+      bucket_list.each do |current|
>>+        buckets<<  convert_bucket(current)
>>+      end
>>+    end
>>+    buckets = filter_on(buckets, :id, opts)
>>+    buckets
>>+  end
>>+
>>+#--
>>+# Create bucket
>>+#--
>>+#valid values for bucket location: 'EU'|'us-west1'|'ap-southeast-1' - if you
>>+#don't specify a location then by default buckets are created in 'us-east'
>>+#[but if you *do* specify 'us-east' things blow up]
>>+  def create_bucket(credentials, name, opts={})
>>+    bucket = nil
>>+    safely do
>>+      begin
>>+        s3_client = s3_client(credentials)
>>+        bucket_location = opts['location']
>>+        if bucket_location
>>+          bucket = RightAws::S3::Bucket.create(s3_client, name, true, nil, :location =>  bucket_location)
>>+        else
>>+          bucket = RightAws::S3::Bucket.create(s3_client, name, true)
>>+        end #if
>>+        rescue RightAws::AwsError =>  e
>>+          raise e unless e.message =~ /BucketAlreadyExists/
>>+          raise Deltacloud::BackendError.new(409, e.class.to_s, e.message, e.backtrace)
>>+      end #begin
>>+    end #do
>>+    convert_bucket(bucket)
>>+  end
>>+
>>+#--
>>+# Delete_bucket
>>+#--
>>+  def delete_bucket(credentials, name, opts={})
>>+    s3_client = s3_client(credentials)
>>+    safely do
>>+      s3_client.interface.delete_bucket(name)
>>+    end
>>+  end
>>+
>>+#--
>>+# Blobs
>>+#--
>>+  def blobs(credentials, opts = nil)
>>+    s3_client = s3_client(credentials)
>>+    blobs = []
>>+    safely do
>>+      s3_bucket = s3_client.bucket(opts['bucket'])
>>+      s3_bucket.keys({}, true).each do |s3_object|
>>+        blobs<<  convert_object(s3_object)
>>+      end
>>+    end
>>+    blobs = filter_on(blobs, :id, opts)
>>+    blobs
>>+  end
>>+
>>+#--
>>+# Blob data
>>+#--
>>+  def blob_data(credentials, bucket_id, blob_id, opts)
>>+    s3_client = s3_client(credentials)
>>+    s3_client.interface.get(bucket_id, blob_id) do |chunk|
>>+      yield chunk
>>+    end
>>+  end
>>+
>>+  private
>>+
>>+  def new_client(credentials)
>>+    opts = {
>>+      :access_key_id =>  credentials.user,
>>+      :secret_access_key =>  credentials.password
>>+    }
>>+    opts[:server] = ENV['DCLOUD_EC2_URL'] if ENV['DCLOUD_EC2_URL']
>>+    safely do
>>+      AWS::EC2::Base.new(opts)
>>+    end
>>+  end
>>+
>>+  def convert_key(key)
>>+    Key.new({
>>+      :id =>  key['keyName'],
>>+      :fingerprint =>  key['keyFingerprint'],
>>+      :credential_type =>  :key,
>>+      :pem_rsa_key =>  key['keyMaterial']
>>+    })
>>+  end
>>+
>>+  def convert_image(ec2_image)
>>+    Image.new( {
>>+      :id=>ec2_image['imageId'],
>>+      :name=>ec2_image['name'] || ec2_image['imageId'],
>>+      :description=>ec2_image['description'] || ec2_image['imageLocation'] || '',
>>+      :owner_id=>ec2_image['imageOwnerId'],
>>+      :architecture=>ec2_image['architecture'],
>>+    } )
>>+  end
>>+
>>+  def convert_realm(ec2_realm)
>>+    Realm.new( {
>>+      :id=>ec2_realm['zoneName'],
>>+      :name=>ec2_realm['zoneName'],
>>+      :limit=>ec2_realm['zoneState'].eql?('available') ? :unlimited : 0,
>>+      :state=>ec2_realm['zoneState'].upcase,
>>+    } )
>>+  end
>>+
>>+  def convert_state(ec2_state)
>>+    case ec2_state
>>+    when "terminated"
>>+      "STOPPED"
>>+    when "stopped"
>>+      "STOPPED"
>>+    when "running"
>>+      "RUNNING"
>>+    when "pending"
>>+      "PENDING"
>>+    when "shutting-down"
>>+      "STOPPED"
>>+    end
>>+  end
>>+
>>+  def convert_instance(ec2_instance, owner_id)
>>+    state = convert_state(ec2_instance['instanceState']['name'])
>>+    realm_id = ec2_instance['placement']['availabilityZone']
>>+    (realm_id = nil ) if ( realm_id == '' )
>>+    hwp_name = ec2_instance['instanceType']
>>+    instance = Instance.new( {
>>+      :id=>ec2_instance['instanceId'],
>>+      :name =>  ec2_instance['imageId'],
>>+      :state=>state,
>>+      :image_id=>ec2_instance['imageId'],
>>+      :owner_id=>owner_id,
>>+      :realm_id=>realm_id,
>>+      :public_addresses=>( ec2_instance['dnsName'] == '' ? [] : [ec2_instance['dnsName']] ),
>>+      :private_addresses=>( ec2_instance['privateDnsName'] == '' ? [] : [ec2_instance['privateDnsName']] ),
>>+      :instance_profile =>InstanceProfile.new(hwp_name),
>>+      :actions=>instance_actions_for( state ),
>>+      :keyname =>  ec2_instance['keyName'],
>>+      :launch_time =>  ec2_instance['launchTime']
>>+    } )
>>+    instance.authn_error = "Key not set for instance" unless ec2_instance['keyName']
>>+    return instance
>>+  end
>>+
>>+  def convert_volume(ec2_volume)
>>+    StorageVolume.new( {
>>+      :id=>ec2_volume['volumeId'],
>>+      :created=>ec2_volume['createTime'],
>>+      :state=>ec2_volume['status'].upcase,
>>+      :capacity=>ec2_volume['size'],
>>+      :instance_id=>ec2_volume['snapshotId'],
>>+      :device=>ec2_volume['attachmentSet'],
>>+    } )
>>+  end
>>+
>>+  def convert_snapshot(ec2_snapshot)
>>+    StorageSnapshot.new( {
>>+      :id=>ec2_snapshot['snapshotId'],
>>+      :state=>ec2_snapshot['status'].upcase,
>>+      :storage_volume_id=>ec2_snapshot['volumeId'],
>>+      :created=>ec2_snapshot['startTime'],
>>+    } )
>>+  end
>>+
>>+  def s3_client(credentials)
>>+    safely do
>>+      s3_client = RightAws::S3.new(credentials.user, credentials.password)
>>+    end
>>+  end
>>+
>>+  def convert_bucket(s3_bucket)
>>+    #get blob list:
>>+    blob_list = []
>>+    s3_bucket.keys.each do |s3_object|
>>+      blob_list<<  s3_object.name
>>+    end
>>+    #can use AWS::S3::Owner.current.display_name or current.id
>>+    Bucket.new(  { :id =>  s3_bucket.name,
>>+                      :name =>  s3_bucket.name,
>>+                      :size =>  s3_bucket.keys.length,
>>+                      :blob_list =>  blob_list
>>+                    }
>>+                 )
>>+  end
>>+
>>+  def convert_object(s3_object)
>>+    Blob.new({   :id =>  s3_object.name,
>>+                 :bucket =>  s3_object.bucket.name.to_s,
>>+                 :content_length =>  s3_object.size,
>>+                 :content_type =>  s3_object.content_type,
>>+                 :last_modified =>  s3_object.last_modified
>>+              })
>>+  end
>>+
>>+  def catched_exceptions_list
>>+    {
>>+      :auth =>  [ AWS::AuthFailure ],
>>+      :error =>  [],
>>+      :glob =>  [ /AWS::(\w+)/ ]
>>+    }
>>+  end
>>+
>>+end
>>+
>>+    end
>>+  end
>>+end
>>diff --git a/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb b/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb
>>index c463fa6..43da112 100644
>>--- a/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb
>>+++ b/server/lib/deltacloud/drivers/gogrid/gogrid_client.rb
>>@@ -1,7 +1,6 @@
>>  require 'digest/md5'
>>  require 'cgi'
>>  require 'open-uri'
>>-require 'json'
>>
>>  class GoGridClient
>>
>>diff --git a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
>>index fd8e756..7de34e2 100644
>>--- a/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
>>+++ b/server/lib/deltacloud/drivers/gogrid/gogrid_driver.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/drivers/gogrid/test.rb b/server/lib/deltacloud/drivers/gogrid/test.rb
>>deleted file mode 100644
>>index 809081d..0000000
>>--- a/server/lib/deltacloud/drivers/gogrid/test.rb
>>+++ /dev/null
>>@@ -1,13 +0,0 @@
>>-require 'gogrid_client'
>>-require 'ap'
>>-
>>-user='fbb1de3897597ccf'
>>-password='ngieth10'
>>-
>>-client=GoGridClient.new('https://api.gogrid.com/api', user, password)
>>-
>>-ap client.request('grid/ip/list', {
>>-  'ip.type' =>  '1',
>>-  'ip.state' =>  '1',
>>-  'datacenter' =>  '1'
>>-})
>>diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb b/server/lib/deltacloud/drivers/mock/mock_driver.rb
>>index e1b9e0a..2ef289f 100644
>>--- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
>>+++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/drivers/rackspace/rackspace_client.rb b/server/lib/deltacloud/drivers/rackspace/rackspace_client.rb
>>index 3d42a06..d803302 100644
>>--- a/server/lib/deltacloud/drivers/rackspace/rackspace_client.rb
>>+++ b/server/lib/deltacloud/drivers/rackspace/rackspace_client.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/hardware_profile.rb b/server/lib/deltacloud/hardware_profile.rb
>>index 62aca33..9ba235a 100644
>>--- a/server/lib/deltacloud/hardware_profile.rb
>>+++ b/server/lib/deltacloud/hardware_profile.rb
>>@@ -1,3 +1,20 @@
>>+#
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>
>>  module Deltacloud
>>    class HardwareProfile
>>diff --git a/server/lib/deltacloud/helpers.rb b/server/lib/deltacloud/helpers.rb
>>index 0765962..6cae81c 100644
>>--- a/server/lib/deltacloud/helpers.rb
>>+++ b/server/lib/deltacloud/helpers.rb
>>@@ -1,3 +1,21 @@
>>+#
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>+
>>  require 'deltacloud/helpers/application_helper'
>>  require 'deltacloud/helpers/conversion_helper'
>>  require 'deltacloud/helpers/hardware_profiles_helper'
>>diff --git a/server/lib/deltacloud/helpers/application_helper.rb b/server/lib/deltacloud/helpers/application_helper.rb
>>index 00e8bc9..ead4c58 100644
>>--- a/server/lib/deltacloud/helpers/application_helper.rb
>>+++ b/server/lib/deltacloud/helpers/application_helper.rb
>>@@ -1,5 +1,4 @@
>>-#
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>@@ -17,6 +16,7 @@
>>  # under the License.
>>
>>  # Methods added to this helper will be available to all templates in the application.
>>+
>>  module ApplicationHelper
>>
>>    def bread_crumb
>>diff --git a/server/lib/deltacloud/helpers/conversion_helper.rb b/server/lib/deltacloud/helpers/conversion_helper.rb
>>index e96f9b7..d553253 100644
>>--- a/server/lib/deltacloud/helpers/conversion_helper.rb
>>+++ b/server/lib/deltacloud/helpers/conversion_helper.rb
>>@@ -1,5 +1,4 @@
>>-#
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/helpers/hardware_profiles_helper.rb b/server/lib/deltacloud/helpers/hardware_profiles_helper.rb
>>index ff7f239..a394e9f 100644
>>--- a/server/lib/deltacloud/helpers/hardware_profiles_helper.rb
>>+++ b/server/lib/deltacloud/helpers/hardware_profiles_helper.rb
>>@@ -1,3 +1,20 @@
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>+
>>  module HardwareProfilesHelper
>>
>>    def format_hardware_property(prop)
>>diff --git a/server/lib/deltacloud/method_serializer.rb b/server/lib/deltacloud/method_serializer.rb
>>index 45660c5..c0031bb 100644
>>--- a/server/lib/deltacloud/method_serializer.rb
>>+++ b/server/lib/deltacloud/method_serializer.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/models/base_model.rb b/server/lib/deltacloud/models/base_model.rb
>>index bf2a4d2..2c0901e 100644
>>--- a/server/lib/deltacloud/models/base_model.rb
>>+++ b/server/lib/deltacloud/models/base_model.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/models/blob.rb b/server/lib/deltacloud/models/blob.rb
>>index 44c209d..dfa67fe 100644
>>--- a/server/lib/deltacloud/models/blob.rb
>>+++ b/server/lib/deltacloud/models/blob.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>@@ -17,10 +17,12 @@
>>  # under the License.
>>
>>  class Blob<  BaseModel
>>+
>>    #already has an id from basemodel (for the key)
>>    attr_accessor :bucket
>>    attr_accessor :content_length
>>    attr_accessor :content_type
>>    attr_accessor :last_modified
>>    attr_accessor :content
>>+
>>  end
>>diff --git a/server/lib/deltacloud/models/bucket.rb b/server/lib/deltacloud/models/bucket.rb
>>index 95ead24..1a68c5c 100644
>>--- a/server/lib/deltacloud/models/bucket.rb
>>+++ b/server/lib/deltacloud/models/bucket.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>@@ -21,4 +21,5 @@ class Bucket<  BaseModel
>>    attr_accessor :name
>>    attr_accessor :size
>>    attr_accessor :blob_list
>>+
>>  end
>>diff --git a/server/lib/deltacloud/models/image.rb b/server/lib/deltacloud/models/image.rb
>>index f921235..6a98657 100644
>>--- a/server/lib/deltacloud/models/image.rb
>>+++ b/server/lib/deltacloud/models/image.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>@@ -16,7 +16,6 @@
>>  # License for the specific language governing permissions and limitations
>>  # under the License.
>>
>>-
>>  class Image<  BaseModel
>>
>>    attr_accessor :name
>>@@ -24,4 +23,4 @@ class Image<  BaseModel
>>    attr_accessor :description
>>    attr_accessor :architecture
>>
>>-end
>>\ No newline at end of file
>>+end
>>diff --git a/server/lib/deltacloud/models/instance.rb b/server/lib/deltacloud/models/instance.rb
>>index 0167331..38419e9 100644
>>--- a/server/lib/deltacloud/models/instance.rb
>>+++ b/server/lib/deltacloud/models/instance.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>@@ -16,7 +16,6 @@
>>  # License for the specific language governing permissions and limitations
>>  # under the License.
>>
>>-
>>  class Instance<  BaseModel
>>
>>    attr_accessor :owner_id
>>diff --git a/server/lib/deltacloud/models/instance_profile.rb b/server/lib/deltacloud/models/instance_profile.rb
>>index 05e80c6..4e0ce74 100644
>>--- a/server/lib/deltacloud/models/instance_profile.rb
>>+++ b/server/lib/deltacloud/models/instance_profile.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>@@ -18,6 +18,7 @@
>>
>>  # Model to store the hardware profile applied to an instance together with
>>  # any instance-specific overrides
>>+
>>  class InstanceProfile<  BaseModel
>>    attr_accessor :memory
>>    attr_accessor :storage
>>diff --git a/server/lib/deltacloud/models/key.rb b/server/lib/deltacloud/models/key.rb
>>index 22a69a6..b902ede 100644
>>--- a/server/lib/deltacloud/models/key.rb
>>+++ b/server/lib/deltacloud/models/key.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010 Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/models/load_balancer.rb b/server/lib/deltacloud/models/load_balancer.rb
>>index 546a25f..439b073 100644
>>--- a/server/lib/deltacloud/models/load_balancer.rb
>>+++ b/server/lib/deltacloud/models/load_balancer.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/models/realm.rb b/server/lib/deltacloud/models/realm.rb
>>index a4c49e9..a7f008a 100644
>>--- a/server/lib/deltacloud/models/realm.rb
>>+++ b/server/lib/deltacloud/models/realm.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/models/storage_snapshot.rb b/server/lib/deltacloud/models/storage_snapshot.rb
>>index 0c3448b..01702d6 100644
>>--- a/server/lib/deltacloud/models/storage_snapshot.rb
>>+++ b/server/lib/deltacloud/models/storage_snapshot.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/models/storage_volume.rb b/server/lib/deltacloud/models/storage_volume.rb
>>index 5e9e948..0673f85 100644
>>--- a/server/lib/deltacloud/models/storage_volume.rb
>>+++ b/server/lib/deltacloud/models/storage_volume.rb
>>@@ -1,5 +1,5 @@
>>  #
>>-# Copyright (C) 2009  Red Hat, Inc.
>>+# Copyright (C) 2009, 2010  Red Hat, Inc.
>>  #
>>  # Licensed to the Apache Software Foundation (ASF) under one or more
>>  # contributor license agreements.  See the NOTICE file distributed with
>>diff --git a/server/lib/deltacloud/state_machine.rb b/server/lib/deltacloud/state_machine.rb
>>index 9c4f7ba..8812276 100644
>>--- a/server/lib/deltacloud/state_machine.rb
>>+++ b/server/lib/deltacloud/state_machine.rb
>>@@ -1,3 +1,20 @@
>>+#
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>
>>  module Deltacloud
>>    class StateMachine
>>diff --git a/server/lib/deltacloud/validation.rb b/server/lib/deltacloud/validation.rb
>>index b4eb3ae..18e71cc 100644
>>--- a/server/lib/deltacloud/validation.rb
>>+++ b/server/lib/deltacloud/validation.rb
>>@@ -1,3 +1,21 @@
>>+#
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>+
>>  module Deltacloud::Validation
>>
>>    class Failure<  StandardError
>>diff --git a/server/lib/drivers.rb b/server/lib/drivers.rb
>>index 6e31bb7..83bdebd 100644
>>--- a/server/lib/drivers.rb
>>+++ b/server/lib/drivers.rb
>>@@ -1,3 +1,21 @@
>>+#
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>+
>>  DRIVERS = {
>>    :ec2 =>  { :name =>  "EC2" },
>>    :rackspace =>  { :name =>  "Rackspace" },
>>diff --git a/server/libexec/app/views/api/show.html.erb b/server/libexec/app/views/api/show.html.erb
>>deleted file mode 100644
>>index 33a9d77..0000000
>>--- a/server/libexec/app/views/api/show.html.erb
>>+++ /dev/null
>>@@ -1,7 +0,0 @@
>>-<h1>API v<%= @version %></h1>
>>-
>>-<ul>
>>-<% for entry_point in @entry_points %>
>>-<li><%= link_to entry_point[0], entry_point[1] %></li>
>>-<% end %>
>>-</ul>
>>diff --git a/server/libexec/app/views/layouts/application.html.erb b/server/libexec/app/views/layouts/application.html.erb
>>deleted file mode 100644
>>index 2b05901..0000000
>>--- a/server/libexec/app/views/layouts/application.html.erb
>>+++ /dev/null
>>@@ -1,32 +0,0 @@
>>-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
>>-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
>>-
>>-<html>
>>-<head>
>>-<title>Deltacloud Foundation</title>
>>-<%= stylesheet_link_tag '/yui/reset-fonts-grids/reset-fonts-grids.css' %>
>>-<%= stylesheet_link_tag 'application.css' %>
>>-</head>
>>-
>>-<body>
>>-<div id="doc" class="yui-t2">
>>-<div id="hd">
>>-<%= link_to image_tag( "logo-wide.png" ), root_url %>
>>-<%= bread_crumb -%>
>>-</div>
>>-<div id="bd">
>>-<div id="yui-main">
>>-<div id="content">
>>-<%= yield %>
>>-</div>
>>-</div>
>>-</div>
>>-<div id="ft">
>>-<div style="float: right; text-align: right; font-size: 90%;">
>>-          Driver:<%= DRIVER %><br/>
>>-          Copyright 2009<%= link_to 'Red Hat', 'http://redhat.com' %>  <br />
>>-</div>
>>-</div>
>>-</div>
>>-</body>
>>-</html>
>>diff --git a/server/libexec/app/views/layouts/old.html.erb b/server/libexec/app/views/layouts/old.html.erb
>>deleted file mode 100644
>>index 78fcbc3..0000000
>>--- a/server/libexec/app/views/layouts/old.html.erb
>>+++ /dev/null
>>@@ -1,32 +0,0 @@
>>-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
>>-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
>>-
>>-<html>
>>-<head>
>>-<title>Deltacloud Foundation</title>
>>-<%= stylesheet_link_tag '/yui/reset-fonts-grids/reset-fonts-grids.css' %>
>>-<%= stylesheet_link_tag 'application.css' %>
>>-</head>
>>-
>>-<body>
>>-<div id="doc" class="yui-t2">
>>-<div id="hd">
>>-<%= link_to image_tag( "logo-wide.png" ), root_url %>
>>-<%= bread_crumb -%>
>>-</div>
>>-<div id="bd">
>>-<div id="yui-main">
>>-<div id="content">
>>-<%= yield %>
>>-</div>
>>-</div>
>>-</div>
>>-<div id="ft">
>>-<div style="float: right; text-align: right; font-size: 90%;">
>>-          Driver:<%= DRIVER %><br/>
>>-          Copyright 2009<%= link_to 'Red Hat', 'http://redhat.com' %>  and individual contributors.<br />
>>-</div>
>>-</div>
>>-</div>
>>-</body>
>>-</html>
>>diff --git a/server/libexec/public/stylesheets/application.css b/server/libexec/public/stylesheets/application.css
>>deleted file mode 100644
>>index 2ea2ce6..0000000
>>--- a/server/libexec/public/stylesheets/application.css
>>+++ /dev/null
>>@@ -1,96 +0,0 @@
>>-html {
>>-  background-color: white; }
>>-
>>-body {
>>-  font-family: "Trebuchet MS"; }
>>-  body a {
>>-    color: #441111; }
>>-
>>-#hd {
>>-  padding: 1em;
>>-  background-image: url('/images/topbar-bg.png');
>>-  margin-bottom: 2em; }
>>-  #hd img {
>>-    margin-bottom: 1em; }
>>-
>>-#bd {
>>-  margin-bottom: 2em; }
>>-
>>-
>>-#bd h1 {
>>-  font-size: 160%;
>>-  margin-bottom: 1ex; }
>>-#bd h2 {
>>-  font-size: 140%;
>>-  margin-bottom: 1ex; }
>>-#bd h3 {
>>-  font-size: 120%;
>>-  margin-bottom: 1ex; }
>>-#bd dl {
>>-  font-size: 90%;
>>-  margin-bottom: 1em; }
>>-  #bd dl di {
>>-    display: block;
>>-    margin-bottom: 1em; }
>>-    #bd dl di dt, #bd dl di dd {
>>-      padding: .5ex; }
>>-    #bd dl di dt {
>>-      font-weight: bold;
>>-      background-color: #cccccc; }
>>-    #bd dl di dd {
>>-      padding-left: 1em;
>>-      background-color: #eeeeee; }
>>-#bd ul li {
>>-  list-style-type: square;
>>-  margin-left: 1em; }
>>-#bd em {
>>-  font-style: italic; }
>>-
>>-ul.breadcrumb {
>>-  background-color: #eee;
>>-  border: 1px solid #46A;
>>-  padding: 1ex; }
>>-  ul.breadcrumb li {
>>-    display: inline; }
>>-    ul.breadcrumb li.subsequent:before {
>>-      content: ">>  "; }
>>-
>>-table {
>>-  width: 100%; }
>>-  table th, table td {
>>-    padding: .5ex;
>>-    font-size: 90%; }
>>-  table th {
>>-    font-weight: bold;
>>-    background-color: #cccccc; }
>>-  table td {
>>-    background-color: #eeeeee; }
>>-
>>-table.states tr {
>>-  border-bottom: 1px solid #bbbbbb; }
>>-table.states th, table.states td {
>>-  vertical-align: top; }
>>-
>>-.radio-group {
>>-  font-size: 90%;
>>-  margin-bottom: 1em;
>>-  background-color: #cccccc; }
>>-  .radio-group label {
>>-    font-weight: bold; }
>>-
>>-.radio-group-details {
>>-  font-weight: normal;
>>-  display: block;
>>-  padding-left: 1em;
>>-  background-color: #eeeeee;
>>-  padding: 1ex; }
>>-
>>-input[type='radio'] {
>>-  margin-top: 1ex;
>>-  margin-left: 1ex;
>>-  margin-bottom: 1ex; }
>>-
>>-#state_graph {
>>-  display: block;
>>-  margin-bottom: 2em;
>>-  text-align: center; }
>>diff --git a/server/libexec/public/stylesheets/sass/application.sass b/server/libexec/public/stylesheets/sass/application.sass
>>deleted file mode 100644
>>index a36bd48..0000000
>>--- a/server/libexec/public/stylesheets/sass/application.sass
>>+++ /dev/null
>>@@ -1,109 +0,0 @@
>>-!main_bg = #ffffff
>>-
>>-!th_bg = #cccccc
>>-!td_bg = #eeeeee
>>-
>>-html
>>-  :background-color = !main_bg
>>-
>>-body
>>-  :font-family "Trebuchet MS"
>>-  a
>>-    :color = #411
>>-
>>-#hd
>>-  :padding 1em
>>-  :background-image url('/images/topbar-bg.png')
>>-  :margin-bottom 2em
>>-  img
>>-    :margin-bottom 1em
>>-
>>-#bd
>>-  :margin-bottom 2em
>>-
>>-#ft
>>-
>>-#bd
>>-  h1
>>-    :font-size     160%
>>-    :margin-bottom 1ex
>>-  h2
>>-    :font-size     140%
>>-    :margin-bottom 1ex
>>-  h3
>>-    :font-size     120%
>>-    :margin-bottom 1ex
>>-  dl
>>-    :font-size 90%
>>-    :margin-bottom 1em
>>-    di
>>-      :display block
>>-      :margin-bottom 1em
>>-      dt, dd
>>-        :padding .5ex
>>-      dt
>>-        :font-weight bold
>>-        :background-color = !th_bg
>>-      dd
>>-        :padding-left 1em
>>-        :background-color = !td_bg
>>-  ul
>>-    li
>>-      :list-style-type square
>>-      :margin-left 1em
>>-
>>-  em
>>-    :font-style italic
>>-
>>-
>>-ul.breadcrumb
>>-  :background-color #eee
>>-  :border 1px solid #46A
>>-  :padding 1ex
>>-  li
>>-    :display inline
>>-
>>-&.subsequent:before
>>-      content: ">>  "
>>-
>>-table
>>-  :width 100%
>>-  th, td
>>-    :padding .5ex
>>-    :font-size 90%
>>-  th
>>-    :font-weight bold
>>-    :background-color = !th_bg
>>-  td
>>-    :background-color = !td_bg
>>-
>>-table.states
>>-  tr
>>-    :border-bottom = 1px solid !th_bg - #111
>>-  th, td
>>-    :vertical-align top
>>-
>>-.radio-group
>>-  :font-size 90%
>>-  :margin-bottom 1em
>>-  :background-color = !th_bg
>>-  label
>>-    :font-weight bold
>>-
>>-.radio-group-details
>>-  :font-weight normal
>>-  :display block
>>-  :padding-left 1em
>>-  :background-color = !td_bg
>>-  :padding 1ex
>>-
>>-input[type='radio']
>>-  :margin-top 1ex
>>-  :margin-left 1ex
>>-  :margin-bottom 1ex
>>-
>>-#state_graph
>>-  :display block
>>-  :margin-bottom 2em
>>-  :text-align center
>>-
>>diff --git a/server/public/stylesheets/application.sass b/server/public/stylesheets/application.sass
>>new file mode 100644
>>index 0000000..a36bd48
>>--- /dev/null
>>+++ b/server/public/stylesheets/application.sass
>>@@ -0,0 +1,109 @@
>>+!main_bg = #ffffff
>>+
>>+!th_bg = #cccccc
>>+!td_bg = #eeeeee
>>+
>>+html
>>+  :background-color = !main_bg
>>+
>>+body
>>+  :font-family "Trebuchet MS"
>>+  a
>>+    :color = #411
>>+
>>+#hd
>>+  :padding 1em
>>+  :background-image url('/images/topbar-bg.png')
>>+  :margin-bottom 2em
>>+  img
>>+    :margin-bottom 1em
>>+
>>+#bd
>>+  :margin-bottom 2em
>>+
>>+#ft
>>+
>>+#bd
>>+  h1
>>+    :font-size     160%
>>+    :margin-bottom 1ex
>>+  h2
>>+    :font-size     140%
>>+    :margin-bottom 1ex
>>+  h3
>>+    :font-size     120%
>>+    :margin-bottom 1ex
>>+  dl
>>+    :font-size 90%
>>+    :margin-bottom 1em
>>+    di
>>+      :display block
>>+      :margin-bottom 1em
>>+      dt, dd
>>+        :padding .5ex
>>+      dt
>>+        :font-weight bold
>>+        :background-color = !th_bg
>>+      dd
>>+        :padding-left 1em
>>+        :background-color = !td_bg
>>+  ul
>>+    li
>>+      :list-style-type square
>>+      :margin-left 1em
>>+
>>+  em
>>+    :font-style italic
>>+
>>+
>>+ul.breadcrumb
>>+  :background-color #eee
>>+  :border 1px solid #46A
>>+  :padding 1ex
>>+  li
>>+    :display inline
>>+
>>+&.subsequent:before
>>+      content: ">>  "
>>+
>>+table
>>+  :width 100%
>>+  th, td
>>+    :padding .5ex
>>+    :font-size 90%
>>+  th
>>+    :font-weight bold
>>+    :background-color = !th_bg
>>+  td
>>+    :background-color = !td_bg
>>+
>>+table.states
>>+  tr
>>+    :border-bottom = 1px solid !th_bg - #111
>>+  th, td
>>+    :vertical-align top
>>+
>>+.radio-group
>>+  :font-size 90%
>>+  :margin-bottom 1em
>>+  :background-color = !th_bg
>>+  label
>>+    :font-weight bold
>>+
>>+.radio-group-details
>>+  :font-weight normal
>>+  :display block
>>+  :padding-left 1em
>>+  :background-color = !td_bg
>>+  :padding 1ex
>>+
>>+input[type='radio']
>>+  :margin-top 1ex
>>+  :margin-left 1ex
>>+  :margin-bottom 1ex
>>+
>>+#state_graph
>>+  :display block
>>+  :margin-bottom 2em
>>+  :text-align center
>>+
>>diff --git a/server/server.rb b/server/server.rb
>>index 5ccf9f6..8222f42 100644
>>--- a/server/server.rb
>>+++ b/server/server.rb
>>@@ -1,14 +1,31 @@
>>+#
>>+# Copyright (C) 2009,2010  Red Hat, Inc.
>>+#
>>+# Licensed to the Apache Software Foundation (ASF) under one or more
>>+# contributor license agreements.  See the NOTICE file distributed with
>>+# this work for additional information regarding copyright ownership.  The
>>+# ASF licenses this file to you under the Apache License, Version 2.0 (the
>>+# "License"); you may not use this file except in compliance with the
>>+# License.  You may obtain a copy of the License at
>>+#
>>+#       http://www.apache.org/licenses/LICENSE-2.0
>>+#
>>+# Unless required by applicable law or agreed to in writing, software
>>+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
>>+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
>>+# License for the specific language governing permissions and limitations
>>+# under the License.
>>+
>>  require 'sinatra'
>>-require 'deltacloud'
>>-require 'drivers'
>>+require 'haml'
>>  require 'json'
>>+require 'deltacloud'
>>  require 'sinatra/respond_to'
>>  require 'sinatra/static_assets'
>>  require 'sinatra/rabbit'
>>  require 'sinatra/lazy_auth'
>>-require 'erb'
>>-require 'haml'
>>  require 'open3'
>>+require 'erb'
>>  require 'lib/deltacloud/helpers/blob_stream'
>>
>>  configure do
>

-- 
--------------------------------------------------------
Michal Fojtik, mfojtik@redhat.com
Deltacloud API: http://deltacloud.org
--------------------------------------------------------