                                   -*- coding: utf-8 -*-

Changes with Apache Libcloud 0.12.4:

 *) Compute

    - Fix a regression in Softlayer driver caused by the xmlrpclib changes.
      (LIBCLOUD-310)
      [Jason Johnson]

    - Allow user to pass alternate ssh usernames to deploy_node
      (ssh_alternate_usernames kwarg) which are used for authentication if the
      default one doesn't work. (LIBCLOUD-309)
      [Chris Psaltis, Tomaz Muraus]

    - Fix a bug in EC2 list_locations method - 'name' attribute didn't contain a
      the right value.
      [Tomaz Muraus]

    - Add new ScriptFileDeployment deployment class which reads deploy script
      from a file.
      [Rudolf J Streif]

    - Add support for API version 5.1 to the vCloud driver and accept any value
      which is a multiple of four for ex_vm_memory kwarg in create_node method.
      (LIBCLOUD-314)
      [Trevor Powell]

 *) Storage

    - Fix a regression with removed ex_force_service_region constructor kwarg in
      the CloudFiles driver. (LIBCLOUD-260)

Changes with Apache Libcloud 0.12.3:

  *) General

    - Fix Python 3.x related regressions. (LIBCLOUD-245)
      Reported by Arfrever Frehtes Taifersar Arahesis.
      [Tomaz Muraus]

    - Fix a regression introduced with recent xmlrpiclib changes which broke all
      the Gandi.net drivers. (LIBCLOUD-288)

      Reported by Hutson Betts.
      [Tomaz Muraus]

    - Improve deploy code to work correctly if the ssh user doesn't have access
      to the /root directory.

      Previously the ScriptDeployment script was stored in /root folder by
      default. Now it's stored in users home directory under filename
      ~/libcloud_deploymeny_<random>.sh. (LIBCLOUD-302)

      Reported by rotem on #libcloud.
      [Tomaz Muraus]

  *) Compute

    - Improve public and private IP address handling in OpenStack 1.1 driver.
      Assume every IP address which doesn't have a label "public" or "internet"
      is private. (LIBCLOUD-297)
      [Grischa Meyer, Tomaz Muraus]

    - Add new driver for DigitalOcean provider - https://www.digitalocean.com/.
      (LIBCLOUD-304)
      [Tomaz Muraus]

    - Fix a regression in ParamikoSSHClient.run method which caused this methid
      to only work as expected if you passed an absolute or a relative path to
      the script to it. (LIBCLOUD-278)
      [Tomaz Muraus]

  *) DNS

    - Allow user to specify 'priority' extra argument when creating a MX or SRV
      record.
      [Brian Jinwright, Tomaz Muraus]

