docs for 2.0

Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/7234a29b
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/7234a29b
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/7234a29b

Branch: refs/heads/trunk
Commit: 7234a29b05de1bd05cd6f98f6ace07a148b921f8
Parents: 72d456f
Author: Anthony Shaw <anthonys...@apache.org>
Authored: Fri Jan 13 15:56:25 2017 +1100
Committer: Anthony Shaw <anthonys...@apache.org>
Committed: Fri Jan 13 15:56:25 2017 +1100

----------------------------------------------------------------------
 docs/other/changes_in_2_0.rst   | 131 +++++++++++++++++++++++++++++++++++
 docs/other/using-http-proxy.rst |   4 +-
 2 files changed, 133 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/7234a29b/docs/other/changes_in_2_0.rst
----------------------------------------------------------------------
diff --git a/docs/other/changes_in_2_0.rst b/docs/other/changes_in_2_0.rst
index e69de29..2eccbe2 100644
--- a/docs/other/changes_in_2_0.rst
+++ b/docs/other/changes_in_2_0.rst
@@ -0,0 +1,131 @@
+Changes in Apache Libcloud v2.0.0RC1
+====================================
+
+Replacement of urllib with `requests`
+-------------------------------------
+
+Apache Libcloud supports Python 2.6, 2.7 - 3.3 and beyond. To achieve this a 
package was written within the
+Libcloud library to create a generic HTTP client for Python 2 and 3. This 
package has a custom implementation of a certificate store, searching and TLS 
preference configuration. One of the first errors to greet new users of 
Libcloud would be "No CA Certificates were found in CA_CERTS_PATH."... 
+
+In 2.0.0RC1 this implementation has been replaced with the `requests` package, 
and SSL verification should work against any publically signed HTTPS endpoint 
by default, without having to provide a CA cert store.
+
+Other changes include:
+
+* Enabling HTTP redirects
+* Allowing both global and driver-specific HTTP proxy configuration
+* Consolidation of the LibcloudHTTPSConnection and LibcloudHTTPConnection into 
a single class, LibcloudConnection
+* Support for streaming responses
+* Support for mocking HTTP responses without having to mock the Connection 
class
+* 10% typical performance improvement with the use of persistent TCP 
connections for each driver instance
+* Access to the low-level TCP session is no longer available. Access to 
.read() on a raw connection will bind around `requests` body or iter_content 
methods.
+
+
+Allow redirects is enabled by default
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+HTTP redirects are allowed by default in 2.0.0RC1. To disable redirects, set 
this global variable to False.
+
+.. code-block:: Python
+
+    import libcloud.httplib_ssl
+    libcloud.httplib_ssl.ALLOW_REDIRECTS = False
+
+HTTP/HTTPS Proxies
+~~~~~~~~~~~~~~~~~~
+
+Enabling a HTTP/HTTPS proxy is still supported and accessed via the driver's 
connection property or via the 'http_proxy' environment variable. Applying it 
to a driver will set the proxy for that driver only, using the environment
+variable will make a global change.
+
+.. code-block:: Python
+
+  # option 1
+  import os
+  os.environ.get('http_proxy', 'http://localhost:8888/')
+
+  # option 2
+  
driver.connection.connection.set_http_proxy(proxy_url='http://localhost:8888')
+
+
+Adding support for Python 3.6 and deprecation of Python 3.2
+-----------------------------------------------------------
+
+In Apache Libcloud 2.0.0RC1, Python 3.6 is `now supported 
<https://github.com/apache/libcloud/pull/965>`_ as a primary distribution.
+
+Python 3.2 support has been dropped in this release and users should either 
upgrade to 3.3 or a newer version of Python.
+
+SSL CA certificates are now bundled with the package
+----------------------------------------------------
+
+In Apache Libcloud 2.0.0RC1, the `Mozilla Trusted Root Store 
<https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt>`_
 is bundled with the package, as part of the `requests` package bundle.
