def describe_instances(id=nil)
      begin
        @describe_instances = ec2.describe_instances.reservationSet.item.map do |r|
          r.instancesSet.item.map do |i|
            inst_options = i.merge(r.merge(:cloud => cloud)).merge(cloud.cloud_provider.dsl_options)
            Ec2Instance.new(inst_options)
          end
        end.flatten
      rescue AWS::InvalidClientTokenId => e # AWS credentials invalid
        puts "Error contacting AWS: #{e}"
        raise e
      rescue Exception => e
        []
      end
    end
def describe_instances(id=nil)
      begin
        @describe_instances = ec2.describe_instances.reservationSet.item.map do |r|
          r.instancesSet.item.map do |i|
            inst_options = i.merge(r.merge(:cloud => cloud)).merge(cloud.cloud_provider.dsl_options)
            Ec2Instance.new(inst_options)
          end
        end.flatten
      rescue AWS::InvalidClientTokenId => e # AWS credentials invalid
        puts "Error contacting AWS: #{e}"
        raise e
      rescue Exception => e
        []
      end
    end
Describe instances
 Describe the instances that are available on this cloud
 @params id (optional) if present, details about the instance
 with the id given will be returned
 if not given, details for all instances will be returned