- This is a major release which contains many improvements and some breaking changes to the interface, but the changes are fairly straightforward.
- Support for Google Cloud (thanks to @mbookman, @chiniforooshan, @baizhang)
- Support for middleware, event listening and interception, allowing CloudBridge to be extended without needing to modify library code (This is also potentially useful for handling corner cases for specific clouds).
- The mock provider is now available by default as a standard cloud provider, which is useful for testing applications that use CloudBridge.
- Providers now operate in a single zone, and therefore, all methods that
previously required the zone as a parameter no longer do. Specifically,
instance.create()
,volume.create()
,subnet.create
,subnet.get_or_create_default()
are affected in services, andsnap.create_volume
is affected in resources. The provider's default zone must now be specified through the provider config. - All exceptions that are generated by CloudBridge will now extend from
CloudBridgeBaseException
- The cloud package is deprecated and everything under it has been moved
one level up. For example, instead of
from cloudbridge.cloud.factory import CloudProviderFactory
usefrom cloudbridge.factory import CloudProviderFactory
. - Services are much more uniform now, and sub-services have been introduced
for greater uniformity. For example,
net.create_subnet()
is nownet.subnets.create()
gateways.get_or_create_inet_gateway()
is now simplygateways.get_or_create()
- AWS instance types are now served through Amazon CloudFront for better performance.
- Miscellaneous bug fixes and improvements.
- Added AWS instance types caching for better performance
- Added
router.subnets
property - Ensure the default network for CloudBridge on AWS has subnets
- Fixed minor bug when retrieving buckets with only limited access.
- Relaxed some library version dependencies (e.g. six).
- Added Microsoft Azure as a provider.
- Restructured the interface to make it more comprehensible and uniform across all supported providers. See issue #69 for more details as well as the library layout image for an easy visual reference: https://github.com/CloudVE/cloudbridge#quick-reference.
- Migrated AWS implementation to use the boto3 library (thanks @01000101)
- Cleaned up use of
name
property for resources. Resources now haveid
,name
, andlabel
properties to represent respectively: a unique identifier supplied by the provider; a descriptive, unchangeable name; and a user-supplied label that can be modified during the existence of a resource. - Added enforcement of name and label value: names must be at least 3 characters in length at minimum, and 64 characters at maximum, consisting of only lower case letters and dashes. Should not start or end with a dash.
- Refactored tests and extracted standard interface tests where all resources are being tested using the same code structure. Also, tests will run only for providers that implement a given service.
- Moved the repository from github.com/gvlproject to github.com/cloudve org.
- When deleting an OpenStack network, clear any ports.
- Added support for launching OpenStack instances into a specific subnet
- Update image list interface to allow filtering by owner.
- When listing images on AWS, filter only the ones by current account owner.
- Retrieve AWS instance types from a public service to include latest values.
- Instance state uses
DELETED
state instead ofTERMINATED
. - Return VM type RAM in GB.
- Add implementation for
generate_url
on OpenStack. - General documentation updates.
- Remove explicit versioning of requests and Babel.
- Patch release to support files>5GB with OpenStack (thanks @MartinPaulo).
- Misc bug fixes.
- Patch for binary file handling in OpenStack.
- Reworked test framework to rely on tox's test generation features. This allows for individual test cases to be run on a per provider basis.
- Added more OpenStack swift config options (OS_AUTH_TOKEN and OS_STORAGE_URL)
- Added supports for accessing EC2 containers with restricted permissions.
- Removed exists() method from object store interface. Use get()==None check instead.
- New method (img.min_disk) for getting size of machine image.
- Test improvements (flake8 during build, more tests).
- Misc bug fixes and improvements.
- Changed library to beta state
- General documentation updates (testing, release process)
- Reworked the instance launch method to require subnet vs. network. This removed the option of adding network interface to a launch config object.
- Added object store methods: upload from file path, list objects with a prefix, check if an object exists, (AWS only) get an accessible URL for an object (thanks @VJalili).
- Modified get_ec2_credentials() method to get_or_create_ec2_credentials()
- Added an option to read provider config values from a file (~/.cloudbridge or /etc/cloudbridge).
- Replaced py35 with py36 for running tests.
- Added logging configuration for the library.
- General documentation updates.
- For AWS, always launch instances into private networking (i.e., VPC).
- Support for using OpenStack Keystone v3.
- Add functionality to manipulate routers and routes.
- Add FloatingIP resource type and integrate with Network service.
- Numerous documentation updates.
- For an OpenStack provider, add method to get the ec2 credentials for a user.
- Initial release of CloudBridge.
- Support for Bucket, Instance, Instance type, Key pair, Machine image. Region, Security group, Snapshot, Volume, Network and Subnet services.
- Support for paging results, block device mapping and launching into VPCs.
- Support for AWS and OpenStack clouds.
- Basic usage docs and complete API docs.
- 95% test coverage.
- Support for AWS mock test provider (via moto).