+This means that users no longer have to set the path to a CA file either via 
installing the certifi package, downloading a PEM file or providing a directory 
in an environment variable.
+All connections in Libcloud will assume HTTPS by default, now with 2.0.0, if 
those HTTPS endpoints have a signed certificate with a trusted CA authority, 
they will work with Libcloud by default.
+
+Providing a custom client-side certificate, for example for a development 
server or a HTTPS proxy is still supported given providing a value to 
`libcloud.security.CA_CERTS_PATH`.
+
+This code example would set a HTTP/HTTPS proxy and use a client-generated 
certificate to verify.
+
+.. code-block:: Python
+
+  import os
+  os.environ.set('http_proxy', 'http://localhost:8888/')
+  
+  import libcloud.security
+  libcloud.security.VERIFY_SSL_CERT = True
+  libcloud.security.CA_CERTS_PATH = '/Users/anthonyshaw/charles.pem'
+
+
+Providing a list of CA trusts is no longer supported
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In Apache Libcloud 2.0.0 if you provide a list of more than 1 path or 
certificate file in `libcloud.security.CA_CERTS_PATH` you will receive a 
warning and only the first path will be used. This path should be to a .cert or 
.pem file.
+The environment variable REQUESTS_CA_BUNDLE can be used to access the requests 
library's list of trusted CAs.
+
+Performance improvements and introduction of sessions
+-----------------------------------------------------
+
+Each instance of libcloud.common.base.Connection will have a 
LibcloudConnection instance under the `connection` property. In 1.5.0<, there 
would be 2 connection
+class instances, LibcloudHttpConnection and LibcloudHttpsConnection, stored as 
an instance property `conn_classes`. In 2.0.0 this has been replaced with a 
single type,
+:class:`libcloud.common.base.LibcloudHTTPConnection` that handles both HTTP 
and HTTPS connections. 
+
+.. code-block:: Python
+
+  def test():
+      import libcloud
+      import libcloud.compute.providers
+      
+      d = libcloud.get_driver(libcloud.DriverType.COMPUTE, 
libcloud.DriverType.COMPUTE.DIMENSIONDATA)
+      instance = d('anthony', 'mypassword!', 'dd-au')
+      instance.list_nodes() # is paged
+      instance.list_images() # is paged
+  
+  if __name__ == '__main__':
+      import timeit
+      print(timeit.timeit("test()", setup="from __main__ import test", 
number=5))
+      
+
+This simple test shows a 10% performance improvement between Libcloud 1.5.0 
and 2.0.0RC1.
+
+Changes to the storage API
+--------------------------
+
+Support for Buffered IO Streams
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The methods `upload_object_via_stream` now supports `file` objects, `BytesIO`, 
`StringIO` and generators as the iterator.
+
+.. code-block:: Python
+
+    with open('my_file_to_upload', 'rb') as iterator:
+        obj = driver.upload_object_via_stream(iterator=iterator,
+                                          container=containers[0],
+                                          object_name='me.jpg',
+                                          extra=extra)
+
+Other minor changes
+-------------------
+
+- :class:`libcloud.common.base.Connection` will now use `urljoin` to combine 
the `request_path` and `method` URLs. This means that the URL action will 
always have a leading slash.
+
+- The underlying connection classes do not assume HTTP if a non-standard port 
is used. They will use the preference set in the `secure` flag to the 
initializer of `Connection`.
+
+- The storage download_object_as_stream method no longer buffers out file 
streams twice.

http://git-wip-us.apache.org/repos/asf/libcloud/blob/7234a29b/docs/other/using-http-proxy.rst
----------------------------------------------------------------------
diff --git a/docs/other/using-http-proxy.rst b/docs/other/using-http-proxy.rst
index 7b9d7ce..1a8699a 100644
--- a/docs/other/using-http-proxy.rst
+++ b/docs/other/using-http-proxy.rst
@@ -22,9 +22,9 @@ below:
 * By setting ``http_proxy`` environment variable (this setting is system /
   process wide)
 * By passing ``http_proxy`` argument to the
-  :class:`libcloud.common.base.LibcloudHTTPConnection` class constructor (this
+  :class:`libcloud.common.base.LibcloudConnection` class constructor (this
   setting is local to the connection instance)
-* By calling :meth:`libcloud.common.base.LibcloudHTTPConnection.set_http_proxy`
+* By calling :meth:`libcloud.common.base.LibcloudConnection.set_http_proxy`
   method (this setting is local to the connection instance)
 
 Known limitations

Reply via email to