Changes with Apache Libcloud 0.12.1:

  *) General

    - Deprecate LazyList method of iteration over large paginated collections
      and use a new, more efficient generator based approach which doesn't
      require the iterator to be pre-exhausted and buffering all of the values
      in memory.

      Existing list_* methods which previously used LazyList class are
      preserving the old behavior and new iterate_* methods which use a new
      generator based approach have been added. (LIBCLOUD-254)
      [Mahendra M]

    - Replace old ENUM style provider constants and replace them with a string
      version.
      This change allows users to dynamically register new drivers using a new
      set_driver method. (LIBCLOUD-255)
      [Mahendra M]

    - Allow user to explicitly specify which CA file is used for verifying
      the server certificate by setting 'SSL_CERT_FILE' environment variable.

      Note: When this variable is specified, the specified path is the only
      CA file which is used to verifying the server certificate. (LIBCLOUD-283)
      [Tomaz Muraus, Erinn Looney-Triggs]

    - Add a common module (libcloud.common.xmlrpc) for handling XML-RPC
      requests using Libcloud http layer.

      Also refactor existing drivers which use xmlrpclib directly (VCL, Gandi,
      Softlayer) to use this module.

      This change allows drivers to support LIBCLOUD_DEBUG and SSL certificate
      validation functionality. Previously they have bypassed Libcloud http
      layer so this functionality was not available. (LIBCLOUD-288)
      [John Carr]

  *) Compute

    - Fix string interpolation bug in __repr__ methods in the IBM SCE driver.
      (LIBCLOUD-242)
      [Tomaz Muraus]

    - Fix test failures which happened in Python 3.3 due to:
      - hash randomization
      - changes in xml.etree module
      - changes in xmlrpc module
      (LIBCLOUD-245)
      [Tomaz Muraus]

    - Improvements and additions in vCloud driver:
      - Expose generic query method (ex_query)
      - Provide functionality to get and set control access for vApps. This way
        created vApps can be shared between users/groups or everyone.
     (LIBCLOUD-251)
     [Michal Galet]

   - Update EC2 pricing data to reflect new, lower prices -
     http://aws.typepad.com/aws/2012/10/new-ec2-second-generation-standard-instances-and-price-reductions-1.html
     [Tomaz Muraus]

   - Update EC2 instance size to reflect new m3 instance types. Also refactor
     the code to make it easier to maintain.
     [Tomaz Muraus]

   - Add a new driver for HostVirtual (http://www.vr.org) provider.
     (LIBCLOUD-249)
     [Dinesh Bhoopathy]

   - Fix a bug where a numeric instead of a string value was used for the
     content-length header in VCloud driver. (LIBCLOUD-256)
     [Brian DeGeeter, Tomaz Muraus]

   - Add a new driver for new Asia Pacific (Sydney) EC2 region.
     [Tomaz Muraus]

   - Add support for managing security groups to the OpenStack driver. This
     patch adds the following extension methods:
     - ex_list_security_groups, ex_get_node_security_groups methods
     - ex_create_security_group, ex_delete_security_group
     - ex_create_security_group_rule, ex_delete_security_group_rule
     (LIBCLOUD-253)
     [L. Schaub]

   - Modify ElasticStack driver class to pass 'vnc auto' instead of
     'vnc:ip auto' argument to the API when creating a server.
     It looks like 'vnc:ip' has been replaced with 'vnc'.
     [Rick Copeland, Tomaz Muraus]

   - Add new EC2 instance type - High Storage Eight Extra Large Instance
     (hs1.8xlarge).
     [Tomaz Muraus]

   - Map 'shutting-down' node state in EC2 driver to UNKNOWN. Previously
     it was mapped to TERMINATED. (LIBCLOUD-280)

     Note: This change is backward incompatible which means you need to update
     your code if you rely on the old behavior.
     [Tomaz Muraus, Marcin Kuzminski]

   - Change _wait_until_running method so it supports waiting on multiple nodes
     and make it public (wait_until_running). (LIBCLOUD-274)
     [Nick Bailey]

   - Add new EC2 instance type - High Memory Cluster Eight Extra Large.
     (cr1.8xlarge).
     [Tomaz Muraus]

   - Add new driver for Abiquo provider - http://www.abiquo.com (LIBCLOUD-250).
     [Jaume Devesa]

   - Allow user to pass 'ex_blockdevicemappings' kwarg to the EC2 driver
     'create_node' method. (LIBCLOUD-282)
     [Joe Miller, Tomaz Muraus]

   - Improve error handling in the Brightbox driver.
     [Tomaz Muraus]

   - Fix the ScriptDeployment step to work correctly if user provides a
     relative path for the script argument. (LIBCLOUD-278)
     [Jaume Devesa]

   - Fix Softlayer driver and make sure all the code is up to date and works
     with the latest version of the actual Softlayer deployment (v3).
     (LIBCLOUD-287)
     [Kevin McDonald]

   - Update EC2 driver, m3 instance types are now available in all the regions
     except Brazil.

     Also update pricing to reflect new (decreased) prices.
     [Tomaz Muraus]

   - Minor improvements in the HostVirtual driver and add new ex_get_node and
     ex_build_node extension method. (LIBCLOUD-249)
     [Dinesh Bhoopathy]

   - Add ex_destroy_image method to IBM SCE driver. (LIBCLOUD-291)
     [Perry Zou]

   - Add the following new regions to the ElasticHosts driver: sjc-c, syd-v,
     hkg-e. (LIBCLOUD-293)
     [Tomaz Muraus]

   - Fix create_node in OpenStack driver to work correctly if 'adminPass'
     attribute is not present in the response.
     [Gavin McCance, Tomaz Muraus]

   - Allow users to filter images returned by the list_images method in the EC2
     driver by providing ex_image_ids argument. (LIBCLOUD-294)
     [Chris Psaltis, Joseph Hall]

   - Add support for OpenNebula 3.8. (LIBCLOUD-295)
     [Guillaume ZITTA]

   - Add missing 'deletd' -> terminated mapping to OpenStack driver.
     (LIBCLOUD-276)
     [Jayyy V]

   - Fix create_node in OpenStack driver to work correctly if 'adminPass'
     attribute is not present in the response. (LIBCLOUD-292)
     [Gavin McCance, Tomaz Muraus]

  *) Storage

    - Add a new local storage driver.
      (LIBCLOUD-252, LIBCLOUD-258, LIBCLOUD-265, LIBCLOUD-273)
      [Mahendra M]

    - Fix a bug which caused the connection to not be closed when using Python
      2.6 and calling get_object on an object which doesn't exist in the S3
      driver. (LIBCLOUD-257)
      [John Carr]

    - Add a new generator based method for listing / iterating over the
      containers (iterate_containers). (LIBCLOUD-261)
      [Mahendra M]

    - Add ex_purge_object_from_cdn method to the CloudFiles driver.
      (LIBCLOUD-267)
      [Tomaz Muraus]

    - Support for multipart uploads and other improvements in the S3 driver
      so it can more easily be re-used with other implementations (e.g. Google
      Storage, etc.).

      Also default to a multipart upload when using upload_object_via_stream.
      This methods is more efficient compared to old approach because it only
      requires buffering a single multipart chunk (5 MB) in memory.
      (LIBCLOUD-269)
      [Mahendra M]

    - Add new driver for Windows Azure Storage with support for block and page
      blobs. (LIBCLOUD-80)
      [Mahendra M]

  *) DNS

    - Update 'if type' checks in the update_record methods to behave correctly
      if users passes in RecordType.A with a value of 0 - if type is not None.
      (LIBCLOUD-247)
      [Tomaz Muraus]

    - New driver for HostVirtual provider (www.vr.org). (LIBCLOUD-249)
      [Dinesh Bhoopathy]

    - Finish Amazon Route53 driver. (LIBCLOUD-132)
      [John Carr]

    - Add new driver for Gandi provider (https://www.gandi.net). (LIBCLOUD-281)
      [John Carr]

  *) Load-Balancer

    - Add new driver for AWS Elastic Load Balancing service. (LIBCLOUD-169)
      [John Carr]

Changes with Apache Libcloud 0.11.4:

  *) General

    - Fix some of tests failures which happened in Python 3.3 due to randomized
      dictionary ordering. (LIBCLOUD-245)
      [Tomaz Muraus]

  *) Compute

    - Fix a bug where a numeric instead of a string value was used for the
      content-length header in VCloud driver. (LIBCLOUD-256)
      [Brian DeGeeter, Tomaz Muraus]

  *) Storage

    - Don't ignore ex_force_service_region argument in the CloudFiles driver.
      (LIBCLOUD-260)
      [Dan Di Spaltro]

    - Fix a bug which caused the connection to not be closed when using Python
      2.6 and calling get_object on an object which doesn't exist in the S3
      driver. (LIBCLOUD-257)
      [John Carr]

  *) DNS

    - Update 'if type' checks in the update_record methods to behave correctly
      if users passes in RecordType.A with a value of 0 - if type is not None.
      (LIBCLOUD-247)
      [Tomaz Muraus]

Changes with Apache Libcloud 0.11.3:

  *) Storage

    - Include 'last_modified' and 'content_type' attribute in the Object
      'extra' dictionary when retrieving object using get_object in the S3
      driver. Also modify 'meta_data' dictionary to include all the headers
      prefixed with 'x-amz-meta-'.
      [Tomaz Muraus]

