Skip to main content

A simple layer of abstraction over multiple cloud providers.

Project description

CloudBridge provides a consistent layer of abstraction over different Infrastructure-as-a-Service cloud providers, reducing or eliminating the need to write conditional code for each cloud.

Documentation

Detailed documentation can be found at http://cloudbridge.cloudve.org.

Build Status Tests

Integration Tests Code Coverage latest version available on PyPI Documentation Status Download stats

Provider/Environment

Python 3.13

Amazon Web Services

aws-py313

Google Cloud Platform

gcp-py313

Microsoft Azure

azure-py313

OpenStack

os-py313

Mock Provider

mock-py313

Installation

Install the latest release from PyPi:

pip install cloudbridge[full]

For other installation options, see the installation page in the documentation.

Usage example

To get started with CloudBridge, export your cloud access credentials (e.g., AWS_ACCESS_KEY and AWS_SECRET_KEY for your AWS credentials) and start exploring the API:

from cloudbridge.factory import CloudProviderFactory, ProviderList

provider = CloudProviderFactory().create_provider(ProviderList.AWS, {})
print(provider.security.key_pairs.list())

The exact same command (as well as any other CloudBridge method) will run with any of the supported providers: ProviderList.[AWS | AZURE | GCP | OPENSTACK]!

Citation

N. Goonasekera, A. Lonie, J. Taylor, and E. Afgan, “CloudBridge: a Simple Cross-Cloud Python Library,” presented at the Proceedings of the XSEDE16 Conference on Diversity, Big Data, and Science at Scale, Miami, USA, 2016. DOI: http://dx.doi.org/10.1145/2949550.2949648

Quick Reference

The following object graph shows how to access various provider services, and the resource that they return.

CloudBridge Quick Reference

Design Goals

  1. Create a cloud abstraction layer which minimises or eliminates the need for cloud specific special casing (i.e., Not require clients to write if EC2 do x else if OPENSTACK do y.)

  2. Have a suite of conformance tests which are comprehensive enough that goal 1 can be achieved. This would also mean that clients need not manually test against each provider to make sure their application is compatible.

  3. Opt for a minimum set of features that a cloud provider will support, instead of a lowest common denominator approach. This means that reasonably mature clouds like Amazon and OpenStack are used as the benchmark against which functionality & features are determined. Therefore, there is a definite expectation that the cloud infrastructure will support a compute service with support for images and snapshots and various machine sizes. The cloud infrastructure will very likely support block storage, although this is currently optional. It may optionally support object storage.

  4. Make the CloudBridge layer as thin as possible without compromising goal 1. By wrapping the cloud provider’s native SDK and doing the minimal work necessary to adapt the interface, we can achieve greater development speed and reliability since the native provider SDK is most likely to have both properties.

Contributing

Community contributions for any part of the project are welcome. If you have a completely new idea or would like to bounce your idea before moving forward with the implementation, feel free to create an issue to start a discussion.

Contributions should come in the form of a pull request. We strive for 100% test coverage so code will only be accepted if it comes with appropriate tests and it does not break existing functionality. Further, the code needs to be well documented and all methods have docstrings. We are largely adhering to the PEP8 style guide with 80 character lines, 4-space indentation (spaces instead of tabs), explicit, one-per-line imports among others. Please keep the style consistent with the rest of the project.

Conceptually, the library is laid out such that there is a factory used to create a reference to a cloud provider. Each provider offers a set of services and resources. Services typically perform actions while resources offer information (and can act on itself, when appropriate). The structure of each object is defined via an abstract interface (see cloudbridge/providers/interfaces) and any object should implement the defined interface. If adding a completely new provider, take a look at the provider development page in the documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudbridge-4.2.0.tar.gz (205.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cloudbridge-4.2.0-py3-none-any.whl (198.2 kB view details)

Uploaded Python 3

File details

Details for the file cloudbridge-4.2.0.tar.gz.

File metadata

  • Download URL: cloudbridge-4.2.0.tar.gz
  • Upload date:
  • Size: 205.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cloudbridge-4.2.0.tar.gz
Algorithm Hash digest
SHA256 d269bfaee8a5b1a0e1f1128eb2208279ec7b5470182ef64215d50efe2210346b
MD5 6777ab73c330091f72a344c1ae2ec140
BLAKE2b-256 a21b022f95a36e45d1504101ea8d1c8bd03b6d8786f301dc2dada0a6357a0c24

See more details on using hashes here.

Provenance

The following attestation bundles were made for cloudbridge-4.2.0.tar.gz:

Publisher: deploy.yaml on CloudVE/cloudbridge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cloudbridge-4.2.0-py3-none-any.whl.

File metadata

  • Download URL: cloudbridge-4.2.0-py3-none-any.whl
  • Upload date:
  • Size: 198.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cloudbridge-4.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9e27cf0c8361b68c907088b6fc173613f0e4c74fbfa75134034693cfe4faca4e
MD5 5564ce470b8f1d69a8e0c8853a48be95
BLAKE2b-256 26f4fb62e7ae191ad9cbfb79ef5826b4a05124434d2535332be235281c59a52b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cloudbridge-4.2.0-py3-none-any.whl:

Publisher: deploy.yaml on CloudVE/cloudbridge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page