-*- coding: utf-8 -*- 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] *) 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.