Some notes on the implementation:
- extends Resource rather than Instance since most of the
complexity of Instance is in the handling of the Volumes
attribute
- exposed properties and attributes map as closely as possible
to the underlying v1 nova API (rather than the nova client library)
- property or attribute key namespaces have been stripped to provide
a cleaner API and avoid YAML quoting.
(eg instance_name -> 'OS-EXT-SRV-ATTR:instance_name')
- an assumption is currently made that any volumes specified
in block_device_mapping should not be detached on suspend
- Network address properties attempt to cater for simple and
advanced use-cases:
- 'first_private_address' and 'first_public_address' for simple
template attribute scenarios, and to aid with AWS::EC2::Instance
transition
- 'networks' for a simple data structure which provides all addresses
- 'addresses' for the raw data structure returned by the API