Changes with Apache Libcloud 0.11.2:

  *) General

    Fix a bug with the Libcloud SSL verification code. Code was too strict and
    didn't allow "-" character in the sub-domain when using a wildcard
    certificate.

    Note: This is NOT a security vulnerability. (LIBCLOUD-244)
    [Tomaz Muraus]

  *) Compute

    - Add new Rackspace Nova driver for Chicago (ORD) location (LIBCLOUD-234)
      [Brian McDaniel]

    - Add capacity information to Vdc objects and implement power operations.
      (LIBCLOUD-239)
      [Michal Galet]

    - Allow user to pass 'timeout' argument to the 'deploy_node' method.
      [Tomaz Muraus]

    - Add ex_list_security_groups, ex_authorize_security_group and
      ex_describe_all_keypairs methods to the EC2 driver. (LIBCLOUD-241,
      LIBCLOUD-243)
      [Nick Bailey]

    - Add new methods for managing storage volumes and other extenstion methods
      to the IBM SCE driver. (LIBCLOUD-242)
      [Sengor Kusturica]

  *) Storage

    - Add the following new methods to the CloudFiles driver:
      ex_set_account_metadata_temp_url_key, ex_get_object_temp_url. (GITHUB-72)
      [Shawn Smith]

  *) Load-balancer

    - Add 'balancer' attribute to the Member instance. This attribute refers to
      the LoadBalancer instance this member belongs to.
      [Tomaz Muraus]

Changes with Apache Libcloud 0.11.1:

  *) General

    - Fix hostname validation in the SSL verification code (CVE-2012-3446).

      Reported by researchers from the University of Texas at Austin (Martin
      Georgiev, Suman Jana and Vitaly Shmatikov).

Changes with Apache Libcloud 0.11.0:

  *) Compute

    - Add a timeout of 10 seconds to OpenStackAuthConnection class.
      (LIBCLOUD-199)
      [Chris Gilmer]

    - Add time.sleep(wait_period) to _ssh_client_connect to prevent busy loops
      when we immediately can't connect to a server. (LIBCLOUD-197)
      [Jay Doane]

    - Fix a bug with Python 3 support in the following drivers
      - IBM SCE,
      - CloudStack
      - CloudSigma
      - OpenNebula
      - VpsNet
      - EC2
      - ElasticStack
      - vCloud
      - OpSource
      - Slicehost
      - Joyent
      (LIBCLOUD-204)
      [Sengor Kusturica, Hutson Betts, Tomaz Muraus]

    - Make CloudStack driver more robust and make it work if list_images() call
      returns no images. (LIBCLOUD-202)
      [Gabriel Reid]

    - Add force_ipv4 argument to _wait_until_running and default it to True.
      This will make Libcloud ignore IPv6 addresses when using deploy_node.
      [Jay Doane, Tomaz muraus]

    - Include error text if a CloudStack async job returns an error code.
      (LIBCLOUD-207)
      [Gabriel Reid]

    - Add extenstion methods for block storage volume management to the
      CloudStack driver. (LIBCLOUD-208)
      [Gabriel Reid]

    - New driver for KT UCloud (http://home.ucloud.olleh.com/main.kt) based on
      the CloudStack driver.
      [DaeMyung Kang]

    - Add a standard API and methods for managing storage volumes to the
      EC2 and CloudStack drivers. Base API consistent of the following methods:
      create_volume, destroy_volume, attach_volume, detach_volume.
      (LIBCLOUD-213)
      [Gabriel Reid]

    - Change ex_describe_tags, ex_create_tags and ex_delete_tags methods
      signature in the EC2 driver. Argument is now called resource (previously
      it was called node). This methods work with both Node and StorageVolume
      objects. (LIBCLOUD-213)
      [Gabriel Reid, Tomaz Muraus]

    - Add Rackspace Nova London driver.
      [Chris Gilmer]

    - Fix a bug - If user doesn't pass in 'network_id' argument to the
      create_node method in the CloudStack driver, don't explicitly define it.
      (LIBCLOUD-219)
      [Bruno Mahé, Tomaz Muraus]

    - Modify EC2 driver to also return cc2.8xlarge cluster compute instance in
      the eu-west-1 region.
      [Tomaz Muraus]

    - Add 'auth_user_variable' to the  OpenStackAuthConnection class.
      [Mark Everett]

    - Fix a bug with repeated URLs in some requests the vCloud driver.
      (LIBCLOUD-222)
      [Michal Galet]

    - New Gridspot driver with basic list and destroy functionality.
      (LIBCLOUD-223)
      [Amir Elaguizy]

    - Add methods for managing storage volumes to the Gandi driver.
      (LIBCLOUD-225)
      [Aymeric Barantal]

  *) DNS

    - Add support for GEO RecordType to Zerigo driver. (LIBCLOUD-203)
      [Gary Wilson]

    - Fix a bug with Python 3 support in the following drivers (LIBCLOUD-204)
      - Zerigo
      [Tomaz Muraus]

    - Add support for URL RecordType to Zerigo driver. (LIBCLOUD-209)
      [Bojan Mihelac]

    - Properly handle record creation when user doesn't provider a record name
      and wants to create a record for the actual domain.
      Reported by Matt Perry (LIBCLOUD-224)
      [Tomaz Muraus]

  *) Storage

    - Fix a bug with Python 3 support in the following drivers
      - Atmos
      - Google Storage
      - Amazon S3
      (LIBCLOUD-204)
      [Tomaz Muraus]

    - Fix a bug in the CloudFiles driver which prevented it to work with
      accounts which use a non ORD endpoint. (LIBCLOUD-205)
      [Geoff Greer]

    - Fix a bug in the enable_container_cdn method. (LIBCLOUD-206)
      [Geoff Greer]

    - Allow user to specify container CDN TTL when calling container.enable_cd()
      using ex_ttl keyword argument in the CloudFiles driver.
      [Tomaz Muraus]

    - Add ex_enable_static_website and ex_set_error_page method to the
      CloudFiles driver.
      [Tomaz Muraus]

    - Propagate kwargs passed to container.download_object() to
      driver.download_object(). (LIBCLOUD-227)
      [Benno Rice]

    - Fix a bug with not escaping container and object name in the Atmos driver.
      [Russell Keith-Magee, Benno Rice]

    - Fix upload_object_via_stream method in the Atmos driver. (LIBCLOUD-228)
      [Benno Rice]

    - Fix a bug with uploading zero-sized files in the OpenStack Swift /
      CloudFiles driver.
      [Tomaz Muraus]

    - Fix a bug with content_type and and encoding of object and path names in
      the Atmos driver.
      [Russell Keith-Magee]

  *) Other:

    - Unify docstrings formatting in the compute drivers. (LIBCLOUD-229)
      [Ilgiz Islamgulov]

