[Python-modules-commits] [libcloud] 01/04: Imported Upstream version 1.4.0

Hans-Christoph Steiner eighthave at moszumanska.debian.org
Mon Dec 19 20:06:58 UTC 2016


This is an automated email from the git hooks/post-receive script.

eighthave pushed a commit to branch master
in repository libcloud.

commit e6a617451879ae35bee55aa4e5cff841dd14df77
Author: Hans-Christoph Steiner <hans at eds.org>
Date:   Mon Dec 19 20:53:43 2016 +0100

    Imported Upstream version 1.4.0
---
 .pylintrc                                          |    2 +-
 CHANGES.rst                                        |  108 +-
 PKG-INFO                                           |    2 +-
 README.rst                                         |    2 +-
 apache_libcloud.egg-info/PKG-INFO                  |    2 +-
 apache_libcloud.egg-info/SOURCES.txt               |  139 +-
 demos/gce_demo.py                                  |  237 +-
 libcloud/__init__.py                               |    2 +-
 libcloud/common/azure.py                           |    2 +
 libcloud/common/azure_arm.py                       |  124 +
 libcloud/common/base.py                            |   19 +-
 libcloud/common/cloudsigma.py                      |    5 +
 libcloud/common/dimensiondata.py                   |    5 +-
 libcloud/common/google.py                          |    4 +-
 libcloud/compute/drivers/azure_arm.py              | 1281 +++++
 libcloud/compute/drivers/digitalocean.py           |   66 +-
 libcloud/compute/drivers/dimensiondata.py          |  606 ++-
 libcloud/compute/drivers/ec2.py                    |    2 +-
 libcloud/compute/drivers/ecs.py                    |   24 +-
 libcloud/compute/drivers/gce.py                    | 1967 ++++++-
 libcloud/compute/drivers/openstack.py              |    3 +
 libcloud/compute/drivers/ovh.py                    |  148 +-
 libcloud/compute/drivers/profitbricks.py           | 4101 ++++++++++++---
 libcloud/compute/drivers/vultr.py                  |  113 +-
 libcloud/compute/providers.py                      |    2 +
 libcloud/compute/types.py                          |    5 +-
 libcloud/container/drivers/docker.py               |   28 +-
 libcloud/container/drivers/rancher.py              |   49 +-
 libcloud/loadbalancer/drivers/alb.py               |  321 ++
 libcloud/loadbalancer/providers.py                 |    2 +
 libcloud/loadbalancer/types.py                     |    1 +
 libcloud/storage/drivers/google_storage.py         |   18 +
 libcloud/storage/drivers/s3.py                     |   12 +
 libcloud/storage/providers.py                      |    2 +
 libcloud/storage/types.py                          |    2 +
 libcloud/test/common/test_google.py                |   13 +-
 ...7_7777_7777_7777_777777777777_oauth2_token.json |    1 +
 ...9_999999999999_providers_Microsoft_Compute.json |  200 +
 ...Microsoft_Compute_locations_eastus_vmSizes.json |   28 +
 .../fixtures/digitalocean/ex_change_kernel.json    |   12 +
 .../fixtures/digitalocean/ex_hard_reboot.json      |   12 +
 .../digitalocean_v2/create_volume_snapshot.json    |   14 +
 .../fixtures/digitalocean_v2/ex_change_kernel.json |   12 +
 .../fixtures/digitalocean_v2/ex_hard_reboot.json   |   12 +
 .../digitalocean_v2/list_volume_snapshots.json     |   44 +
 .../compute/fixtures/dimensiondata/audit_log.csv   |   25 +
 .../fixtures/dimensiondata/server_GetServer.xml    |   39 +
 .../test/compute/fixtures/ecs/create_public_ip.xml |    6 +
 .../gce/aggregated_instanceGroupManagers.json      |    8 +-
 .../gce/global_backendServices_web_service.json    |    4 +-
 .../fixtures/gce/global_instanceTemplates.json     |   10 +-
 .../gce/global_instanceTemplates_insert.json       |   12 +
 .../fixtures/gce/global_sslcertificates.json       |   16 +
 .../gce/global_sslcertificates_example.json        |   10 +
 .../fixtures/gce/global_sslcertificates_post.json  |   13 +
 ..._operation_global_instanceTemplates_insert.json |   12 +
 ...ions_operation_global_sslcertificates_post.json |   13 +
 ..._zones_us_central1_a_instanceGroups_insert.json |   13 +
 ...tral1_a_instanceGroups_myname_addInstances.json |   13 +
 ...us_central1_a_instanceGroups_myname_delete.json |   13 +
 ...l1_a_instanceGroups_myname_removeInstances.json |   13 +
 ...ral1_a_instanceGroups_myname_setNamedPorts.json |   13 +
 ...s_us-east1_subnetworks_cf_972cf02e6ad49113.json |   11 +
 .../zones_us-central1-a_instanceGroupManagers.json |    4 +-
 ...l1-a_instanceGroupManagers_myinstancegroup.json |    4 +-
 ...s-central1-a_instanceGroup_myinstancegroup.json |    4 +-
 ...-central1-a_instanceGroup_myinstancegroup2.json |   14 +
 ...l1-b_instanceGroupManagers_myinstancegroup.json |    4 +-
 ...s-central1-b_instanceGroup_myinstancegroup.json |    2 +-
 .../zones_us-east1-b_instanceGroupManagers.json    |    4 +-
 ...s_us-east1-b_instanceGroup_myinstancegroup.json |    4 +-
 .../gce/zones_us_central1_a_instanceGroups.json    |   29 +
 .../zones_us_central1_a_instanceGroups_insert.json |   13 +
 .../zones_us_central1_a_instanceGroups_myname.json |   12 +
 ...tral1_a_instanceGroups_myname_addInstances.json |   13 +
 ...us_central1_a_instanceGroups_myname_delete.json |   13 +
 ...ral1_a_instanceGroups_myname_listInstances.json |   15 +
 ...l1_a_instanceGroups_myname_removeInstances.json |   13 +
 ...ral1_a_instanceGroups_myname_setNamedPorts.json |   13 +
 .../compute/fixtures/ovh/volume_snapshot_get.json  |   22 +
 .../fixtures/ovh/volume_snapshot_get_details.json  |   10 +
 .../fixtures/profitbricks/attach_volume.json       |   34 +
 .../fixtures/profitbricks/attach_volume.xml        |   12 -
 .../compute/fixtures/profitbricks/create_node.json |   37 +
 .../compute/fixtures/profitbricks/create_node.xml  |   13 -
 .../fixtures/profitbricks/create_volume.json       |   35 +
 .../fixtures/profitbricks/create_volume.xml        |   13 -
 .../profitbricks/create_volume_snapshot.json       |   30 +
 .../compute/fixtures/profitbricks/destroy_node.xml |   12 -
 .../fixtures/profitbricks/destroy_volume.xml       |   12 -
 .../fixtures/profitbricks/detach_volume.xml        |   12 -
 .../fixtures/profitbricks/ex_clear_datacenter.xml  |   12 -
 .../profitbricks/ex_create_datacenter.json         |   20 +
 .../fixtures/profitbricks/ex_create_datacenter.xml |   13 -
 .../profitbricks/ex_create_firewall_rule.json      |   24 +
 .../fixtures/profitbricks/ex_create_ip_block.json  |   22 +
 .../fixtures/profitbricks/ex_create_lan.json       |   17 +
 .../profitbricks/ex_create_load_balancer.json      |   18 +
 .../profitbricks/ex_create_network_interface.json  |   22 +
 .../profitbricks/ex_create_network_interface.xml   |   13 -
 .../profitbricks/ex_describe_datacenter.json       |  401 ++
 .../profitbricks/ex_describe_datacenter.xml        |   15 -
 .../profitbricks/ex_describe_firewall_rule.json    |   24 +
 .../fixtures/profitbricks/ex_describe_image.json   |   32 +
 .../profitbricks/ex_describe_ip_block.json         |   21 +
 .../fixtures/profitbricks/ex_describe_lan.json     |   24 +
 .../profitbricks/ex_describe_load_balancer.json    |   25 +
 .../profitbricks/ex_describe_location.json         |   12 +
 .../ex_describe_network_interface.json             |   31 +
 .../profitbricks/ex_describe_network_interface.xml |   26 -
 .../fixtures/profitbricks/ex_describe_node.json    |  111 +
 .../fixtures/profitbricks/ex_describe_node.xml     |   77 -
 .../profitbricks/ex_describe_snapshot.json         |   30 +
 .../fixtures/profitbricks/ex_describe_volume.json  |   35 +
 .../fixtures/profitbricks/ex_describe_volume.xml   |   22 -
 .../profitbricks/ex_destroy_datacenter.xml         |   10 -
 .../profitbricks/ex_destroy_network_interface.xml  |   12 -
 .../profitbricks/ex_list_attached_volumes.json     |  112 +
 .../fixtures/profitbricks/ex_list_datacenters.json |   52 +
 .../fixtures/profitbricks/ex_list_datacenters.xml  |   19 -
 .../profitbricks/ex_list_firewall_rules.json       |   79 +
 .../fixtures/profitbricks/ex_list_ip_blocks.json   |   50 +
 .../fixtures/profitbricks/ex_list_lans.json        |  157 +
 .../profitbricks/ex_list_load_balanced_nics.json   |   69 +
 .../profitbricks/ex_list_load_balancers.json       |  216 +
 .../profitbricks/ex_list_network_interfaces.json   |   69 +
 .../profitbricks/ex_list_network_interfaces.xml    |   75 -
 .../profitbricks/ex_rename_datacenter.json         |   46 +
 .../fixtures/profitbricks/ex_set_inet_access.json  |   31 +
 .../fixtures/profitbricks/ex_start_node.xml        |   10 -
 .../compute/fixtures/profitbricks/ex_stop_node.xml |   10 -
 .../fixtures/profitbricks/ex_update_datacenter.xml |   12 -
 .../profitbricks/ex_update_firewall_rule.json      |   25 +
 .../fixtures/profitbricks/ex_update_image.json     |   32 +
 .../fixtures/profitbricks/ex_update_lan.json       |   24 +
 .../profitbricks/ex_update_load_balancer.json      |   18 +
 .../profitbricks/ex_update_network_interface.json  |   31 +
 .../profitbricks/ex_update_network_interface.xml   |   12 -
 .../fixtures/profitbricks/ex_update_node.json      |   45 +
 .../fixtures/profitbricks/ex_update_node.xml       |   12 -
 .../fixtures/profitbricks/ex_update_snapshot.json  |   30 +
 .../fixtures/profitbricks/ex_update_volume.json    |   35 +
 .../fixtures/profitbricks/ex_update_volume.xml     |   12 -
 .../compute/fixtures/profitbricks/list_images.json |  199 +
 .../compute/fixtures/profitbricks/list_images.xml  |   43 -
 .../fixtures/profitbricks/list_locations.json      |   43 +
 .../compute/fixtures/profitbricks/list_nodes.json  |  169 +
 .../compute/fixtures/profitbricks/list_nodes.xml   |  172 -
 .../fixtures/profitbricks/list_snapshots.json      |   37 +
 .../fixtures/profitbricks/list_volumes.json        |  112 +
 .../compute/fixtures/profitbricks/list_volumes.xml |   66 -
 .../compute/fixtures/profitbricks/reboot_node.xml  |   10 -
 .../compute/fixtures/vultr/create_key_pair.json    |    3 +
 .../test/compute/fixtures/vultr/create_node.json   |    3 +
 .../compute/fixtures/vultr/list_key_pairs.json     |    8 +
 libcloud/test/compute/test_azure_arm.py            |   69 +
 libcloud/test/compute/test_digitalocean_v2.py      |   63 +
 libcloud/test/compute/test_dimensiondata.py        |  336 +-
 libcloud/test/compute/test_ecs.py                  |   12 +-
 libcloud/test/compute/test_gce.py                  |  404 +-
 libcloud/test/compute/test_openstack.py            |    8 +
 libcloud/test/compute/test_ovh.py                  |   38 +
 libcloud/test/compute/test_profitbricks.py         | 5377 ++++++++++++++++++--
 libcloud/test/compute/test_vultr.py                |   40 +
 .../fixtures/docker/linux_121/create_image.json    |    1 -
 .../{linux_121 => linux_124}/container_a68.json    |    0
 .../{linux_121 => linux_124}/containers.json       |    0
 .../{linux_121 => linux_124}/create_container.json |    0
 .../fixtures/docker/linux_124/create_image.txt     |  238 +
 .../docker/{linux_121 => linux_124}/images.json    |    0
 .../docker/{linux_121 => linux_124}/logs.txt       |    0
 .../docker/{linux_121 => linux_124}/search.json    |    0
 .../docker/{linux_121 => linux_124}/version.json   |    0
 .../fixtures/docker/mac_124/create_image.json      |    1 -
 .../fixtures/docker/mac_124/create_image.txt       |  238 +
 .../fixtures/rancher/start_container.json          |  109 +
 libcloud/test/container/test_docker.py             |   52 +-
 libcloud/test/container/test_rancher.py            |   23 +-
 .../alb/describe_load_balancer_listeters.xml       |   27 +
 .../fixtures/alb/describe_load_balancer_rules.xml  |   21 +
 .../alb/describe_load_balancer_target_groups.xml   |   29 +
 .../fixtures/alb/describe_load_balancers.xml       |   31 +
 .../loadbalancer/fixtures/alb/describe_tags.xml    |   18 +
 .../fixtures/alb/describe_target_health.xml        |   19 +
 libcloud/test/loadbalancer/test_alb.py             |  159 +
 libcloud/test/secrets.py-dist                      |    1 +
 186 files changed, 18521 insertions(+), 2411 deletions(-)

