Update CHANGES, reference a CVE.
[libcloud.git] / CHANGES
1                                    -*- coding: utf-8 -*-
2
3 Changes with Apache Libcloud 0.13.3
4
5   *) Compute
6
7     - Send "scrub_data" query parameter when destroying a DigitalOcean node.
8       This will cause disk to be scrubbed (overwritten with 0's) when destroying
9       a node. (LIBCLOUD-487)
10
11       Note: This fixes a security issue with a potential leak of data contained
12       on the destroyed node which only affects users of the DigitalOcean driver.
13       (CVE-2013-6480)
14       [Tomaz Muraus]
15
16 Changes with Apache Libcloud 0.13.2
17
18   *) General
19
20     - Don't sent Content-Length: 0 header with POST and PUT request if "raw"
21       mode is used. This fixes a regression which could cause broken behavior
22       in some storage driver when uploading a file from disk.
23       (LIBCLOUD-396)
24       [Ivan Kusalic]
25
26   *) Compute
27
28     - Added Ubuntu Linux 12.04 image to ElasticHost driver image list.
29       (LIBCLOUD-364)
30       [Bob Thompson]
31
32     - Update ElasticHosts driver to store drive UUID in the node 'extra' field.
33       (LIBCLOUD-357)
34       [Bob Thompson]
35
36   *) Storage
37
38     - Store last_modified timestamp in the Object extra dictionary in the S3
39       driver. (LIBCLOUD-373)
40       [Stefan Friesel]
41
42   *) Load Balancer
43
44    - Expose CloudStack driver directly through the Provider.CLOUDSTACK
45      constant.
46      [Tomaz Muraus]
47
48  *) DNS
49
50    - Modify Zerigo driver to include record TTL in the record 'extra' attribute
51      if a record has a TTL set.
52      [Tomaz Muraus]
53
54    - Modify values in the Record 'extra' dictionary attribute in the Zerigo DNS
55      driver to be set to None instead of an empty string ('') if a value for
56      the provided key is not set.
57      [Tomaz Muraus]
58
59 Changes with Apache Libcloud 0.13.1
60
61  *) General
62
63     - Fix a regression introduced in 0.13.0 and make sure to include
64       Content-Length 0 with PUT and POST requests. (LIBCLOUD-362, LIBCLOUD-390)
65       [Tomaz Muraus]
66
67  *) Compute
68
69     - Fix a bug in the ElasticHosts driver and check for right HTTP status
70       code when determining drive imaging success. (LIBCLOUD-363)
71       [Bob Thompson]
72
73     - Update Opsource driver to include node public ip address (if available).
74       (LIBCLOUD-384)
75       [Michael Bennett]
76
77   *) Storage
78
79     - Fix a regression with calling encode_container_name instead of
80       encode_object_name on object name in get_object method.
81       Reported by Ben Meng (LIBCLOUD-366)
82       [Tomaz Muraus]
83
84     - Ensure that AWS S3 multipart upload works for small iterators.
85       (LIBCLOUD-378)
86       [Mahendra M]
87
88 Changes with Apache Libcloud 0.13.0:
89
90  *) General
91
92    - Add homebrew curl-ca-bundle path to CA_CERTS_PATH. This will make Libcloud
93      use homebrew curl ca bundle file (if available) for server certificate
94      validation. (LIBCLOUD-324)
95      [Robert Chiniquy]
96
97    - Modify OpenStackAuthConnection and change auth_token_expires attribute to
98      be a datetime object instead of a string.
99      [Tomaz Muraus]
100
101    - Modify OpenStackAuthConnection to support re-using of the existing auth
102      token if it's still valid instead of re-authenticating on every
103      authenticate() call.
104      [Tomaz Muraus]
105
106    - Modify base Connection class to not send Content-Length header if body is
107      not provided.
108      [Tomaz Muraus]
109
110    - Add the new error class ProviderError and modify InvalidCredsError to
111      inherit from it. (LIBCLOUD-331)
112      [Jayy Vis]
113
114  *) Misc
115
116    - Add unittest2 library dependency for tests and update some tests to use
117      it.
118      [Tomaz Muraus]
119
120  *) Compute
121
122     - Fix destroy_node method in the experimental libvirt driver.
123       [Aymen Fitati]
124
125     - Add ex_start_node method to the Joyent driver. (LIBCLOUD-319)
126       [rszabo50]
127
128     - Fix Python 3 compatibility issue in the ScriptFileDeployment class.
129       (LIBCLOUD-321)
130       [Arfrever Frehtes Taifersar Arahesis]
131
132     - Add ex_set_metadata_entry and ex_get_metadata method to the VCloud driver.
133       (LIBCLOUD-318)
134       [Michel Samia]
135
136     - Various improvements and bug-fixes in the VCloud driver. (LIBCLOUD-323)
137       [Michel Samia]
138
139     - Modify list_sizes method in the OpenStack driver to include
140       OpenStackNodeSize object which includes 'vcpus' attribute which holds
141       a number of virtual CPUs for this size. (LIBCLOUD-325)
142       [Carlo]
143
144     - For consistency rename "ex_describe_keypairs" method in the EC2 driver to
145       "ex_describe_keypair".
146       [Tomaz Muraus]
147
148     - Modify "ex_describe_keypair" method to return key fingerprint in the
149       return value. (LIBCLOUD-326)
150       [Andre Merzky, Tomaz Muraus]
151
152     - Populate private_ips attribute in the CloudStack drive when returning
153       a Node object from the create_node method. (LIBCLOUD-329)
154       [Sebastien Goasguen, Tomaz Muraus]
155
156     - Allow user to pass extra arguments via "extra_args" argument which are
157       then passed to the "deployVirtualMachine" call in the CloudStack driver
158       create_node method. (LIBCLOUD-330)
159       [Sebastien Goasguen, Tomaz Muraus]
160
161     - Update Gandi driver to handle new billing model. (LIBCLOUD-317)
162       [Aymeric Barantal]
163
164     - Fix a bug in the Linode driver and remove extra newline which is added
165       when generating a random root password in create_node. (LIBCLOUD-334)
166       [Juan Carlos Moreno]
167
168     - Add extension methods for managing keypairs to the CloudStack driver.
169       (LIBCLOUD-333)
170       [sebastien goasguen]
171
172     - Add extension methods for managing security groups to the CloudStack
173       driver. (LIBCLOUD-332)
174       [sebastien goasguen]
175
176     - Add extension methods for starting and stoping the node to the
177       CloudStack driver. (LIBCLOUD-338)
178       [sebastien goasguen]
179
180     - Fix old _wait_until_running method. (LIBCLOUD-339)
181       [Bob Thompson]
182
183     - Fix a bug in the GoGrid driver get_uuid method. (LIBCLOUD-341)
184       [Bob Thompson]
185
186     - Various bug fixes and improvements in the HostVirtual driver.
187       (LIBCLOUD-249)
188       [Dinesh Bhoopathy]
189
190     - Fix a bug with deploy_node not respecting 'timeout' kwarg.
191       [Kevin Carter]
192
193     - Modify create_node method in CloudStack driver to return an instance of
194       CloudStackNode and add a new "expunging" node state. (LIBCLOUD-345)
195       [sebastien goasguen]
196
197     - Update API endpoint hostnames in the ElasticHost driver and use hostnames
198       which return a valid SSL certificate. (LIBCLOUD-346)
199       [Bob Thompson]
200
201     - Add a driver for Rackspace's new datacenter in Sydney, Australia.
202       [Alex Gaynor, Tomaz Muraus]
203
204     - Add ex_list_networks method and missing tests for list_templates to the
205       CloudStack driver. (LIBCLOUD-349)
206       [Philipp Strube]
207
208     - Correctly throw InvalidCredsError if user passes invalid credentials to
209       the DigitalOcean driver.
210       [Tomaz muraus]
211
212  *) Storage
213
214     - Fix an issue with double encoding the container name in the CloudFiles
215       driver upload_object method.
216       Also properly encode container and object name used in the HTTP request
217       in the get_container and get_object method. (LIBCLOUD-328)
218       [Tomaz Muraus]
219
220  *) Load Balancer
221
222     - Add ex_list_current_usage method to the Rackspace driver.
223
224 Changes with Apache Libcloud 0.12.4:
225
226  *) Compute
227
228     - Fix a regression in Softlayer driver caused by the xmlrpclib changes.
229       (LIBCLOUD-310)
230       [Jason Johnson]
231
232     - Allow user to pass alternate ssh usernames to deploy_node
233       (ssh_alternate_usernames kwarg) which are used for authentication if the
234       default one doesn't work. (LIBCLOUD-309)
235       [Chris Psaltis, Tomaz Muraus]
236
237     - Fix a bug in EC2 list_locations method - 'name' attribute didn't contain a
238       the right value.
239       [Tomaz Muraus]
240
241     - Add new ScriptFileDeployment deployment class which reads deploy script
242       from a file.
243       [Rudolf J Streif]
244
245     - Add support for API version 5.1 to the vCloud driver and accept any value
246       which is a multiple of four for ex_vm_memory kwarg in create_node method.
247       (LIBCLOUD-314)
248       [Trevor Powell]
249
250  *) Storage
251
252     - Fix a regression with removed ex_force_service_region constructor kwarg in
253       the CloudFiles driver. (LIBCLOUD-260)
254
255 Changes with Apache Libcloud 0.12.3:
256
257   *) General
258
259     - Fix Python 3.x related regressions. (LIBCLOUD-245)
260       Reported by Arfrever Frehtes Taifersar Arahesis.
261       [Tomaz Muraus]
262
263     - Fix a regression introduced with recent xmlrpiclib changes which broke all
264       the Gandi.net drivers. (LIBCLOUD-288)
265
266       Reported by Hutson Betts.
267       [Tomaz Muraus]
268
269     - Improve deploy code to work correctly if the ssh user doesn't have access
270       to the /root directory.
271
272       Previously the ScriptDeployment script was stored in /root folder by
273       default. Now it's stored in users home directory under filename
274       ~/libcloud_deploymeny_<random>.sh. (LIBCLOUD-302)
275
276       Reported by rotem on #libcloud.
277       [Tomaz Muraus]
278
279   *) Compute
280
281     - Improve public and private IP address handling in OpenStack 1.1 driver.
282       Assume every IP address which doesn't have a label "public" or "internet"
283       is private. (LIBCLOUD-297)
284       [Grischa Meyer, Tomaz Muraus]
285
286     - Add new driver for DigitalOcean provider - https://www.digitalocean.com/.
287       (LIBCLOUD-304)
288       [Tomaz Muraus]
289
290     - Fix a regression in ParamikoSSHClient.run method which caused this methid
291       to only work as expected if you passed an absolute or a relative path to
292       the script to it. (LIBCLOUD-278)
293       [Tomaz Muraus]
294
295   *) DNS
296
297     - Allow user to specify 'priority' extra argument when creating a MX or SRV
298       record.
299       [Brian Jinwright, Tomaz Muraus]
300
301 Changes with Apache Libcloud 0.12.1:
302
303   *) General
304
305     - Deprecate LazyList method of iteration over large paginated collections
306       and use a new, more efficient generator based approach which doesn't
307       require the iterator to be pre-exhausted and buffering all of the values
308       in memory.
309
310       Existing list_* methods which previously used LazyList class are
311       preserving the old behavior and new iterate_* methods which use a new
312       generator based approach have been added. (LIBCLOUD-254)
313       [Mahendra M]
314
315     - Replace old ENUM style provider constants and replace them with a string
316       version.
317       This change allows users to dynamically register new drivers using a new
318       set_driver method. (LIBCLOUD-255)
319       [Mahendra M]
320
321     - Allow user to explicitly specify which CA file is used for verifying
322       the server certificate by setting 'SSL_CERT_FILE' environment variable.
323
324       Note: When this variable is specified, the specified path is the only
325       CA file which is used to verifying the server certificate. (LIBCLOUD-283)
326       [Tomaz Muraus, Erinn Looney-Triggs]
327
328     - Add a common module (libcloud.common.xmlrpc) for handling XML-RPC
329       requests using Libcloud http layer.
330
331       Also refactor existing drivers which use xmlrpclib directly (VCL, Gandi,
332       Softlayer) to use this module.
333
334       This change allows drivers to support LIBCLOUD_DEBUG and SSL certificate
335       validation functionality. Previously they have bypassed Libcloud http
336       layer so this functionality was not available. (LIBCLOUD-288)
337       [John Carr]
338
339   *) Compute
340
341     - Fix string interpolation bug in __repr__ methods in the IBM SCE driver.
342       (LIBCLOUD-242)
343       [Tomaz Muraus]
344
345     - Fix test failures which happened in Python 3.3 due to:
346       - hash randomization
347       - changes in xml.etree module
348       - changes in xmlrpc module
349       (LIBCLOUD-245)
350       [Tomaz Muraus]
351
352     - Improvements and additions in vCloud driver:
353       - Expose generic query method (ex_query)
354       - Provide functionality to get and set control access for vApps. This way
355         created vApps can be shared between users/groups or everyone.
356      (LIBCLOUD-251)
357      [Michal Galet]
358
359    - Update EC2 pricing data to reflect new, lower prices -
360      http://aws.typepad.com/aws/2012/10/new-ec2-second-generation-standard-instances-and-price-reductions-1.html
361      [Tomaz Muraus]
362
363    - Update EC2 instance size to reflect new m3 instance types. Also refactor
364      the code to make it easier to maintain.
365      [Tomaz Muraus]
366
367    - Add a new driver for HostVirtual (http://www.vr.org) provider.
368      (LIBCLOUD-249)
369      [Dinesh Bhoopathy]
370
371    - Fix a bug where a numeric instead of a string value was used for the
372      content-length header in VCloud driver. (LIBCLOUD-256)
373      [Brian DeGeeter, Tomaz Muraus]
374
375    - Add a new driver for new Asia Pacific (Sydney) EC2 region.
376      [Tomaz Muraus]
377
378    - Add support for managing security groups to the OpenStack driver. This
379      patch adds the following extension methods:
380      - ex_list_security_groups, ex_get_node_security_groups methods
381      - ex_create_security_group, ex_delete_security_group
382      - ex_create_security_group_rule, ex_delete_security_group_rule
383      (LIBCLOUD-253)
384      [L. Schaub]
385
386    - Modify ElasticStack driver class to pass 'vnc auto' instead of
387      'vnc:ip auto' argument to the API when creating a server.
388      It looks like 'vnc:ip' has been replaced with 'vnc'.
389      [Rick Copeland, Tomaz Muraus]
390
391    - Add new EC2 instance type - High Storage Eight Extra Large Instance
392      (hs1.8xlarge).
393      [Tomaz Muraus]
394
395    - Map 'shutting-down' node state in EC2 driver to UNKNOWN. Previously
396      it was mapped to TERMINATED. (LIBCLOUD-280)
397
398      Note: This change is backward incompatible which means you need to update
399      your code if you rely on the old behavior.
400      [Tomaz Muraus, Marcin Kuzminski]
401
402    - Change _wait_until_running method so it supports waiting on multiple nodes
403      and make it public (wait_until_running). (LIBCLOUD-274)
404      [Nick Bailey]
405
406    - Add new EC2 instance type - High Memory Cluster Eight Extra Large.
407      (cr1.8xlarge).
408      [Tomaz Muraus]
409
410    - Add new driver for Abiquo provider - http://www.abiquo.com (LIBCLOUD-250).
411      [Jaume Devesa]
412
413    - Allow user to pass 'ex_blockdevicemappings' kwarg to the EC2 driver
414      'create_node' method. (LIBCLOUD-282)
415      [Joe Miller, Tomaz Muraus]
416
417    - Improve error handling in the Brightbox driver.
418      [Tomaz Muraus]
419
420    - Fix the ScriptDeployment step to work correctly if user provides a
421      relative path for the script argument. (LIBCLOUD-278)
422      [Jaume Devesa]
423
424    - Fix Softlayer driver and make sure all the code is up to date and works
425      with the latest version of the actual Softlayer deployment (v3).
426      (LIBCLOUD-287)
427      [Kevin McDonald]
428
429    - Update EC2 driver, m3 instance types are now available in all the regions
430      except Brazil.
431
432      Also update pricing to reflect new (decreased) prices.
433      [Tomaz Muraus]
434
435    - Minor improvements in the HostVirtual driver and add new ex_get_node and
436      ex_build_node extension method. (LIBCLOUD-249)
437      [Dinesh Bhoopathy]
438
439    - Add ex_destroy_image method to IBM SCE driver. (LIBCLOUD-291)
440      [Perry Zou]
441
442    - Add the following new regions to the ElasticHosts driver: sjc-c, syd-v,
443      hkg-e. (LIBCLOUD-293)
444      [Tomaz Muraus]
445
446    - Fix create_node in OpenStack driver to work correctly if 'adminPass'
447      attribute is not present in the response.
448      [Gavin McCance, Tomaz Muraus]
449
450    - Allow users to filter images returned by the list_images method in the EC2
451      driver by providing ex_image_ids argument. (LIBCLOUD-294)
452      [Chris Psaltis, Joseph Hall]
453
454    - Add support for OpenNebula 3.8. (LIBCLOUD-295)
455      [Guillaume ZITTA]
456
457    - Add missing 'deletd' -> terminated mapping to OpenStack driver.
458      (LIBCLOUD-276)
459      [Jayyy V]
460
461    - Fix create_node in OpenStack driver to work correctly if 'adminPass'
462      attribute is not present in the response. (LIBCLOUD-292)
463      [Gavin McCance, Tomaz Muraus]
464
465   *) Storage
466
467     - Add a new local storage driver.
468       (LIBCLOUD-252, LIBCLOUD-258, LIBCLOUD-265, LIBCLOUD-273)
469       [Mahendra M]
470
471     - Fix a bug which caused the connection to not be closed when using Python
472       2.6 and calling get_object on an object which doesn't exist in the S3
473       driver. (LIBCLOUD-257)
474       [John Carr]
475
476     - Add a new generator based method for listing / iterating over the
477       containers (iterate_containers). (LIBCLOUD-261)
478       [Mahendra M]
479
480     - Add ex_purge_object_from_cdn method to the CloudFiles driver.
481       (LIBCLOUD-267)
482       [Tomaz Muraus]
483
484     - Support for multipart uploads and other improvements in the S3 driver
485       so it can more easily be re-used with other implementations (e.g. Google
486       Storage, etc.).
487
488       Also default to a multipart upload when using upload_object_via_stream.
489       This methods is more efficient compared to old approach because it only
490       requires buffering a single multipart chunk (5 MB) in memory.
491       (LIBCLOUD-269)
492       [Mahendra M]
493
494     - Add new driver for Windows Azure Storage with support for block and page
495       blobs. (LIBCLOUD-80)
496       [Mahendra M]
497
498   *) DNS
499
500     - Update 'if type' checks in the update_record methods to behave correctly
501       if users passes in RecordType.A with a value of 0 - if type is not None.
502       (LIBCLOUD-247)
503       [Tomaz Muraus]
504
505     - New driver for HostVirtual provider (www.vr.org). (LIBCLOUD-249)
506       [Dinesh Bhoopathy]
507
508     - Finish Amazon Route53 driver. (LIBCLOUD-132)
509       [John Carr]
510
511     - Add new driver for Gandi provider (https://www.gandi.net). (LIBCLOUD-281)
512       [John Carr]
513
514   *) Load-Balancer
515
516     - Add new driver for AWS Elastic Load Balancing service. (LIBCLOUD-169)
517       [John Carr]
518
519 Changes with Apache Libcloud 0.11.4:
520
521   *) General
522
523     - Fix some of tests failures which happened in Python 3.3 due to randomized
524       dictionary ordering. (LIBCLOUD-245)
525       [Tomaz Muraus]
526
527   *) Compute
528
529     - Fix a bug where a numeric instead of a string value was used for the
530       content-length header in VCloud driver. (LIBCLOUD-256)
531       [Brian DeGeeter, Tomaz Muraus]
532
533   *) Storage
534
535     - Don't ignore ex_force_service_region argument in the CloudFiles driver.
536       (LIBCLOUD-260)
537       [Dan Di Spaltro]
538
539     - Fix a bug which caused the connection to not be closed when using Python
540       2.6 and calling get_object on an object which doesn't exist in the S3
541       driver. (LIBCLOUD-257)
542       [John Carr]
543
544   *) DNS
545
546     - Update 'if type' checks in the update_record methods to behave correctly
547       if users passes in RecordType.A with a value of 0 - if type is not None.
548       (LIBCLOUD-247)
549       [Tomaz Muraus]
550
551 Changes with Apache Libcloud 0.11.3:
552
553   *) Storage
554
555     - Include 'last_modified' and 'content_type' attribute in the Object
556       'extra' dictionary when retrieving object using get_object in the S3
557       driver. Also modify 'meta_data' dictionary to include all the headers
558       prefixed with 'x-amz-meta-'.
559       [Tomaz Muraus]
560
561 Changes with Apache Libcloud 0.11.2:
562
563   *) General
564
565     Fix a bug with the Libcloud SSL verification code. Code was too strict and
566     didn't allow "-" character in the sub-domain when using a wildcard
567     certificate.
568
569     Note: This is NOT a security vulnerability. (LIBCLOUD-244)
570     [Tomaz Muraus]
571
572   *) Compute
573
574     - Add new Rackspace Nova driver for Chicago (ORD) location (LIBCLOUD-234)
575       [Brian McDaniel]
576
577     - Add capacity information to Vdc objects and implement power operations.
578       (LIBCLOUD-239)
579       [Michal Galet]
580
581     - Allow user to pass 'timeout' argument to the 'deploy_node' method.
582       [Tomaz Muraus]
583
584     - Add ex_list_security_groups, ex_authorize_security_group and
585       ex_describe_all_keypairs methods to the EC2 driver. (LIBCLOUD-241,
586       LIBCLOUD-243)
587       [Nick Bailey]
588
589     - Add new methods for managing storage volumes and other extenstion methods
590       to the IBM SCE driver. (LIBCLOUD-242)
591       [Sengor Kusturica]
592
593   *) Storage
594
595     - Add the following new methods to the CloudFiles driver:
596       ex_set_account_metadata_temp_url_key, ex_get_object_temp_url. (GITHUB-72)
597       [Shawn Smith]
598
599   *) Load-balancer
600
601     - Add 'balancer' attribute to the Member instance. This attribute refers to
602       the LoadBalancer instance this member belongs to.
603       [Tomaz Muraus]
604
605 Changes with Apache Libcloud 0.11.1:
606
607   *) General
608
609     - Fix hostname validation in the SSL verification code (CVE-2012-3446).
610
611       Reported by researchers from the University of Texas at Austin (Martin
612       Georgiev, Suman Jana and Vitaly Shmatikov).
613
614 Changes with Apache Libcloud 0.11.0:
615
616   *) Compute
617
618     - Add a timeout of 10 seconds to OpenStackAuthConnection class.
619       (LIBCLOUD-199)
620       [Chris Gilmer]
621
622     - Add time.sleep(wait_period) to _ssh_client_connect to prevent busy loops
623       when we immediately can't connect to a server. (LIBCLOUD-197)
624       [Jay Doane]
625
626     - Fix a bug with Python 3 support in the following drivers
627       - IBM SCE,
628       - CloudStack
629       - CloudSigma
630       - OpenNebula
631       - VpsNet
632       - EC2
633       - ElasticStack
634       - vCloud
635       - OpSource
636       - Slicehost
637       - Joyent
638       (LIBCLOUD-204)
639       [Sengor Kusturica, Hutson Betts, Tomaz Muraus]
640
641     - Make CloudStack driver more robust and make it work if list_images() call
642       returns no images. (LIBCLOUD-202)
643       [Gabriel Reid]
644
645     - Add force_ipv4 argument to _wait_until_running and default it to True.
646       This will make Libcloud ignore IPv6 addresses when using deploy_node.
647       [Jay Doane, Tomaz muraus]
648
649     - Include error text if a CloudStack async job returns an error code.
650       (LIBCLOUD-207)
651       [Gabriel Reid]
652
653     - Add extenstion methods for block storage volume management to the
654       CloudStack driver. (LIBCLOUD-208)
655       [Gabriel Reid]
656
657     - New driver for KT UCloud (http://home.ucloud.olleh.com/main.kt) based on
658       the CloudStack driver.
659       [DaeMyung Kang]
660
661     - Add a standard API and methods for managing storage volumes to the
662       EC2 and CloudStack drivers. Base API consistent of the following methods:
663       create_volume, destroy_volume, attach_volume, detach_volume.
664       (LIBCLOUD-213)
665       [Gabriel Reid]
666
667     - Change ex_describe_tags, ex_create_tags and ex_delete_tags methods
668       signature in the EC2 driver. Argument is now called resource (previously
669       it was called node). This methods work with both Node and StorageVolume
670       objects. (LIBCLOUD-213)
671       [Gabriel Reid, Tomaz Muraus]
672
673     - Add Rackspace Nova London driver.
674       [Chris Gilmer]
675
676     - Fix a bug - If user doesn't pass in 'network_id' argument to the
677       create_node method in the CloudStack driver, don't explicitly define it.
678       (LIBCLOUD-219)
679       [Bruno Mahé, Tomaz Muraus]
680
681     - Modify EC2 driver to also return cc2.8xlarge cluster compute instance in
682       the eu-west-1 region.
683       [Tomaz Muraus]
684
685     - Add 'auth_user_variable' to the  OpenStackAuthConnection class.
686       [Mark Everett]
687
688     - Fix a bug with repeated URLs in some requests the vCloud driver.
689       (LIBCLOUD-222)
690       [Michal Galet]
691
692     - New Gridspot driver with basic list and destroy functionality.
693       (LIBCLOUD-223)
694       [Amir Elaguizy]
695
696     - Add methods for managing storage volumes to the Gandi driver.
697       (LIBCLOUD-225)
698       [Aymeric Barantal]
699
700   *) DNS
701
702     - Add support for GEO RecordType to Zerigo driver. (LIBCLOUD-203)
703       [Gary Wilson]
704
705     - Fix a bug with Python 3 support in the following drivers (LIBCLOUD-204)
706       - Zerigo
707       [Tomaz Muraus]
708
709     - Add support for URL RecordType to Zerigo driver. (LIBCLOUD-209)
710       [Bojan Mihelac]
711
712     - Properly handle record creation when user doesn't provider a record name
713       and wants to create a record for the actual domain.
714       Reported by Matt Perry (LIBCLOUD-224)
715       [Tomaz Muraus]
716
717   *) Storage
718
719     - Fix a bug with Python 3 support in the following drivers
720       - Atmos
721       - Google Storage
722       - Amazon S3
723       (LIBCLOUD-204)
724       [Tomaz Muraus]
725
726     - Fix a bug in the CloudFiles driver which prevented it to work with
727       accounts which use a non ORD endpoint. (LIBCLOUD-205)
728       [Geoff Greer]
729
730     - Fix a bug in the enable_container_cdn method. (LIBCLOUD-206)
731       [Geoff Greer]
732
733     - Allow user to specify container CDN TTL when calling container.enable_cd()
734       using ex_ttl keyword argument in the CloudFiles driver.
735       [Tomaz Muraus]
736
737     - Add ex_enable_static_website and ex_set_error_page method to the
738       CloudFiles driver.
739       [Tomaz Muraus]
740
741     - Propagate kwargs passed to container.download_object() to
742       driver.download_object(). (LIBCLOUD-227)
743       [Benno Rice]
744
745     - Fix a bug with not escaping container and object name in the Atmos driver.
746       [Russell Keith-Magee, Benno Rice]
747
748     - Fix upload_object_via_stream method in the Atmos driver. (LIBCLOUD-228)
749       [Benno Rice]
750
751     - Fix a bug with uploading zero-sized files in the OpenStack Swift /
752       CloudFiles driver.
753       [Tomaz Muraus]
754
755     - Fix a bug with content_type and and encoding of object and path names in
756       the Atmos driver.
757       [Russell Keith-Magee]
758
759   *) Other:
760
761     - Unify docstrings formatting in the compute drivers. (LIBCLOUD-229)
762       [Ilgiz Islamgulov]
763
764 Changes with Apache Libcloud 0.10.1:
765
766   *) General:
767
768     - Add timeout attribute to base 'Connection' class and pass it to the
769       connection class constructor if Python version is not 2.5.
770       [Chris Gilmer]
771
772   *) Compute:
773
774     - Update IBM SBC driver so it works with IBM Smart Cloud Enterprise.
775       (LIBCLOUD-195)
776       [Sengor Kusturica]
777
778     - Add ex_register_iso method to the CloudStack driver. (LIBCLOUD-196)
779       [Daemian Mack]
780
781     - Allow user to specify which IP to use when calling deploy_node.
782       (defaults to 'public_ips'). Previously it only worked with public IP, now
783       user can pass 'private_ips' as an argument and SSH client will try to
784       connect to the node first private IP address.
785       [Jay Doane]
786
787     - Fix CloudSigmaLvsNodeDriver connectionCls bug.
788       [Jerry Chen]
789
790     - Add 'ex_keyname' argument to the create_node method in the OpenStack
791       driver. (LIBCLOUD-177)
792       [Jay Doane]
793
794     - Fix a problem in deploy_node - make it work with providers which
795       don't  instantly return created node in the list_node response.
796       Also add __str__ and __repr__ method to DeploymentError so the
797       error message is more useful. (LIBCLOUD-176)
798       [Jouke Waleson, Tomaz Muraus]
799
800     - Add 'ssh_key' feature to Brigthbox driver. This way it works with
801       deploy_node. (LIBCLOUD-179)
802       [Neil Wilson]
803
804     - Add Joyent compute driver.
805       [Tomaz Muraus]
806
807     - Store auth token expire times on the connection class in the attribute
808       called 'auth_token_expires'. (LIBCLOUD-178)
809       [Chris Gilmer, Brad Morgan]
810
811     - Add new driver for VCL cloud
812       (http://www.educause.edu/blog/hes8/CloudComputingandtheVirtualCom/167931)
813       (LIBCLOUD-180)
814       [Jason Gionta, Tomaz Muraus]
815
816     - Improve and add new features to Brightbox driver
817         - Update fixtures to represent actual api output
818         - Update compute tests to 100% coverage
819         - Add userdata and server group extensions to create_node
820         - Add ipv6 support to public ip list
821         - Improve in line documentation
822         - Add lots of api output information to Node and Image
823           'extra' attributes
824         - Allow variable API versions (api_version argument)
825         - Allow reverse dns updates for cloud ip extensions
826       (LIBCLOUD-184)
827       [Neil Wilson, Tomaz Muraus]
828
829     - Add ex_userdata argument to the OpenStack 1.1 driver. (LIBCLOUD-185)
830       [Jay Doane]
831
832     - Modify Vmware vCloud driver and implement new features
833       for the vCloud version 1.5. (LIBCLOUD-183)
834       [Michal Galet, Sengor Kusturica]
835
836     - Allow user to pass mode argument to SSHClient.put method and default it to
837       'w'. (LIBCLOUD-188)
838       [Jay Doane]
839
840     - Modify SSHKeyDeployment step to use append mode so it doesn't overwrite
841       existing entries in .ssh/authorized_keys. (LIBCLOUD-187)
842       [Jay Doane]
843
844     - Modify ParamikoSSHClient to connect to the SSH agent and automatically
845       look for private keys in ~/.ssh if the 'auth' and 'ssh_key' argument
846       is not specified when calling deploy_node. (LIBCLOUD-182)
847       [Tomaz Muraus]
848
849     - Add ex_rescue and ex_unrescue method to OpenStack 1.1 driver.
850       (LIBCLOUD-193)
851       [Shawn Smith]
852
853     - Include 'password' in the node extra dictionary when calling deploy_node
854       if the password auth is used.
855       [Juan Carlos Moreno]
856
857     - Add FileDeployment class to libcloud.compute.deployment module. This can
858       be used as a replacement for ex_files argument if the provider supports
859       deployment functionality. (LIBCLOUD-190)
860       [Jay Doane]
861
862   *) Storage
863
864     - Large object upload support for CloudFiles driver
865     - Add CLOUDFILES_SWIFT driver to connect to OpenStack Swift
866       [Dmitry Russkikh, Roman Bogorodskiy]
867
868   *) Load-balancer
869
870     - Don't include 'body_regex' attribute in the Rackspace driver body if
871       body_regex is None or empty string. (LIBCLOUD-186)
872       [Bill Woodward]
873
874     - Don't split Load balancer IP addresses into public and private list.
875       Include all the addresses in the 'virtualIps' variable in the extra
876       dictionary (Rackspace driver). (LIBCLOUD-191)
877       [Adam Pickeral]
878
879 Changes with Apache Libcloud 0.9.1:
880
881   *) General:
882
883     - Make parsing of the Auth API responses in the OpenStack drivers more
884       flexible and extensible.
885
886       Now, every connection class that inherits from the openstack base
887       connection must implement get_endpoint(), who's job is to return the
888       correct endpoint out of the service catalog.
889
890       Note: The openstack.py base driver no longer works by default with
891       Rackspace nova. The default endpoint parsed from the service catalog
892       is the default compute endpoint for devstack. (LIBCLOUD-151)
893       [Brad Morgan]
894
895     - Allow user to pass ex_tenant_name keyword argument to the OpenStack node
896       driver class. This scopes all the endpoints returned by the Auth API
897       endpoint to the provided tenant. (LIBCLOUD-172)
898       [James E. Blair]
899
900     - Allow user to specify OpenStack service catalog parameters (service type,
901       name and region). This way base OpenStack driver can be used with
902       different providers without needing to subclass. (LIBCLOUD-173)
903       [James E. Blair]
904
905     - Fix a bug with handling compressed responses in the Linode driver.
906       (LIBCLOUD-158)
907       [Ben Agricola]
908
909   *) Compute:
910
911     - Add new RackspaceNovaBeta and RackspaveNovaDfw driver based on the
912       OpenStack. (LIBCLOUD-151)
913       [Brad Morgan]
914
915     - Include 'created' and 'updated' attribute in the OpenStack 1.1 driver.
916       (LIBCLOUD-155)
917       [Chris Gilmer]
918
919     - Include 'minRam' and 'minDisk' attribute in the OpenStack 1.1 driver
920       Node extra dictionary. (LIBCLOUD-163)
921       [Chris Gilmer]
922
923     - Alow users to use a list of tuples for the query string parameters inside
924       the OpenStack connection classes. This way same key can be specified
925       multiple times (LIBCLOUD-153)
926       [Dave King]
927
928     - Allow user to pass 'max_tries' keyword argument to deploy_node method.
929       [Tomaz Muraus]
930
931     - Include original exception error message when re-throwing an exception
932       inside _run_deployment_script method.
933       [Tomaz Muraus]
934
935     - Add support for ElasticHosts new United States (Los Angeles) and Canada
936       (Toronto) locations. (GITHUB-53)
937       [Jaime Irurzun]
938
939     - Add serverId attribute to the NodeImage object extra dictionary in the
940       OpenStack driver.
941       [Mark Everett]
942
943     - Add new EC2 instance type - m1.medium.
944       [Tomaz Muraus]
945
946     - Allow user to re-use auth tokens and pass 'ex_force_auth_token' keyword
947       argument to the OpenStack driver constructor. (LIBCLOUD-164)
948       [Dave King]
949
950     - Add new experimental libvirt driver.
951       [Tomaz Muraus]
952
953     - Properly handle OpenStack providers which return public IP addresses under
954       the 'internet' key in the addresses dictionary.
955       [Tomaz Muraus]
956
957     - Update create_node in Linode driver and make it return a Node object
958       instead of a list. Reported by Jouke Waleson. (LIBCLOUD-175)
959       [Tomaz Muraus]
960
961   *) Storage:
962
963     - Don't lowercase special header names in the Amazon S3 storage driver.
964       (LIBCLOUD-149)
965       [Tomaz Muraus]
966
967   *) Load-balancer:
968
969     - Allow user to specify a condition and weight when adding a member in
970       the Rackspace driver.
971       [Adam Pickeral]
972
973     - Add an extension method (ex_balancer_attach_members) for attaching
974       multiple members to a load balancer in the Rackspace driver.
975       (LIBCLOUD-152)
976       [Adam Pickeral]
977
978     - Add ex_creaate_balancer method to the Rackspace driver and allow user to
979       pass 'vip' argument to it. (LIBCLOUD-166)
980       [Adam Pickeral]
981
982     - Update Rackspace driver to support Auth 2.0. (LIBCLOUD-165)
983       [Dave King]
984
985     - Add new ex_create_balancer_access_rule and
986       ex_create_balancer_access_rule_no_poll method to the Rackspace driver.
987       (LIBCLOUD-170)
988       [Dave King]
989
990   *) DNS:
991
992     - Update Rackspace driver to support Auth 2.0. (LIBCLOUD-165)
993       [Dave King]
994
995 Changes with Apache Libcloud 0.8.0:
996
997   *) General:
998
999      - Add 'request_kwargs' argument to the get_poll_request_kwargs method.
1000        This argument contains kwargs which were previously used to initiate the
1001        poll request.
1002        [Mark Everett]
1003
1004      - Add support for handling compressed responses (deflate, gzip). Also send
1005        "Accept-Encoding" "gzip,deflate" header with all the requests.
1006        [Tomaz Muraus]
1007
1008      - Fix debug module (LIBCLOUD_DEBUG env variable) so it works with Python 3
1009        [Tomaz Muraus]
1010
1011   *) Compute:
1012
1013      - Added support for retrieving OpenNebula v3.2 instance types, OpenNebula
1014        v3.0 network Public attribute support, and additional code coverage
1015        tests.
1016        [Hutson Betts]
1017
1018      - Add implementation for ex_save_image method to the OpenStack 1.1 driver.
1019        [Shawn Smith]
1020
1021      - Add support for Amazon new South America (Sao Paulo) location.
1022        [Tomaz Muraus]
1023
1024      - Fix a bug in OpenStack driver when 2.0_apikey or 2.0_password
1025        'auth_version' is used.
1026        [Tomaz Muraus]
1027
1028      - Current OpenNebula OCCI implementation does not support a proper
1029        restart method. Rather it suspends and resumes. Therefore, restart_node
1030        has been removed from the OpenNebula driver.
1031        [Hutson Betts]
1032
1033      - Enable ex_delete_image method in the OpenStack 1.1 driver.
1034        [Shawn Smith]
1035
1036      - Return NodeImage instance in OpenStack 1.1 driver ex_save_image method
1037        (LIBCLOUD-138)
1038        [Shawn Smith]
1039
1040      - Enable reboot_node method in the OpenNebula 3.2 driver.
1041        [Hutson Betts]
1042
1043      - Fix a public_ips Node variable assignment in the Gandi.net driver.
1044        [Aymeric Barantal]
1045
1046      - Updated the list of node states for OpenNebula drivers. (LIBCLOUD-148)
1047        [Hutson Betts]
1048
1049   *) Storage:
1050
1051     - Propagate extra keyword arguments passed to the Rackspace driver
1052       connection class.
1053       [Dave King]
1054
1055   *) Load-balancer:
1056
1057     - Add 'extra' attribute to the LoadBalancer object and retrieve all the
1058       virtual IP addresses in the Rackspace driver.
1059       [Dave King]
1060
1061     - Add list_supported_algorithms() method to the base LoadBalancer class.
1062       This method returns a list of supported algorithms by the provider.
1063       [Dave King]
1064
1065     - Update Rackspace driver:
1066       - Add two new supported algorithms: WEIGHTED_ROUND_ROBIN,
1067         WEIGHTED_LEAST_CONNECTIONS
1068       - Add ex_list_algorithm_names method
1069       - Add ex_get_balancer_error_page method
1070       - Add ex_balancer_access_list method
1071       - Populate LoadBalancer extra dictionary with more attributes
1072       - Add support for health monitors and connection throttling
1073       - Add more balancer states
1074       - ex_list_protocols_with_default_ports
1075       [Dave King]
1076
1077     - Propagate extra keyword arguments passed to the Rackspace driver
1078       connection class.
1079       [Dave King]
1080
1081     - Add 'extra' attribute to the Member object and populate it in
1082       the Rackspace driver.
1083       [Mark Everett]
1084
1085     - Adds status to the Member object and conditions an 'enum'
1086       (Rackspace driver).
1087       [Mark Everett]
1088
1089     - Add update_balancer method to the base LoadBalancer class.
1090       [Mark Everett]
1091
1092     - Add update_balancer method to the Rackspace driver.
1093       [Mark Everett]
1094
1095     - Add created and updated attribute to the LoadBalancer extra dictionary in
1096       the Rackspace driver.
1097       [Mark Everett]
1098
1099     - Fix protocol name maping in the Rackspace driver.
1100       [Bill Woodward]
1101
1102 Changes with Apache Libcloud 0.7.1:
1103
1104   *) General:
1105
1106      - Fix a minor bug in debug mode (LIBCLOUD_DEBUG=/dev/stderr) which has been
1107        introduced when adding Python 3 compatibility layer.
1108        [Paul Querna]
1109
1110      - Update OpenStack Auth API endpoint paths.
1111        [Paul Querna]
1112
1113 Changes with Apache Libcloud 0.7.0:
1114
1115   *) General:
1116
1117      - Add support for Python 3.x.
1118        [Tomaz Muraus]
1119
1120      - Remove old deprecated paths.
1121        [Tomaz Muraus]
1122
1123   *) Compute:
1124
1125      - Update CloudSigma Zurich API endpoint address.
1126        [Tomaz Muraus]
1127
1128      - Add new US Las Vegas endpoint to CloudSigma driver (types.CLOUDSIGMA_US)
1129        [Tomaz Muraus]
1130
1131      - Allow user to specify drive type (hdd, ssd) when creating a
1132        CloudSigma server.
1133
1134        Note 'ssd' drive_type doesn't work with the API yet.
1135        [Tomaz Muraus]
1136
1137      - Update OpenStack 1.1 driver to comply with the API specs. Need to make
1138        another call to retrieve node name and ip addresses when creating a node,
1139        because the first call only returns an id an the password. (GITHUB-40)
1140        [Dave King]
1141
1142      - Add ex_node_ids argument to the EC2 driver list_nodes method.
1143        (GITHUB-39)
1144        [Suvish Vt]
1145
1146      - If OpenStack Auth 2.0 API is used, also parse out tenant id and
1147        name and save it on the connection class (conn.tenant['id'],
1148        conn.tenant['name']).
1149        [Tomaz Muraus]
1150
1151      - Add new "Cluster Compute Eight Extra Large" size to the Amazon EC2
1152        driver.
1153        [Tomaz Muraus]
1154
1155      - Add the following extension methods to the EC2 compute driver:
1156        ex_describe_all_addresses, ex_associate_addresses, ex_start_node,
1157        ex_stop_node.
1158        [Suvish Vt]
1159
1160      - Change public_ip and private_ip attribute on the Node object to the
1161        public_ips and private_ips since both of the objects are always a list.
1162
1163        Note: For backward compatibility you can still access public_ip and
1164        private_ip attributes, but this will be removed in the next release.
1165        [Tomaz Muraus]
1166
1167      - Fix an inconsistency in IBM SBC driver and make sure public_ips and
1168        private_ips attributes are a list.
1169        [Tomaz Muraus]
1170
1171      - Fix an inconsistency in OpSource driver and make sure public_ips is an
1172        empty list ([]), not 'unknown'
1173        [Tomaz Muraus]
1174
1175      - Updated support for OpenNebula.org v1.4, v2.x, and v3.x APIs and included
1176        additional compute tests validating functionality. (LIBCLOUD-121)
1177        [Hutson Betts]
1178
1179   *) Load-balancer:
1180
1181     - Add ex_member_address argument to the Rackspace driver list_balancers
1182       method. If this argument is provided, only loadbalancers which have a
1183       member with the provided IP address attached are returned.
1184       [Tomaz Muraus]
1185
1186 Changes with Apache Libcloud 0.6.2:
1187
1188   *) General
1189
1190      - Fix a bug in PollingConnection class - actually use and don't ignore
1191        the poll_interval
1192        [Tomaz Muraus]
1193
1194   *) Compute:
1195
1196      - Add support for Auth 2.0 API (keystone) to the OpenStack Auth
1197        connection class.
1198        [Brad Morgan]
1199
1200      - Add list_locations method to the OpenStack driver and fix some
1201        inconsistencies in the OpenStack driver extension method signatures.
1202        [Brad Morgan]
1203
1204      - Update Amazon EC2 driver and pricing data to support a new region -
1205        US West 2 (Oregon)
1206        [Tomaz Muraus]
1207
1208      - Expose 'CLOUDSTACK' provider. This driver can be used with an
1209        arbitrary CloudStack installation.
1210        [Tomaz Muraus]
1211
1212   *) Storage:
1213
1214      - Update Amazon S3 driver to support a new region - US West 2 (Oregon)
1215        [Tomaz Muraus]
1216
1217    *) DNS:
1218
1219       - Increase the default poll interval in the Rackspace driver to 2.5
1220         seconds.
1221         [Tomaz Muraus]
1222
1223       - Fix a bug in Rackspace Cloud DNS driver and make sure to throw an
1224         exception if an unexpected status code is returned. Reported by
1225         "jeblair".
1226         [Tomaz Muraus]
1227
1228 Changes with Apache Libcloud 0.6.1:
1229
1230   *) General:
1231
1232      - Modify ParamikoSSHClient.connect so it supports authentication using a
1233        key file, (LIBCLOUD-116)
1234        [Jay Doane]
1235
1236      - User must now explicitly specify a path when using LIBCLOUD_DEBUG
1237        environment variable. (LIBCLOUD-95)
1238        [daveb, Tomaz Muraus]
1239
1240      - Add new XmlResponse and JsonResponse base class and modify all the
1241        driver-specific response classes to inherit from one of those two
1242        classes where applicable.
1243        [Caio Romão]
1244
1245      - Add new 'PollingConnection' class. This class can work with 'async'
1246        APIs. It sends and an initial request and then periodically poll the API
1247        until the job has completed or a timeout has been reached.
1248        [Tomaz Muraus]
1249
1250   *) Compute:
1251
1252      - Add 24GB size to the GoGrid driver
1253        [Roman Bogorodskiy]
1254
1255      - Fix API endpoint URL in the Softlayer driver
1256        [Tomaz Muraus]
1257
1258      - Add support for OpenNebula 3.0 API (LIBCLOUD-120)
1259        [Hutson Betts]
1260
1261      - Add more attributes to the extra dictionary in the EC2 driver.
1262        (GITHUB-31)
1263        [Juan Carlos Moreno]
1264
1265      - Fix IP address assignment in the EC2 driver. Don't include "None" in the
1266        public_ip and private_ip Node list attribute.
1267        [Tomaz Muraus]
1268
1269      - Make deploy_node functionality more robust and don't start deployment if
1270        node public_ip attribute is an empty list.
1271        [Tomaz Muraus]
1272
1273      - Support SSH key authentication when using deploy_node.
1274        [Russell Haering, Tomaz Muraus]
1275
1276      - Enable deploy_node functionality in the EC2 driver using SSH key
1277        authentication
1278        [Russell Haering, Tomaz Muraus]
1279
1280      - Enable paramiko library debug log level if LIBCLOUD_DEBUG is used and
1281        paramiko is installed.
1282        [Tomaz Muraus]
1283
1284      - Fix the request signature generation in the base EC2 compute driver.
1285        If the endpoint is using a non-standard port (Eucalyptus based
1286        installations), append it to the hostname used to generate the
1287        signature.
1288        [Simon Delamare]
1289
1290      - Add new "unavailable" state to the BrightboxNodeDriver class.
1291        [Tim Fletcher]
1292
1293      - Increase a PollingConnection timeout in the CloudStack connection
1294        and fix the context dictionary creation in the _async_request method.
1295        [gigimon]
1296
1297      - Fix networks retrieval in the CloudStack driver create_node method.
1298        Also only pass 'networkids' field to the API if there are any networks
1299        available.
1300        [gigimon, Tomaz Muraus]
1301
1302      - Fix list_nodes in the CloudStack driver. Private IPs aren't always
1303        available.
1304        [Tomaz Muraus]
1305
1306   *) Load-baancer:
1307
1308      - Add a missing argument to the method call inside
1309        LoadBalancer.attach_compute_node and Driver.balancer_attach_compute_node.
1310        [Tim Fletcher, Tomaz Muraus]
1311
1312      - Add missing destroy() method to the LoadBalancer class.
1313        [Tomaz Muraus]
1314
1315   *) DNS:
1316
1317      - New drivers for Rackspace Cloud DNS (US and UK region)
1318        [Tomaz Muraus]
1319
1320      - Add list_record_types() method. This method returns a list of record
1321        types supported by the provider.
1322        [Tomaz Muraus]
1323
1324 Changes with Apache Libcloud 0.6.0-beta1
1325
1326   *) General:
1327
1328     - All the driver classes now inherit from the BaseDriver class
1329       [Tomaz Muraus]
1330
1331     - Prefer simplejson (if available) over json module. (LIBCLOUD-112)
1332       [Geoff Greer]
1333
1334     - Update compute demo and change the syntax of test credentials stored in
1335       test/secrets.py-dist. (LIBCLOUD-111)
1336       [Mike Nerone]
1337
1338     - Enable SSL certificate verification by default and throw an exception
1339       if CA certificate files cannot be found. This can be overridden by
1340       setting libcloud.security.VERIFY_SSL_CERT_STRICT to False.
1341       [Tomaz Muraus]
1342
1343   *) Compute:
1344
1345      - Support for 1.1 API and many other improvements in the OpenStack driver ;
1346        LIBCLOUD-83
1347        [Mike Nerone, Paul Querna, Brad Morgan, Tomaz Muraus]
1348
1349      - Add some extra methods to the Gandi.net driver (LIBCLOUD-115)
1350        [Aymeric Barantal]
1351
1352      - Add ex_delete_image method to the Rackspace driver. (GITHUB-27)
1353        [David Busby]
1354
1355      - Linode driver now supports new 'Japan' location
1356        [Jed Smith]
1357
1358      - Rackspace driver now inherits from the OpenStack one instead of doing
1359        it vice versa. (LIBCLOUD-110)
1360        [Mike Nerone]
1361
1362      - Properly populate NodeImage "details" dictionary in the Rackspace
1363        compute driver. (LIBCLOUD-107)
1364        [Lucy Mendel]
1365
1366      - Fix a bug in Eucalyptus driver ex_describe_addresses method.
1367        [Tomaz Muraus]
1368
1369      - Add the following new extenstion methods to the Rackspace driver:
1370        ex_resize, ex_confirm_resize, ex_revert_resize.
1371        [Tomaz Muraus]
1372
1373      - Also allow user to pass in Node object to some ex_ methods in
1374        the Rackspace compute driver.
1375        [Tomaz Muraus]
1376
1377      - Throw an exception in deploy_node if paramiko library is not
1378        available
1379        [Tomaz Muraus]
1380
1381      - Fix chmod argument value which is pased to the sftpclient.put
1382        method; GITHUB-17
1383        [John Carr]
1384
1385      - New driver for Ninefold.com. (LIBCLOUD-98)
1386        [Benno Rice]
1387
1388   *) Storage:
1389
1390      - New driver for Google Storage based on the v1.0 / legacy API
1391        [Tomaz Muraus]
1392
1393      - New driver for Ninefold.com. (GITHUB-19)
1394        [Benno Rice]
1395
1396      - Fix a bug in uploading an object with some versions of Python 2.7
1397        where httplib library doesn't automatically call str() on the
1398        header values.
1399        [Tomaz Muraus]
1400
1401      - Allow users to upload (create) 0-bytes large (empty) objects
1402        [Tomaz Muraus]
1403
1404   *) Load-balancer:
1405
1406      - New driver for Rackspace UK location
1407        [Tomaz Muraus]
1408
1409      - New driver for Ninefold.com. (LIBCLOUD-98)
1410        [Benno Rice]
1411
1412   *) DNS:
1413
1414    - Drivers for Linode DNS and Zerigo DNS
1415      [Tomaz Muraus]
1416
1417    - Brand new DNS API!
1418      [Tomaz Muraus]
1419
1420 Changes with Apache Libcloud 0.5.2
1421
1422   *) Compute:
1423      - New driver for serverlove.com and skalicloud.com
1424        [Tomaz Muraus]
1425
1426      - Fix node name and tag handling in the Amazon EC2 driver
1427        [Wiktor Kolodziej]
1428
1429      - Fix pricing and response handling in the OpenStack driver
1430        [Andrey Zhuchkov]
1431
1432      - Fix deploy_node() method and make it more robust
1433        [Tomaz Muraus]
1434
1435      - Users can now pass file like objects to ScriptDeployment and
1436        SSHKeyDeployment constructor.
1437        [Tomaz Muraus]
1438
1439      - Include node tags when calling list_nodes() in the Amazon EC2
1440        driver
1441        [Trevor Pounds]
1442
1443      - Properly handle response errors in the Rackspace driver and
1444        only throw InvalidCredsError if the returned status code is 401
1445        [Brad Morgan]
1446
1447      - Fix the create_node method in the Nimbus driver and make the
1448        "ex_create_tag" method a no-op, because Nimbus doesn't support creating
1449        tags.
1450        [Tomaz Muraus]
1451
1452     *) Storage:
1453
1454      - Fix handling of the containers with a lot of objects. Now a LazyList
1455        object is returned when user calls list_container_objects() method
1456        and this object transparently handles pagination.
1457      [Danny Clark, Wiktor Kolodziej]
1458
1459 Changes with Apache Libcloud 0.5.0
1460
1461     *) Existing APIs directly on the libcloud.* module have been
1462        deprecated and will be removed in version 0.6.0.  Most methods
1463        were moved to the libcloud.compute.* module.
1464
1465     *) Add new libcloud.loadbalancers API, with initial support for:
1466         - GoGrid Load Balancers
1467         - Rackspace Load Balancers
1468       [Roman Bogorodskiy]
1469
1470     *) Add new libcloud.storage API, with initial support for:
1471         - Amazon S3
1472         - Rackspace CloudFiles
1473        [Tomaz Muraus]
1474
1475     *) Add new libcloud.compute drivers for:
1476         - Bluebox [Christian Paredes]
1477         - Gandi.net [Aymeric Barantal]
1478         - Nimbus [David LaBissoniere]
1479         - OpenStack [Roman Bogorodskiy]
1480         - Opsource.net [Joe Miller]
1481
1482     *) Added "pricing" module and improved pricing handling.
1483        [Tomaz Muraus]
1484
1485     *) Updates to the GoGrid compute driver:
1486         - Use API version 1.0.
1487         - Remove sandbox flag.
1488         - Add ex_list_ips() to list IP addresses assigned to the account.
1489         - Implement ex_edit_image method which allows changing image attributes
1490           like name, description and make image public or private.
1491        [Roman Bogorodskiy]
1492
1493     *) Updates to the Amazon EC2 compute driver:
1494         - When creating a Node, use the name argument to set a Tag with the
1495           value.  [Tomaz Muraus]
1496         - Add extension method for modifying node attributes and changing the
1497           node size. [Tomaz Muraus]
1498         - Add support for the new Amazon Region (Tokyo). [Tomaz Muraus]
1499         - Added ex_create_tags and ex_delete_tags. [Brandon Rhodes]
1500         - Include node Elastic IP addresses in the node public_ip attribute
1501           for the EC2 nodes. [Tomaz Muraus]
1502         - Use ipAddress and privateIpAddress attribute for the EC 2node public
1503           and private ip. [Tomaz Muraus]
1504         - Add ex_describe_addresses method to the EC2 driver. [Tomaz Muraus]
1505
1506     *) Updates to the Rackspace CloudServers compute driver:
1507         - Add ex_rebuild() and ex_get_node_details() [Andrew Klochkov]
1508         - Expose URI of a Rackspace node to the node meta data. [Paul Querna]
1509
1510     *) Minor fixes to get the library and tests working on Python 2.7 and PyPy.
1511        [Tomaz Muraus]
1512
1513 Changes with Apache Libcloud 0.4.2 (Released January 18, 2011)
1514
1515     *) Fix EC2 create_node to become backward compatible for
1516        NodeLocation.
1517        [Tomaž Muraus]
1518
1519     *) Update code for compatibility with CPython 2.5
1520        [Jerry Chen]
1521
1522     *) Implement ex_edit_node method for GoGrid driver which allows
1523        changing node attributes like amount of RAM or description.
1524        [Roman Bogorodskiy]
1525
1526     *) Add ex_set_password and ex_set_server_name to Rackspace driver.
1527        [Peter Herndon, Paul Querna]
1528
1529     *) Add Hard and Soft reboot methods to Rackspace driver.
1530        [Peter Herndon]
1531
1532     *) EC2 Driver availability zones, via ex_list_availability_zones;
1533        list_locations rewrite to include availablity zones
1534        [Tomaž Muraus]
1535
1536     *) EC2 Driver Idempotency capability in create_node; LIBCLOUD-69
1537        [David LaBissoniere]
1538
1539     *) SSL Certificate Name Verification:
1540        - libcloud.security module
1541        - LibcloudHTTPSConnection, LibcloudHTTPConnection (alias)
1542        - Emits warning when not verifying, or CA certs not found
1543
1544     *) Append ORD1 to available Rackspace location, but keep in the
1545        same node as DFW1, because it's not readable or writeable from
1546        the API.
1547        [Per suggestion of Grig Gheorghiu]
1548
1549     *) ex_create_ip_group, ex_list_ip_groups, ex_delete_ip_group,
1550        ex_share_ip, ex_unshare_ip, ex_list_ip_addresses additions
1551        to Rackspace driver
1552        [Andrew Klochkov]
1553
1554     *) New driver for CloudSigma.
1555        [Tomaž Muraus]
1556
1557     *) New driver for Brightbox Cloud. (LIBCLOUD-63)
1558        [Tim Fletcher]
1559
1560     *) Deployment capability to ElasticHosts
1561        [Tomaž Muraus]
1562
1563     *) Allow deploy_node to use non-standard SSH username and port
1564        [Tomaž Muraus]
1565
1566     *) Added Rackspace UK (London) support
1567        [Chmouel Boudjnah]
1568
1569     *) GoGrid driver: add support for locations, i.e. listing
1570        of locations and creation of a node in specified
1571        location
1572        [Roman Bogorodskiy]
1573
1574     *) GoGrid and Rackspace drivers: add ex_save_image() extra
1575        call to convert running node to an image
1576        [Roman Bogorodskiy]
1577
1578     *) GoGrid driver: add support for creating 'sandbox' server
1579        and populate isSandbox flag in node's extra information.
1580        [Roman Bogorodskiy]
1581
1582     *) Add ImportKeyPair and DescribeKeyPair to EC2. (LIBCLOUD-62)
1583        [Philip Schwartz]
1584
1585     *) Update EC2 driver and test fixtures for new API.
1586        [Philip Schwartz]
1587
1588 Changes with Apache Libcloud 0.4.0 [Released October 6, 2010]
1589
1590     *) Add create keypair functionality to EC2 Drivers. (LIBCLOUD-57)
1591        [Grig Gheorghiu]
1592
1593     *) Improve handling of GoGrid accounts with limited access
1594        API keys. [Paul Querna]
1595
1596     *) New Driver for ElasticHosts. (LIBCLOUD-45)
1597        [Tomaz Muraus]
1598
1599     *) Use more consistent name for GoGrid driver and use http
1600        POST method for 'unsafe' operations
1601        [Russell Haering]
1602
1603     *) Implement password handling and add deployment support
1604        for GoGrid nodes.
1605        [Roman Bogorodskiy]
1606
1607     *) Fix behavior of GoGrid's create_node to wait for a Node ID.
1608        [Roman Bogorodskiy]
1609
1610     *) Add ex_create_node_nowait to GoGrid driver if you don't need to
1611        wait for a Node ID when creating a node.
1612        [Roman Bogorodskiy]
1613
1614     *) Removed libcloud.interfaces module.
1615        [Paul Querna]
1616
1617     *) Removed dependency on zope.interfaces.
1618        [Paul Querna]
1619
1620     *) RimuHosting moved API endpoint address.
1621        [Paul Querna]
1622
1623     *) Fix regression and error in GoGrid driver for parsing node objects.
1624        [Roman Bogorodskiy]
1625
1626     *) Added more test cases for GoGrid driver. (LIBCLOUD-34)
1627        [Roman Bogorodskiy, Jerry Chen]
1628
1629     *) Fix parsing of Slicehost nodes with multiple Public IP addresses.
1630        [Paul Querna]
1631
1632     *) Add exit_status to ScriptDeployment. (LIBCLOUD-36)
1633        [Paul Querna]
1634
1635     *) Update prices for several drivers.
1636        [Brad Morgan, Paul Querna]
1637
1638     *) Update Linode driver to reflect new plan sizes.
1639        [Jed Smith]
1640
1641     *) Change default of 'location' in Linode create_node. (LIBCLOUD-41)
1642        [Jed Smith, Steve Steiner]
1643
1644     *) Document the Linode driver.
1645        [Jed Smith]
1646
1647     *) Request a private, LAN IP address at Linode creation.
1648        [Jed Smith]
1649
1650 Changes with Apache Libcloud 0.3.1 [Released May 11, 2010]
1651
1652     *) Updates to Apache License blocks to correctly reflect status as an
1653        Apache Project.
1654
1655     *) Fix NOTICE file to use 2010 copyright date.
1656
1657     *) Improve error messages for when running the test cases without
1658        first setting up a secrets.py
1659
1660 Changes with Apache Libcloud 0.3.0 [Tagged May 6, 2010, not released]
1661
1662     *) New Drivers for:
1663       - Dreamhost
1664       - Eucalyptus
1665       - Enomaly ECP
1666       - IBM Developer Cloud
1667       - OpenNebula
1668       - SoftLayer
1669
1670     *) Added new deployment and bootstrap API.
1671
1672     *) Improved Voxel driver.
1673
1674     *) Added support for Amazon EC2 Asia Pacific (Singapore) Region.
1675
1676     *) Improved test coverage for all drivers.
1677
1678     *) Add support for multiple security groups in EC2.
1679
1680     *) Fixed bug in Rackspace and RimuHosting when using multiple threads.
1681
1682     *) Improved debugging and logging of HTTP requests.
1683
1684     *) Improved documentation for all classes and methods.
1685
1686 Changes with Apache Libcloud 0.2.0 [Tagged February 2, 2010]
1687
1688     *) First public release.