Changes with Apache Libcloud 0.10.1:

  *) General:

    - Add timeout attribute to base 'Connection' class and pass it to the
      connection class constructor if Python version is not 2.5.
      [Chris Gilmer]

  *) Compute:

    - Update IBM SBC driver so it works with IBM Smart Cloud Enterprise.
      (LIBCLOUD-195)
      [Sengor Kusturica]

    - Add ex_register_iso method to the CloudStack driver. (LIBCLOUD-196)
      [Daemian Mack]

    - Allow user to specify which IP to use when calling deploy_node.
      (defaults to 'public_ips'). Previously it only worked with public IP, now
      user can pass 'private_ips' as an argument and SSH client will try to
      connect to the node first private IP address.
      [Jay Doane]

    - Fix CloudSigmaLvsNodeDriver connectionCls bug.
      [Jerry Chen]

    - Add 'ex_keyname' argument to the create_node method in the OpenStack
      driver. (LIBCLOUD-177)
      [Jay Doane]

    - Fix a problem in deploy_node - make it work with providers which
      don't  instantly return created node in the list_node response.
      Also add __str__ and __repr__ method to DeploymentError so the
      error message is more useful. (LIBCLOUD-176)
      [Jouke Waleson, Tomaz Muraus]

    - Add 'ssh_key' feature to Brigthbox driver. This way it works with
      deploy_node. (LIBCLOUD-179)
      [Neil Wilson]

    - Add Joyent compute driver.
      [Tomaz Muraus]

    - Store auth token expire times on the connection class in the attribute
      called 'auth_token_expires'. (LIBCLOUD-178)
      [Chris Gilmer, Brad Morgan]

    - Add new driver for VCL cloud
      (http://www.educause.edu/blog/hes8/CloudComputingandtheVirtualCom/167931)
      (LIBCLOUD-180)
      [Jason Gionta, Tomaz Muraus]

    - Improve and add new features to Brightbox driver
        - Update fixtures to represent actual api output
        - Update compute tests to 100% coverage
        - Add userdata and server group extensions to create_node
        - Add ipv6 support to public ip list
        - Improve in line documentation
        - Add lots of api output information to Node and Image
          'extra' attributes
        - Allow variable API versions (api_version argument)
        - Allow reverse dns updates for cloud ip extensions
      (LIBCLOUD-184)
      [Neil Wilson, Tomaz Muraus]

    - Add ex_userdata argument to the OpenStack 1.1 driver. (LIBCLOUD-185)
      [Jay Doane]

    - Modify Vmware vCloud driver and implement new features
      for the vCloud version 1.5. (LIBCLOUD-183)
      [Michal Galet, Sengor Kusturica]

    - Allow user to pass mode argument to SSHClient.put method and default it to
      'w'. (LIBCLOUD-188)
      [Jay Doane]

    - Modify SSHKeyDeployment step to use append mode so it doesn't overwrite
      existing entries in .ssh/authorized_keys. (LIBCLOUD-187)
      [Jay Doane]

    - Modify ParamikoSSHClient to connect to the SSH agent and automatically
      look for private keys in ~/.ssh if the 'auth' and 'ssh_key' argument
      is not specified when calling deploy_node. (LIBCLOUD-182)
      [Tomaz Muraus]

    - Add ex_rescue and ex_unrescue method to OpenStack 1.1 driver.
      (LIBCLOUD-193)
      [Shawn Smith]

    - Include 'password' in the node extra dictionary when calling deploy_node
      if the password auth is used.
      [Juan Carlos Moreno]

    - Add FileDeployment class to libcloud.compute.deployment module. This can
      be used as a replacement for ex_files argument if the provider supports
      deployment functionality. (LIBCLOUD-190)
      [Jay Doane]

  *) Storage

    - Large object upload support for CloudFiles driver
    - Add CLOUDFILES_SWIFT driver to connect to OpenStack Swift
      [Dmitry Russkikh, Roman Bogorodskiy]

  *) Load-balancer

    - Don't include 'body_regex' attribute in the Rackspace driver body if
      body_regex is None or empty string. (LIBCLOUD-186)
      [Bill Woodward]

    - Don't split Load balancer IP addresses into public and private list.
      Include all the addresses in the 'virtualIps' variable in the extra
      dictionary (Rackspace driver). (LIBCLOUD-191)
      [Adam Pickeral]

