59f9611018ec2d03a2923349adcd9a6e46cbbe4b
[deltacloud.git] / NEWS
1 1.1.3 - 2013-04-17
2   * Deltacloud
3     + We no longer support MRI 1.8
4     + Added Deltacloud namespace for all models and classes to avoid conflicts (DTACLOUD-517)
5     + Added possibility to pass :mock_initialize when using Deltacloud as Rack
6       middleware. (DTACLOUD-507)
7     + Fixed various dependency issues with excon, tilt and haml
8     + Added support for URL helper for Rabbit subcollections (DTACLOUD-526)
9     + Switch to use local variables instead of instance variables in HAML views (thanks to Francesco Vollero)
10     + Refactored driver source loading code (DTACLOUD-540)
11   * Client
12     + Complete rewrite from scratch using Faraday lib
13   * CIMI
14     + Fixed incorrect look up for DiskCollection (DTACLOUD-536)
15     + Added missing VolumeConfigurationCreate (DTACLOUD-524)
16     + Added initial support for System models (mock, fgcp) (thanks to Dies Koper)
17     + Refactored how we generate Rabbit collections (generate_operation_collection)
18     + Obsoleted CIMI HAML views were removed
19     + Fixed deltacloud-db-upgrade to work on Windows
20   * EC2
21     + Fixed logging for EC2 frontend
22   * Drivers
23     + RHEV-M
24       - Allow client to select the first boot device
25     + Mock
26       - Convert all stub URL's correctly
27   * Tests
28     + Added loadbalancer tests for EC2
29     + Added support for Extended Machine scenarios - user_data (thanks to Ronelle Landy)
30
31 1.1.2 - 2013-03-13
32   * Deltacloud
33     + Introducing the 'deltacloud-db-upgrade' command for CIMI database
34     + Introducing the 'initializers'
35     + Fixed various JRuby issues, Deltacloud now runs on Puma web server
36     + Added possibility to defined multiple features in drivers per one-line
37     + Fixed Deltacloud logging when running as a daemon
38     + Improvements in how we load sinatra-rabbit collections
39     + Fixed JSON/XML serialization of 'realms'
40     + Fixed improper exception handling (DTACLOUD-489)
41     + Fixed namespacing issues in sinatra-rabbit
42     + Improved the 'filter_on' helper we use in drivers
43     + Improved compatibility with upcoming Ruby 2.0
44     + Deltacloud models now live in Deltacloud:: namespace (DTACLOUD-507)
45   * CIMI
46     + Introducing the CIMI 'create' entities (MachineCreate, MachineTemplateCreate, etc.)
47     + CIMI models are now properly validated when they are created
48     + General improvements in database support
49     + Introducing initial System entity support
50     + The 'rake cimi:routes' now display all CIMI entities and their routes
51     + Added support for 'referenced' entities in CIMI models
52     + (VolumeConfig): add missing type attribute
53     + (MachineCreate): pass initialState to driver
54     + Added possibility to use 'references' in 'array'
55   * Drivers:
56     + Mock
57       - General cleanup in Mock driver code, removed unused requires/etc
58       - Restored previously removed Network operations
59       - Initial import of CIMI System entities (dkoper)
60       - Create/delete blobs - update bucket size (DTACLOUD-498)
61     + FGCP
62       - Added code to exclude resources that were deleted during retrieval
63       - Added support for storage_volume creation from snapshot (DTACLOUD-492)
64       - Added mapping for GET system and system_templates (CIMI)
65       - Added many unit tests
66     + OpenStack
67       - Remaped 'regions' to 'providers' (DTACLOUD-488)
68       - Remove realm<->region mapping for created Instances (DTACLOUD-477)
69     + DigitalOcean
70       - Added :authentication_key feature to instances
71       - Added 'valid_credentials?' method for digital_ocean driver
72       - Fix filtering of realms (DTACLOUD-503)
73       - Define default :realm_id and :hwp_id for create_instance
74       - Advertise :destroy operation when instance is STOPPED
75     + RHEV-M
76       - Avoid failure of GET instance details (DTACLOUD-462)
77     + VSphere
78       - Added support for StoragePod
79     + Opennebula
80       - Fix when computehash['INSTANCE_TYPE'] is nil
81
82 1.1.1 - 2013-02-13
83  * Deltacloud
84   + API CHANGES
85     - Added 'root_type' attribute to Image and HardwareProfile
86     - Added the 'resource_types' attribute to Realm model
87   + Server
88     - Advertise :destroy_image only if backend driver support this operation
89     - Added tests for deltacloudd launcher
90     - JSON output now include :href attributes (DTACLOUD-418)
91     - Fixed bug in JSON output in storage_volumes collection (DTACLOUD-454)
92     - Added possiblity to specify an 'username' for 'run on instance' action.
93     - Added JSON output for run_on_instance action
94     - Don't advertise the 'root_type' if provider does not support
95       persistent/transient storage.
96  * Drivers:
97   + Mock
98     - Some buckets hrefs in XML are missing "/" and returned garbled (DTACLOUD-425)
99   + EC2
100     - Added possiblity to import 'key' (require 'aws' >= 2.7.0) (DTACLOUD-438)
101   + Aruba
102     - Renamed driver to 'ArubaCloud' (DTACLOUD-444)
103     - Fixed in the 'savon' client
104   + DigitalOcean
105     - New driver (https://www.digitalocean.com/)
106     - Added hardware_profiles retrieval from provider
107   + FGCP
108     - Added support for :instance_count feature (CreateMultipleVServer)
109     - Remaped instance error states
110   + Rackspace
111     - Fixed case when created instances are not returned immediately after
112       creation
113     - Added compatible hardware_profiles to image (DTACLOUD-439)
114   + Openstack
115     - Make sure we retain keyname when both authentication_password and
116       authentication_key are present in driver (DTACLOUD-421)
117     - Added :storage_snapshot support (openstack gem >= 1.0.8 required)
118     - Fixed bug when we did base64 encode for :user_data in driver
119     - Added :launch_time attribute for instances
120     - Map Openstack 'regions' to Deltacloud realms (DTACLOUD-443)
121     - Fixed several MRI 1.8.7 compatiblity issues (DTACLOUD-461)
122   + Eucalyptus
123     - Override the realms method (no vpc/subnets) (DTACLOUD-423)
124   + GoGrid
125     - Added compatible hardware_profiles to image (DTACLOUD-439)
126     - GoGrid VCR fixtures update
127   + RHEV-M
128     - Advertise the :create_image operation only for STOPPED instances (DTACLOUD-452)
129     - Fixed case when using wrong instance_id when performing operation errors
130       out (DTACLOUD-457)
131  * CIMI
132   + Server
133    - Datamapper ORM replaced by the Sequel (http://sequel.rubyforge.org/)
134    - Added unit-tests for database models
135    - Fixed case when the collection is used as value for $select (DTACLOUD-432)
136    - Filtering of sub-collections now works using $select (DTACLOUD-431)
137    - Fixed missing :href attribute for sub-collections (DTACLOUD-433)
138    - Added unit-tests for the $select
139    - Fixed case when CIMI database entity is created without properties (DTACLOUD-448)
140    - Initial support for $filter parameter
141    - Added support for 'initial_state' capability (mock driver) (DTACLOUD-447)
142    - Renamed 'test:cimi:models' rake task to 'test:cimi'
143    - Fixed case when we set CIMI properties on provider side
144    - Improvements in how we handle CIMI::Model vs. DB entity
145    - Added support for passing an 'realm' when creating Machine
146    - Added 'updated' attribute to all CIMI models
147   + Client
148    - Added support for NetworkPortConfig and NetworkPortTemplate (DTACLOUD-409)
149    - Added support for AddressTemplate and Address (DTACLOUD-409)
150
151 1.1.0 - 2013-01-15
152  * Deltacloud core server
153     -Added minor tuning for jruby to spawn rake tasks correctly
154     -Added jruby-head target to Travis
155     -Core: Require "json/pure" instead of buggy "json" (DTACLOUD-382)
156     -Adds routes and helpers for segmented blob upload API
157     -Make backtrace in console longer
158     -Core: Fix case when backtrace for 502 exception is not set (DTACLOUD-359)
159     -Fix bug in images show.xml ... hwp.name vs hwp.id
160     -Added .to_hash method to all Deltacloud models .to_hash produce Ruby Hash that can be converted to JSON
161     -Serialize :drivers collection in same way as other collections
162     -Do not use require_relative when full path is given
163     -DTACLOUD-379 - raise and handle 409 instead of 500
164     -Adds error state to state machine model (+openstack)
165     -Added constraints to JSON output (DTACLOUD-410)
166     -DTACLOUD-398 explicitely specify errors not otherwise caught by sinatra
167     -Adds name/description attributes for storage_snapshot entity
168     -Fixed filtering of hwp profiles using architecture (DTACLOUD-414)
169     -Remove the :show operation from :authentication_key definition
170     -Fixed format of reported 403 error
171     -Remove 'set' in deltacloudd when thin is not installed
172     -Print warning when starting as a daemon without thin
173     -Change directory to $top_srcdir when using Webrick
174     -Overide default Rack::Server server to use :webrick
175     -Fixed timestamps and make be_id not required
176
177  * Deltacloud Tests:
178     -Fixed require_relative issue in drivers.
179     -Enable turn for Ruby 1.8
180     -added test for mock buckets
181     -added minitest can_create_bucket in mock driver
182     -updated fixtures for openstack instances - fixes broken build
183     -fixes openstack driver instances test - broken build
184     -Added unit tests for JSON serialization
185     -Fix loading of require_relative on MRI 1.8 in test_helper
186     -fix failing server (white box) tests for storage_snapshot
187     -Initial tests for deltacloudd launcher
188
189  * Deltacloud Client and Client Tests:
190     -tests: removing testing loops using API_URL_REDIRECT
191     -Fixed wrong directory name for tests in gemspec
192     -Fixed 'keys' unit tests
193
194  * Drivers
195     +EC2
196       -EC2: Round down the float value of m2.xlarge hardware_profile (DTACLOUD-373
197       -Adds support for S3 multipart object uploads (segmented blob upload API)
198     +Openstack
199       -support for object-store multipart object uploads (segmented blob upload API)
200       -added support for Openstack block storage volumes
201       -Openstack volumes - catch case where volume attachment unset - thanks Ian Main.
202       -Fix mappings.UNKNOWN mispeeled and add error state to state machine
203     +VSphere
204       -Fixed typo that cause DC to return 404 for all instances
205       -Report MAC addresses together with ipv4 addresses (DTACLOUD-376)
206       -Make API_PROVIDER format consistent with other drivers (DTACLOUD-399)
207       -Return 400 in case that required parameter is missing
208       -Make the 'name' parameter optional
209       -Fixed typo in create_instance method (DTACLOUD-401)
210     +RHEV-M
211       -Keep reporting the MAC addresses when ipv4 address is ready
212       -Fixed VCR fixtures to reflect recent changes in reporting MAC address
213       -support user-level API
214       -Do not advertise :destroy operation when PAUSED (DTACLOUD-355)
215     +FGCP
216       -return IP address immediately; also add arguments to batch files
217       -generate default instance name using timestamp if not user-specified
218     +GoGrid
219       -Switch to use json/pure in gogrid_client
220     +IBM SBC
221       -Make sure the hwp_id is not Nil when creating new instance (DTACLOUD-388)
222     +Mock
223       -Fix reporting wrong hardware profile when creating instances (DTACLOUD-364)
224       -Fix for DTACLOUD-393 - setup of mock fixtures
225       -adds storage_snapshot create/delete in mock driver
226
227  * CIMI API frontend:
228     -Fix hwp.name bug (.name vs .id) in machine_configs
229     -fix issue with machine_configs values - DTACLOUD-369
230     -fix stop/restart actions on Machine (DTACLOUD-367 and DTACLOUD-368)
231     -fix Time parse on Machine model (creation time) - DTACLOUD-370
232     -Fixed problem when generating subcollection
233     -Renamed 'name' attribute to 'key' in resource properties (DTACLOUD-372
234     -Added mandatory 'state' property to MachineImage (DTACLOUD-371)
235     -fix returned 'CIMI-Specification-Version' 1.0.1
236     -tidy up nits in Volumes/VolumeConfigs - especially creation
237     -Fixes nits on MachineImage model - DTACLOUD-378
238     -Fix routes for MachineVolumes - uses rabbit subcollection
239     -fixes MachineVolume:attach/detach operations on Machine model correct generation of MachineVolume collection
240     -exclude created attribute from volume if not returned by driver (fgcp, rhvem)
241     -fixes DELETE route for Volume (+adds delete operation for entries
242     -fix nits - volumes create return 201, volume attach is POST
243     -Initial support for persisting attributes in database
244     -Fix the case when stored attributes are XML
245     -Added MachineTemplate database model
246     -Added MachineTemplate collection and CRUD operations to model
247     -Added support for creating Machine using MachineTemplate
248     -Added sample JSON and XML files to support/cimi
249     -Fixed namespace error in MachineTemplate collection
250     -make CIMI::Model::VolumeImage.find behavie like Machine.find
251     -Moved "/cimi" to "/cimi/cloudEntryPoint" redirect to CEP collection
252     -Adds Volume creation with template and config by value - DTACLOUD-385
253     -collections use grab_content_type helper to guess type if not supplied
254     -make retrieving individual volumes and volume images work again
255     -don't depend on created to have a value as it's optional in cimi
256     -server/lib/cimi/models/machine.rb (from_instance): fix name of delete action
257     -Fix $select filter to undercore attributes (DTACLOUD-391)
258     -Be more carefull when removing persistence data about entity (DTACLOUD-395)
259     -tolerate missing subcollections when parsing
260     -use a helper to produce correct headers for create responses
261     -strictly enforce only xml or json as content-type for message bodies
262     -dont expose 'add' URI for collection if not supported DTACLOUD-400
263     -DTACLOUD-390 Add name when creating volume.
264     -Fix ordering of Collection entries XML elements (DTACLOUD-396)
265     -Add CIMI Features (Sinatra rabbit features DSL
266     -Initial implementation of resource_metadata (capabilities) for Machine
267     -adds create_image (from a running server) + delete
268     -Add database support to Address entity
269     -Added AddressTemplate database model
270     -Added database support for managing AddressTemplate
271     -Initial implementation of 'attributes' in ResourceMetadata
272     -Added 'constraints' to resourceMetadata attributes for realms
273     -Adds create/destroy for volume_image collection+model
274     -Fixed wrong destroy action in AddressTemplate
275     -Added database support for VolumeConfiguration
276     -Added driver and provider to CEP using resourceMetadata
277     -Adds database support for VolumeTemplate (create
278     -Added database support for MachineImage
279     -Added 'created' attribute to MachineTemplate
280
281  * CIMI Tests:
282     -Fixed compare_values() method in tests to use 'key' instead of 'name'
283     -allow forcing a refetch of an existing model
284     -Removed require "json" from tests
285     -API Tests - adds discovery for URIs
286     -(cep_test): do not accss forwarding_group_templates collection
287     -tests add machineTemplates test and selection if no preferred option
288     -tests - add create machineTemplate for scenario
289     -tests adding test ordering and task:cimiplan
290     -do not send any auth header if no user is set
291     -allow setting the Content-Type header for requests
292     -tests/cimi/test_helper.rb (model_class): assert that resourceURI is set
293     -tests/cimi/cep_test.rb: remove duplicate tests and assertions not required by CIMI
294     -check creations against what the spec allows
295     -add content_type helper to RestClient::Response
296     -tests/cimi/test_helper.rb (retrieve): accomodate responses w/o body
297     -fiddle with log format; dump RestClient traffic in debug level
298     -tests/cimi/part3_test.rb: streamline part3
299     -tests add creation of volume with config by value
300     -tests - adding provider detection
301     -tests skip if capability ! supported - DTACLOUD-400
302     -Adds API/black-box test for MachineImage create + delete
303     -test plan (resource metadata - The author of the XSLT (Doug Davis <dug@us.ibm.com>) agreed to licensing the stylesheet http://wstf.org/docs/web/sc2html.xsl under the ASL 2.0
304
305  * CIMI client
306     -created view files for network ports; added network port in entities
307     -Fixed various compatibility issues in CIMI client
308     -UI/HTML client fix (MachineImages show) - DTACLOUD-405
309     -fixed typo for network config url
310
311  * Deltacloud Site
312     -Add note about require_relative gem install for Deltacloud 1.0.5
313     -Update Openstack specific information on drivers page
314     -update contact page with links to deltacloud community call
315     -fix broken link to aeolus wiki for vsphere setup
316     -Adds CIMI REST API and cURL Examples (incomplete)
317     -Fix Deltacloud δ logo
318
319 1.0.5 - 2012-11-15
320  * Server
321    - Added possibility to log into a file (deltacloudd -L option)
322    - Various fixes and improvements in logging errors
323    - Advertise operation and parameters for features (/api)
324    - Fixed memory leak (DTACLOUD-347)
325  * Drivers
326    + Aruba
327      - Updated API URLs
328    + FGCP
329      - Added possibility to filter instances by realm_id
330      - Fixed certificate location
331    + OpenStack
332      - Set hardware profile name to OpenStack flavor name
333      - Fixed .id vs .name issues in create_instance
334      - Added support for user_data
335      - DTACLOUD-316, DTACLOUD_328
336    + VSphere
337      - Report instance launch_time properly
338      - Report time of image creation
339    + RHEV-M
340      - Report time of image creation
341  * CIMI frontend
342    - Added support for Collections
343    - Added support for embedded collections (Machine.disks,
344      Machine.volumes)
345    - Added initial support for $expand
346    - Many improvements to CIMI tests
347    - Fixed parsing of JSON HTTP body when creating Machine
348    - Set default content type for CIMI responses
349    - Added support for $select to Collections
350    - Fixed order of top-level resources
351    - Fixed numerous CIMI 1.0 compatibility issues
352    - Various JIRA fixes: DTACLOUD-350, DTACLOUD-349
353  * CIMI client
354    - Fixed various compatibility issues
355  * EC2 frontend
356    - Allow to pass user_data to RunInstances (thanks to Oved Ourfali)
357
358 1.0.4 - 2012-10-08
359   * server: shorten backtraces in logs to make them readable
360   * server: report unknown frontend cleanly when starting server (JIRA 331)
361   * server: generate docs at /api/docs resp. /cimi/docs
362   * server: clean up how we map the various frontends into the server URL space
363   * tests: produce nicer output and improve Jenkins integration
364   * Drivers
365     + Google
366       - capture 401 and 409 errors from backend
367     + Openstack
368       - report 401 when no username is given (JIRA 330)
369       - query supported collections from backend; this implies that
370         credentials are needed to access /api (JIRA 316)
371   * EC2 frontend:
372     - accept InstanceId as parameter for DescribeInstances (Oved Ourfali)
373     - Start/StopInstance: ensure instance details are returned from all
374       drivers, especially RHEV-M (Oved Ourfali)
375   * CIMI frontend:
376     - use correct CIMI v1.0 namespace in XML (Carlos Goncalves)
377     - rename entities to match CIMI v1.0 (e.g. RoutingGroup -> ForwardingGroup)
378     - various fixes/enhancements for networking entities (only for mock
379       driver so far)
380     - fix ordering of attributes in XML responses
381     - frontend still not entirely compliant with CIMI 1.0, especially
382       embedded collections are not yet handled correctly
383   * client
384     - make sure we send provider when changing drivers
385
386 1.0.3 - 2012-09-07
387   * change the format of ~/.deltacloud/config: keys are now strings, not
388     symbols - requires manual fixup
389   * server/tests/
390     - simplify how individual tests are run
391     - read credentials from a config file, rather than hardcoding them
392       in the tests (GoGrid and EC2 tests)
393     - simplify how VCR data is recorded, speed up playback
394     - more coverage (e.g., Rack extensions, OpenStack driver)
395   * server: remove extraneous quotes around ETag header value
396   * Drivers
397     + EC2
398       - list subnets in a VPC as realms
399       - allow launching of instances into a subnet in a VPC by specifying
400         the corresponding subnet realm
401     + OpenStack
402       - pass server ID as string (JIRA 306)
403       - require openstack gem >= 1.0.4
404     + RHEV-M
405       - allow force stop of instance (JIRA 308)
406   * CIMI frontend:
407     - update handling of collections
408     - add disks and machine_volumes subcollections to Machine
409   * EC2 frontend: mount at ec2/ instead of /, i.e. you need to go to
410     http://localhost:3001/ec2 to use the frontend
411   * tests/cimi/: scaffolding for running the same test using JSON and XML
412     output
413
414 1.0.2 - 2012-08-20
415   * code works with MRI Ruby 1.9.x, MRI 1.8.7, and jRuby
416   * deltacloudd: accept -L/--log option to send log to a file; -V option to
417     get detailed logs
418   * Revamp all the tests in tests/, server/tests/, and client/tests/ to use
419     only the minitest test framework; also expanded the coverage of all
420     these test suites
421   * Make tests/ a test suite that can be run against any server with the
422     Deltacloud API (and eventually CIMI API)
423   * use require_relative gem for MRI Ruby 1.8
424   * require sinatra-rabbit >= 1.0.7 (JIRA 254)
425   * require excon >= 1.4.0
426   * Prevent hash_capability to fail finding methods (JIRA 265)
427   * Removed deltacloudc command line client; see
428     http://deltacloud.apache.org/curl-examples.html on how to use curl in
429     its stead
430   * Fix memory leak (JIRA 290)
431   * Fix author and mailing list address in client and server gemspec
432   * Drivers
433     + Aruba
434       - new driver (Giacomo Bagnoli)
435     + EC2
436       - fix 'bad URI' error when accessing us-east bucket from other region
437         (JIRA 300)
438       - fix exception when looking up storage snapshot with invalid id
439       - fix register/deregister load balancer actions
440       - fix exception when attaching storage volume to instance (JIRA 296)
441       - fix error when looking up storage snapshots (JIRA 262)
442       - fix error describing load balancer (JIRA 259)
443       - fix error viewing storage volume details from web UI (JIRA 249)
444     + FGCP (all by Dies Koper)
445       - properly translate more backend errors
446       - added West Japan region
447       - improved error handling when connecting to wrong region, or wrong
448         API version
449       - add metrics support
450       - properly report whether image creation from an instance is possible
451         (JIRA 250)
452       - prevent error when listing firewall with no rules as XML
453       - removed system volumes from instance
454       - reinstated snapshots for system volumes
455     + GoGrid
456       - fix exception in listing images (JIRA 255)
457     + Mock
458       - fix exception when running command on instance (JIRA 298)
459       - added metrics support
460     + OpenNebula
461       - make driver compatible with ON 3.6 (Daniel Molina)
462       - fix exception when requesting hardware profiles (JIRA 258)
463     + OpenStack
464       - support keys collection (JIRA 205)
465       - allow specifying keyname when creating instance (JIRA 205)
466     + RHEV-M
467       - properly report image_id for an instance and image status
468   * CIMI frontend
469     - fix error from GET /cimi/machines against vSphere (JIRA 279)
470     - fix error when looking up VolumeImage
471     - expose only collections supported by backend in cloud entry point
472     - fix error when backend does not report cpu or storage for MachineConfig
473       (JIRA 245)
474   * Deltacloud frontend
475     - fix streaming of blob content for large blobs
476     - fix EPIPE error when graphviz is not installed
477     - do not retrieve instance when performing start/stop/destroy (JIRA 214)
478     - add 'X-Deltacloud-Driver' and 'X-Deltacloud-Provider' to all responses
479     - fixed broken listing of supported collections in /api
480     - fix error changing provider from HTML UI (JIRA 248)
481   * EC2 frontend
482     - (describe_instance_set) suppress state, IP address and DNS
483       information if not supplied by the backend
484   * Ruby client
485     - return nil from destroy_bucket/destroy_blob
486   * CIMI client
487     - expose only collections supported by backend in cloud entry point
488     - report mandatory baseURI
489
490 1.0.0 - 2012-06-15
491   * New EC2 frontend: clients can now use the EC2 API when talking to
492     Deltacloud. That makes Deltacloud an EC2-to-many-backends proxy.
493     See http://mifo.sk/deltacloud-with-ec2-frontend
494   * metrics: new collection for gathering/controlling metrics (supported by
495     EC2 driver)
496   * Report destroy/delete actions on images when available (JIRA 207)
497   * Compatibly with Ruby 1.9
498   * ability to run multiple frontends from the same server (see deltacloudd
499     --frontends)
500   * Deltacloud is now a modular Sinatra application. See
501     http://www.sinatrarb.com/intro#Modular%20vs.%20Classic%20Style
502   * Use sinatra-rabbit for RESTful routing/controllers
503     (https://github.com/mifo/sinatra-rabbit)
504   * Always return status 202 after reboot in all drivers (JIRA 162)
505   * Numerous enhancements and bug fixes in HTML UI (JIRA 232, 211, 210,
506     204, 67, and many more)
507   * Order hardware profiles by cpu, memory (JIRA 208)
508   * Return status 501 when backend lacks needed capability
509   * Report list of hardware profile with images to indicate compatibility
510     of an image with a set of HWP
511   * Windows: fix error caused by syslog not available on Windows (JIRA 186)
512   * Use minitest for all our tests
513   * Drivers
514     + EC2
515       - fix retrieval of IP address for run_on_instance (JIRA 211) (Dies Koper)
516       - return sttus 404 when deleting nonexistant load balancer (JIRA 169)
517       - CloudWatch support via new Metrics collection
518       - return status 404 when getting nonexistent blob (JIRA 174)
519       - fix memory amount reported for t1.micro
520       - add new m1.medium HWP
521       - return status 404 when getting nonexistent instance
522     + Fujitsu Global Cloud Platform (FGCP)
523       - new driver contributed by Dies Koper
524     + GoGrid
525       - fix retrieval of IP address for run_on_instance (JIRA 211) (Dies Koper)
526     + Mock
527       - support run_on_instance (JIRA 212) (Dies Koper)
528       - create storage directories with mode 0750 (JIRA 139)
529       - allow destroying storage snapshot
530       - return status 404 when deleting nonexistent bucket
531     + OpenNebula
532       - support AI v.3.x (Daniel Molina)
533       - support using API_PROVIDER env var to select OpenNebula installation
534     + OpenStack
535       - updated for API v2.0
536       - support buckets/blob collection
537       - use the new openstack gem (https://github.com/ruby-openstack)
538       - more accurate reporting of instance state (JIRA 209)
539     + Rackspace
540       - fix retrieval of IP address for run_on_instance (JIRA 211) (Dies Koper)
541     + RHEV-M
542       - better error message when trying to use user_data with a backend
543         that is missing the floppyinject hook (JIRA 233)
544       - better error message when instance stop/reboot fails (JIRA 185)
545       - return status 400 when no provider is specified
546       - return status 502 if backend runs out of memory (JIRA 154)
547       - return status code 400 when instance name is too long
548       - return status 404 for unknown data center
549       - return status 502 for inaccessible provider
550       - use rbovirt gem (https://github.com/abenari/rbovirt)
551     + vSphere
552       - return status 502 when user_data is used and backend datastore is
553         misconfigured (JIRA 203)
554       - respond with status 504 on connection timeout (JIRA 225)
555       - return status 502 when vSphere behaves erratically because being
556         overloaded (JIRA 225, BZ 805171)
557       - return status 502 when backend reports ToolsUnavailable, caused by
558         lack of VMWare tools in instance
559       - return created image after create_image operation (JIRA 122)
560       - return status 502 for inaccessible provider
561       - do not indicate that storage volumes and snapshots are supported,
562         they are not (JIRA 135)
563   * CIMI
564     + support networking collections (VSP, VSPTemplate, VSPConfig, Address,
565       AddressTemplate, Network, NetworkTemplate, RoutingGroup,
566       RoutingGroupTemplate)
567     + Improved support for many compute collections (Machine etc.)
568     + added X-CIMI-Specification-Version HTTP header for all responses
569     + support X-Deltacloud-Provider and X-Deltacloud-Driver request headers
570     + client app:
571       - allow switching between EC2, RHEV-M, and OpenStack as backend
572       - views for networking entities
573   * Ruby client
574     - Add --user and --password params to deltacloudc (JIRA 141)
575     - Fix error when instances have numeric names (JIRA 27)
576     - Fix listing keys collection (partial fix for JIRA 199)
577     - Handle 301 properly for API entrypoint
578
579 0.5.0 - 2012-01-05
580   * add display of storage volumes to instance view
581   * add way to change provider in HTML UI when applicable (JIRA 105)
582   * fix attach volume form in HTML UI
583   * fix incorrect handling of REQUEST_PATH (affects platforms like passenger)
584   * support dynamically generated provider lists for /api/drivers/:id
585   * create image: report correct URL in Location header
586   * fix parameter validation error when switching drivers (BZ 750920)
587   * create instance: validate hardware properties
588   * incredibly experimental support for DMTF CIMI
589     (http://dmtf.org/standards/cloud) If you run the server with --cimi and
590     it breaks, you get to keep both pieces
591   * various client fixes
592   * deltacloudd: add --webrick to force use of WEBRick
593   * Drivers
594     + EC2
595       - fetch available regions via DescribeRegions
596       - add ap-northeast-1, sa-east-1 and us-west-2 regions
597       - fix bucket creation when client specifies 'us-east-1' region
598         (BZ 725646)
599       - t1.micro HWP is available for 32 and 64 bit (JIRA 95)
600       - improvements for launching multiple instances (JIRA 79)
601     + Google storage
602       - fix blob metadata listing
603       - properly validate credentials
604     + Mock
605       - support storgae_volume create/delete
606       - fix m1-large HWP to use integral memory size
607     + OpenStack
608       - new driver
609     + Rackspace
610       - correctly report bucket size
611     + RHEV-M
612       - data centers are now treated as completely separate regions. For a
613         given provider URL, only the clusters for one datacenter are
614         considered
615       - fix deleting VMs (JIRA 110)
616       - preserve details about backend errors
617       - create instance: choose image realm when none is specified (JIRA 126)
618       - better error msg when floppyinject is not installed (BZ 765855)
619     + SBC
620        - correctly return the realm for /api/realms/:id (JIRA 106)
621     + vSphere
622        - fix internal error in reporting of instance addresses
623        - find objects (VMs etc.) even for datastores that are in nested
624          folders (Alfredo Moralejo)
625        - HWP: replace effectiveMemory with hardcoded values (JIRA 123)
626        - Reboot of a VM now does a RebootGuest rather than ResetVM_Task
627
628 0.4.1 - 2011-10-04
629   * change how dependencies are managed: canonical deps are now in the
630     gemspecs
631 Server:
632   * clarify how user_data injection should work; make sure all drivers
633     accept base64 encoded data and make the decoded version available to
634     instance
635   * fix URL generation so that server works when run behind a reverse proxy
636   * init script: honor defaults from sysconfig file
637   * init script: fix 'status', properly background deltacloudd
638   * deltacloudd: support verbose option
639   * Drivers:
640     + Condor
641       - use UUIDTools instead of UUID to simplify deps
642     + Google
643       - new driver for Google storage API
644     + RHEV-M
645       - treat status as case-insensitive
646       - inject data through a virtual floppy rather than modifying
647         the instance storage directly
648     + vSphere
649       - report minimum of max memory across all hosts in a data center, so
650         that instances can be placed on any host
651       - user_data is placed in file 'deltacloud-user-data.txt'
652
653 Client:
654   * fix parsing of enums in HWP properties
655   * fix handling of float value for number of vCPU in HWP
656
657 0.4.0 - 2011-08-12
658 Server:
659   * deltacloudd: new option --drivers to list all drivers
660   * deltacloudd: new options --ssl, --ssl-key and --ssl-cert to
661     enable HTTPS support
662   * deltacloudd: new option -d to daemonize server, --user and --pid to
663     control the user server runs as and where pid file goes
664   * API entrypoint reports features in JSON
665   * unify response behavior: any operation returning a 201 Created also
666     sets the Location header to point to the new resource; ensure the
667     status for an operation is the same regardless of output format
668   * Add type to public addresses; type can be one of 'ipv4', 'mac', 'vnc',
669     and 'hostname'
670   * Complete overhaul of the HTML UI, now uses jquery-mobile
671   * Response status for attach/detach storage is now 202 (instead of 302)
672   * Response status for get/set blob metadata is 204 No Content
673   * Response status for (un)register with load balancer is 204 No Content
674   * The user_name feature now reports the permissible length of the name
675     as the 'max_length' constraint
676   * Add Date header to responses as per RFC 2616
677   * New collection 'firewalls' for managing sets of firewalling rules
678   * split server/config/drivers.yaml into individual files so each driver
679     can be packaged separately; gives deployers better choice of what
680     drivers they want enabled
681   * new rake task 'routes' that prints all server routes
682   * Numerous bug fixes and improvements to the test suite
683   * Drivers
684     + Condor
685       - new driver to run a simple cloud based on the Condor grid scheduler
686     + EC2
687       - Fix bug in reboot instance so that the details returned are those
688         of the stopped instance, not some random instance
689       - Support getting and updating blob metadata
690       - support destroying images
691       - support firewalls (security groups)
692       - do not support user_name anymore; instance tagging is too fragile
693         in EC2 to be used reliably for this
694       - do not support registering an instance with a load balancer upon
695         creation anymore
696       - stream blob PUT to backend (requires thin)
697       - support attaching EBS snapshot to instance upon creation (feature
698         'attach_snapshot')
699       - support elastic IP's
700     + Eucalyptus
701       - support firewalls (security groups)
702       - support elastic IP's
703     + Gogrid
704       - when retrieving single realm, make sure we return the right one
705       - correctly capture load_balancer params
706       - report a listener if load_balancer has no instances
707     + Mock
708       - support destroying images
709       - split into driver and client to make the code clearer; this should
710         help driver writers in understanding what a driver must do
711     + Rackspace
712       - support destroying images
713       - stream blob PUT to backend (requires thin)
714     + RHEV-M
715       - support creating and destroying images
716       - report VNC address of instances
717       - can use Audrey's confserver to fetch IP of an instance
718     + vSphere
719       - turns a VMWare vSphere installation into a cloud
720       - driver stateless, state is stored in vSphere's data store in
721         'deltacloud' folder
722       - images are template VM's
723       - single HWP, whose max_cpu and max_memory are based on available
724         cpus and memory across all vSphere hosts
725       - support data injection via user_data and user_iso (upload entire
726         ISO image) For both, instance gets virtual CD-ROM with injected
727         data
728
729 Client:
730   * make authentication info for instances available
731   * retrieve type and address for public addresses of an instance
732   * deltacloudc: allow specifying bucket location when creating a bucket
733
734 Site:
735   * Major rewrite of REST API docs, covers the entire API now
736   * Add libdeltacloud API docs
737   * Add Incubator logo and disclaimer to all pages
738
739 0.3.0 - 2011-04-01
740 Server:
741   * Dynamic driver switching: select driver on a per-request basis; new
742     toplevel 'drivers' collection describing drivers supported by server
743   * Create images from running instances (EC2, Mock, GoGrid, Rackspace);
744     advertised as action 'create_image' in instance details when possible
745   * New 'user_files' feature for create_instance to advertise RAX-style
746     injection of user data
747   * Return status 204 after successful DELETE operation
748   * Return status 401 when authentication fails because of invalid
749     credentials
750   * Blobs: support user metadata as key/value pairs passed through
751     X-Deltacloud-Blobmeta-KEY: VALUE headers
752   * Support HEAD requests to retrieve the operations and methods supported
753     by a collection
754   * Support for OPTIONS request to retrieve optional and required
755     parameters for operations
756   * Advertise 'create_instance' action for each image
757   * Drivers
758     + EC2
759       - instance_count feature to allow creating multiple instances at once
760       - run commands inside an insance via ssh
761       - by default, list images owned by 'amazon', when passing in empty
762         owner_id, list _all_ images (thousands)
763     + Eucalyptus
764       - new driver for Eucalyptus (Sang-Min Park)
765     + Gogrid
766       - run commands inside an insance via ssh
767       - allow creating sandbox instances
768     + Rackspace
769       - report root password after instance creation
770     + SBC
771       - new driver for IBM SBC cloud (Eric Woods)
772
773 Client:
774   * run: new method to run commands via ssh
775   * drivers: list drivers supported by server
776   * properly list blobs in a bucket when showing bucket details
777   * full support for managing blobs and buckets
778
779 0.2.0 - 2011-01-25
780
781 Server:
782   * Dynamically select driver through the X-Deltacloud-Driver HTTP header;
783     allow passing in driver-specific endpoint with the
784     X-Deltacloud-Provider header
785   * New 'load_balancers' collection, supported for EC2 and GoGrid
786   * Support 'keys' collection in Mock driver
787   * Allow creation/deletion of blobs (S3, CloudFiles, Azure)
788   * Return HTTP status 405 when trying to perform an action on a instance
789     that is not available
790   * Drivers
791     + EC2
792       - security_group and public_ip features for instance creation
793       - switched to aws gem
794     + GoGrid: now have two hardware profiles
795     + RHEV-M: completely rewritten; now uses RHEV-M REST API, not Powershell
796
797 Client: