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.

Resource you can manage with Libcloud are divided in the following categories:

* Cloud Servers and Block Storage - services such as Amazon EC2 and Rackspace
  Cloud Servers (``libcloud.compute.*``)
* Cloud Object Storage and CDN  - services such as Amazon S3 and Rackspace
  CloudFiles (``libcloud.storage.*``)
* Load Balancers as a Service, LBaaS (``libcloud.loadbalancer.*``)
* 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.