Changes with Apache Libcloud 0.9.1:

  *) General:

    - Make parsing of the Auth API responses in the OpenStack drivers more
      flexible and extensible.

      Now, every connection class that inherits from the openstack base
      connection must implement get_endpoint(), who's job is to return the
      correct endpoint out of the service catalog.

      Note: The openstack.py base driver no longer works by default with
      Rackspace nova. The default endpoint parsed from the service catalog
      is the default compute endpoint for devstack. (LIBCLOUD-151)
      [Brad Morgan]

    - Allow user to pass ex_tenant_name keyword argument to the OpenStack node
      driver class. This scopes all the endpoints returned by the Auth API
      endpoint to the provided tenant. (LIBCLOUD-172)
      [James E. Blair]

    - Allow user to specify OpenStack service catalog parameters (service type,
      name and region). This way base OpenStack driver can be used with
      different providers without needing to subclass. (LIBCLOUD-173)
      [James E. Blair]

    - Fix a bug with handling compressed responses in the Linode driver.
      (LIBCLOUD-158)
      [Ben Agricola]

  *) Compute:

    - Add new RackspaceNovaBeta and RackspaveNovaDfw driver based on the
      OpenStack. (LIBCLOUD-151)
      [Brad Morgan]

    - Include 'created' and 'updated' attribute in the OpenStack 1.1 driver.
      (LIBCLOUD-155)
      [Chris Gilmer]

    - Include 'minRam' and 'minDisk' attribute in the OpenStack 1.1 driver
      Node extra dictionary. (LIBCLOUD-163)
      [Chris Gilmer]

    - Alow users to use a list of tuples for the query string parameters inside
      the OpenStack connection classes. This way same key can be specified
      multiple times (LIBCLOUD-153)
      [Dave King]

    - Allow user to pass 'max_tries' keyword argument to deploy_node method.
      [Tomaz Muraus]

    - Include original exception error message when re-throwing an exception
      inside _run_deployment_script method.
      [Tomaz Muraus]

    - Add support for ElasticHosts new United States (Los Angeles) and Canada
      (Toronto) locations. (GITHUB-53)
      [Jaime Irurzun]

    - Add serverId attribute to the NodeImage object extra dictionary in the
      OpenStack driver.
      [Mark Everett]

    - Add new EC2 instance type - m1.medium.
      [Tomaz Muraus]

    - Allow user to re-use auth tokens and pass 'ex_force_auth_token' keyword
      argument to the OpenStack driver constructor. (LIBCLOUD-164)
      [Dave King]

    - Add new experimental libvirt driver.
      [Tomaz Muraus]

    - Properly handle OpenStack providers which return public IP addresses under
      the 'internet' key in the addresses dictionary.
      [Tomaz Muraus]

    - Update create_node in Linode driver and make it return a Node object
      instead of a list. Reported by Jouke Waleson. (LIBCLOUD-175)
      [Tomaz Muraus]

  *) Storage:

    - Don't lowercase special header names in the Amazon S3 storage driver.
      (LIBCLOUD-149)
      [Tomaz Muraus]

  *) Load-balancer:

    - Allow user to specify a condition and weight when adding a member in
      the Rackspace driver.
      [Adam Pickeral]

    - Add an extension method (ex_balancer_attach_members) for attaching
      multiple members to a load balancer in the Rackspace driver.
      (LIBCLOUD-152)
      [Adam Pickeral]

    - Add ex_creaate_balancer method to the Rackspace driver and allow user to
      pass 'vip' argument to it. (LIBCLOUD-166)
      [Adam Pickeral]

    - Update Rackspace driver to support Auth 2.0. (LIBCLOUD-165)
      [Dave King]

    - Add new ex_create_balancer_access_rule and
      ex_create_balancer_access_rule_no_poll method to the Rackspace driver.
      (LIBCLOUD-170)
      [Dave King]

  *) DNS:

    - Update Rackspace driver to support Auth 2.0. (LIBCLOUD-165)
      [Dave King]

Changes with Apache Libcloud 0.8.0:

  *) General:

     - Add 'request_kwargs' argument to the get_poll_request_kwargs method.
       This argument contains kwargs which were previously used to initiate the
       poll request.
       [Mark Everett]

     - Add support for handling compressed responses (deflate, gzip). Also send
       "Accept-Encoding" "gzip,deflate" header with all the requests.
       [Tomaz Muraus]

     - Fix debug module (LIBCLOUD_DEBUG env variable) so it works with Python 3
       [Tomaz Muraus]

  *) Compute:

     - Added support for retrieving OpenNebula v3.2 instance types, OpenNebula
       v3.0 network Public attribute support, and additional code coverage
       tests.
       [Hutson Betts]

     - Add implementation for ex_save_image method to the OpenStack 1.1 driver.
       [Shawn Smith]

     - Add support for Amazon new South America (Sao Paulo) location.
       [Tomaz Muraus]

     - Fix a bug in OpenStack driver when 2.0_apikey or 2.0_password
       'auth_version' is used.
       [Tomaz Muraus]

     - Current OpenNebula OCCI implementation does not support a proper
       restart method. Rather it suspends and resumes. Therefore, restart_node
       has been removed from the OpenNebula driver.
       [Hutson Betts]

     - Enable ex_delete_image method in the OpenStack 1.1 driver.
       [Shawn Smith]

     - Return NodeImage instance in OpenStack 1.1 driver ex_save_image method
       (LIBCLOUD-138)
       [Shawn Smith]

     - Enable reboot_node method in the OpenNebula 3.2 driver.
       [Hutson Betts]

     - Fix a public_ips Node variable assignment in the Gandi.net driver.
       [Aymeric Barantal]

     - Updated the list of node states for OpenNebula drivers. (LIBCLOUD-148)
       [Hutson Betts]

  *) Storage:

    - Propagate extra keyword arguments passed to the Rackspace driver
      connection class.
      [Dave King]

  *) Load-balancer:

    - Add 'extra' attribute to the LoadBalancer object and retrieve all the
      virtual IP addresses in the Rackspace driver.
      [Dave King]

    - Add list_supported_algorithms() method to the base LoadBalancer class.
      This method returns a list of supported algorithms by the provider.
      [Dave King]

    - Update Rackspace driver:
      - Add two new supported algorithms: WEIGHTED_ROUND_ROBIN,
        WEIGHTED_LEAST_CONNECTIONS
      - Add ex_list_algorithm_names method
      - Add ex_get_balancer_error_page method
      - Add ex_balancer_access_list method
      - Populate LoadBalancer extra dictionary with more attributes
      - Add support for health monitors and connection throttling
      - Add more balancer states
      - ex_list_protocols_with_default_ports
      [Dave King]

    - Propagate extra keyword arguments passed to the Rackspace driver
      connection class.
      [Dave King]

    - Add 'extra' attribute to the Member object and populate it in
      the Rackspace driver.
      [Mark Everett]

    - Adds status to the Member object and conditions an 'enum'
      (Rackspace driver).
      [Mark Everett]

    - Add update_balancer method to the base LoadBalancer class.
      [Mark Everett]

    - Add update_balancer method to the Rackspace driver.
      [Mark Everett]

    - Add created and updated attribute to the LoadBalancer extra dictionary in
      the Rackspace driver.
      [Mark Everett]

    - Fix protocol name maping in the Rackspace driver.
      [Bill Woodward]

Changes with Apache Libcloud 0.7.1:

  *) General:

     - Fix a minor bug in debug mode (LIBCLOUD_DEBUG=/dev/stderr) which has been
       introduced when adding Python 3 compatibility layer.
       [Paul Querna]

     - Update OpenStack Auth API endpoint paths.
       [Paul Querna]