diff --git a/.pylintrc b/.pylintrc
index 56d02c2..14d137f 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -24,7 +24,7 @@ generated-members=async_request,objects
 
 [VARIABLES]
 
-# Tells wether we should check for unused import in __init__ files.
+# Tells whether we should check for unused import in __init__ files.
 init-import=no
 
 # A regular expression matching names used for dummy variables (i.e. not used).
diff --git a/CHANGES.rst b/CHANGES.rst
index 4a56a4b..8917d83 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,8 +1,110 @@
 Changelog
 =========
 
-Changes in current version of Apache Libcloud
----------------------------------------------
+
+Changes in Apache Libcloud 1.4.0
+--------------------------------
+
+Compute
+~~~~~~~
+
+- Introduce new Azure ARM driver
+  [Peter Amstulz]
+
+- [ec2] Fix the bug that created the node at ecs driver and implement the method for creating public ip
+  (GITHUB-943)
+  [watermelo]
+
+- [profitbricks] changes to the ProfitBricks compute driver to drop support for the old SOAP api (now end of life) and provide support for v3 of the REST api.
+  (GITHUB-938)
+  [Matt Finucane]
+
+- [cloudsigma] Added Warsaw (waw) region
+  (GITHUB-942)
+  [Kamil Chmielewski]
+
+- [google compute] List images fix for projects > 500 images.
+  (GITHUB-939)
+  [Scott Crunkleton]
+
+- [ec2] Add st1 and sc1 volume types to valid types
+  (GITHUB-925)
+  [Sean Goller]
+
+- [digital ocean] add ex_change_kernel in DigitalOcean_v2 driver
+  (GITHUB-922)
+  [Rick van de Loo]
+
+- [digital ocean] add ex_hard_reboot in DigitalOcean_v2 driver
+  (GITHUB-920)
+  [Rick van de Loo]
+
+- [openstack] add ex_start_node for the openstack driver
+  (GITHUB-919)
+  [Rick van de Loo]
+
+- [vultr] Extra Attributes for Node Creation on Vultr
+  (GITHUB-917)
+  [Fahri Cihan Demirci]
+
+- [vultr] Implement SSH Key Create/Delete Methods for Vultr
+  (GITHUB-914)
+  [Fahri Cihan Demirci]
+
+- [dimension data] No longer throw error when powering off a node that is already stopped.
+  (GITHUB-912)
+  [Samuel Chong]
+
+- [dimension data] Refactor create_node for MCP2 to support CaaS API 2.3 feature.
+  Can now specify Network Adapter Name for primary and additional NIC. Parameters in create_node function is tailored for MCP2.
+  (GITHUB-902)
+  [Samuel Chong]
+
+- Volume snapshot operations, i.e. creating, listing and deleting volume snapshots, for the Digital Ocean driver.
+  (LIBCLOUD-861, GITHUB-909)
+  [Fahri Cihan Demirci]
+
+- Added snapshot management to OVH compute
+  (GITHUB-897)
+  [Anthony Monthe]
+
+- [GCE] Support for HTTP(S) proxies with BackendServices
+  (GITHUB-856
+  [Tom Melendez]
+
+Container
+~~~~~~~~~
+
+- [docker] As reported in the corresponding bug, the docker daemon will respond in an install_image call with all the messages
+  produced during the procedure parsed as json docs. In that case the response headers also contain the value 'transfer-encoding':'chunked'.
+  That kind of response can now be parsed properly by the DockerResponse parse_body method. Also, another small change is that previously
+  the id of the new image was marked in the json document as id, but now it's marked as sha256, so the regex used to discover the id
+  has been updated.
+  (GITHUB-918)
+  [Pavlos Tzianos]
+
+Load Balancing
+~~~~~~~~~~~~~~
+
+- Introduce AWS Application Load Balancer (ALB) driver
+  (LIBCLOUD-869, GITHUB-936)
+  [Anton Kozyrev]
+
+Storage
+~~~~~~~
+
+- [s3] Add AP-Southeast2 as region
+
+- [google] Prevent GCE auth to hide S3 auth
+  (GITHUB-921)
+  [Quentin Pradet]
+
+- [GCS] Fixed some google_storage.py URL cleaning
+  (GITHUB-901)
+  [Scott Crunkleton]
+
+Changes in Apache Libcloud 1.3.0
+--------------------------------
 
 General
 ~~~~~~~
@@ -75,7 +177,7 @@ Compute
 Container
 ~~~~~~~~~
 
-- Introduced new Racher driver
+- Introduced new Rancher driver
   (GITHUB-876)
   [Mario Loria]
 
diff --git a/PKG-INFO b/PKG-INFO
index bc11727..28d0d02 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: apache-libcloud
-Version: 1.3.0
+Version: 1.4.0
 Summary: A standard Python library that abstracts away differences among multiple cloud provider APIs. For more information and documentation, please see http://libcloud.apache.org
 Home-page: http://libcloud.apache.org/
 Author: Apache Software Foundation
diff --git a/README.rst b/README.rst
index 2415052..6595d45 100644
--- a/README.rst
+++ b/README.rst
@@ -1,4 +1,4 @@
-Apache Libcloud - a unified interface into the cloud
+Apache Libcloud - a unified interface for the cloud
 ====================================================
 
 .. image:: https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat
diff --git a/apache_libcloud.egg-info/PKG-INFO b/apache_libcloud.egg-info/PKG-INFO
index bc11727..28d0d02 100644
--- a/apache_libcloud.egg-info/PKG-INFO
+++ b/apache_libcloud.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: apache-libcloud
-Version: 1.3.0
+Version: 1.4.0
 Summary: A standard Python library that abstracts away differences among multiple cloud provider APIs. For more information and documentation, please see http://libcloud.apache.org
 Home-page: http://libcloud.apache.org/
 Author: Apache Software Foundation
diff --git a/apache_libcloud.egg-info/SOURCES.txt b/apache_libcloud.egg-info/SOURCES.txt
index d7e69d2..ec49ab4 100644
--- a/apache_libcloud.egg-info/SOURCES.txt
+++ b/apache_libcloud.egg-info/SOURCES.txt
@@ -43,6 +43,7 @@ libcloud/common/abiquo.py
 libcloud/common/aliyun.py
 libcloud/common/aws.py
 libcloud/common/azure.py
+libcloud/common/azure_arm.py
 libcloud/common/base.py
 libcloud/common/brightbox.py
 libcloud/common/buddyns.py
@@ -87,6 +88,7 @@ libcloud/compute/drivers/__init__.py
 libcloud/compute/drivers/abiquo.py
 libcloud/compute/drivers/auroracompute.py
 libcloud/compute/drivers/azure.py
+libcloud/compute/drivers/azure_arm.py
 libcloud/compute/drivers/bluebox.py
 libcloud/compute/drivers/brightbox.py
 libcloud/compute/drivers/bsnl.py
@@ -185,6 +187,7 @@ libcloud/loadbalancer/base.py
 libcloud/loadbalancer/providers.py
 libcloud/loadbalancer/types.py
 libcloud/loadbalancer/drivers/__init__.py
+libcloud/loadbalancer/drivers/alb.py
 libcloud/loadbalancer/drivers/brightbox.py
 libcloud/loadbalancer/drivers/cloudstack.py
 libcloud/loadbalancer/drivers/dimensiondata.py
@@ -278,6 +281,7 @@ libcloud/test/compute/__init__.py
 libcloud/test/compute/test_abiquo.py
 libcloud/test/compute/test_auroracompute.py
 libcloud/test/compute/test_azure.py
+libcloud/test/compute/test_azure_arm.py
 libcloud/test/compute/test_base.py
 libcloud/test/compute/test_bluebox.py
 libcloud/test/compute/test_brightbox.py
@@ -378,6 +382,9 @@ libcloud/test/compute/fixtures/azure/_3761b98b_673d_526c_8d55_fee918758e6e_servi
 libcloud/test/compute/fixtures/azure/_3761b98b_673d_526c_8d55_fee918758e6e_services_storageservices_dss123.xml
 libcloud/test/compute/fixtures/azure/_3761b98b_673d_526c_8d55_fee918758e6e_services_vmimages.xml
 libcloud/test/compute/fixtures/azure/libcloud.pem
+libcloud/test/compute/fixtures/azure_arm/_77777777_7777_7777_7777_777777777777_oauth2_token.json
+libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute.json
+libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_locations_eastus_vmSizes.json
 libcloud/test/compute/fixtures/bluebox/api_block_products_json.json
 libcloud/test/compute/fixtures/bluebox/api_block_templates_json.json
 libcloud/test/compute/fixtures/bluebox/api_blocks_99df878c_6e5c_4945_a635_d94da9fd3146_json.json
@@ -606,6 +613,8 @@ libcloud/test/compute/fixtures/cloudstack/updateVMAffinityGroup_default.json
 libcloud/test/compute/fixtures/digitalocean/create_image.json
 libcloud/test/compute/fixtures/digitalocean/create_key_pair.json
 libcloud/test/compute/fixtures/digitalocean/error.json
+libcloud/test/compute/fixtures/digitalocean/ex_change_kernel.json
+libcloud/test/compute/fixtures/digitalocean/ex_hard_reboot.json
 libcloud/test/compute/fixtures/digitalocean/ex_power_on_node.json
 libcloud/test/compute/fixtures/digitalocean/ex_shutdown_node.json
 libcloud/test/compute/fixtures/digitalocean/get_image.json
@@ -616,9 +625,12 @@ libcloud/test/compute/fixtures/digitalocean_v2/create_image.json
 libcloud/test/compute/fixtures/digitalocean_v2/create_key_pair.json
 libcloud/test/compute/fixtures/digitalocean_v2/create_node.json
 libcloud/test/compute/fixtures/digitalocean_v2/create_volume.json
+libcloud/test/compute/fixtures/digitalocean_v2/create_volume_snapshot.json
 libcloud/test/compute/fixtures/digitalocean_v2/detach_volume.json
 libcloud/test/compute/fixtures/digitalocean_v2/error.json
 libcloud/test/compute/fixtures/digitalocean_v2/error_invalid_image.json
+libcloud/test/compute/fixtures/digitalocean_v2/ex_change_kernel.json
+libcloud/test/compute/fixtures/digitalocean_v2/ex_hard_reboot.json
 libcloud/test/compute/fixtures/digitalocean_v2/ex_power_on_node.json
 libcloud/test/compute/fixtures/digitalocean_v2/ex_rename_node.json
 libcloud/test/compute/fixtures/digitalocean_v2/ex_shutdown_node.json
@@ -630,10 +642,12 @@ libcloud/test/compute/fixtures/digitalocean_v2/list_nodes.json
 libcloud/test/compute/fixtures/digitalocean_v2/list_nodes_empty.json
 libcloud/test/compute/fixtures/digitalocean_v2/list_nodes_page_1.json
 libcloud/test/compute/fixtures/digitalocean_v2/list_sizes.json
+libcloud/test/compute/fixtures/digitalocean_v2/list_volume_snapshots.json
 libcloud/test/compute/fixtures/digitalocean_v2/list_volumes.json
 libcloud/test/compute/fixtures/digitalocean_v2/list_volumes_empty.json
 libcloud/test/compute/fixtures/digitalocean_v2/reboot_node.json
 libcloud/test/compute/fixtures/dimensiondata/_oec_0_9_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server.xml
+libcloud/test/compute/fixtures/dimensiondata/audit_log.csv
 libcloud/test/compute/fixtures/dimensiondata/detailed_usage_report.csv
 libcloud/test/compute/fixtures/dimensiondata/image_customerImage.xml
 libcloud/test/compute/fixtures/dimensiondata/image_customerImage_2ffa36c8_1848_49eb_b4fa_9d908775f68c.xml
@@ -708,6 +722,7 @@ libcloud/test/compute/fixtures/dimensiondata/port_list_edit.xml
 libcloud/test/compute/fixtures/dimensiondata/port_list_get.xml
 libcloud/test/compute/fixtures/dimensiondata/port_list_lists.xml
 libcloud/test/compute/fixtures/dimensiondata/report_usageMonitoring.xml
+libcloud/test/compute/fixtures/dimensiondata/server_GetServer.xml
 libcloud/test/compute/fixtures/dimensiondata/server_addDisk.xml
 libcloud/test/compute/fixtures/dimensiondata/server_addNic.xml
 libcloud/test/compute/fixtures/dimensiondata/server_antiAffinityRule_list.xml
@@ -843,6 +858,7 @@ libcloud/test/compute/fixtures/ecs/create_disk.xml
 libcloud/test/compute/fixtures/ecs/create_image.xml
 libcloud/test/compute/fixtures/ecs/create_instance.xml
 libcloud/test/compute/fixtures/ecs/create_node_describe_instances.xml
+libcloud/test/compute/fixtures/ecs/create_public_ip.xml
 libcloud/test/compute/fixtures/ecs/create_security_group.xml
 libcloud/test/compute/fixtures/ecs/create_snapshot.xml
 libcloud/test/compute/fixtures/ecs/create_volume_describe_disks.xml
@@ -953,6 +969,7 @@ libcloud/test/compute/fixtures/gce/global_images_debian_7_wheezy_v20131120_delet
 libcloud/test/compute/fixtures/gce/global_images_family_notfound.json
 libcloud/test/compute/fixtures/gce/global_images_post.json
 libcloud/test/compute/fixtures/gce/global_instanceTemplates.json
+libcloud/test/compute/fixtures/gce/global_instanceTemplates_insert.json
 libcloud/test/compute/fixtures/gce/global_instanceTemplates_my_instance_template1.json
 libcloud/test/compute/fixtures/gce/global_networks.json
 libcloud/test/compute/fixtures/gce/global_networks_cf.json
@@ -970,6 +987,9 @@ libcloud/test/compute/fixtures/gce/global_routes_post.json
 libcloud/test/compute/fixtures/gce/global_snapshots.json
 libcloud/test/compute/fixtures/gce/global_snapshots_lcsnapshot.json
 libcloud/test/compute/fixtures/gce/global_snapshots_lcsnapshot_delete.json
+libcloud/test/compute/fixtures/gce/global_sslcertificates.json
+libcloud/test/compute/fixtures/gce/global_sslcertificates_example.json
+libcloud/test/compute/fixtures/gce/global_sslcertificates_post.json
 libcloud/test/compute/fixtures/gce/global_targetHttpProxies.json
 libcloud/test/compute/fixtures/gce/global_targetHttpProxies_post.json
 libcloud/test/compute/fixtures/gce/global_targetHttpProxies_web_proxy.json
@@ -992,11 +1012,13 @@ libcloud/test/compute/fixtures/gce/operations_operation_global_httpHealthChecks_
 libcloud/test/compute/fixtures/gce/operations_operation_global_httpHealthChecks_post.json
 libcloud/test/compute/fixtures/gce/operations_operation_global_image_post.json
 libcloud/test/compute/fixtures/gce/operations_operation_global_images_debian7_delete.json
+libcloud/test/compute/fixtures/gce/operations_operation_global_instanceTemplates_insert.json
 libcloud/test/compute/fixtures/gce/operations_operation_global_networks_lcnetwork_delete.json
 libcloud/test/compute/fixtures/gce/operations_operation_global_networks_post.json
 libcloud/test/compute/fixtures/gce/operations_operation_global_routes_lcdemoroute_delete.json
 libcloud/test/compute/fixtures/gce/operations_operation_global_routes_post.json
 libcloud/test/compute/fixtures/gce/operations_operation_global_snapshots_lcsnapshot_delete.json
+libcloud/test/compute/fixtures/gce/operations_operation_global_sslcertificates_post.json
 libcloud/test/compute/fixtures/gce/operations_operation_global_targetHttpProxies_post.json
 libcloud/test/compute/fixtures/gce/operations_operation_global_targetHttpProxies_web_proxy_delete.json
 libcloud/test/compute/fixtures/gce/operations_operation_global_urlMaps_post.json
@@ -1033,6 +1055,11 @@ libcloud/test/compute/fixtures/gce/operations_operation_zones_us-central1-a_inst
 libcloud/test/compute/fixtures/gce/operations_operation_zones_us-central1-a_instances_post.json
 libcloud/test/compute/fixtures/gce/operations_operation_zones_us-central1-a_targetInstances_lctargetinstance_delete.json
 libcloud/test/compute/fixtures/gce/operations_operation_zones_us-central1-a_targetInstances_post.json
+libcloud/test/compute/fixtures/gce/operations_operation_zones_us_central1_a_instanceGroups_insert.json
+libcloud/test/compute/fixtures/gce/operations_operation_zones_us_central1_a_instanceGroups_myname_addInstances.json
+libcloud/test/compute/fixtures/gce/operations_operation_zones_us_central1_a_instanceGroups_myname_delete.json
+libcloud/test/compute/fixtures/gce/operations_operation_zones_us_central1_a_instanceGroups_myname_removeInstances.json
+libcloud/test/compute/fixtures/gce/operations_operation_zones_us_central1_a_instanceGroups_myname_setNamedPorts.json
 libcloud/test/compute/fixtures/gce/operations_operation_zones_us_central1_a_node_name_setMetadata_post.json
 libcloud/test/compute/fixtures/gce/project.json
 libcloud/test/compute/fixtures/gce/projects_centos-cloud_global_images.json
@@ -1084,6 +1111,7 @@ libcloud/test/compute/fixtures/gce/regions_us-central1_targetPools_libcloud-lb-d
 libcloud/test/compute/fixtures/gce/regions_us-central1_targetPools_post.json
 libcloud/test/compute/fixtures/gce/regions_us-central1_targetPools_www-pool.json
 libcloud/test/compute/fixtures/gce/regions_us-east1.json
+libcloud/test/compute/fixtures/gce/regions_us-east1_subnetworks_cf_972cf02e6ad49113.json
 libcloud/test/compute/fixtures/gce/setCommonInstanceMetadata_post.json
 libcloud/test/compute/fixtures/gce/setUsageExportBucket_post.json
 libcloud/test/compute/fixtures/gce/zones.json
@@ -1106,6 +1134,7 @@ libcloud/test/compute/fixtures/gce/zones_us-central1-a_instanceGroupManagers.jso
 libcloud/test/compute/fixtures/gce/zones_us-central1-a_instanceGroupManagers_insert.json
 libcloud/test/compute/fixtures/gce/zones_us-central1-a_instanceGroupManagers_myinstancegroup.json
 libcloud/test/compute/fixtures/gce/zones_us-central1-a_instanceGroup_myinstancegroup.json
+libcloud/test/compute/fixtures/gce/zones_us-central1-a_instanceGroup_myinstancegroup2.json
 libcloud/test/compute/fixtures/gce/zones_us-central1-a_instances.json
 libcloud/test/compute/fixtures/gce/zones_us-central1-a_instances_lcnode-000.json
 libcloud/test/compute/fixtures/gce/zones_us-central1-a_instances_lcnode-000_delete.json
@@ -1135,6 +1164,14 @@ libcloud/test/compute/fixtures/gce/zones_us-central1-b_instances_libcloud-lb-dem
 libcloud/test/compute/fixtures/gce/zones_us-east1-b.json
 libcloud/test/compute/fixtures/gce/zones_us-east1-b_instanceGroupManagers.json
 libcloud/test/compute/fixtures/gce/zones_us-east1-b_instanceGroup_myinstancegroup.json
+libcloud/test/compute/fixtures/gce/zones_us_central1_a_instanceGroups.json
+libcloud/test/compute/fixtures/gce/zones_us_central1_a_instanceGroups_insert.json
+libcloud/test/compute/fixtures/gce/zones_us_central1_a_instanceGroups_myname.json
+libcloud/test/compute/fixtures/gce/zones_us_central1_a_instanceGroups_myname_addInstances.json
+libcloud/test/compute/fixtures/gce/zones_us_central1_a_instanceGroups_myname_delete.json
+libcloud/test/compute/fixtures/gce/zones_us_central1_a_instanceGroups_myname_listInstances.json
+libcloud/test/compute/fixtures/gce/zones_us_central1_a_instanceGroups_myname_removeInstances.json
+libcloud/test/compute/fixtures/gce/zones_us_central1_a_instanceGroups_myname_setNamedPorts.json
 libcloud/test/compute/fixtures/gce/zones_us_central1_a_instances_custom_node.json
 libcloud/test/compute/fixtures/gce/zones_us_central1_a_instances_node_name_setDiskAutoDelete.json
 libcloud/test/compute/fixtures/gce/zones_us_central1_a_instances_node_name_setMachineType.json
@@ -1346,6 +1383,8 @@ libcloud/test/compute/fixtures/ovh/ssh_get.json
 libcloud/test/compute/fixtures/ovh/ssh_get_detail.json
 libcloud/test/compute/fixtures/ovh/volume_get.json
 libcloud/test/compute/fixtures/ovh/volume_get_detail.json
+libcloud/test/compute/fixtures/ovh/volume_snapshot_get.json
+libcloud/test/compute/fixtures/ovh/volume_snapshot_get_details.json
 libcloud/test/compute/fixtures/packet/device_create.json
 libcloud/test/compute/fixtures/packet/devices.json
 libcloud/test/compute/fixtures/packet/facilities.json
@@ -1353,33 +1392,50 @@ libcloud/test/compute/fixtures/packet/operatingsystems.json
 libcloud/test/compute/fixtures/packet/plans.json
 libcloud/test/compute/fixtures/packet/sshkey_create.json
 libcloud/test/compute/fixtures/packet/sshkeys.json
-libcloud/test/compute/fixtures/profitbricks/attach_volume.xml
-libcloud/test/compute/fixtures/profitbricks/create_node.xml
-libcloud/test/compute/fixtures/profitbricks/create_volume.xml
-libcloud/test/compute/fixtures/profitbricks/destroy_node.xml
-libcloud/test/compute/fixtures/profitbricks/destroy_volume.xml
-libcloud/test/compute/fixtures/profitbricks/detach_volume.xml
-libcloud/test/compute/fixtures/profitbricks/ex_clear_datacenter.xml
-libcloud/test/compute/fixtures/profitbricks/ex_create_datacenter.xml
-libcloud/test/compute/fixtures/profitbricks/ex_create_network_interface.xml
-libcloud/test/compute/fixtures/profitbricks/ex_describe_datacenter.xml
-libcloud/test/compute/fixtures/profitbricks/ex_describe_network_interface.xml
-libcloud/test/compute/fixtures/profitbricks/ex_describe_node.xml
-libcloud/test/compute/fixtures/profitbricks/ex_describe_volume.xml
-libcloud/test/compute/fixtures/profitbricks/ex_destroy_datacenter.xml
-libcloud/test/compute/fixtures/profitbricks/ex_destroy_network_interface.xml
-libcloud/test/compute/fixtures/profitbricks/ex_list_datacenters.xml
-libcloud/test/compute/fixtures/profitbricks/ex_list_network_interfaces.xml
-libcloud/test/compute/fixtures/profitbricks/ex_start_node.xml
-libcloud/test/compute/fixtures/profitbricks/ex_stop_node.xml
-libcloud/test/compute/fixtures/profitbricks/ex_update_datacenter.xml
-libcloud/test/compute/fixtures/profitbricks/ex_update_network_interface.xml
-libcloud/test/compute/fixtures/profitbricks/ex_update_node.xml
-libcloud/test/compute/fixtures/profitbricks/ex_update_volume.xml
-libcloud/test/compute/fixtures/profitbricks/list_images.xml
-libcloud/test/compute/fixtures/profitbricks/list_nodes.xml
-libcloud/test/compute/fixtures/profitbricks/list_volumes.xml
-libcloud/test/compute/fixtures/profitbricks/reboot_node.xml
+libcloud/test/compute/fixtures/profitbricks/attach_volume.json
+libcloud/test/compute/fixtures/profitbricks/create_node.json
+libcloud/test/compute/fixtures/profitbricks/create_volume.json
+libcloud/test/compute/fixtures/profitbricks/create_volume_snapshot.json
+libcloud/test/compute/fixtures/profitbricks/ex_create_datacenter.json
+libcloud/test/compute/fixtures/profitbricks/ex_create_firewall_rule.json
+libcloud/test/compute/fixtures/profitbricks/ex_create_ip_block.json
+libcloud/test/compute/fixtures/profitbricks/ex_create_lan.json
+libcloud/test/compute/fixtures/profitbricks/ex_create_load_balancer.json
+libcloud/test/compute/fixtures/profitbricks/ex_create_network_interface.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_datacenter.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_firewall_rule.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_image.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_ip_block.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_lan.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_load_balancer.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_location.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_network_interface.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_node.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_snapshot.json
+libcloud/test/compute/fixtures/profitbricks/ex_describe_volume.json
+libcloud/test/compute/fixtures/profitbricks/ex_list_attached_volumes.json
+libcloud/test/compute/fixtures/profitbricks/ex_list_datacenters.json
+libcloud/test/compute/fixtures/profitbricks/ex_list_firewall_rules.json
+libcloud/test/compute/fixtures/profitbricks/ex_list_ip_blocks.json
+libcloud/test/compute/fixtures/profitbricks/ex_list_lans.json
+libcloud/test/compute/fixtures/profitbricks/ex_list_load_balanced_nics.json
+libcloud/test/compute/fixtures/profitbricks/ex_list_load_balancers.json
+libcloud/test/compute/fixtures/profitbricks/ex_list_network_interfaces.json
+libcloud/test/compute/fixtures/profitbricks/ex_rename_datacenter.json
+libcloud/test/compute/fixtures/profitbricks/ex_set_inet_access.json
+libcloud/test/compute/fixtures/profitbricks/ex_update_firewall_rule.json
+libcloud/test/compute/fixtures/profitbricks/ex_update_image.json
+libcloud/test/compute/fixtures/profitbricks/ex_update_lan.json
+libcloud/test/compute/fixtures/profitbricks/ex_update_load_balancer.json
+libcloud/test/compute/fixtures/profitbricks/ex_update_network_interface.json
+libcloud/test/compute/fixtures/profitbricks/ex_update_node.json
+libcloud/test/compute/fixtures/profitbricks/ex_update_snapshot.json
+libcloud/test/compute/fixtures/profitbricks/ex_update_volume.json
+libcloud/test/compute/fixtures/profitbricks/list_images.json
+libcloud/test/compute/fixtures/profitbricks/list_locations.json
+libcloud/test/compute/fixtures/profitbricks/list_nodes.json
+libcloud/test/compute/fixtures/profitbricks/list_snapshots.json
+libcloud/test/compute/fixtures/profitbricks/list_volumes.json
 libcloud/test/compute/fixtures/rimuhosting/r_distributions.json
 libcloud/test/compute/fixtures/rimuhosting/r_orders.json
 libcloud/test/compute/fixtures/rimuhosting/r_orders_new_vps.json
@@ -1472,7 +1528,10 @@ libcloud/test/compute/fixtures/voxel/nodes.xml
 libcloud/test/compute/fixtures/voxel/success.xml
 libcloud/test/compute/fixtures/voxel/unauthorized.xml
 libcloud/test/compute/fixtures/vpsnet/_available_clouds_api10json_templates.json
+libcloud/test/compute/fixtures/vultr/create_key_pair.json
+libcloud/test/compute/fixtures/vultr/create_node.json
 libcloud/test/compute/fixtures/vultr/list_images.json
+libcloud/test/compute/fixtures/vultr/list_key_pairs.json
 libcloud/test/compute/fixtures/vultr/list_locations.json
 libcloud/test/compute/fixtures/vultr/list_nodes.json
 libcloud/test/compute/fixtures/vultr/list_sizes.json
@@ -1483,17 +1542,17 @@ libcloud/test/container/test_docker_utils.py
 libcloud/test/container/test_ecs.py
 libcloud/test/container/test_kubernetes.py
 libcloud/test/container/test_rancher.py
-libcloud/test/container/fixtures/docker/linux_121/container_a68.json
-libcloud/test/container/fixtures/docker/linux_121/containers.json
-libcloud/test/container/fixtures/docker/linux_121/create_container.json
-libcloud/test/container/fixtures/docker/linux_121/create_image.json
-libcloud/test/container/fixtures/docker/linux_121/images.json
-libcloud/test/container/fixtures/docker/linux_121/logs.txt
-libcloud/test/container/fixtures/docker/linux_121/search.json
-libcloud/test/container/fixtures/docker/linux_121/version.json
+libcloud/test/container/fixtures/docker/linux_124/container_a68.json
+libcloud/test/container/fixtures/docker/linux_124/containers.json
+libcloud/test/container/fixtures/docker/linux_124/create_container.json
+libcloud/test/container/fixtures/docker/linux_124/create_image.txt
+libcloud/test/container/fixtures/docker/linux_124/images.json
+libcloud/test/container/fixtures/docker/linux_124/logs.txt
+libcloud/test/container/fixtures/docker/linux_124/search.json
+libcloud/test/container/fixtures/docker/linux_124/version.json
 libcloud/test/container/fixtures/docker/mac_124/containers.json
 libcloud/test/container/fixtures/docker/mac_124/create_container.json
-libcloud/test/container/fixtures/docker/mac_124/create_image.json
+libcloud/test/container/fixtures/docker/mac_124/create_image.txt
 libcloud/test/container/fixtures/docker/mac_124/search.json
 libcloud/test/container/fixtures/docker/mac_124/version.json
 libcloud/test/container/fixtures/docker_utils/v2_repositories_library_ubuntu.json
@@ -1535,6 +1594,7 @@ libcloud/test/container/fixtures/rancher/ex_list_stacks.json
 libcloud/test/container/fixtures/rancher/ex_search_containers.json
 libcloud/test/container/fixtures/rancher/ex_search_services.json
 libcloud/test/container/fixtures/rancher/list_containers.json
+libcloud/test/container/fixtures/rancher/start_container.json
 libcloud/test/container/fixtures/rancher/stop_container.json
 libcloud/test/dns/__init__.py
 libcloud/test/dns/test_auroradns.py
@@ -1855,6 +1915,7 @@ libcloud/test/dns/fixtures/zonomi/empty_zones_list.xml
 libcloud/test/dns/fixtures/zonomi/list_records.xml
 libcloud/test/dns/fixtures/zonomi/list_zones.xml
 libcloud/test/loadbalancer/__init__.py
+libcloud/test/loadbalancer/test_alb.py
 libcloud/test/loadbalancer/test_brightbox.py
 libcloud/test/loadbalancer/test_cloudstack.py
 libcloud/test/loadbalancer/test_dimensiondata.py
@@ -1865,6 +1926,12 @@ libcloud/test/loadbalancer/test_ninefold.py
 libcloud/test/loadbalancer/test_rackspace.py
 libcloud/test/loadbalancer/test_slb.py
 libcloud/test/loadbalancer/test_softlayer.py
+libcloud/test/loadbalancer/fixtures/alb/describe_load_balancer_listeters.xml
+libcloud/test/loadbalancer/fixtures/alb/describe_load_balancer_rules.xml
+libcloud/test/loadbalancer/fixtures/alb/describe_load_balancer_target_groups.xml
+libcloud/test/loadbalancer/fixtures/alb/describe_load_balancers.xml
+libcloud/test/loadbalancer/fixtures/alb/describe_tags.xml
+libcloud/test/loadbalancer/fixtures/alb/describe_target_health.xml
 libcloud/test/loadbalancer/fixtures/brightbox/load_balancers.json
 libcloud/test/loadbalancer/fixtures/brightbox/load_balancers_lba_1235f.json
 libcloud/test/loadbalancer/fixtures/brightbox/load_balancers_post.json
diff --git a/demos/gce_demo.py b/demos/gce_demo.py
index 6322c9e..c49e5e6 100755
--- a/demos/gce_demo.py
+++ b/demos/gce_demo.py
@@ -14,7 +14,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-
 # This example performs several tasks on Google Compute Platform.  It can be
 # run directly or can be imported into an interactive python session.  This
 # can also serve as live integration tests.
@@ -66,8 +65,8 @@ except ImportError:
     sys.exit(1)
 
 # Add parent dir of this file's dir to sys.path (OS-agnostically)
-sys.path.append(os.path.normpath(os.path.join(os.path.dirname(__file__),
-                                 os.path.pardir)))
+sys.path.append(
+    os.path.normpath(os.path.join(os.path.dirname(__file__), os.path.pardir)))
 
 from libcloud.compute.types import Provider
 from libcloud.compute.providers import get_driver
@@ -92,6 +91,7 @@ DEMO_BASE_NAME = 'lct'
 
 # Datacenter to create resources in
 DATACENTER = 'us-central1-f'
+BACKUP_DATACENTER = 'us-east1-c'
 
 # Clean up resources at the end (can be set to false in order to
 # inspect resources at the end of the run). Resources will be cleaned
@@ -136,6 +136,46 @@ def get_dns_driver(gce_driver=None):
     return driver
 
 
+def create_mig(gce, mig_base_name, zone, template, postfix, num_instances=2):
+    """
+    Creates MIG, sets named ports, modifies various text with 'postfix'.
+
+    :param  gce: An initalized GCE driver.
+    :type   gce: :class`GCENodeDriver`
+
+    :param  zone: Zone to create Managed Instance Group in.
+    :type   zone: :class:`GCEZone` or ``str``
+
+    :param  template: Instance Template to use in creating MIG.
+    :type   template: :class:`GCEInstanceTemplate`
+
+    :param  postfix: string to append to mig name, etc.  Example: 'east',
+                     'central'
+    :type   postfix: ``str``
+
+    :param  num_instances: number of instances to create in MIG.  Default is 2.
+    :type   num_instances: ``int``
+
+    :returns: initialized Managed Instance Group.
+    :rtype: :class:`GCEInstanceGroupManager`
+    """
+    mig_name = '%s-%s' % (mig_base_name, postfix)
+    mig = gce.ex_create_instancegroupmanager(
+        mig_name, zone, template, num_instances, base_instance_name=mig_name,
+        description='Demo for %s' % postfix)
+    display('    Managed Instance Group [%s] "%s" created' % (postfix.upper(),
+                                                              mig.name))
+    display('    ... MIG instances created: %s' %
+            ','.join([x['name'] for x in mig.list_managed_instances()]))
+
+    # set the named_ports on the Instance Group.
+    named_ports = [{'name': '%s-http' % DEMO_BASE_NAME, 'port': 80}]
+    mig.set_named_ports(named_ports=named_ports)
+    display('    ... MIG ports set: %s' % named_ports)
+
+    return mig
+
+
 def display(title, resource_list=[]):
     """
     Display a list of resources.
@@ -214,8 +254,32 @@ def cleanup_only():
     snapshots = gce.ex_list_snapshots()
     display('Snapshots:', snapshots)
 
+    gfrs = gce.ex_list_forwarding_rules(global_rules=True)
+    display("Global Forwarding Rules", gfrs)
+    targetproxies = gce.ex_list_targethttpproxies()
+    display("Target HTTP Proxies", targetproxies)
+    urlmaps = gce.ex_list_urlmaps()
+    display("URLMaps", urlmaps)
+    bes = gce.ex_list_backendservices()
+    display("Backend Services", bes)
+    migs = gce.ex_list_instancegroupmanagers(zone='all')
+    display("Instance Group Managers", migs)
+    its = gce.ex_list_instancetemplates()
+    display("Instance Templates", its)
+    hcs = gce.ex_list_healthchecks()
+    display("Health Checks", hcs)
+
     # == Clean up any old demo resources ==
     display('Cleaning up any "%s" resources' % DEMO_BASE_NAME)
+    clean_up(gce, DEMO_BASE_NAME, None,
+             gfrs + targetproxies + urlmaps + bes + hcs + migs + its)
+
+    # == Pause to let cleanup occur and repopulate volume and node lists ==
+    if len(migs):
+        time.sleep(10)
+        all_volumes = gce.list_volumes(ex_zone='all')
+        all_nodes = gce.list_nodes(ex_zone='all')
+
     clean_up(gce, DEMO_BASE_NAME, all_nodes,
              all_addresses + all_volumes + firewalls + networks + snapshots)
     volumes = gce.list_volumes()
@@ -260,6 +324,8 @@ def clean_up(gce, base_name, node_list=None, resource_list=None):
         if resrc.name.startswith(base_name):
             try:
                 resrc.destroy()
+                class_name = resrc.__class__.__name__
+                display('   Deleted %s (%s)' % (resrc.name, class_name))
             except ResourceNotFoundError:
                 display('   Not found: %s (%s)' % (resrc.name,
                                                    resrc.__class__.__name__))
@@ -380,8 +446,7 @@ def main_compute():
     name = '%s-subnet-node' % DEMO_BASE_NAME
     node_1 = gce.create_node(name, 'g1-small', 'debian-8',
                              ex_disk_auto_delete=True,
-                             ex_network=network_custom,
-                             ex_subnetwork=subnet)
+                             ex_network=network_custom, ex_subnetwork=subnet)
     display('  Node %s created' % name)
 
     # == Destroy instance in custom subnetwork ==
@@ -424,8 +489,7 @@ def main_compute():
                 },
                 "boot": True,
                 "autoDelete": True
-            },
-            {
+            }, {
                 "type": "SCRATCH",
                 "deviceName": '%s-gstruct-lssd' % DEMO_BASE_NAME,
                 "initializeParams": {
@@ -452,7 +516,7 @@ def main_compute():
         display('Stopping node, setting custom size, starting node:')
         name = '%s-np-node' % DEMO_BASE_NAME
         gce.ex_stop_node(node_1)
-        gce.ex_set_machine_type(node_1, 'custom-2-4096')   # 2 vCPU, 4GB RAM
+        gce.ex_set_machine_type(node_1, 'custom-2-4096')  # 2 vCPU, 4GB RAM
         gce.ex_start_node(node_1)
         node_1 = gce.ex_get_node(name)
         display('  %s: state=%s, size=%s' % (name, node_1.extra['status'],
@@ -471,8 +535,7 @@ def main_compute():
         if CLEANUP:
             # == Detach the disk ==
             if gce.detach_volume(volume, ex_node=node_1):
-                display('  Detached %s from %s' % (volume.name,
-                                                   node_1.name))
+                display('  Detached %s from %s' % (volume.name, node_1.name))
 
     # == Create Snapshot ==
     display('Creating a snapshot from existing disk:')
@@ -499,8 +562,7 @@ def main_compute():
     display('  Created %s from snapshot' % volume.name)
     # Create Node with Disk
     node_2 = gce.create_node(name, size, image, ex_tags=['libcloud'],
-                             ex_boot_disk=volume,
-                             ex_disk_auto_delete=False)
+                             ex_boot_disk=volume, ex_disk_auto_delete=False)
     display('  Node %s created with attached disk %s' % (node_2.name,
                                                          volume.name))
 
@@ -525,10 +587,9 @@ def main_compute():
     number = MAX_NODES - 2
     if number > 0:
         display('Creating Multiple Nodes (%s):' % number)
-        multi_nodes = gce.ex_create_multiple_nodes(base_name, size, image,
-                                                   number,
-                                                   ex_tags=['libcloud'],
-                                                   ex_disk_auto_delete=True)
+        multi_nodes = gce.ex_create_multiple_nodes(
+            base_name, size, image, number, ex_tags=['libcloud'],
+            ex_disk_auto_delete=True)
         for node in multi_nodes:
             display('  Node %s created' % node.name)
 
@@ -542,8 +603,7 @@ def main_compute():
     # == Create a Firewall ==
     display('Creating a Firewall:')
     name = '%s-firewall' % DEMO_BASE_NAME
-    allowed = [{'IPProtocol': 'tcp',
-                'ports': ['3141']}]
+    allowed = [{'IPProtocol': 'tcp', 'ports': ['3141']}]
     firewall_1 = gce.ex_create_firewall(name, allowed, network=network_1,
                                         source_tags=['libcloud'])
     display('  Firewall %s created' % firewall_1.name)
@@ -629,20 +689,16 @@ def main_load_balancer():
     size = gce.ex_get_size('n1-standard-1')
     number = 3
     display('Creating %d nodes' % number)
-    metadata = {'items': [{'key': 'startup-script',
-                           'value': startup_script}]}
-    lb_nodes = gce.ex_create_multiple_nodes(base_name, size, image,
-                                            number, ex_tags=[tag],
-                                            ex_metadata=metadata,
-                                            ex_disk_auto_delete=True,
-                                            ignore_errors=False)
+    metadata = {'items': [{'key': 'startup-script', 'value': startup_script}]}
+    lb_nodes = gce.ex_create_multiple_nodes(
+        base_name, size, image, number, ex_tags=[tag], ex_metadata=metadata,
+        ex_disk_auto_delete=True, ignore_errors=False)
     display('Created Nodes', lb_nodes)
 
     # == Create a Firewall for instances ==
     display('Creating a Firewall')
     name = '%s-firewall' % DEMO_BASE_NAME
-    allowed = [{'IPProtocol': 'tcp',
-                'ports': ['80']}]
+    allowed = [{'IPProtocol': 'tcp', 'ports': ['80']}]
     firewall = gce.ex_create_firewall(name, allowed, target_tags=[tag])
     display('    Firewall %s created' % firewall.name)
 
@@ -652,10 +708,9 @@ def main_load_balancer():
 
     # These are all the default values, but listed here as an example.  To
     # create a healthcheck with the defaults, only name is required.
-    hc = gcelb.ex_create_healthcheck(name, host=None, path='/', port='80',
-                                     interval=5, timeout=5,
-                                     unhealthy_threshold=2,
-                                     healthy_threshold=2)
+    hc = gcelb.ex_create_healthcheck(
+        name, host=None, path='/', port='80', interval=5, timeout=5,
+        unhealthy_threshold=2, healthy_threshold=2)
     display('Healthcheck %s created' % hc.name)
 
     # == Create Load Balancer ==
@@ -739,6 +794,114 @@ def main_load_balancer():
     display('Total runtime: %s' % str(end_time - start_time))
 
 
+# ==== BACKEND SERVICE LOAD BALANCER CODE STARTS HERE ====
+def main_backend_service():
+    start_time = datetime.datetime.now()
+    display('Backend Service w/Global Forwarding Rule demo/test start time: %s'
+            % str(start_time))
+    gce = get_gce_driver()
+    # Get project info and print name
+    project = gce.ex_get_project()
+    display('Project: %s' % project.name)
+
+    # Based on the instructions at:
+    # https://cloud.google.com/compute/docs/load-balancing/http/#overview
+
+    zone_central = DATACENTER
+    zone_east = BACKUP_DATACENTER
+    it_name = '%s-instancetemplate' % DEMO_BASE_NAME
+    mig_name = '%s-mig' % DEMO_BASE_NAME
+    hc_name = '%s-healthcheck' % DEMO_BASE_NAME
+    bes_name = '%s-bes' % DEMO_BASE_NAME
+    urlmap_name = '%s-urlmap' % DEMO_BASE_NAME
+    targethttpproxy_name = '%s-httptargetproxy' % DEMO_BASE_NAME
+    address_name = '%s-address' % DEMO_BASE_NAME
+    gfr_name = '%s-gfr' % DEMO_BASE_NAME
+    firewall_name = '%s-firewall' % DEMO_BASE_NAME
+
+    startup_script = ('apt-get -y update && '
+                      'apt-get -y install apache2 && '
+                      'echo "$(hostname)" > /var/www/html/index.html')
+    tag = '%s-mig-www' % DEMO_BASE_NAME
+    metadata = {'items': [{'key': 'startup-script', 'value': startup_script}]}
+
+    mig_central = None
+    mig_east = None
+    bes = None
+    urlmap = None
+    tp = None
+    address = None
+    gfr = None
+    firewall = None
+
+    display('Create a BackendService')
+    # == Create an Instance Template ==
+    it = gce.ex_create_instancetemplate(it_name, size='n1-standard-1',
+                                        image='debian-8', network='default',
+                                        metadata=metadata, tags=[tag])
+    display('    InstanceTemplate "%s" created' % it.name)
+
+    # == Create a MIG ==
+    mig_central = create_mig(gce, mig_name, zone_central, it, 'central')
+    mig_east = create_mig(gce, mig_name, zone_east, it, 'east')
+
+    # == Create a Health Check ==
+    hc = gce.ex_create_healthcheck(hc_name, host=None, path='/', port='80',
+                                   interval=30, timeout=10,
+                                   unhealthy_threshold=10, healthy_threshold=1)
+    display('    Healthcheck %s created' % hc.name)
+
+    # == Create a Backend Service ==
+    be_central = gce.ex_create_backend(
+        instance_group=mig_central.instance_group)
+    be_east = gce.ex_create_backend(instance_group=mig_east.instance_group)
+    bes = gce.ex_create_backendservice(
+        bes_name, [hc], backends=[be_central, be_east], port_name='%s-http' %
+        DEMO_BASE_NAME, protocol='HTTP', description='%s bes desc' %
+        DEMO_BASE_NAME, timeout_sec=60, enable_cdn=False)
+    display('    Backend Service "%s" created' % bes.name)
+
+    # == Create a URLMap ==
+    urlmap = gce.ex_create_urlmap(urlmap_name, default_service=bes)
+    display('    URLMap "%s" created' % urlmap.name)
... 23713 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/libcloud.git



More information about the Python-modules-commits mailing list