Apache Libcloud - a unified interface into the cloud
====================================================

.. image:: https://pypip.in/version/apache-libcloud/badge.png
    :target: https://pypi.python.org/pypi/apache-libcloud/

.. image:: https://pypip.in/d/apache-libcloud/badge.png
        :target: https://pypi.python.org/pypi/apache-libcloud/

.. image:: https://secure.travis-ci.org/apache/libcloud.png?branch=trunk
        :target: http://travis-ci.org/apache/libcloud

.. image:: https://pypip.in/py_versions/apache-libcloud/badge.png
        :target: https://pypi.python.org/pypi/apache-libcloud/

.. image:: https://pypip.in/wheel/apache-libcloud/badge.png
        :target: https://pypi.python.org/pypi/apache-libcloud/

.. image:: https://pypip.in/license/apache-libcloud/badge.png
        :target: https://github.com/apache/libcloud/blob/trunk/LICENSE

Apache Libcloud is a Python library which hides differences between different
cloud provider APIs and allows you to manage different cloud resources
through a unified and easy to use API.

Resources you can manage with Libcloud are divided into the following categories:

* **Compute** - Cloud Servers and Block Storage - services such as Amazon EC2 and Rackspace
  Cloud Servers (``libcloud.compute.*``)
* **Storage** - Cloud Object Storage and CDN  - services such as Amazon S3 and Rackspace
  CloudFiles (``libcloud.storage.*``)
* **Load Balancers** - Load Balancers as a Service, LBaaS (``libcloud.loadbalancer.*``)
* **DNS** - DNS as a Service, DNSaaS (``libcloud.dns.*``)

Apache Libcloud is an Apache project, see <http://libcloud.apache.org> for
more information.

Documentation
=============

Documentation can be found at <https://libcloud.readthedocs.org>.

Feedback
========

Please send feedback to the mailing list at <dev@libcloud.apache.org>,
or the JIRA at <https://issues.apache.org/jira/browse/LIBCLOUD>.

Contributing
============

For information on how to contribute, please see the Contributing
chapter in our documentation
<https://libcloud.readthedocs.org/en/latest/development.html#contributing>

License
=======

Apache Libcloud is licensed under the Apache 2.0 license. For more information,
please see LICENSE and NOTICE file.