Changes with Apache Libcloud 0.7.0:

  *) General:

     - Add support for Python 3.x.
       [Tomaz Muraus]

     - Remove old deprecated paths.
       [Tomaz Muraus]

  *) Compute:

     - Update CloudSigma Zurich API endpoint address.
       [Tomaz Muraus]

     - Add new US Las Vegas endpoint to CloudSigma driver (types.CLOUDSIGMA_US)
       [Tomaz Muraus]

     - Allow user to specify drive type (hdd, ssd) when creating a
       CloudSigma server.

       Note 'ssd' drive_type doesn't work with the API yet.
       [Tomaz Muraus]

     - Update OpenStack 1.1 driver to comply with the API specs. Need to make
       another call to retrieve node name and ip addresses when creating a node,
       because the first call only returns an id an the password. (GITHUB-40)
       [Dave King]

     - Add ex_node_ids argument to the EC2 driver list_nodes method.
       (GITHUB-39)
       [Suvish Vt]

     - If OpenStack Auth 2.0 API is used, also parse out tenant id and
       name and save it on the connection class (conn.tenant['id'],
       conn.tenant['name']).
       [Tomaz Muraus]

     - Add new "Cluster Compute Eight Extra Large" size to the Amazon EC2
       driver.
       [Tomaz Muraus]

     - Add the following extension methods to the EC2 compute driver:
       ex_describe_all_addresses, ex_associate_addresses, ex_start_node,
       ex_stop_node.
       [Suvish Vt]

     - Change public_ip and private_ip attribute on the Node object to the
       public_ips and private_ips since both of the objects are always a list.

       Note: For backward compatibility you can still access public_ip and
       private_ip attributes, but this will be removed in the next release.
       [Tomaz Muraus]

     - Fix an inconsistency in IBM SBC driver and make sure public_ips and
       private_ips attributes are a list.
       [Tomaz Muraus]

     - Fix an inconsistency in OpSource driver and make sure public_ips is an
       empty list ([]), not 'unknown'
       [Tomaz Muraus]

     - Updated support for OpenNebula.org v1.4, v2.x, and v3.x APIs and included
       additional compute tests validating functionality. (LIBCLOUD-121)
       [Hutson Betts]

  *) Load-balancer:

    - Add ex_member_address argument to the Rackspace driver list_balancers
      method. If this argument is provided, only loadbalancers which have a
      member with the provided IP address attached are returned.
      [Tomaz Muraus]

Changes with Apache Libcloud 0.6.2:

  *) General

     - Fix a bug in PollingConnection class - actually use and don't ignore
       the poll_interval
       [Tomaz Muraus]

  *) Compute:

     - Add support for Auth 2.0 API (keystone) to the OpenStack Auth
       connection class.
       [Brad Morgan]

     - Add list_locations method to the OpenStack driver and fix some
       inconsistencies in the OpenStack driver extension method signatures.
       [Brad Morgan]

     - Update Amazon EC2 driver and pricing data to support a new region -
       US West 2 (Oregon)
       [Tomaz Muraus]

     - Expose 'CLOUDSTACK' provider. This driver can be used with an
       arbitrary CloudStack installation.
       [Tomaz Muraus]

  *) Storage:

     - Update Amazon S3 driver to support a new region - US West 2 (Oregon)
       [Tomaz Muraus]

   *) DNS:

      - Increase the default poll interval in the Rackspace driver to 2.5
        seconds.
        [Tomaz Muraus]

      - Fix a bug in Rackspace Cloud DNS driver and make sure to throw an
        exception if an unexpected status code is returned. Reported by
        "jeblair".
        [Tomaz Muraus]

Changes with Apache Libcloud 0.6.1:

  *) General:

     - Modify ParamikoSSHClient.connect so it supports authentication using a
       key file, (LIBCLOUD-116)
       [Jay Doane]

     - User must now explicitly specify a path when using LIBCLOUD_DEBUG
       environment variable. (LIBCLOUD-95)
       [daveb, Tomaz Muraus]

     - Add new XmlResponse and JsonResponse base class and modify all the
       driver-specific response classes to inherit from one of those two
       classes where applicable.
       [Caio Romão]

     - Add new 'PollingConnection' class. This class can work with 'async'
       APIs. It sends and an initial request and then periodically poll the API
       until the job has completed or a timeout has been reached.
       [Tomaz Muraus]

  *) Compute:

     - Add 24GB size to the GoGrid driver
       [Roman Bogorodskiy]

     - Fix API endpoint URL in the Softlayer driver
       [Tomaz Muraus]

     - Add support for OpenNebula 3.0 API (LIBCLOUD-120)
       [Hutson Betts]

     - Add more attributes to the extra dictionary in the EC2 driver.
       (GITHUB-31)
       [Juan Carlos Moreno]

     - Fix IP address assignment in the EC2 driver. Don't include "None" in the
       public_ip and private_ip Node list attribute.
       [Tomaz Muraus]

     - Make deploy_node functionality more robust and don't start deployment if
       node public_ip attribute is an empty list.
       [Tomaz Muraus]

     - Support SSH key authentication when using deploy_node.
       [Russell Haering, Tomaz Muraus]

     - Enable deploy_node functionality in the EC2 driver using SSH key
       authentication
       [Russell Haering, Tomaz Muraus]

     - Enable paramiko library debug log level if LIBCLOUD_DEBUG is used and
       paramiko is installed.
       [Tomaz Muraus]

     - Fix the request signature generation in the base EC2 compute driver.
       If the endpoint is using a non-standard port (Eucalyptus based
       installations), append it to the hostname used to generate the
       signature.
       [Simon Delamare]

     - Add new "unavailable" state to the BrightboxNodeDriver class.
       [Tim Fletcher]

     - Increase a PollingConnection timeout in the CloudStack connection
       and fix the context dictionary creation in the _async_request method.
       [gigimon]

     - Fix networks retrieval in the CloudStack driver create_node method.
       Also only pass 'networkids' field to the API if there are any networks
       available.
       [gigimon, Tomaz Muraus]

     - Fix list_nodes in the CloudStack driver. Private IPs aren't always
       available.
       [Tomaz Muraus]

  *) Load-baancer:

     - Add a missing argument to the method call inside
       LoadBalancer.attach_compute_node and Driver.balancer_attach_compute_node.
       [Tim Fletcher, Tomaz Muraus]

     - Add missing destroy() method to the LoadBalancer class.
       [Tomaz Muraus]

  *) DNS:

     - New drivers for Rackspace Cloud DNS (US and UK region)
       [Tomaz Muraus]

     - Add list_record_types() method. This method returns a list of record
       types supported by the provider.
       [Tomaz Muraus]

Changes with Apache Libcloud 0.6.0-beta1

  *) General:

    - All the driver classes now inherit from the BaseDriver class
      [Tomaz Muraus]

    - Prefer simplejson (if available) over json module. (LIBCLOUD-112)
      [Geoff Greer]

    - Update compute demo and change the syntax of test credentials stored in
      test/secrets.py-dist. (LIBCLOUD-111)
      [Mike Nerone]

    - Enable SSL certificate verification by default and throw an exception
      if CA certificate files cannot be found. This can be overridden by
      setting libcloud.security.VERIFY_SSL_CERT_STRICT to False.
      [Tomaz Muraus]

  *) Compute:

     - Support for 1.1 API and many other improvements in the OpenStack driver ;
       LIBCLOUD-83
       [Mike Nerone, Paul Querna, Brad Morgan, Tomaz Muraus]

     - Add some extra methods to the Gandi.net driver (LIBCLOUD-115)
       [Aymeric Barantal]

     - Add ex_delete_image method to the Rackspace driver. (GITHUB-27)
       [David Busby]

     - Linode driver now supports new 'Japan' location
       [Jed Smith]

     - Rackspace driver now inherits from the OpenStack one instead of doing
       it vice versa. (LIBCLOUD-110)
       [Mike Nerone]

     - Properly populate NodeImage "details" dictionary in the Rackspace
       compute driver. (LIBCLOUD-107)
       [Lucy Mendel]

     - Fix a bug in Eucalyptus driver ex_describe_addresses method.
       [Tomaz Muraus]

     - Add the following new extenstion methods to the Rackspace driver:
       ex_resize, ex_confirm_resize, ex_revert_resize.
       [Tomaz Muraus]

     - Also allow user to pass in Node object to some ex_ methods in
       the Rackspace compute driver.
       [Tomaz Muraus]

     - Throw an exception in deploy_node if paramiko library is not
       available
       [Tomaz Muraus]

     - Fix chmod argument value which is pased to the sftpclient.put
       method; GITHUB-17
       [John Carr]

     - New driver for Ninefold.com. (LIBCLOUD-98)
       [Benno Rice]

  *) Storage:

     - New driver for Google Storage based on the v1.0 / legacy API
       [Tomaz Muraus]

     - New driver for Ninefold.com. (GITHUB-19)
       [Benno Rice]

     - Fix a bug in uploading an object with some versions of Python 2.7
       where httplib library doesn't automatically call str() on the
       header values.
       [Tomaz Muraus]

     - Allow users to upload (create) 0-bytes large (empty) objects
       [Tomaz Muraus]

  *) Load-balancer:

     - New driver for Rackspace UK location
       [Tomaz Muraus]

     - New driver for Ninefold.com. (LIBCLOUD-98)
       [Benno Rice]

  *) DNS:

   - Drivers for Linode DNS and Zerigo DNS
     [Tomaz Muraus]

   - Brand new DNS API!
     [Tomaz Muraus]

Changes with Apache Libcloud 0.5.2

  *) Compute:
     - New driver for serverlove.com and skalicloud.com
       [Tomaz Muraus]

     - Fix node name and tag handling in the Amazon EC2 driver
       [Wiktor Kolodziej]

     - Fix pricing and response handling in the OpenStack driver
       [Andrey Zhuchkov]

     - Fix deploy_node() method and make it more robust
       [Tomaz Muraus]

     - Users can now pass file like objects to ScriptDeployment and
       SSHKeyDeployment constructor.
       [Tomaz Muraus]

     - Include node tags when calling list_nodes() in the Amazon EC2
       driver
       [Trevor Pounds]

     - Properly handle response errors in the Rackspace driver and
       only throw InvalidCredsError if the returned status code is 401
       [Brad Morgan]

     - Fix the create_node method in the Nimbus driver and make the
       "ex_create_tag" method a no-op, because Nimbus doesn't support creating
       tags.
       [Tomaz Muraus]

    *) Storage:

     - Fix handling of the containers with a lot of objects. Now a LazyList
       object is returned when user calls list_container_objects() method
       and this object transparently handles pagination.
     [Danny Clark, Wiktor Kolodziej]

Changes with Apache Libcloud 0.5.0

    *) Existing APIs directly on the libcloud.* module have been
       deprecated and will be removed in version 0.6.0.  Most methods
       were moved to the libcloud.compute.* module.

    *) Add new libcloud.loadbalancers API, with initial support for:
        - GoGrid Load Balancers
        - Rackspace Load Balancers
      [Roman Bogorodskiy]

    *) Add new libcloud.storage API, with initial support for:
        - Amazon S3
        - Rackspace CloudFiles
       [Tomaz Muraus]

    *) Add new libcloud.compute drivers for:
        - Bluebox [Christian Paredes]
        - Gandi.net [Aymeric Barantal]
        - Nimbus [David LaBissoniere]
        - OpenStack [Roman Bogorodskiy]
        - Opsource.net [Joe Miller]

    *) Added "pricing" module and improved pricing handling.
       [Tomaz Muraus]

    *) Updates to the GoGrid compute driver:
        - Use API version 1.0.
        - Remove sandbox flag.
        - Add ex_list_ips() to list IP addresses assigned to the account.
        - Implement ex_edit_image method which allows changing image attributes
          like name, description and make image public or private.
       [Roman Bogorodskiy]

    *) Updates to the Amazon EC2 compute driver:
        - When creating a Node, use the name argument to set a Tag with the
          value.  [Tomaz Muraus]
        - Add extension method for modifying node attributes and changing the
          node size. [Tomaz Muraus]
        - Add support for the new Amazon Region (Tokyo). [Tomaz Muraus]
        - Added ex_create_tags and ex_delete_tags. [Brandon Rhodes]
        - Include node Elastic IP addresses in the node public_ip attribute
          for the EC2 nodes. [Tomaz Muraus]
        - Use ipAddress and privateIpAddress attribute for the EC 2node public
          and private ip. [Tomaz Muraus]
        - Add ex_describe_addresses method to the EC2 driver. [Tomaz Muraus]

    *) Updates to the Rackspace CloudServers compute driver:
        - Add ex_rebuild() and ex_get_node_details() [Andrew Klochkov]
        - Expose URI of a Rackspace node to the node meta data. [Paul Querna]

    *) Minor fixes to get the library and tests working on Python 2.7 and PyPy.
       [Tomaz Muraus]

Changes with Apache Libcloud 0.4.2 (Released January 18, 2011)

    *) Fix EC2 create_node to become backward compatible for
       NodeLocation.
       [Tomaž Muraus]

    *) Update code for compatibility with CPython 2.5
       [Jerry Chen]

    *) Implement ex_edit_node method for GoGrid driver which allows
       changing node attributes like amount of RAM or description.
       [Roman Bogorodskiy]

    *) Add ex_set_password and ex_set_server_name to Rackspace driver.
       [Peter Herndon, Paul Querna]

    *) Add Hard and Soft reboot methods to Rackspace driver.
       [Peter Herndon]

    *) EC2 Driver availability zones, via ex_list_availability_zones;
       list_locations rewrite to include availablity zones
       [Tomaž Muraus]

    *) EC2 Driver Idempotency capability in create_node; LIBCLOUD-69
       [David LaBissoniere]

    *) SSL Certificate Name Verification:
       - libcloud.security module
       - LibcloudHTTPSConnection, LibcloudHTTPConnection (alias)
       - Emits warning when not verifying, or CA certs not found

    *) Append ORD1 to available Rackspace location, but keep in the
       same node as DFW1, because it's not readable or writeable from
       the API.
       [Per suggestion of Grig Gheorghiu]

    *) ex_create_ip_group, ex_list_ip_groups, ex_delete_ip_group,
       ex_share_ip, ex_unshare_ip, ex_list_ip_addresses additions
       to Rackspace driver
       [Andrew Klochkov]

    *) New driver for CloudSigma.
       [Tomaž Muraus]

    *) New driver for Brightbox Cloud. (LIBCLOUD-63)
       [Tim Fletcher]

    *) Deployment capability to ElasticHosts
       [Tomaž Muraus]

    *) Allow deploy_node to use non-standard SSH username and port
       [Tomaž Muraus]

    *) Added Rackspace UK (London) support
       [Chmouel Boudjnah]

    *) GoGrid driver: add support for locations, i.e. listing
       of locations and creation of a node in specified
       location
       [Roman Bogorodskiy]

    *) GoGrid and Rackspace drivers: add ex_save_image() extra
       call to convert running node to an image
       [Roman Bogorodskiy]

    *) GoGrid driver: add support for creating 'sandbox' server
       and populate isSandbox flag in node's extra information.
       [Roman Bogorodskiy]

    *) Add ImportKeyPair and DescribeKeyPair to EC2. (LIBCLOUD-62)
       [Philip Schwartz]

    *) Update EC2 driver and test fixtures for new API.
       [Philip Schwartz]

Changes with Apache Libcloud 0.4.0 [Released October 6, 2010]

    *) Add create keypair functionality to EC2 Drivers. (LIBCLOUD-57)
       [Grig Gheorghiu]

    *) Improve handling of GoGrid accounts with limited access
       API keys. [Paul Querna]

    *) New Driver for ElasticHosts. (LIBCLOUD-45)
       [Tomaz Muraus]

    *) Use more consistent name for GoGrid driver and use http
       POST method for 'unsafe' operations
       [Russell Haering]

    *) Implement password handling and add deployment support
       for GoGrid nodes.
       [Roman Bogorodskiy]

    *) Fix behavior of GoGrid's create_node to wait for a Node ID.
       [Roman Bogorodskiy]

    *) Add ex_create_node_nowait to GoGrid driver if you don't need to
       wait for a Node ID when creating a node.
       [Roman Bogorodskiy]

    *) Removed libcloud.interfaces module.
       [Paul Querna]

    *) Removed dependency on zope.interfaces.
       [Paul Querna]

    *) RimuHosting moved API endpoint address.
       [Paul Querna]

    *) Fix regression and error in GoGrid driver for parsing node objects.
       [Roman Bogorodskiy]

    *) Added more test cases for GoGrid driver. (LIBCLOUD-34)
       [Roman Bogorodskiy, Jerry Chen]

    *) Fix parsing of Slicehost nodes with multiple Public IP addresses.
       [Paul Querna]

    *) Add exit_status to ScriptDeployment. (LIBCLOUD-36)
       [Paul Querna]

    *) Update prices for several drivers.
       [Brad Morgan, Paul Querna]

    *) Update Linode driver to reflect new plan sizes.
       [Jed Smith]

    *) Change default of 'location' in Linode create_node. (LIBCLOUD-41)
       [Jed Smith, Steve Steiner]

    *) Document the Linode driver.
       [Jed Smith]

    *) Request a private, LAN IP address at Linode creation.
       [Jed Smith]

Changes with Apache Libcloud 0.3.1 [Released May 11, 2010]

    *) Updates to Apache License blocks to correctly reflect status as an
       Apache Project.

    *) Fix NOTICE file to use 2010 copyright date.

    *) Improve error messages for when running the test cases without
       first setting up a secrets.py

Changes with Apache Libcloud 0.3.0 [Tagged May 6, 2010, not released]

    *) New Drivers for:
      - Dreamhost
      - Eucalyptus
      - Enomaly ECP
      - IBM Developer Cloud
      - OpenNebula
      - SoftLayer

    *) Added new deployment and bootstrap API.

    *) Improved Voxel driver.

    *) Added support for Amazon EC2 Asia Pacific (Singapore) Region.

    *) Improved test coverage for all drivers.

    *) Add support for multiple security groups in EC2.

    *) Fixed bug in Rackspace and RimuHosting when using multiple threads.

    *) Improved debugging and logging of HTTP requests.

    *) Improved documentation for all classes and methods.

Changes with Apache Libcloud 0.2.0 [Tagged February 2, 2010]

    *) First public release.
