From 22dc770d2da4c0e69bed1e4f94da1ff9306955e2 Mon Sep 17 00:00:00 2001 From: Samuel Marks <807580+SamuelMarks@users.noreply.github.com> Date: Wed, 19 Mar 2025 12:03:34 -0600 Subject: [PATCH 1/2] Remove unavailable vendors --- .../compute/auroracompute/__init__.py | 0 .../compute/auroracompute/create_node.py | 22 ------- .../auroracompute/instantiate_driver.py | 8 --- .../instantiate_driver_region.py | 9 --- libcloud/compute/drivers/__init__.py | 1 - libcloud/compute/drivers/auroracompute.py | 53 --------------- libcloud/compute/drivers/internetsolutions.py | 64 ------------------- libcloud/test/compute/test_auroracompute.py | 48 -------------- .../test/compute/test_internetsolutions.py | 30 --------- 9 files changed, 235 deletions(-) delete mode 100644 docs/examples/compute/auroracompute/__init__.py delete mode 100644 docs/examples/compute/auroracompute/create_node.py delete mode 100644 docs/examples/compute/auroracompute/instantiate_driver.py delete mode 100644 docs/examples/compute/auroracompute/instantiate_driver_region.py delete mode 100644 libcloud/compute/drivers/auroracompute.py delete mode 100644 libcloud/compute/drivers/internetsolutions.py delete mode 100644 libcloud/test/compute/test_auroracompute.py delete mode 100644 libcloud/test/compute/test_internetsolutions.py diff --git a/docs/examples/compute/auroracompute/__init__.py b/docs/examples/compute/auroracompute/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/examples/compute/auroracompute/create_node.py b/docs/examples/compute/auroracompute/create_node.py deleted file mode 100644 index b49e2e56ff..0000000000 --- a/docs/examples/compute/auroracompute/create_node.py +++ /dev/null @@ -1,22 +0,0 @@ -from libcloud.compute.types import Provider -from libcloud.compute.providers import get_driver - -apikey = "mykey" -secretkey = "mysecret" - -Driver = get_driver(Provider.AURORACOMPUTE) -driver = Driver(key=apikey, secret=secretkey) - -images = driver.list_images() -sizes = driver.list_sizes() - -# Find a Agile Offering with 2GB of Memory -size = [s for s in sizes if s.ram == 2048 and s.name.startswith("Agile")][0] - -# Search for the Ubuntu 16.04 image -image = [i for i in images if i.name == "Ubuntu 16.04"][0] - -# Create the new Virtual Machine -node = driver.create_node(image=image, size=size) - -print(node) diff --git a/docs/examples/compute/auroracompute/instantiate_driver.py b/docs/examples/compute/auroracompute/instantiate_driver.py deleted file mode 100644 index 1918099a8d..0000000000 --- a/docs/examples/compute/auroracompute/instantiate_driver.py +++ /dev/null @@ -1,8 +0,0 @@ -from libcloud.compute.types import Provider -from libcloud.compute.providers import get_driver - -apikey = "mykey" -secretkey = "mysecret" - -Driver = get_driver(Provider.AURORACOMPUTE) -conn = Driver(key=apikey, secret=secretkey) diff --git a/docs/examples/compute/auroracompute/instantiate_driver_region.py b/docs/examples/compute/auroracompute/instantiate_driver_region.py deleted file mode 100644 index 2d2201e2f5..0000000000 --- a/docs/examples/compute/auroracompute/instantiate_driver_region.py +++ /dev/null @@ -1,9 +0,0 @@ -from libcloud.compute.types import Provider -from libcloud.compute.providers import get_driver -from libcloud.compute.drivers.auroracompute import AuroraComputeRegion - -apikey = "mykey" -secretkey = "mysecret" - -Driver = get_driver(Provider.AURORACOMPUTE) -conn = Driver(key=apikey, secret=secretkey, region=AuroraComputeRegion.MIA) diff --git a/libcloud/compute/drivers/__init__.py b/libcloud/compute/drivers/__init__.py index ba5af84270..23dfcb5464 100644 --- a/libcloud/compute/drivers/__init__.py +++ b/libcloud/compute/drivers/__init__.py @@ -20,7 +20,6 @@ __all__ = [ "abiquo", "brightbox", - "dimensiondata", "dummy", "ec2", "cloudsigma", diff --git a/libcloud/compute/drivers/auroracompute.py b/libcloud/compute/drivers/auroracompute.py deleted file mode 100644 index 58177976a9..0000000000 --- a/libcloud/compute/drivers/auroracompute.py +++ /dev/null @@ -1,53 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from libcloud.compute.providers import Provider -from libcloud.compute.drivers.cloudstack import CloudStackNodeDriver - -__all__ = ["AuroraComputeRegion", "AuroraComputeNodeDriver"] - - -class AuroraComputeRegion: - AMS = "Amsterdam" - RTD = "Rotterdam" - MIA = "Miami" - LAX = "Los Angeles" - TYO = "Tokyo" - BCN = "Barcelona" - - -REGION_ENDPOINT_MAP = { - AuroraComputeRegion.AMS: "/ams", - AuroraComputeRegion.RTD: "/rtd", - AuroraComputeRegion.MIA: "/mia", - AuroraComputeRegion.LAX: "/lax", - AuroraComputeRegion.TYO: "/tyo", - AuroraComputeRegion.BCN: "/bcn", -} - - -class AuroraComputeNodeDriver(CloudStackNodeDriver): - type = Provider.AURORACOMPUTE - name = "PCextreme AuroraCompute" - website = "https://www.pcextreme.com/aurora/compute" - - def __init__(self, key, secret, path=None, host=None, url=None, region=None): - if host is None: - host = "api.auroracompute.eu" - - if path is None: - path = REGION_ENDPOINT_MAP.get(region, "/ams") - - super().__init__(key=key, secret=secret, host=host, path=path, secure=True) diff --git a/libcloud/compute/drivers/internetsolutions.py b/libcloud/compute/drivers/internetsolutions.py deleted file mode 100644 index 32cc424394..0000000000 --- a/libcloud/compute/drivers/internetsolutions.py +++ /dev/null @@ -1,64 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Internet Solutions Driver -""" - -from libcloud.compute.providers import Provider -from libcloud.common.dimensiondata import API_ENDPOINTS, DimensionDataConnection -from libcloud.compute.drivers.dimensiondata import DimensionDataNodeDriver - -DEFAULT_REGION = "is-af" - - -class InternetSolutionsNodeDriver(DimensionDataNodeDriver): - """ - InternetSolutions node driver, based on Dimension Data driver - """ - - selected_region = None - connectionCls = DimensionDataConnection - name = "InternetSolutions" - website = "http://www.is.co.za/" - type = Provider.INTERNETSOLUTIONS - features = {"create_node": ["password"]} - api_version = 1.0 - - def __init__( - self, - key, - secret=None, - secure=True, - host=None, - port=None, - api_version=None, - region=DEFAULT_REGION, - **kwargs, - ): - if region not in API_ENDPOINTS: - raise ValueError("Invalid region: %s" % (region)) - - self.selected_region = API_ENDPOINTS[region] - - super().__init__( - key=key, - secret=secret, - secure=secure, - host=host, - port=port, - api_version=api_version, - region=region, - **kwargs, - ) diff --git a/libcloud/test/compute/test_auroracompute.py b/libcloud/test/compute/test_auroracompute.py deleted file mode 100644 index 453b9fbb58..0000000000 --- a/libcloud/test/compute/test_auroracompute.py +++ /dev/null @@ -1,48 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import sys - -from libcloud.test import unittest -from libcloud.test.compute.test_cloudstack import CloudStackCommonTestCase -from libcloud.compute.drivers.auroracompute import AuroraComputeRegion, AuroraComputeNodeDriver - - -class AuroraComputeNodeDriverTestCase(CloudStackCommonTestCase, unittest.TestCase): - driver_klass = AuroraComputeNodeDriver - - def test_api_host(self): - driver = self.driver_klass("invalid", "invalid") - self.assertEqual(driver.host, "api.auroracompute.eu") - - def test_without_region(self): - driver = self.driver_klass("invalid", "invalid") - self.assertEqual(driver.path, "/ams") - - def test_with_ams_region(self): - driver = self.driver_klass("invalid", "invalid", region=AuroraComputeRegion.AMS) - self.assertEqual(driver.path, "/ams") - - def test_with_miami_region(self): - driver = self.driver_klass("invalid", "invalid", region=AuroraComputeRegion.MIA) - self.assertEqual(driver.path, "/mia") - - def test_with_tokyo_region(self): - driver = self.driver_klass("invalid", "invalid", region=AuroraComputeRegion.TYO) - self.assertEqual(driver.path, "/tyo") - - -if __name__ == "__main__": - sys.exit(unittest.main()) diff --git a/libcloud/test/compute/test_internetsolutions.py b/libcloud/test/compute/test_internetsolutions.py deleted file mode 100644 index e86a6293c8..0000000000 --- a/libcloud/test/compute/test_internetsolutions.py +++ /dev/null @@ -1,30 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import unittest - -from libcloud.compute.drivers.internetsolutions import InternetSolutionsNodeDriver -from libcloud.test.compute.test_dimensiondata_v2_3 import ( - DimensionDataMockHttp, - DimensionData_v2_3_Tests, -) - - -class InternetSolutionsNodeDriverTests(DimensionData_v2_3_Tests, unittest.TestCase): - def setUp(self): - InternetSolutionsNodeDriver.connectionCls.conn_class = DimensionDataMockHttp - InternetSolutionsNodeDriver.connectionCls.active_api_version = "2.3" - DimensionDataMockHttp.type = None - self.driver = InternetSolutionsNodeDriver("user", "password") From 450924537c57c3471fc49f9918479781a84aa379 Mon Sep 17 00:00:00 2001 From: Samuel Marks <807580+SamuelMarks@users.noreply.github.com> Date: Wed, 26 Mar 2025 13:47:50 -0600 Subject: [PATCH 2/2] Remove unavailable vendors and their associated documentation ; sort vendors --- docs/backup/_supported_methods.rst | 4 +- docs/backup/_supported_providers.rst | 4 +- docs/backup/drivers/dimensiondata.rst | 66 -- .../_supported_methods_block_storage.rst | 113 ++- .../_supported_methods_image_management.rst | 12 +- ..._supported_methods_key_pair_management.rst | 113 ++- docs/compute/_supported_methods_main.rst | 113 ++- docs/compute/_supported_providers.rst | 112 ++- docs/compute/drivers/auroracompute.rst | 84 --- docs/compute/drivers/dimensiondata.rst | 90 --- docs/compute/drivers/internetsolutions.rst | 69 -- docs/dns/_supported_methods.rst | 10 +- docs/dns/_supported_providers.rst | 8 +- docs/dns/drivers/auroradns.rst | 82 --- .../compute/internetsolutions/__init__.py | 0 .../internetsolutions/instantiate_driver.py | 9 - docs/examples/dns/auroradns/__init__.py | 0 .../dns/auroradns/enable_disable_record.py | 13 - docs/examples/dns/auroradns/health_checks.py | 26 - .../dns/auroradns/instantiate_driver.py | 6 - .../storage/auroraobjects/__init__.py | 0 .../storage/auroraobjects/instantiate.py | 8 - docs/storage/drivers/auroraobjects.rst | 68 -- libcloud/compute/providers.py | 105 +-- libcloud/compute/types.py | 53 +- libcloud/dns/drivers/auroradns.py | 667 ------------------ libcloud/dns/providers.py | 36 +- libcloud/dns/types.py | 1 - libcloud/storage/drivers/auroraobjects.py | 50 -- libcloud/storage/providers.py | 4 - libcloud/storage/types.py | 32 +- .../dns/fixtures/auroradns/zone_create.json | 11 - .../fixtures/auroradns/zone_example_com.json | 11 - .../zone_example_com_health_check.json | 14 - .../zone_example_com_health_checks.json | 44 -- .../zone_example_com_record_localhost.json | 12 - .../auroradns/zone_example_com_records.json | 38 - .../dns/fixtures/auroradns/zone_list.json | 24 - libcloud/test/dns/test_auroradns.py | 326 --------- libcloud/test/secrets.py-dist | 1 - libcloud/test/storage/test_aurora.py | 43 -- 41 files changed, 318 insertions(+), 2164 deletions(-) delete mode 100644 docs/backup/drivers/dimensiondata.rst delete mode 100644 docs/compute/drivers/auroracompute.rst delete mode 100644 docs/compute/drivers/dimensiondata.rst delete mode 100644 docs/compute/drivers/internetsolutions.rst delete mode 100644 docs/dns/drivers/auroradns.rst delete mode 100644 docs/examples/compute/internetsolutions/__init__.py delete mode 100644 docs/examples/compute/internetsolutions/instantiate_driver.py delete mode 100644 docs/examples/dns/auroradns/__init__.py delete mode 100644 docs/examples/dns/auroradns/enable_disable_record.py delete mode 100644 docs/examples/dns/auroradns/health_checks.py delete mode 100644 docs/examples/dns/auroradns/instantiate_driver.py delete mode 100644 docs/examples/storage/auroraobjects/__init__.py delete mode 100644 docs/examples/storage/auroraobjects/instantiate.py delete mode 100644 docs/storage/drivers/auroraobjects.rst delete mode 100644 libcloud/dns/drivers/auroradns.py delete mode 100644 libcloud/storage/drivers/auroraobjects.py delete mode 100644 libcloud/test/dns/fixtures/auroradns/zone_create.json delete mode 100644 libcloud/test/dns/fixtures/auroradns/zone_example_com.json delete mode 100644 libcloud/test/dns/fixtures/auroradns/zone_example_com_health_check.json delete mode 100644 libcloud/test/dns/fixtures/auroradns/zone_example_com_health_checks.json delete mode 100644 libcloud/test/dns/fixtures/auroradns/zone_example_com_record_localhost.json delete mode 100644 libcloud/test/dns/fixtures/auroradns/zone_example_com_records.json delete mode 100644 libcloud/test/dns/fixtures/auroradns/zone_list.json delete mode 100644 libcloud/test/dns/test_auroradns.py delete mode 100644 libcloud/test/storage/test_aurora.py diff --git a/docs/backup/_supported_methods.rst b/docs/backup/_supported_methods.rst index a4c7f64aec..42e6f0bc92 100644 --- a/docs/backup/_supported_methods.rst +++ b/docs/backup/_supported_methods.rst @@ -3,11 +3,9 @@ ====================================== ========================== ============ ============= ======================= ==================================== ============= ============= ==================== ============== =========================== ================ ================= ================= ================== ================= Provider get supported target types list targets create target create target from node create target from storage container update target delete target list recovery points recover target recover target out of place list target jobs create target job resume target job suspend target job cancel target job ====================================== ========================== ============ ============= ======================= ==================================== ============= ============= ==================== ============== =========================== ================ ================= ================= ================== ================= -`Dimension Data Backup`_ yes yes yes yes no yes yes yes yes yes yes yes yes yes yes -`Amazon EBS Backup Driver`_ yes yes yes yes no yes yes yes yes yes yes yes yes yes yes +`Amazon EBS Backup Driver`_ yes yes yes yes no yes yes yes yes yes yes yes yes yes yes `Google Compute Engine Backup Driver`_ yes yes yes yes no yes yes yes yes yes yes yes yes yes yes ====================================== ========================== ============ ============= ======================= ==================================== ============= ============= ==================== ============== =========================== ================ ================= ================= ================== ================= -.. _`Dimension Data Backup`: https://cloud.dimensiondata.com/ .. _`Amazon EBS Backup Driver`: http://aws.amazon.com/ebs/ .. _`Google Compute Engine Backup Driver`: http://cloud.google.com/ diff --git a/docs/backup/_supported_providers.rst b/docs/backup/_supported_providers.rst index c7ee635180..0d23103be6 100644 --- a/docs/backup/_supported_providers.rst +++ b/docs/backup/_supported_providers.rst @@ -3,11 +3,9 @@ ====================================== ============================================ ================= ==================== ============================================ ================================== Provider Documentation Provider Constant Supported Regions Module Class Name ====================================== ============================================ ================= ==================== ============================================ ================================== -`Dimension Data Backup`_ :doc:`Click ` DIMENSIONDATA single region driver :mod:`libcloud.backup.drivers.dimensiondata` :class:`DimensionDataBackupDriver` -`Amazon EBS Backup Driver`_ EBS single region driver :mod:`libcloud.backup.drivers.ebs` :class:`EBSBackupDriver` +`Amazon EBS Backup Driver`_ EBS single region driver :mod:`libcloud.backup.drivers.ebs` :class:`EBSBackupDriver` `Google Compute Engine Backup Driver`_ GCE single region driver :mod:`libcloud.backup.drivers.gce` :class:`GCEBackupDriver` ====================================== ============================================ ================= ==================== ============================================ ================================== -.. _`Dimension Data Backup`: https://cloud.dimensiondata.com/ .. _`Amazon EBS Backup Driver`: http://aws.amazon.com/ebs/ .. _`Google Compute Engine Backup Driver`: http://cloud.google.com/ diff --git a/docs/backup/drivers/dimensiondata.rst b/docs/backup/drivers/dimensiondata.rst deleted file mode 100644 index a13231e4ee..0000000000 --- a/docs/backup/drivers/dimensiondata.rst +++ /dev/null @@ -1,66 +0,0 @@ -Dimension Data Cloud Backup Driver Documentation -================================================ - -Dimension Data are a global IT Services company and form part of the NTT Group. -Dimension Data provide IT-as-a-Service to customers around the globe on their -cloud platform (Compute as a Service). The CaaS service is available either on -one of the public cloud instances or as a private instance on premises. - -.. figure:: /_static/images/provider_logos/dimensiondata.png - :align: center - :width: 300 - :target: http://cloud.dimensiondata.com/ - -Backup-as-a-Service includes Cloud Backup, Cloud Backup -has its own non-standard `API`_ , `libcloud` provides a Python -wrapper on top of this `API`_ with common methods with other IaaS solutions and -Public cloud providers. Therefore, you can use use the Dimension Data libcloud -driver to communicate with both the public and private clouds. - -Instantiating a driver ----------------------- - -When you instantiate a driver you need to pass the following arguments to the -driver constructor: - -* ``user_id`` - Your Dimension Data Cloud username -* ``key`` - Your Dimension Data Cloud password -* ``region`` - The region key, one of the possible region keys - -Possible regions: - -* ``dd-na`` : Dimension Data North America (USA) -* ``dd-eu`` : Dimension Data Europe -* ``dd-af`` : Dimension Data Africa -* ``dd-au`` : Dimension Data Australia -* ``dd-latam`` : Dimension Data Latin America -* ``dd-ap`` : Dimension Data Asia Pacific -* ``dd-canada`` : Dimension Data Canada region - -The base `libcloud` API allows you to: - -* enable backups, add backup clients and configure backup clients - -Non-standard functionality and extension methods ------------------------------------------------- - -The Dimension Data driver exposes some `libcloud` non-standard -functionalities through extension methods and arguments. - -These functionalities include: - -* set retention periods -* configure secondary copes - -For information on how to use these functionalities please see the method -docstrings below. You can also use an interactive shell for exploration as -shown in the examples. - -API Docs --------- - -.. autoclass:: libcloud.backup.drivers.dimensiondata.DimensionDataBackupDriver - :members: - :inherited-members: - -.. _`API`: http://cloud.dimensiondata.com/au/en/services/public-cloud/api diff --git a/docs/compute/_supported_methods_block_storage.rst b/docs/compute/_supported_methods_block_storage.rst index ff2763f1ff..e87e3c51bd 100644 --- a/docs/compute/_supported_methods_block_storage.rst +++ b/docs/compute/_supported_methods_block_storage.rst @@ -5,84 +5,78 @@ Provider list volumes create volume destroy volume attach ============================== ============ ============= ============== ============= ============= ============== =============== `Abiquo`_ no no no no no no no `Aliyun ECS`_ yes yes yes yes yes yes yes -`PCextreme AuroraCompute`_ yes yes yes yes yes no yes -`Azure Virtual machines`_ yes yes yes yes yes no yes -`Azure Virtual machines`_ yes yes yes yes yes yes yes -`Brightbox`_ no no no no no no no -`Cloudscale`_ no no no no no no no -`CloudSigma (API v2.0)`_ yes yes yes yes yes no no -`CloudStack`_ yes yes yes yes yes no yes -`DigitalOcean`_ yes yes yes yes yes yes yes -`DimensionData`_ no no no no no no no -`Amazon EC2`_ yes yes yes yes yes yes yes -`EquinixMetal`_ no no no no no no no -`Eucalyptus`_ yes yes yes yes yes yes yes -`Exoscale`_ yes yes yes yes yes no yes -`Gandi`_ yes yes yes yes yes no no -`Google Compute Engine`_ yes yes yes yes yes yes yes -`GiG G8 Node Provider`_ yes yes yes yes yes no no -`Gridscale`_ yes yes yes yes yes yes yes -`Ikoula`_ yes yes yes yes yes no yes -`InternetSolutions`_ no no no no no no no -`Kamatera`_ no no no no no no no -`KTUCloud`_ yes yes yes yes yes no yes -`kubevirt`_ yes yes yes yes yes no no -`Libvirt`_ no no no no no no no -`Linode`_ yes yes yes yes yes no no -`Maxihost`_ no no no no no no no -`Nimbus`_ yes yes yes yes yes yes yes -`NTTAmerica`_ no no no no no no no -`NTTC-CIS`_ no no no no no no no -`OnApp`_ no no no no no no no -`OpenNebula (v3.8)`_ yes yes yes yes yes no no -`OpenStack`_ yes yes yes yes yes no no -`Outscale API`_ yes yes yes yes yes yes yes -`Outscale INC`_ yes yes yes yes yes yes yes -`Outscale SAS`_ yes yes yes yes yes yes yes -`Ovh`_ yes yes yes yes yes yes yes -`Rackspace Cloud (Next Gen)`_ yes yes yes yes yes yes yes -`Rackspace Cloud (First Gen)`_ yes yes yes yes yes no no -`RimuHosting`_ no no no no no no no -`Scaleway`_ yes yes yes no no yes yes -`vCloud`_ no no no no no no no -`Upcloud`_ no no no no no no no -`VCL`_ no no no no no no no -`vCloud`_ no no no no no no no -`vps.net`_ no no no no no no no -`VMware vSphere`_ no no no no no no no -`Vultr`_ yes yes yes yes yes no no +`Amazon EC2`_ yes yes yes yes yes yes yes +`Azure Virtual machines`_ yes yes yes yes yes yes yes +`Brightbox`_ no no no no no no no +`CloudSigma (API v2.0)`_ yes yes yes yes yes no no +`CloudStack`_ yes yes yes yes yes no yes +`Cloudscale`_ no no no no no no no +`DigitalOcean`_ yes yes yes yes yes yes yes +`DimensionData`_ no no no no no no no +`EquinixMetal`_ no no no no no no no +`Eucalyptus`_ yes yes yes yes yes yes yes +`Exoscale`_ yes yes yes yes yes no yes +`Gandi`_ yes yes yes yes yes no no +`GiG G8 Node Provider`_ yes yes yes yes yes no no +`Google Compute Engine`_ yes yes yes yes yes yes yes +`Gridscale`_ yes yes yes yes yes yes yes +`Ikoula`_ yes yes yes yes yes no yes +`KTUCloud`_ yes yes yes yes yes no yes +`Kamatera`_ no no no no no no no +`Libvirt`_ no no no no no no no +`Linode`_ yes yes yes yes yes no no +`Maxihost`_ no no no no no no no +`NTTAmerica`_ no no no no no no no +`NTTC-CIS`_ no no no no no no no +`Nimbus`_ yes yes yes yes yes yes yes +`OnApp`_ no no no no no no no +`OpenNebula (v3.8)`_ yes yes yes yes yes no no +`OpenStack`_ yes yes yes yes yes no no +`Outscale API`_ yes yes yes yes yes yes yes +`Outscale INC`_ yes yes yes yes yes yes yes +`Outscale SAS`_ yes yes yes yes yes yes yes +`Ovh`_ yes yes yes yes yes yes yes +`PCextreme AuroraCompute`_ yes yes yes yes yes no yes +`Rackspace Cloud (First Gen)`_ yes yes yes yes yes no no +`Rackspace Cloud (Next Gen)`_ yes yes yes yes yes yes yes +`RimuHosting`_ no no no no no no no +`Scaleway`_ yes yes yes no no yes yes +`Upcloud`_ no no no no no no no +`VCL`_ no no no no no no no +`VMware vSphere`_ no no no no no no no +`Vultr`_ yes yes yes yes yes no no +`kubevirt`_ yes yes yes yes yes no no +`vCloud`_ no no no no no no no +`vCloud`_ no no no no no no no +`vps.net`_ no no no no no no no ============================== ============ ============= ============== ============= ============= ============== =============== .. _`Abiquo`: http://www.abiquo.com/ .. _`Aliyun ECS`: https://www.aliyun.com/product/ecs -.. _`PCextreme AuroraCompute`: https://www.pcextreme.com/aurora/compute -.. _`Azure Virtual machines`: http://azure.microsoft.com/en-us/services/virtual-machines/ +.. _`Amazon EC2`: http://aws.amazon.com/ec2/ .. _`Azure Virtual machines`: http://azure.microsoft.com/en-us/services/virtual-machines/ .. _`Brightbox`: http://www.brightbox.co.uk/ -.. _`Cloudscale`: https://www.cloudscale.ch .. _`CloudSigma (API v2.0)`: http://www.cloudsigma.com/ .. _`CloudStack`: http://cloudstack.org/ +.. _`Cloudscale`: https://www.cloudscale.ch .. _`DigitalOcean`: https://www.digitalocean.com .. _`DimensionData`: http://www.dimensiondata.com/ -.. _`Amazon EC2`: http://aws.amazon.com/ec2/ .. _`EquinixMetal`: https://metal.equinix.com/ .. _`Eucalyptus`: http://www.eucalyptus.com/ .. _`Exoscale`: https://www.exoscale.com/ .. _`Gandi`: http://www.gandi.net/ -.. _`Google Compute Engine`: https://cloud.google.com/ .. _`GiG G8 Node Provider`: https://gig.tech +.. _`Google Compute Engine`: https://cloud.google.com/ .. _`Gridscale`: https://gridscale.io .. _`Ikoula`: http://express.ikoula.co.uk/cloudstack -.. _`InternetSolutions`: http://www.is.co.za/ -.. _`Kamatera`: https://www.kamatera.com/ .. _`KTUCloud`: https://ucloudbiz.olleh.com/ -.. _`kubevirt`: https://www.kubevirt.io +.. _`Kamatera`: https://www.kamatera.com/ .. _`Libvirt`: http://libvirt.org/ .. _`Linode`: http://www.linode.com/ .. _`Maxihost`: https://www.maxihost.com/ -.. _`Nimbus`: http://www.nimbusproject.org/ .. _`NTTAmerica`: http://www.nttamerica.com/ .. _`NTTC-CIS`: https://www.us.ntt.com/en/services/cloud/enterprise-cloud.html +.. _`Nimbus`: http://www.nimbusproject.org/ .. _`OnApp`: http://onapp.com/ .. _`OpenNebula (v3.8)`: http://opennebula.org/ .. _`OpenStack`: http://openstack.org/ @@ -90,14 +84,15 @@ Provider list volumes create volume destroy volume attach .. _`Outscale INC`: http://www.outscale.com .. _`Outscale SAS`: http://www.outscale.com .. _`Ovh`: https://www.ovh.com/ -.. _`Rackspace Cloud (Next Gen)`: http://www.rackspace.com +.. _`PCextreme AuroraCompute`: https://www.pcextreme.com/aurora/compute .. _`Rackspace Cloud (First Gen)`: http://www.rackspace.com +.. _`Rackspace Cloud (Next Gen)`: http://www.rackspace.com .. _`RimuHosting`: http://rimuhosting.com/ .. _`Scaleway`: https://www.scaleway.com/ -.. _`vCloud`: http://www.vmware.com/products/vcloud/ .. _`Upcloud`: https://www.upcloud.com .. _`VCL`: http://incubator.apache.org/vcl/ -.. _`vCloud`: http://www.vmware.com/products/vcloud/ -.. _`vps.net`: http://vps.net/ .. _`VMware vSphere`: http://www.vmware.com/products/vsphere/ .. _`Vultr`: https://www.vultr.com +.. _`kubevirt`: https://www.kubevirt.io +.. _`vCloud`: http://www.vmware.com/products/vcloud/ +.. _`vps.net`: http://vps.net/ diff --git a/docs/compute/_supported_methods_image_management.rst b/docs/compute/_supported_methods_image_management.rst index 7c0bdf9eda..8d8e32cb05 100644 --- a/docs/compute/_supported_methods_image_management.rst +++ b/docs/compute/_supported_methods_image_management.rst @@ -6,15 +6,13 @@ Provider list images get image create image delete image c `Abiquo`_ yes no no no no `Aliyun ECS`_ yes yes yes yes yes `PCextreme AuroraCompute`_ yes no no no no -`Azure Virtual machines`_ yes no no no no -`Azure Virtual machines`_ yes yes no no no +`Azure Virtual machines`_ yes yes no no no `Brightbox`_ yes no no no no `Cloudscale`_ yes no no no no `CloudSigma (API v2.0)`_ yes no no no no `CloudStack`_ yes no no no no `DigitalOcean`_ yes yes yes yes no -`DimensionData`_ yes no no no no -`Amazon EC2`_ yes yes yes yes yes +`Amazon EC2`_ yes yes yes yes yes `EquinixMetal`_ yes no no no no `Eucalyptus`_ yes yes yes yes yes `Exoscale`_ yes no no no no @@ -23,8 +21,7 @@ Provider list images get image create image delete image c `GiG G8 Node Provider`_ yes no no no no `Gridscale`_ yes yes yes yes no `Ikoula`_ yes no no no no -`InternetSolutions`_ yes no no no no -`Kamatera`_ yes no no no no +`Kamatera`_ yes no no no no `KTUCloud`_ yes no no no no `kubevirt`_ yes no no no no `Libvirt`_ no no no no no @@ -57,7 +54,6 @@ Provider list images get image create image delete image c .. _`Aliyun ECS`: https://www.aliyun.com/product/ecs .. _`PCextreme AuroraCompute`: https://www.pcextreme.com/aurora/compute .. _`Azure Virtual machines`: http://azure.microsoft.com/en-us/services/virtual-machines/ -.. _`Azure Virtual machines`: http://azure.microsoft.com/en-us/services/virtual-machines/ .. _`Brightbox`: http://www.brightbox.co.uk/ .. _`Cloudscale`: https://www.cloudscale.ch .. _`CloudSigma (API v2.0)`: http://www.cloudsigma.com/ @@ -73,7 +69,6 @@ Provider list images get image create image delete image c .. _`GiG G8 Node Provider`: https://gig.tech .. _`Gridscale`: https://gridscale.io .. _`Ikoula`: http://express.ikoula.co.uk/cloudstack -.. _`InternetSolutions`: http://www.is.co.za/ .. _`Kamatera`: https://www.kamatera.com/ .. _`KTUCloud`: https://ucloudbiz.olleh.com/ .. _`kubevirt`: https://www.kubevirt.io @@ -94,7 +89,6 @@ Provider list images get image create image delete image c .. _`Rackspace Cloud (First Gen)`: http://www.rackspace.com .. _`RimuHosting`: http://rimuhosting.com/ .. _`Scaleway`: https://www.scaleway.com/ -.. _`vCloud`: http://www.vmware.com/products/vcloud/ .. _`Upcloud`: https://www.upcloud.com .. _`VCL`: http://incubator.apache.org/vcl/ .. _`vCloud`: http://www.vmware.com/products/vcloud/ diff --git a/docs/compute/_supported_methods_key_pair_management.rst b/docs/compute/_supported_methods_key_pair_management.rst index ddfed43900..ddb689a1f0 100644 --- a/docs/compute/_supported_methods_key_pair_management.rst +++ b/docs/compute/_supported_methods_key_pair_management.rst @@ -5,84 +5,78 @@ Provider list key pairs get key pair create key pair impor ============================== ============== ============ =============== ============================= =========================== =============== `Abiquo`_ no no no no no no `Aliyun ECS`_ no no no no no no -`PCextreme AuroraCompute`_ yes yes yes yes no yes -`Azure Virtual machines`_ no no no no no no -`Azure Virtual machines`_ no no no no no no -`Brightbox`_ no no no no no no -`Cloudscale`_ no no no no no no -`CloudSigma (API v2.0)`_ yes yes yes yes no yes -`CloudStack`_ yes yes yes yes no yes -`DigitalOcean`_ yes yes yes no no yes -`DimensionData`_ no no no no no no -`Amazon EC2`_ yes yes yes yes no yes -`EquinixMetal`_ yes no yes no no yes -`Eucalyptus`_ yes yes yes yes no yes -`Exoscale`_ yes yes yes yes no yes -`Gandi`_ yes yes no yes no yes -`Google Compute Engine`_ no no no no no no -`GiG G8 Node Provider`_ no no no no no no -`Gridscale`_ yes no no yes no no -`Ikoula`_ yes yes yes yes no yes -`InternetSolutions`_ no no no no no no -`Kamatera`_ no no no no no no -`KTUCloud`_ yes yes yes yes no yes -`kubevirt`_ no no no no no no -`Libvirt`_ no no no no no no -`Linode`_ yes no yes no no no -`Maxihost`_ yes no yes no no no -`Nimbus`_ yes yes yes yes no yes -`NTTAmerica`_ no no no no no no -`NTTC-CIS`_ no no no no no no -`OnApp`_ yes yes no yes no yes -`OpenNebula (v3.8)`_ no no no no no no -`OpenStack`_ no no no no no no -`Outscale API`_ yes yes yes no no yes -`Outscale INC`_ yes yes yes yes no yes -`Outscale SAS`_ yes yes yes yes no yes -`Ovh`_ yes yes no yes no yes -`Rackspace Cloud (Next Gen)`_ yes yes yes yes no yes -`Rackspace Cloud (First Gen)`_ no no no no no no -`RimuHosting`_ no no no no no no -`Scaleway`_ yes no no yes no yes -`vCloud`_ no no no no no no -`Upcloud`_ no no no no no no -`VCL`_ no no no no no no -`vCloud`_ no no no no no no -`vps.net`_ no no no no no no -`VMware vSphere`_ no no no no no no -`Vultr`_ yes yes no yes no yes +`Amazon EC2`_ yes yes yes yes no yes +`Azure Virtual machines`_ no no no no no no +`Brightbox`_ no no no no no no +`CloudSigma (API v2.0)`_ yes yes yes yes no yes +`CloudStack`_ yes yes yes yes no yes +`Cloudscale`_ no no no no no no +`DigitalOcean`_ yes yes yes no no yes +`DimensionData`_ no no no no no no +`EquinixMetal`_ yes no yes no no yes +`Eucalyptus`_ yes yes yes yes no yes +`Exoscale`_ yes yes yes yes no yes +`Gandi`_ yes yes no yes no yes +`GiG G8 Node Provider`_ no no no no no no +`Google Compute Engine`_ no no no no no no +`Gridscale`_ yes no no yes no no +`Ikoula`_ yes yes yes yes no yes +`KTUCloud`_ yes yes yes yes no yes +`Kamatera`_ no no no no no no +`Libvirt`_ no no no no no no +`Linode`_ yes no yes no no no +`Maxihost`_ yes no yes no no no +`NTTAmerica`_ no no no no no no +`NTTC-CIS`_ no no no no no no +`Nimbus`_ yes yes yes yes no yes +`OnApp`_ yes yes no yes no yes +`OpenNebula (v3.8)`_ no no no no no no +`OpenStack`_ no no no no no no +`Outscale API`_ yes yes yes no no yes +`Outscale INC`_ yes yes yes yes no yes +`Outscale SAS`_ yes yes yes yes no yes +`Ovh`_ yes yes no yes no yes +`PCextreme AuroraCompute`_ yes yes yes yes no yes +`Rackspace Cloud (First Gen)`_ no no no no no no +`Rackspace Cloud (Next Gen)`_ yes yes yes yes no yes +`RimuHosting`_ no no no no no no +`Scaleway`_ yes no no yes no yes +`Upcloud`_ no no no no no no +`VCL`_ no no no no no no +`VMware vSphere`_ no no no no no no +`Vultr`_ yes yes no yes no yes +`kubevirt`_ no no no no no no +`vCloud`_ no no no no no no +`vCloud`_ no no no no no no +`vps.net`_ no no no no no no ============================== ============== ============ =============== ============================= =========================== =============== .. _`Abiquo`: http://www.abiquo.com/ .. _`Aliyun ECS`: https://www.aliyun.com/product/ecs -.. _`PCextreme AuroraCompute`: https://www.pcextreme.com/aurora/compute -.. _`Azure Virtual machines`: http://azure.microsoft.com/en-us/services/virtual-machines/ +.. _`Amazon EC2`: http://aws.amazon.com/ec2/ .. _`Azure Virtual machines`: http://azure.microsoft.com/en-us/services/virtual-machines/ .. _`Brightbox`: http://www.brightbox.co.uk/ -.. _`Cloudscale`: https://www.cloudscale.ch .. _`CloudSigma (API v2.0)`: http://www.cloudsigma.com/ .. _`CloudStack`: http://cloudstack.org/ +.. _`Cloudscale`: https://www.cloudscale.ch .. _`DigitalOcean`: https://www.digitalocean.com .. _`DimensionData`: http://www.dimensiondata.com/ -.. _`Amazon EC2`: http://aws.amazon.com/ec2/ .. _`EquinixMetal`: https://metal.equinix.com/ .. _`Eucalyptus`: http://www.eucalyptus.com/ .. _`Exoscale`: https://www.exoscale.com/ .. _`Gandi`: http://www.gandi.net/ -.. _`Google Compute Engine`: https://cloud.google.com/ .. _`GiG G8 Node Provider`: https://gig.tech +.. _`Google Compute Engine`: https://cloud.google.com/ .. _`Gridscale`: https://gridscale.io .. _`Ikoula`: http://express.ikoula.co.uk/cloudstack -.. _`InternetSolutions`: http://www.is.co.za/ -.. _`Kamatera`: https://www.kamatera.com/ .. _`KTUCloud`: https://ucloudbiz.olleh.com/ -.. _`kubevirt`: https://www.kubevirt.io +.. _`Kamatera`: https://www.kamatera.com/ .. _`Libvirt`: http://libvirt.org/ .. _`Linode`: http://www.linode.com/ .. _`Maxihost`: https://www.maxihost.com/ -.. _`Nimbus`: http://www.nimbusproject.org/ .. _`NTTAmerica`: http://www.nttamerica.com/ .. _`NTTC-CIS`: https://www.us.ntt.com/en/services/cloud/enterprise-cloud.html +.. _`Nimbus`: http://www.nimbusproject.org/ .. _`OnApp`: http://onapp.com/ .. _`OpenNebula (v3.8)`: http://opennebula.org/ .. _`OpenStack`: http://openstack.org/ @@ -90,14 +84,15 @@ Provider list key pairs get key pair create key pair impor .. _`Outscale INC`: http://www.outscale.com .. _`Outscale SAS`: http://www.outscale.com .. _`Ovh`: https://www.ovh.com/ -.. _`Rackspace Cloud (Next Gen)`: http://www.rackspace.com +.. _`PCextreme AuroraCompute`: https://www.pcextreme.com/aurora/compute .. _`Rackspace Cloud (First Gen)`: http://www.rackspace.com +.. _`Rackspace Cloud (Next Gen)`: http://www.rackspace.com .. _`RimuHosting`: http://rimuhosting.com/ .. _`Scaleway`: https://www.scaleway.com/ -.. _`vCloud`: http://www.vmware.com/products/vcloud/ .. _`Upcloud`: https://www.upcloud.com .. _`VCL`: http://incubator.apache.org/vcl/ -.. _`vCloud`: http://www.vmware.com/products/vcloud/ -.. _`vps.net`: http://vps.net/ .. _`VMware vSphere`: http://www.vmware.com/products/vsphere/ .. _`Vultr`: https://www.vultr.com +.. _`kubevirt`: https://www.kubevirt.io +.. _`vCloud`: http://www.vmware.com/products/vcloud/ +.. _`vps.net`: http://vps.net/ diff --git a/docs/compute/_supported_methods_main.rst b/docs/compute/_supported_methods_main.rst index 0fffc48a1b..b77cb2960e 100644 --- a/docs/compute/_supported_methods_main.rst +++ b/docs/compute/_supported_methods_main.rst @@ -5,84 +5,76 @@ Provider list nodes create node reboot node destroy node s ============================== ========== =========== =========== ============ ========== ========= =========== ========== =========== `Abiquo`_ yes yes yes yes no no yes yes no `Aliyun ECS`_ yes yes yes yes yes yes yes yes yes -`PCextreme AuroraCompute`_ yes yes yes yes no no yes yes yes -`Azure Virtual machines`_ yes yes yes yes no no yes yes yes -`Azure Virtual machines`_ yes yes yes yes yes yes yes yes yes -`Brightbox`_ yes yes no yes no no yes yes no -`Cloudscale`_ yes yes yes yes yes yes yes yes no -`CloudSigma (API v2.0)`_ yes yes yes yes yes yes yes yes no -`CloudStack`_ yes yes yes yes no no yes yes yes -`DigitalOcean`_ yes yes yes yes no no yes yes no -`DimensionData`_ yes yes yes yes yes yes yes yes yes -`Amazon EC2`_ yes yes yes yes yes yes yes yes yes -`EquinixMetal`_ yes yes yes yes yes yes yes yes no -`Eucalyptus`_ yes yes yes yes yes yes yes yes yes -`Exoscale`_ yes yes yes yes no no yes yes yes -`Gandi`_ yes yes yes yes no no yes yes no -`Google Compute Engine`_ yes yes yes yes yes yes yes yes yes -`GiG G8 Node Provider`_ yes yes yes yes yes yes yes yes no -`Gridscale`_ yes yes yes yes yes no yes no yes -`Ikoula`_ yes yes yes yes no no yes yes yes -`InternetSolutions`_ yes yes yes yes yes yes yes yes yes -`Kamatera`_ yes yes yes yes yes yes yes yes yes -`KTUCloud`_ yes yes yes yes no no yes yes yes -`kubevirt`_ yes yes yes yes yes yes yes yes yes -`Libvirt`_ yes no yes yes yes yes no no no -`Linode`_ yes yes yes yes yes yes yes yes no -`Maxihost`_ yes yes yes yes yes yes yes yes no -`Nimbus`_ yes yes yes yes yes yes yes yes yes -`NTTAmerica`_ yes yes yes yes yes yes yes yes yes -`NTTC-CIS`_ yes yes yes yes yes yes yes yes yes -`OnApp`_ yes yes no yes no no yes no no -`OpenNebula (v3.8)`_ yes yes yes yes no no yes yes no -`OpenStack`_ yes no yes yes yes yes yes yes no -`Outscale API`_ yes yes yes yes yes yes yes no no -`Outscale INC`_ yes yes yes yes yes yes yes yes yes -`Outscale SAS`_ yes yes yes yes yes yes yes yes yes -`Ovh`_ yes yes no yes no no yes yes yes -`Rackspace Cloud (Next Gen)`_ yes yes yes yes yes yes yes yes yes -`Rackspace Cloud (First Gen)`_ yes yes yes yes yes yes yes yes yes -`RimuHosting`_ yes yes yes yes no no yes yes yes -`Scaleway`_ yes yes yes yes no no yes yes no -`vCloud`_ yes yes yes yes no no yes yes yes -`Upcloud`_ yes yes yes yes no no yes yes yes -`VCL`_ yes yes no yes no no yes yes no -`vCloud`_ yes yes yes yes no no yes yes yes -`vps.net`_ yes yes yes yes no no yes yes no -`VMware vSphere`_ yes yes yes yes yes yes yes yes no -`Vultr`_ yes yes yes yes yes yes yes yes no +`Amazon EC2`_ yes yes yes yes yes yes yes yes yes +`Azure Virtual machines`_ yes yes yes yes yes yes yes yes yes +`Brightbox`_ yes yes no yes no no yes yes no +`CloudSigma (API v2.0)`_ yes yes yes yes yes yes yes yes no +`CloudStack`_ yes yes yes yes no no yes yes yes +`Cloudscale`_ yes yes yes yes yes yes yes yes no +`DigitalOcean`_ yes yes yes yes no no yes yes no +`EquinixMetal`_ yes yes yes yes yes yes yes yes no +`Eucalyptus`_ yes yes yes yes yes yes yes yes yes +`Exoscale`_ yes yes yes yes no no yes yes yes +`Gandi`_ yes yes yes yes no no yes yes no +`GiG G8 Node Provider`_ yes yes yes yes yes yes yes yes no +`Google Compute Engine`_ yes yes yes yes yes yes yes yes yes +`Gridscale`_ yes yes yes yes yes no yes no yes +`Ikoula`_ yes yes yes yes no no yes yes yes +`KTUCloud`_ yes yes yes yes no no yes yes yes +`Kamatera`_ yes yes yes yes yes yes yes yes yes +`Libvirt`_ yes no yes yes yes yes no no no +`Linode`_ yes yes yes yes yes yes yes yes no +`Maxihost`_ yes yes yes yes yes yes yes yes no +`NTTAmerica`_ yes yes yes yes yes yes yes yes yes +`NTTC-CIS`_ yes yes yes yes yes yes yes yes yes +`Nimbus`_ yes yes yes yes yes yes yes yes yes +`OnApp`_ yes yes no yes no no yes no no +`OpenNebula (v3.8)`_ yes yes yes yes no no yes yes no +`OpenStack`_ yes no yes yes yes yes yes yes no +`Outscale API`_ yes yes yes yes yes yes yes no no +`Outscale INC`_ yes yes yes yes yes yes yes yes yes +`Outscale SAS`_ yes yes yes yes yes yes yes yes yes +`Ovh`_ yes yes no yes no no yes yes yes +`PCextreme AuroraCompute`_ yes yes yes yes no no yes yes yes +`Rackspace Cloud (First Gen)`_ yes yes yes yes yes yes yes yes yes +`Rackspace Cloud (Next Gen)`_ yes yes yes yes yes yes yes yes yes +`RimuHosting`_ yes yes yes yes no no yes yes yes +`Scaleway`_ yes yes yes yes no no yes yes no +`Upcloud`_ yes yes yes yes no no yes yes yes +`VCL`_ yes yes no yes no no yes yes no +`VMware vSphere`_ yes yes yes yes yes yes yes yes no +`Vultr`_ yes yes yes yes yes yes yes yes no +`kubevirt`_ yes yes yes yes yes yes yes yes yes +`vCloud`_ yes yes yes yes no no yes yes yes +`vCloud`_ yes yes yes yes no no yes yes yes +`vps.net`_ yes yes yes yes no no yes yes no ============================== ========== =========== =========== ============ ========== ========= =========== ========== =========== .. _`Abiquo`: http://www.abiquo.com/ .. _`Aliyun ECS`: https://www.aliyun.com/product/ecs -.. _`PCextreme AuroraCompute`: https://www.pcextreme.com/aurora/compute -.. _`Azure Virtual machines`: http://azure.microsoft.com/en-us/services/virtual-machines/ +.. _`Amazon EC2`: http://aws.amazon.com/ec2/ .. _`Azure Virtual machines`: http://azure.microsoft.com/en-us/services/virtual-machines/ .. _`Brightbox`: http://www.brightbox.co.uk/ -.. _`Cloudscale`: https://www.cloudscale.ch .. _`CloudSigma (API v2.0)`: http://www.cloudsigma.com/ .. _`CloudStack`: http://cloudstack.org/ +.. _`Cloudscale`: https://www.cloudscale.ch .. _`DigitalOcean`: https://www.digitalocean.com -.. _`DimensionData`: http://www.dimensiondata.com/ -.. _`Amazon EC2`: http://aws.amazon.com/ec2/ .. _`EquinixMetal`: https://metal.equinix.com/ .. _`Eucalyptus`: http://www.eucalyptus.com/ .. _`Exoscale`: https://www.exoscale.com/ .. _`Gandi`: http://www.gandi.net/ -.. _`Google Compute Engine`: https://cloud.google.com/ .. _`GiG G8 Node Provider`: https://gig.tech +.. _`Google Compute Engine`: https://cloud.google.com/ .. _`Gridscale`: https://gridscale.io .. _`Ikoula`: http://express.ikoula.co.uk/cloudstack -.. _`InternetSolutions`: http://www.is.co.za/ -.. _`Kamatera`: https://www.kamatera.com/ .. _`KTUCloud`: https://ucloudbiz.olleh.com/ -.. _`kubevirt`: https://www.kubevirt.io +.. _`Kamatera`: https://www.kamatera.com/ .. _`Libvirt`: http://libvirt.org/ .. _`Linode`: http://www.linode.com/ .. _`Maxihost`: https://www.maxihost.com/ -.. _`Nimbus`: http://www.nimbusproject.org/ .. _`NTTAmerica`: http://www.nttamerica.com/ .. _`NTTC-CIS`: https://www.us.ntt.com/en/services/cloud/enterprise-cloud.html +.. _`Nimbus`: http://www.nimbusproject.org/ .. _`OnApp`: http://onapp.com/ .. _`OpenNebula (v3.8)`: http://opennebula.org/ .. _`OpenStack`: http://openstack.org/ @@ -90,14 +82,15 @@ Provider list nodes create node reboot node destroy node s .. _`Outscale INC`: http://www.outscale.com .. _`Outscale SAS`: http://www.outscale.com .. _`Ovh`: https://www.ovh.com/ -.. _`Rackspace Cloud (Next Gen)`: http://www.rackspace.com +.. _`PCextreme AuroraCompute`: https://www.pcextreme.com/aurora/compute .. _`Rackspace Cloud (First Gen)`: http://www.rackspace.com +.. _`Rackspace Cloud (Next Gen)`: http://www.rackspace.com .. _`RimuHosting`: http://rimuhosting.com/ .. _`Scaleway`: https://www.scaleway.com/ -.. _`vCloud`: http://www.vmware.com/products/vcloud/ .. _`Upcloud`: https://www.upcloud.com .. _`VCL`: http://incubator.apache.org/vcl/ -.. _`vCloud`: http://www.vmware.com/products/vcloud/ -.. _`vps.net`: http://vps.net/ .. _`VMware vSphere`: http://www.vmware.com/products/vsphere/ .. _`Vultr`: https://www.vultr.com +.. _`kubevirt`: https://www.kubevirt.io +.. _`vCloud`: http://www.vmware.com/products/vcloud/ +.. _`vps.net`: http://vps.net/ diff --git a/docs/compute/_supported_providers.rst b/docs/compute/_supported_providers.rst index 353ae00c8a..dbed9635ed 100644 --- a/docs/compute/_supported_providers.rst +++ b/docs/compute/_supported_providers.rst @@ -5,84 +5,79 @@ Provider Documentation ============================== ================================================= =================== ======================================================================================================================================================================================================================================================================================================== ================================================= ==================================== `Abiquo`_ ABIQUO single region driver :mod:`libcloud.compute.drivers.abiquo` :class:`AbiquoNodeDriver` `Aliyun ECS`_ :doc:`Click ` ALIYUN_ECS single region driver :mod:`libcloud.compute.drivers.ecs` :class:`ECSDriver` -`PCextreme AuroraCompute`_ :doc:`Click ` AURORACOMPUTE single region driver :mod:`libcloud.compute.drivers.auroracompute` :class:`AuroraComputeNodeDriver` -`Azure Virtual machines`_ :doc:`Click ` AZURE single region driver :mod:`libcloud.compute.drivers.azure` :class:`AzureNodeDriver` -`Azure Virtual machines`_ :doc:`Click ` AZURE_ARM single region driver :mod:`libcloud.compute.drivers.azure_arm` :class:`AzureNodeDriver` -`Brightbox`_ BRIGHTBOX single region driver :mod:`libcloud.compute.drivers.brightbox` :class:`BrightboxNodeDriver` -`Cloudscale`_ :doc:`Click ` CLOUDSCALE single region driver :mod:`libcloud.compute.drivers.cloudscale` :class:`CloudscaleNodeDriver` -`CloudSigma (API v2.0)`_ :doc:`Click ` CLOUDSIGMA single region driver :mod:`libcloud.compute.drivers.cloudsigma` :class:`CloudSigmaNodeDriver` -`CloudStack`_ :doc:`Click ` CLOUDSTACK single region driver :mod:`libcloud.compute.drivers.cloudstack` :class:`CloudStackNodeDriver` -`DigitalOcean`_ :doc:`Click ` DIGITAL_OCEAN single region driver :mod:`libcloud.compute.drivers.digitalocean` :class:`DigitalOceanNodeDriver` -`DimensionData`_ :doc:`Click ` DIMENSIONDATA single region driver :mod:`libcloud.compute.drivers.dimensiondata` :class:`DimensionDataNodeDriver` -`Amazon EC2`_ :doc:`Click ` EC2 af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-southeast-1, ap-southeast-2, ca-central-1, cn-north-1, cn-northwest-1, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-gov-west-1, us-west-1, us-west-2 :mod:`libcloud.compute.drivers.ec2` :class:`EC2NodeDriver` -`EquinixMetal`_ :doc:`Click ` EQUINIXMETAL single region driver :mod:`libcloud.compute.drivers.equinixmetal` :class:`EquinixMetalNodeDriver` -`Eucalyptus`_ EUCALYPTUS single region driver :mod:`libcloud.compute.drivers.ec2` :class:`EucNodeDriver` -`Exoscale`_ :doc:`Click ` EXOSCALE single region driver :mod:`libcloud.compute.drivers.exoscale` :class:`ExoscaleNodeDriver` -`Gandi`_ :doc:`Click ` GANDI single region driver :mod:`libcloud.compute.drivers.gandi` :class:`GandiNodeDriver` -`Google Compute Engine`_ :doc:`Click ` GCE single region driver :mod:`libcloud.compute.drivers.gce` :class:`GCENodeDriver` -`GiG G8 Node Provider`_ GIG_G8 single region driver :mod:`libcloud.compute.drivers.gig_g8` :class:`G8NodeDriver` -`Gridscale`_ :doc:`Click ` GRIDSCALE single region driver :mod:`libcloud.compute.drivers.gridscale` :class:`GridscaleNodeDriver` -`Ikoula`_ :doc:`Click ` IKOULA single region driver :mod:`libcloud.compute.drivers.ikoula` :class:`IkoulaNodeDriver` -`InternetSolutions`_ :doc:`Click ` INTERNETSOLUTIONS single region driver :mod:`libcloud.compute.drivers.internetsolutions` :class:`InternetSolutionsNodeDriver` -`Kamatera`_ :doc:`Click ` KAMATERA single region driver :mod:`libcloud.compute.drivers.kamatera` :class:`KamateraNodeDriver` -`KTUCloud`_ KTUCLOUD single region driver :mod:`libcloud.compute.drivers.ktucloud` :class:`KTUCloudNodeDriver` -`kubevirt`_ KUBEVIRT single region driver :mod:`libcloud.compute.drivers.kubevirt` :class:`KubeVirtNodeDriver` -`Libvirt`_ :doc:`Click ` LIBVIRT single region driver :mod:`libcloud.compute.drivers.libvirt_driver` :class:`LibvirtNodeDriver` -`Linode`_ LINODE single region driver :mod:`libcloud.compute.drivers.linode` :class:`LinodeNodeDriver` -`Maxihost`_ :doc:`Click ` MAXIHOST single region driver :mod:`libcloud.compute.drivers.maxihost` :class:`MaxihostNodeDriver` -`Nimbus`_ :doc:`Click ` NIMBUS single region driver :mod:`libcloud.compute.drivers.ec2` :class:`NimbusNodeDriver` -`NTTAmerica`_ :doc:`Click ` NTTA single region driver :mod:`libcloud.compute.drivers.ntta` :class:`NTTAmericaNodeDriver` -`NTTC-CIS`_ :doc:`Click ` NTTCIS single region driver :mod:`libcloud.compute.drivers.nttcis` :class:`NttCisNodeDriver` -`OnApp`_ :doc:`Click ` ONAPP single region driver :mod:`libcloud.compute.drivers.onapp` :class:`OnAppNodeDriver` -`OpenNebula (v3.8)`_ OPENNEBULA single region driver :mod:`libcloud.compute.drivers.opennebula` :class:`OpenNebulaNodeDriver` -`OpenStack`_ :doc:`Click ` OPENSTACK single region driver :mod:`libcloud.compute.drivers.openstack` :class:`OpenStackNodeDriver` -`Outscale API`_ :doc:`Click ` OUTSCALE single region driver :mod:`libcloud.compute.drivers.outscale` :class:`OutscaleNodeDriver` -`Outscale INC`_ :doc:`Click ` OUTSCALE_INC single region driver :mod:`libcloud.compute.drivers.ec2` :class:`OutscaleINCNodeDriver` -`Outscale SAS`_ :doc:`Click ` OUTSCALE_SAS single region driver :mod:`libcloud.compute.drivers.ec2` :class:`OutscaleSASNodeDriver` -`Ovh`_ :doc:`Click ` OVH ca, eu :mod:`libcloud.compute.drivers.ovh` :class:`OvhNodeDriver` -`Rackspace Cloud (Next Gen)`_ :doc:`Click ` RACKSPACE single region driver :mod:`libcloud.compute.drivers.rackspace` :class:`RackspaceNodeDriver` +`Amazon EC2`_ :doc:`Click ` EC2 af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-southeast-1, ap-southeast-2, ca-central-1, cn-north-1, cn-northwest-1, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-gov-west-1, us-west-1, us-west-2 :mod:`libcloud.compute.drivers.ec2` :class:`EC2NodeDriver` +`Azure Virtual machines`_ :doc:`Click ` AZURE single region driver :mod:`libcloud.compute.drivers.azure` :class:`AzureNodeDriver` +`Azure Virtual machines`_ :doc:`Click ` AZURE_ARM single region driver :mod:`libcloud.compute.drivers.azure_arm` :class:`AzureNodeDriver` +`Brightbox`_ BRIGHTBOX single region driver :mod:`libcloud.compute.drivers.brightbox` :class:`BrightboxNodeDriver` +`CloudSigma (API v2.0)`_ :doc:`Click ` CLOUDSIGMA single region driver :mod:`libcloud.compute.drivers.cloudsigma` :class:`CloudSigmaNodeDriver` +`CloudStack`_ :doc:`Click ` CLOUDSTACK single region driver :mod:`libcloud.compute.drivers.cloudstack` :class:`CloudStackNodeDriver` +`Cloudscale`_ :doc:`Click ` CLOUDSCALE single region driver :mod:`libcloud.compute.drivers.cloudscale` :class:`CloudscaleNodeDriver` +`DigitalOcean`_ :doc:`Click ` DIGITAL_OCEAN single region driver :mod:`libcloud.compute.drivers.digitalocean` :class:`DigitalOceanNodeDriver` +`DimensionData`_ :doc:`Click ` DIMENSIONDATA single region driver :mod:`libcloud.compute.drivers.dimensiondata` :class:`DimensionDataNodeDriver` +`EquinixMetal`_ :doc:`Click ` EQUINIXMETAL single region driver :mod:`libcloud.compute.drivers.equinixmetal` :class:`EquinixMetalNodeDriver` +`Eucalyptus`_ EUCALYPTUS single region driver :mod:`libcloud.compute.drivers.ec2` :class:`EucNodeDriver` +`Exoscale`_ :doc:`Click ` EXOSCALE single region driver :mod:`libcloud.compute.drivers.exoscale` :class:`ExoscaleNodeDriver` +`Gandi`_ :doc:`Click ` GANDI single region driver :mod:`libcloud.compute.drivers.gandi` :class:`GandiNodeDriver` +`GiG G8 Node Provider`_ GIG_G8 single region driver :mod:`libcloud.compute.drivers.gig_g8` :class:`G8NodeDriver` +`Google Compute Engine`_ :doc:`Click ` GCE single region driver :mod:`libcloud.compute.drivers.gce` :class:`GCENodeDriver` +`Gridscale`_ :doc:`Click ` GRIDSCALE single region driver :mod:`libcloud.compute.drivers.gridscale` :class:`GridscaleNodeDriver` +`Ikoula`_ :doc:`Click ` IKOULA single region driver :mod:`libcloud.compute.drivers.ikoula` :class:`IkoulaNodeDriver` +`KTUCloud`_ KTUCLOUD single region driver :mod:`libcloud.compute.drivers.ktucloud` :class:`KTUCloudNodeDriver` +`Kamatera`_ :doc:`Click ` KAMATERA single region driver :mod:`libcloud.compute.drivers.kamatera` :class:`KamateraNodeDriver` +`Libvirt`_ :doc:`Click ` LIBVIRT single region driver :mod:`libcloud.compute.drivers.libvirt_driver` :class:`LibvirtNodeDriver` +`Linode`_ LINODE single region driver :mod:`libcloud.compute.drivers.linode` :class:`LinodeNodeDriver` +`Maxihost`_ :doc:`Click ` MAXIHOST single region driver :mod:`libcloud.compute.drivers.maxihost` :class:`MaxihostNodeDriver` +`NTTAmerica`_ :doc:`Click ` NTTA single region driver :mod:`libcloud.compute.drivers.ntta` :class:`NTTAmericaNodeDriver` +`NTTC-CIS`_ :doc:`Click ` NTTCIS single region driver :mod:`libcloud.compute.drivers.nttcis` :class:`NttCisNodeDriver` +`Nimbus`_ :doc:`Click ` NIMBUS single region driver :mod:`libcloud.compute.drivers.ec2` :class:`NimbusNodeDriver` +`OnApp`_ :doc:`Click ` ONAPP single region driver :mod:`libcloud.compute.drivers.onapp` :class:`OnAppNodeDriver` +`OpenNebula (v3.8)`_ OPENNEBULA single region driver :mod:`libcloud.compute.drivers.opennebula` :class:`OpenNebulaNodeDriver` +`OpenStack`_ :doc:`Click ` OPENSTACK single region driver :mod:`libcloud.compute.drivers.openstack` :class:`OpenStackNodeDriver` +`Outscale API`_ :doc:`Click ` OUTSCALE single region driver :mod:`libcloud.compute.drivers.outscale` :class:`OutscaleNodeDriver` +`Outscale INC`_ :doc:`Click ` OUTSCALE_INC single region driver :mod:`libcloud.compute.drivers.ec2` :class:`OutscaleINCNodeDriver` +`Outscale SAS`_ :doc:`Click ` OUTSCALE_SAS single region driver :mod:`libcloud.compute.drivers.ec2` :class:`OutscaleSASNodeDriver` +`Ovh`_ :doc:`Click ` OVH ca, eu :mod:`libcloud.compute.drivers.ovh` :class:`OvhNodeDriver` +`PCextreme AuroraCompute`_ :doc:`Click ` AURORACOMPUTE single region driver :mod:`libcloud.compute.drivers.auroracompute` :class:`AuroraComputeNodeDriver` `Rackspace Cloud (First Gen)`_ RACKSPACE_FIRST_GEN single region driver :mod:`libcloud.compute.drivers.rackspace` :class:`RackspaceFirstGenNodeDriver` -`RimuHosting`_ RIMUHOSTING single region driver :mod:`libcloud.compute.drivers.rimuhosting` :class:`RimuHostingNodeDriver` -`Scaleway`_ :doc:`Click ` SCALEWAY single region driver :mod:`libcloud.compute.drivers.scaleway` :class:`ScalewayNodeDriver` -`vCloud`_ TERREMARK single region driver :mod:`libcloud.compute.drivers.vcloud` :class:`TerremarkDriver` -`Upcloud`_ :doc:`Click ` UPCLOUD single region driver :mod:`libcloud.compute.drivers.upcloud` :class:`UpcloudDriver` -`VCL`_ VCL single region driver :mod:`libcloud.compute.drivers.vcl` :class:`VCLNodeDriver` -`vCloud`_ :doc:`Click ` VCLOUD single region driver :mod:`libcloud.compute.drivers.vcloud` :class:`VCloudNodeDriver` -`vps.net`_ VPSNET single region driver :mod:`libcloud.compute.drivers.vpsnet` :class:`VPSNetNodeDriver` -`VMware vSphere`_ :doc:`Click ` VSPHERE single region driver :mod:`libcloud.compute.drivers.vsphere` :class:`VSphereNodeDriver` -`Vultr`_ :doc:`Click ` VULTR single region driver :mod:`libcloud.compute.drivers.vultr` :class:`VultrNodeDriver` +`Rackspace Cloud (Next Gen)`_ :doc:`Click ` RACKSPACE single region driver :mod:`libcloud.compute.drivers.rackspace` :class:`RackspaceNodeDriver` +`RimuHosting`_ RIMUHOSTING single region driver :mod:`libcloud.compute.drivers.rimuhosting` :class:`RimuHostingNodeDriver` +`Scaleway`_ :doc:`Click ` SCALEWAY single region driver :mod:`libcloud.compute.drivers.scaleway` :class:`ScalewayNodeDriver` +`Upcloud`_ :doc:`Click ` UPCLOUD single region driver :mod:`libcloud.compute.drivers.upcloud` :class:`UpcloudDriver` +`VCL`_ VCL single region driver :mod:`libcloud.compute.drivers.vcl` :class:`VCLNodeDriver` +`VMware vSphere`_ :doc:`Click ` VSPHERE single region driver :mod:`libcloud.compute.drivers.vsphere` :class:`VSphereNodeDriver` +`Vultr`_ :doc:`Click ` VULTR single region driver :mod:`libcloud.compute.drivers.vultr` :class:`VultrNodeDriver` +`kubevirt`_ KUBEVIRT single region driver :mod:`libcloud.compute.drivers.kubevirt` :class:`KubeVirtNodeDriver` +`vCloud`_ TERREMARK single region driver :mod:`libcloud.compute.drivers.vcloud` :class:`TerremarkDriver` +`vCloud`_ :doc:`Click ` VCLOUD single region driver :mod:`libcloud.compute.drivers.vcloud` :class:`VCloudNodeDriver` +`vps.net`_ VPSNET single region driver :mod:`libcloud.compute.drivers.vpsnet` :class:`VPSNetNodeDriver` ============================== ================================================= =================== ======================================================================================================================================================================================================================================================================================================== ================================================= ==================================== .. _`Abiquo`: http://www.abiquo.com/ .. _`Aliyun ECS`: https://www.aliyun.com/product/ecs -.. _`PCextreme AuroraCompute`: https://www.pcextreme.com/aurora/compute -.. _`Azure Virtual machines`: http://azure.microsoft.com/en-us/services/virtual-machines/ +.. _`Amazon EC2`: http://aws.amazon.com/ec2/ .. _`Azure Virtual machines`: http://azure.microsoft.com/en-us/services/virtual-machines/ .. _`Brightbox`: http://www.brightbox.co.uk/ -.. _`Cloudscale`: https://www.cloudscale.ch .. _`CloudSigma (API v2.0)`: http://www.cloudsigma.com/ .. _`CloudStack`: http://cloudstack.org/ +.. _`Cloudscale`: https://www.cloudscale.ch .. _`DigitalOcean`: https://www.digitalocean.com .. _`DimensionData`: http://www.dimensiondata.com/ -.. _`Amazon EC2`: http://aws.amazon.com/ec2/ .. _`EquinixMetal`: https://metal.equinix.com/ .. _`Eucalyptus`: http://www.eucalyptus.com/ .. _`Exoscale`: https://www.exoscale.com/ .. _`Gandi`: http://www.gandi.net/ -.. _`Google Compute Engine`: https://cloud.google.com/ .. _`GiG G8 Node Provider`: https://gig.tech +.. _`Google Compute Engine`: https://cloud.google.com/ .. _`Gridscale`: https://gridscale.io .. _`Ikoula`: http://express.ikoula.co.uk/cloudstack -.. _`InternetSolutions`: http://www.is.co.za/ -.. _`Kamatera`: https://www.kamatera.com/ .. _`KTUCloud`: https://ucloudbiz.olleh.com/ -.. _`kubevirt`: https://www.kubevirt.io +.. _`Kamatera`: https://www.kamatera.com/ .. _`Libvirt`: http://libvirt.org/ .. _`Linode`: http://www.linode.com/ .. _`Maxihost`: https://www.maxihost.com/ -.. _`Nimbus`: http://www.nimbusproject.org/ .. _`NTTAmerica`: http://www.nttamerica.com/ .. _`NTTC-CIS`: https://www.us.ntt.com/en/services/cloud/enterprise-cloud.html +.. _`Nimbus`: http://www.nimbusproject.org/ .. _`OnApp`: http://onapp.com/ .. _`OpenNebula (v3.8)`: http://opennebula.org/ .. _`OpenStack`: http://openstack.org/ @@ -90,14 +85,15 @@ Provider Documentation .. _`Outscale INC`: http://www.outscale.com .. _`Outscale SAS`: http://www.outscale.com .. _`Ovh`: https://www.ovh.com/ -.. _`Rackspace Cloud (Next Gen)`: http://www.rackspace.com +.. _`PCextreme AuroraCompute`: https://www.pcextreme.com/aurora/compute .. _`Rackspace Cloud (First Gen)`: http://www.rackspace.com +.. _`Rackspace Cloud (Next Gen)`: http://www.rackspace.com .. _`RimuHosting`: http://rimuhosting.com/ .. _`Scaleway`: https://www.scaleway.com/ -.. _`vCloud`: http://www.vmware.com/products/vcloud/ .. _`Upcloud`: https://www.upcloud.com .. _`VCL`: http://incubator.apache.org/vcl/ -.. _`vCloud`: http://www.vmware.com/products/vcloud/ -.. _`vps.net`: http://vps.net/ .. _`VMware vSphere`: http://www.vmware.com/products/vsphere/ .. _`Vultr`: https://www.vultr.com +.. _`kubevirt`: https://www.kubevirt.io +.. _`vCloud`: http://www.vmware.com/products/vcloud/ +.. _`vps.net`: http://vps.net/ diff --git a/docs/compute/drivers/auroracompute.rst b/docs/compute/drivers/auroracompute.rst deleted file mode 100644 index 42c6c6f779..0000000000 --- a/docs/compute/drivers/auroracompute.rst +++ /dev/null @@ -1,84 +0,0 @@ -AuroraCompute Computer Driver Documentation -=========================================== - -`PCextreme B.V.`_ is a Dutch cloud provider. It provides a public cloud offering -under the name AuroraCompute. All cloud services are under the family name Aurora. - -The datacenters / availability zones are located in: - -- Amsterdam (NL) -- Rotterdam (NL) -- Miami (US) -- Los Angelos (US) -- Tokyo (JP) -- Barcelona (ES) - - -.. figure:: /_static/images/provider_logos/pcextreme.png - :align: center - :width: 300 - :target: https://www.pcextreme.com/aurora/compute - -The AuroraCompute driver is based on the CloudStack driver. Please refer to -:doc:`CloudStack Compute Driver Documentation ` page for more -information. - - -Instantiating a driver ----------------------- - -When you instantiate a driver you need to pass the following arguments to the -driver constructor: - -* ``key`` - Your AuroraCompute API key -* ``secret`` - Your AuroraCompute secret key - -You can find your 'key' and 'secret' in the AuroraCompute `Control Panel`_ under -your users. - -With these credentials you can instantiate a driver: - -.. literalinclude:: /examples/compute/auroracompute/instantiate_driver.py - :language: python - - -Create a Virtual Machine (node) -------------------------------- - -Creating a Virtual Machine on AuroraCompute using libcloud works the same as on any -other platform. This example is just to show exactly that. - -This example will create a Virtual Machine in Amsterdam. Should you want to create -one in one of our other regions you should take a look at the example below which -shows how to use our different regions. - -.. literalinclude:: /examples/compute/auroracompute/create_node.py - :language: python - - -Using a different region ------------------------- - -By default the region AMS (Amsterdam) is selected by the driver. - -AuroraCompute supports multiple regions and when instantiating the driver you can -choose a region. - -Keep in mind that each region uses different credentials. These can be found in -the `Control Panel`_ under your users. - -In this example we select the Miami (MIA) region: - -.. literalinclude:: /examples/compute/auroracompute/instantiate_driver_region.py - :language: python - - -API Docs --------- - -.. autoclass:: libcloud.compute.drivers.auroracompute.AuroraComputeNodeDriver - :members: - :inherited-members: - -.. _`PCextreme B.V.`: https://www.pcextreme.com/ -.. _`Control Panel`: https://cp.pcextreme.nl/ diff --git a/docs/compute/drivers/dimensiondata.rst b/docs/compute/drivers/dimensiondata.rst deleted file mode 100644 index ac7a94759d..0000000000 --- a/docs/compute/drivers/dimensiondata.rst +++ /dev/null @@ -1,90 +0,0 @@ -Dimension Data Cloud Compute Driver Documentation -================================================= - -Dimension Data are a global IT Services company and form part of the NTT Group. -Dimension Data provide IT-as-a-Service to customers around the globe on their -cloud platform (Compute as a Service). The CaaS service is available either on -one of the public cloud instances or as a private instance on premises. - -.. figure:: /_static/images/provider_logos/dimensiondata.png - :align: center - :width: 300 - :target: http://cloud.dimensiondata.com/ - -CaaS has its own non-standard `API`_ , `libcloud` provides a Python -wrapper on top of this `API`_ with common methods with other IaaS solutions and -Public cloud providers. Therefore, you can use use the Dimension Data libcloud -driver to communicate with both the public and private clouds. - -Instantiating a driver ----------------------- - -When you instantiate a driver you need to pass the following arguments to the -driver constructor: - -* ``user_id`` - Your Dimension Data Cloud username -* ``key`` - Your Dimension Data Cloud password -* ``region`` - The region key, one of the possible region keys - -Possible regions: - -* ``dd-na`` : Dimension Data North America (USA) -* ``dd-eu`` : Dimension Data Europe -* ``dd-af`` : Dimension Data Africa -* ``dd-au`` : Dimension Data Australia -* ``dd-au-gov`` : Dimension Data Australia ACT (Canberra) -* ``dd-latam`` : Dimension Data Latin America -* ``dd-ap`` : Dimension Data Asia Pacific -* ``dd-canada`` : Dimension Data Canada region - -The base `libcloud` API allows you to: - -* list nodes, images, instance types, locations - -Non-standard functionality and extension methods ------------------------------------------------- - -The Dimension Data driver exposes some `libcloud` non-standard -functionalities through extension methods and arguments. - -These functionalities include: - -* start and stop a node -* list networks -* create firewalls, configure network address translation -* provision layer 3 networks - -For information on how to use these functionalities please see the method -docstrings below. You can also use an interactive shell for exploration as -shown in the examples. - -API Docs --------- - -.. autoclass:: libcloud.compute.drivers.dimensiondata.DimensionDataNodeDriver - :members: - :inherited-members: - -.. _`API`: http://cloud.dimensiondata.com/au/en/services/public-cloud/api - - -Debugging Tips --------------- - -**Problem description: XML parsing issue for python version 2.7.5** - - *Example*:: - - ip_address_collection=ip_addr_collection, child_ip_address_lists=None) - File "/Users/andrewdas/Documents/Python/lib/python2.7/site-packages/libcloud/compute/drivers/dimensiondata.py", line 3185, in ex_edit_ip_address_list - 'xmlns:xsi': "http://www.w3.org/2001/XMLSchema-instance" - File "lxml.etree.pyx", line 2912, in lxml.etree.Element (src/lxml/lxml.etree.c:68681) - File "apihelpers.pxi", line 140, in lxml.etree._makeElement (src/lxml/lxml.etree.c:15242) - File "apihelpers.pxi", line 128, in lxml.etree._makeElement (src/lxml/lxml.etree.c:15125) - File "apihelpers.pxi", line 287, in lxml.etree._initNodeAttributes (src/lxml/lxml.etree.c:17012) - File "apihelpers.pxi", line 296, in lxml.etree._addAttributeToNode (src/lxml/lxml.etree.c:17180) - File "apihelpers.pxi", line 1583, in lxml.etree._attributeValidOrRaise (src/lxml/lxml.etree.c:29377) - ValueError: Invalid attribute name u'xmlns:xsi' - - *Solution*: - - Upgrade to python version 2.7.12 and above \ No newline at end of file diff --git a/docs/compute/drivers/internetsolutions.rst b/docs/compute/drivers/internetsolutions.rst deleted file mode 100644 index 454a615c25..0000000000 --- a/docs/compute/drivers/internetsolutions.rst +++ /dev/null @@ -1,69 +0,0 @@ -Internet Solutions Compute Driver Documentation -=============================================== - -Internet Solutions (IS) is the first commericial ISP in South Africa and currently the largest in -the southern cape. IS offer a public cloud service based called Compute-as-a-Service (CAAS). -The CaaS service is available on one of the public cloud instances. - -.. figure:: /_static/images/provider_logos/internetsolutions.png - :align: center - :width: 300 - :target: http://www.cloud.is.co.za/ - -CaaS has its own non-standard `API`_ , `libcloud` provides a Python -wrapper on top of this `API`_ with common methods with other IaaS solutions and -Public cloud providers. Therefore, you can use use the Internet Solutions libcloud -driver to communicate with both the public and private clouds. - -Instantiating a driver ----------------------- - -When you instantiate a driver you need to pass the following arguments to the -driver constructor: - -* ``user_id`` - Your Internet Solutions Cloud username -* ``key`` - Your Internet Solutions Cloud password -* ``region`` - The region key, one of the possible region keys - -Possible regions: - -* ``is-na`` : Internet Solutions North America (USA) -* ``is-eu`` : Internet Solutions Europe -* ``is-af`` : Internet Solutions Africa - **Default** -* ``is-au`` : Internet Solutions Australia -* ``is-latam`` : Internet Solutions Latin America -* ``is-ap`` : Internet Solutions Asia Pacific -* ``is-canada`` : Internet Solutions Canada region - -.. literalinclude:: /examples/compute/internetsolutions/instantiate_driver.py - :language: python - -The base `libcloud` API allows you to: - -* list nodes, images, instance types, locations - -Non-standard functionality and extension methods ------------------------------------------------- - -The Internet Solutions driver exposes some `libcloud` non-standard -functionalities through extension methods and arguments. - -These functionalities include: - -* start and stop a node -* list networks -* create firewalls, configure network address translation -* provision layer 3 networks - -For information on how to use these functionalities please see the method -docstrings below. You can also use an interactive shell for exploration as -shown in the examples. - -API Docs --------- - -.. autoclass:: libcloud.compute.drivers.internetsolutions.InternetSolutionsNodeDriver - :members: - :inherited-members: - -.. _`API`: http://www.cloud.is.co.za/IS-Public-CaaS/Pages/REST-based-API.aspx diff --git a/docs/dns/_supported_methods.rst b/docs/dns/_supported_methods.rst index 168a30fdfb..a1732cda64 100644 --- a/docs/dns/_supported_methods.rst +++ b/docs/dns/_supported_methods.rst @@ -3,11 +3,10 @@ ================= ========== ============ =========== =========== ============= ============= =========== ============= Provider list zones list records create zone update zone create record update record delete zone delete record ================= ========== ============ =========== =========== ============= ============= =========== ============= -`AuroraDNS`_ yes yes yes no yes yes yes yes -`BuddyNS DNS`_ yes no yes no no no yes no +`BuddyNS DNS`_ yes no yes no no no yes no `CloudFlare DNS`_ yes yes yes yes yes yes yes yes -`DigitalOcean`_ yes yes yes no yes yes yes yes -`DNSimple`_ yes yes yes no yes yes yes yes +`DNSimple`_ yes yes yes no yes yes yes yes +`DigitalOcean`_ yes yes yes no yes yes yes yes `DurableDNS`_ yes yes yes yes yes yes yes yes `Gandi DNS`_ yes yes yes yes yes yes yes yes `Gandi LiveDNS`_ yes yes yes no yes yes no yes @@ -30,11 +29,10 @@ Provider list zones list records create zone update zone create record `Zonomi DNS`_ yes yes yes no yes no yes yes ================= ========== ============ =========== =========== ============= ============= =========== ============= -.. _`AuroraDNS`: https://www.pcextreme.nl/en/aurora/dns .. _`BuddyNS DNS`: https://www.buddyns.com .. _`CloudFlare DNS`: https://www.cloudflare.com -.. _`DigitalOcean`: https://www.digitalocean.com .. _`DNSimple`: https://dnsimple.com/ +.. _`DigitalOcean`: https://www.digitalocean.com .. _`DurableDNS`: https://durabledns.com .. _`Gandi DNS`: http://www.gandi.net/domain .. _`Gandi LiveDNS`: http://www.gandi.net/domain diff --git a/docs/dns/_supported_providers.rst b/docs/dns/_supported_providers.rst index 39da462b90..b2004d869a 100644 --- a/docs/dns/_supported_providers.rst +++ b/docs/dns/_supported_providers.rst @@ -3,11 +3,10 @@ ================= ========================================= ================= ==================== ======================================== ============================== Provider Documentation Provider Constant Supported Regions Module Class Name ================= ========================================= ================= ==================== ======================================== ============================== -`AuroraDNS`_ :doc:`Click ` AURORADNS single region driver :mod:`libcloud.dns.drivers.auroradns` :class:`AuroraDNSDriver` -`BuddyNS DNS`_ :doc:`Click ` BUDDYNS single region driver :mod:`libcloud.dns.drivers.buddyns` :class:`BuddyNSDNSDriver` +`BuddyNS DNS`_ :doc:`Click ` BUDDYNS single region driver :mod:`libcloud.dns.drivers.buddyns` :class:`BuddyNSDNSDriver` `CloudFlare DNS`_ :doc:`Click ` CLOUDFLARE single region driver :mod:`libcloud.dns.drivers.cloudflare` :class:`CloudFlareDNSDriver` +`DNSimple`_ :doc:`Click ` DNSIMPLE single region driver :mod:`libcloud.dns.drivers.dnsimple` :class:`DNSimpleDNSDriver` `DigitalOcean`_ :doc:`Click ` DIGITAL_OCEAN single region driver :mod:`libcloud.dns.drivers.digitalocean` :class:`DigitalOceanDNSDriver` -`DNSimple`_ :doc:`Click ` DNSIMPLE single region driver :mod:`libcloud.dns.drivers.dnsimple` :class:`DNSimpleDNSDriver` `DurableDNS`_ :doc:`Click ` DURABLEDNS single region driver :mod:`libcloud.dns.drivers.durabledns` :class:`DurableDNSDriver` `Gandi DNS`_ GANDI single region driver :mod:`libcloud.dns.drivers.gandi` :class:`GandiDNSDriver` `Gandi LiveDNS`_ GANDI_LIVE single region driver :mod:`libcloud.dns.drivers.gandi_live` :class:`GandiLiveDNSDriver` @@ -30,11 +29,10 @@ Provider Documentation Provider Constant Su `Zonomi DNS`_ :doc:`Click ` ZONOMI single region driver :mod:`libcloud.dns.drivers.zonomi` :class:`ZonomiDNSDriver` ================= ========================================= ================= ==================== ======================================== ============================== -.. _`AuroraDNS`: https://www.pcextreme.nl/en/aurora/dns .. _`BuddyNS DNS`: https://www.buddyns.com .. _`CloudFlare DNS`: https://www.cloudflare.com -.. _`DigitalOcean`: https://www.digitalocean.com .. _`DNSimple`: https://dnsimple.com/ +.. _`DigitalOcean`: https://www.digitalocean.com .. _`DurableDNS`: https://durabledns.com .. _`Gandi DNS`: http://www.gandi.net/domain .. _`Gandi LiveDNS`: http://www.gandi.net/domain diff --git a/docs/dns/drivers/auroradns.rst b/docs/dns/drivers/auroradns.rst deleted file mode 100644 index 61831f629c..0000000000 --- a/docs/dns/drivers/auroradns.rst +++ /dev/null @@ -1,82 +0,0 @@ -AuroraDNS DNS driver documentation -================================== - -`PCextreme B.V.`_ is a Dutch cloud provider. It provides a public cloud offering -under the name AuroraCompute. All cloud services are under the family name -Aurora. - -`AuroraDNS`_ is a highly available DNS service which also provides health -checking. - -Records can be attached to a health check. When this health check becomes -unhealthy this record will no longer be served. - -This provides the possibility to create loadbalancing over multiple servers -without the requirement of a central loadbalancer in the network. It is also -provider agnostic, health checks can point to any IP/Host on the internet. - -IPv6 ----- -AuroraDNS fully supports IPv6: - -* DNS queries over IPv6 -* AAAA records -* Health checks over IPv6 - -Instantiating a driver ----------------------- - -When you instantiate a driver, you need to pass a your ``key`` and ``secret`` -to the driver constructor. These can be obtained in the control panel of -AuroraDNS. - -For example: - -.. literalinclude:: /examples/dns/auroradns/instantiate_driver.py - :language: python - -Disabling and enabling records ------------------------------- - -Records in can be disabled and enabled. By default all new records are enabled, -but this property can be set during creation and can be updated. - -For example: - -.. literalinclude:: /examples/dns/auroradns/instantiate_driver.py - :language: python - -In this example we create a record, but disable it. This means it will not be -served. - -Afterwards we enable the record and this make the DNS server serve this specific -record. - -Health Checks -------------- - -AuroraDNS has support for Health Checks which will disable all records attached -to that health check should it fail. With this you can create DNS based -loadbalancing over multiple records. - -In the example below we create a health check and afterwards attach a newly -created record to this health check. - -For example: - -.. literalinclude:: /examples/dns/auroradns/health_checks.py - :language: python - -API Docs --------- - -.. autoclass:: libcloud.dns.drivers.auroradns.AuroraDNSDriver - :members: - :inherited-members: - -.. autoclass:: libcloud.dns.drivers.auroradns.AuroraDNSHealthCheck - :members: - :inherited-members: - -.. _`PCextreme B.V.`: https://www.pcextreme.nl/ -.. _`AuroraDNS`: https://www.pcextreme.nl/en/aurora/dns diff --git a/docs/examples/compute/internetsolutions/__init__.py b/docs/examples/compute/internetsolutions/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/examples/compute/internetsolutions/instantiate_driver.py b/docs/examples/compute/internetsolutions/instantiate_driver.py deleted file mode 100644 index 3cd4b3f072..0000000000 --- a/docs/examples/compute/internetsolutions/instantiate_driver.py +++ /dev/null @@ -1,9 +0,0 @@ -from pprint import pprint - -from libcloud.compute.types import Provider -from libcloud.compute.providers import get_driver - -cls = get_driver(Provider.INTERNETSOLUTIONS) -driver = cls("my username", "my password", region="is-af") - -pprint(driver.list_nodes()) diff --git a/docs/examples/dns/auroradns/__init__.py b/docs/examples/dns/auroradns/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/examples/dns/auroradns/enable_disable_record.py b/docs/examples/dns/auroradns/enable_disable_record.py deleted file mode 100644 index 4f29d1cbf5..0000000000 --- a/docs/examples/dns/auroradns/enable_disable_record.py +++ /dev/null @@ -1,13 +0,0 @@ -from libcloud.dns.types import Provider, RecordType -from libcloud.dns.providers import get_driver - -cls = get_driver(Provider.AURORADNS) - -driver = cls("myapikey", "mysecret") - -zone = driver.get_zone("auroradns.eu") - -record = zone.create_record( - name="www", type=RecordType.AAAA, data="2a00:f10:452::1", ex_disabled=True -) -record.update(ex_disabled=False) diff --git a/docs/examples/dns/auroradns/health_checks.py b/docs/examples/dns/auroradns/health_checks.py deleted file mode 100644 index e60c873b5d..0000000000 --- a/docs/examples/dns/auroradns/health_checks.py +++ /dev/null @@ -1,26 +0,0 @@ -from libcloud.dns.types import Provider, RecordType -from libcloud.dns.providers import get_driver -from libcloud.dns.drivers.auroradns import AuroraDNSHealthCheckType - -cls = get_driver(Provider.AURORADNS) - -driver = cls("myapikey", "mysecret") - -zone = driver.get_zone("auroradns.eu") - -health_check = driver.ex_create_healthcheck( - zone=zone, - type=AuroraDNSHealthCheckType.HTTP, - hostname="web01.auroradns.eu", - path="/", - port=80, - interval=10, - threshold=5, -) - -record = zone.create_record( - name="www", - type=RecordType.AAAA, - data="2a00:f10:452::1", - extra={"health_check_id": health_check.id}, -) diff --git a/docs/examples/dns/auroradns/instantiate_driver.py b/docs/examples/dns/auroradns/instantiate_driver.py deleted file mode 100644 index e582fa555d..0000000000 --- a/docs/examples/dns/auroradns/instantiate_driver.py +++ /dev/null @@ -1,6 +0,0 @@ -from libcloud.dns.types import Provider -from libcloud.dns.providers import get_driver - -cls = get_driver(Provider.AURORADNS) - -driver = cls("myapikey", "mysecret") diff --git a/docs/examples/storage/auroraobjects/__init__.py b/docs/examples/storage/auroraobjects/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/examples/storage/auroraobjects/instantiate.py b/docs/examples/storage/auroraobjects/instantiate.py deleted file mode 100644 index 86229967d2..0000000000 --- a/docs/examples/storage/auroraobjects/instantiate.py +++ /dev/null @@ -1,8 +0,0 @@ -from libcloud.storage.types import Provider -from libcloud.storage.providers import get_driver - -access_key = "XXXXXX" -secret_key = "YYYYYY" - -cls = get_driver(Provider.AURORAOBJECTS) -driver = cls(access_key, secret_key) diff --git a/docs/storage/drivers/auroraobjects.rst b/docs/storage/drivers/auroraobjects.rst deleted file mode 100644 index 11eedbcda8..0000000000 --- a/docs/storage/drivers/auroraobjects.rst +++ /dev/null @@ -1,68 +0,0 @@ -AuroraObjects Storage Driver Documentation -========================================== - -`PCextreme B.V.`_ is a Dutch cloud provider. It provides a public cloud offering -under the name AuroraCompute. All cloud services are under the family name Aurora. - -All data is stored on servers in the European Union. - -.. figure:: /_static/images/provider_logos/pcextreme.png - :align: center - :width: 300 - :target: https://www.pcextreme.com/aurora/objects - -Protocol --------- - -AuroraObjects talks the Amazon S3 protocol and thus supports almost all functions -which the Amazon S3 storage driver supports. - -It however does not support CDN support. Calling any of the CDN functions will raise -a LibcloudError. - -As a backend AuroraObjects uses `Ceph`_ for storage. - -Instantiating a driver ----------------------- - -When instantiating the AuroraObjects you need a access key and secret key. -These can be obtained from the `Control Panel`_ of AuroraObjects. - -With these credentials you can instantiate the driver: - -.. literalinclude:: /examples/storage/auroraobjects/instantiate.py - :language: python - -Multipart uploads ------------------ - -AuroraObjects storage driver supports multipart uploads which means you can -upload objects with a total size of up to 5 TB. - -Multipart upload works similar to Amazon S3. After uploading all the parts the -AuroraObjects servers combine the parts into one large object. - -If you use -:meth:`libcloud.storage.base.StorageDriver.upload_object_via_stream` method, -Libcloud transparently handles all the splitting and uploading of the parts -for you. - -By default, to prevent excessive buffering and use of memory, each part is -5 MB in size. This is also the smallest size of a part you can use with the -multi part upload. - -Examples --------- - -Please refer to the Amazon S3 storage driver documentation for examples. - -API Docs --------- - -.. autoclass:: libcloud.storage.drivers.auroraobjects.AuroraObjectsStorageDriver - :members: - :inherited-members: - -.. _`PCextreme B.V.`: https://www.pcextreme.com/ -.. _`Ceph`: https://ceph.com/ -.. _`Control Panel`: https://cp.pcextreme.nl/ diff --git a/libcloud/compute/providers.py b/libcloud/compute/providers.py index d50fb13237..b0324fc11e 100644 --- a/libcloud/compute/providers.py +++ b/libcloud/compute/providers.py @@ -32,88 +32,53 @@ __all__ = ["Provider", "DRIVERS", "get_driver"] DRIVERS = { + Provider.ABIQUO: ("libcloud.compute.drivers.abiquo", "AbiquoNodeDriver"), + Provider.ALIYUN_ECS: ("libcloud.compute.drivers.ecs", "ECSDriver"), Provider.AZURE: ("libcloud.compute.drivers.azure", "AzureNodeDriver"), Provider.AZURE_ARM: ("libcloud.compute.drivers.azure_arm", "AzureNodeDriver"), + Provider.BRIGHTBOX: ("libcloud.compute.drivers.brightbox", "BrightboxNodeDriver"), + Provider.CLOUDSCALE: ("libcloud.compute.drivers.cloudscale", "CloudscaleNodeDriver"), + Provider.CLOUDSIGMA: ("libcloud.compute.drivers.cloudsigma", "CloudSigmaNodeDriver"), + Provider.CLOUDSTACK: ("libcloud.compute.drivers.cloudstack", "CloudStackNodeDriver"), + Provider.DIGITAL_OCEAN: ("libcloud.compute.drivers.digitalocean", "DigitalOceanNodeDriver"), + Provider.DIMENSIONDATA: ("libcloud.compute.drivers.dimensiondata", "DimensionDataNodeDriver"), Provider.DUMMY: ("libcloud.compute.drivers.dummy", "DummyNodeDriver"), Provider.EC2: ("libcloud.compute.drivers.ec2", "EC2NodeDriver"), - Provider.CLOUDSIGMA: ( - "libcloud.compute.drivers.cloudsigma", - "CloudSigmaNodeDriver", - ), + Provider.EQUINIXMETAL: ("libcloud.compute.drivers.equinixmetal", "EquinixMetalNodeDriver"), + Provider.EUCALYPTUS: ("libcloud.compute.drivers.ec2", "EucNodeDriver"), + Provider.EXOSCALE: ("libcloud.compute.drivers.exoscale", "ExoscaleNodeDriver"), + Provider.GANDI: ("libcloud.compute.drivers.gandi", "GandiNodeDriver"), Provider.GCE: ("libcloud.compute.drivers.gce", "GCENodeDriver"), - Provider.RACKSPACE: ("libcloud.compute.drivers.rackspace", "RackspaceNodeDriver"), - Provider.RACKSPACE_FIRST_GEN: ( - "libcloud.compute.drivers.rackspace", - "RackspaceFirstGenNodeDriver", - ), - Provider.VPSNET: ("libcloud.compute.drivers.vpsnet", "VPSNetNodeDriver"), + Provider.GIG_G8: ("libcloud.compute.drivers.gig_g8", "G8NodeDriver"), + Provider.GRIDSCALE: ("libcloud.compute.drivers.gridscale", "GridscaleNodeDriver"), + Provider.IKOULA: ("libcloud.compute.drivers.ikoula", "IkoulaNodeDriver"), + Provider.KAMATERA: ("libcloud.compute.drivers.kamatera", "KamateraNodeDriver"), + Provider.KTUCLOUD: ("libcloud.compute.drivers.ktucloud", "KTUCloudNodeDriver"), + Provider.KUBEVIRT: ("libcloud.compute.drivers.kubevirt", "KubeVirtNodeDriver"), + Provider.LIBVIRT: ("libcloud.compute.drivers.libvirt_driver", "LibvirtNodeDriver"), Provider.LINODE: ("libcloud.compute.drivers.linode", "LinodeNodeDriver"), - Provider.RIMUHOSTING: ( - "libcloud.compute.drivers.rimuhosting", - "RimuHostingNodeDriver", - ), - Provider.EUCALYPTUS: ("libcloud.compute.drivers.ec2", "EucNodeDriver"), - Provider.OPENNEBULA: ( - "libcloud.compute.drivers.opennebula", - "OpenNebulaNodeDriver", - ), - Provider.BRIGHTBOX: ("libcloud.compute.drivers.brightbox", "BrightboxNodeDriver"), + Provider.MAXIHOST: ("libcloud.compute.drivers.maxihost", "MaxihostNodeDriver"), Provider.NIMBUS: ("libcloud.compute.drivers.ec2", "NimbusNodeDriver"), - Provider.GANDI: ("libcloud.compute.drivers.gandi", "GandiNodeDriver"), - Provider.DIMENSIONDATA: ( - "libcloud.compute.drivers.dimensiondata", - "DimensionDataNodeDriver", - ), + Provider.NTTA: ("libcloud.compute.drivers.ntta", "NTTAmericaNodeDriver"), + Provider.NTTCIS: ("libcloud.compute.drivers.nttcis", "NttCisNodeDriver"), + Provider.ONAPP: ("libcloud.compute.drivers.onapp", "OnAppNodeDriver"), + Provider.OPENNEBULA: ("libcloud.compute.drivers.opennebula", "OpenNebulaNodeDriver"), Provider.OPENSTACK: ("libcloud.compute.drivers.openstack", "OpenStackNodeDriver"), - Provider.VCLOUD: ("libcloud.compute.drivers.vcloud", "VCloudNodeDriver"), + Provider.OUTSCALE: ("libcloud.compute.drivers.outscale", "OutscaleNodeDriver"), + Provider.OUTSCALE_INC: ("libcloud.compute.drivers.ec2", "OutscaleINCNodeDriver"), + Provider.OUTSCALE_SAS: ("libcloud.compute.drivers.ec2", "OutscaleSASNodeDriver"), + Provider.OVH: ("libcloud.compute.drivers.ovh", "OvhNodeDriver"), + Provider.RACKSPACE: ("libcloud.compute.drivers.rackspace", "RackspaceNodeDriver"), + Provider.RACKSPACE_FIRST_GEN: ("libcloud.compute.drivers.rackspace", "RackspaceFirstGenNodeDriver"), + Provider.RIMUHOSTING: ("libcloud.compute.drivers.rimuhosting", "RimuHostingNodeDriver"), + Provider.SCALEWAY: ("libcloud.compute.drivers.scaleway", "ScalewayNodeDriver"), Provider.TERREMARK: ("libcloud.compute.drivers.vcloud", "TerremarkDriver"), - Provider.CLOUDSTACK: ( - "libcloud.compute.drivers.cloudstack", - "CloudStackNodeDriver", - ), - Provider.LIBVIRT: ("libcloud.compute.drivers.libvirt_driver", "LibvirtNodeDriver"), + Provider.UPCLOUD: ("libcloud.compute.drivers.upcloud", "UpcloudDriver"), Provider.VCL: ("libcloud.compute.drivers.vcl", "VCLNodeDriver"), - Provider.KTUCLOUD: ("libcloud.compute.drivers.ktucloud", "KTUCloudNodeDriver"), - Provider.ABIQUO: ("libcloud.compute.drivers.abiquo", "AbiquoNodeDriver"), - Provider.DIGITAL_OCEAN: ( - "libcloud.compute.drivers.digitalocean", - "DigitalOceanNodeDriver", - ), - Provider.EXOSCALE: ("libcloud.compute.drivers.exoscale", "ExoscaleNodeDriver"), - Provider.IKOULA: ("libcloud.compute.drivers.ikoula", "IkoulaNodeDriver"), - Provider.OUTSCALE_SAS: ("libcloud.compute.drivers.ec2", "OutscaleSASNodeDriver"), - Provider.OUTSCALE_INC: ("libcloud.compute.drivers.ec2", "OutscaleINCNodeDriver"), - Provider.OUTSCALE: ("libcloud.compute.drivers.outscale", "OutscaleNodeDriver"), + Provider.VCLOUD: ("libcloud.compute.drivers.vcloud", "VCloudNodeDriver"), + Provider.VPSNET: ("libcloud.compute.drivers.vpsnet", "VPSNetNodeDriver"), Provider.VSPHERE: ("libcloud.compute.drivers.vsphere", "VSphereNodeDriver"), Provider.VULTR: ("libcloud.compute.drivers.vultr", "VultrNodeDriver"), - Provider.AURORACOMPUTE: ( - "libcloud.compute.drivers.auroracompute", - "AuroraComputeNodeDriver", - ), - Provider.EQUINIXMETAL: ( - "libcloud.compute.drivers.equinixmetal", - "EquinixMetalNodeDriver", - ), - Provider.ONAPP: ("libcloud.compute.drivers.onapp", "OnAppNodeDriver"), - Provider.OVH: ("libcloud.compute.drivers.ovh", "OvhNodeDriver"), - Provider.INTERNETSOLUTIONS: ( - "libcloud.compute.drivers.internetsolutions", - "InternetSolutionsNodeDriver", - ), - Provider.NTTA: ("libcloud.compute.drivers.ntta", "NTTAmericaNodeDriver"), - Provider.ALIYUN_ECS: ("libcloud.compute.drivers.ecs", "ECSDriver"), - Provider.CLOUDSCALE: ( - "libcloud.compute.drivers.cloudscale", - "CloudscaleNodeDriver", - ), - Provider.UPCLOUD: ("libcloud.compute.drivers.upcloud", "UpcloudDriver"), - Provider.NTTCIS: ("libcloud.compute.drivers.nttcis", "NttCisNodeDriver"), - Provider.SCALEWAY: ("libcloud.compute.drivers.scaleway", "ScalewayNodeDriver"), - Provider.MAXIHOST: ("libcloud.compute.drivers.maxihost", "MaxihostNodeDriver"), - Provider.GRIDSCALE: ("libcloud.compute.drivers.gridscale", "GridscaleNodeDriver"), - Provider.KAMATERA: ("libcloud.compute.drivers.kamatera", "KamateraNodeDriver"), - Provider.KUBEVIRT: ("libcloud.compute.drivers.kubevirt", "KubeVirtNodeDriver"), - Provider.GIG_G8: ("libcloud.compute.drivers.gig_g8", "G8NodeDriver"), } diff --git a/libcloud/compute/types.py b/libcloud/compute/types.py index 1ff5983c28..89510ede36 100644 --- a/libcloud/compute/types.py +++ b/libcloud/compute/types.py @@ -48,11 +48,10 @@ class Provider(Type): :cvar DUMMY: Example provider :cvar ABIQUO: Abiquo driver :cvar ALIYUN_ECS: Aliyun ECS driver. - :cvar AURORACOMPUTE: Aurora Compute driver. :cvar AZURE: Azure (classic) driver. :cvar AZURE_ARM: Azure Resource Manager (modern) driver. - :cvar CLOUDSIGMA: CloudSigma :cvar CLOUDSCALE: cloudscale.ch + :cvar CLOUDSIGMA: CloudSigma :cvar CLOUDSTACK: CloudStack :cvar DIMENSIONDATA: Dimension Data Cloud :cvar EC2: Amazon AWS. @@ -86,20 +85,19 @@ class Provider(Type): :cvar VULTR: vultr driver. """ - AZURE = "azure" - AZURE_ARM = "azure_arm" - DUMMY = "dummy" ABIQUO = "abiquo" ALIYUN_ECS = "aliyun_ecs" - AURORACOMPUTE = "aurora_compute" + AZURE = "azure" + AZURE_ARM = "azure_arm" BRIGHTBOX = "brightbox" CISCOCCS = "ciscoccs" CLOUDFRAMES = "cloudframes" - CLOUDSIGMA = "cloudsigma" CLOUDSCALE = "cloudscale" + CLOUDSIGMA = "cloudsigma" CLOUDSTACK = "cloudstack" DIGITAL_OCEAN = "digitalocean" DIMENSIONDATA = "dimensiondata" + DUMMY = "dummy" EC2 = "ec2" EQUINIXMETAL = "equinixmetal" EUCALYPTUS = "eucalyptus" @@ -110,7 +108,6 @@ class Provider(Type): GRIDSCALE = "gridscale" IBM = "ibm" IKOULA = "ikoula" - INTERNETSOLUTIONS = "internetsolutions" KAMATERA = "kamatera" KTUCLOUD = "ktucloud" KUBEVIRT = "kubevirt" @@ -124,9 +121,9 @@ class Provider(Type): OPENNEBULA = "opennebula" OPENSTACK = "openstack" OPSOURCE = "opsource" + OUTSCALE = "outscale" OUTSCALE_INC = "outscale_inc" OUTSCALE_SAS = "outscale_sas" - OUTSCALE = "outscale" OVH = "ovh" RACKSPACE = "rackspace" RACKSPACE_FIRST_GEN = "rackspace_first_gen" @@ -152,20 +149,20 @@ class Provider(Type): RACKSPACE_NOVA_LON = "rackspace_nova_lon" RACKSPACE_NOVA_ORD = "rackspace_nova_ord" - EC2_US_EAST = "ec2_us_east" - EC2_US_EAST_OHIO = "ec2_us_east_ohio" - EC2_EU = "ec2_eu_west" # deprecated name - EC2_EU_WEST = "ec2_eu_west" - EC2_EU_WEST2 = "ec2_eu_west_london" - EC2_US_WEST = "ec2_us_west" - EC2_AP_SOUTHEAST = "ec2_ap_southeast" EC2_AP_NORTHEAST = "ec2_ap_northeast" EC2_AP_NORTHEAST1 = "ec2_ap_northeast_1" EC2_AP_NORTHEAST2 = "ec2_ap_northeast_2" - EC2_US_WEST_OREGON = "ec2_us_west_oregon" - EC2_SA_EAST = "ec2_sa_east" + EC2_AP_SOUTHEAST = "ec2_ap_southeast" EC2_AP_SOUTHEAST2 = "ec2_ap_southeast_2" EC2_CA_CENTRAL1 = "ec2_ca_central_1" + EC2_EU = "ec2_eu_west" # deprecated name + EC2_EU_WEST = "ec2_eu_west" + EC2_EU_WEST2 = "ec2_eu_west_london" + EC2_SA_EAST = "ec2_sa_east" + EC2_US_EAST = "ec2_us_east" + EC2_US_EAST_OHIO = "ec2_us_east_ohio" + EC2_US_WEST = "ec2_us_west" + EC2_US_WEST_OREGON = "ec2_us_west_oregon" CLOUDSIGMA_US = "cloudsigma_us" @@ -188,20 +185,20 @@ class Provider(Type): Provider.RACKSPACE_NOVA_LON: Provider.RACKSPACE, Provider.RACKSPACE_NOVA_ORD: Provider.RACKSPACE, # AWS - Provider.EC2_US_EAST: Provider.EC2, - Provider.EC2_US_EAST_OHIO: Provider.EC2, + Provider.EC2_AP_NORTHEAST1: Provider.EC2, + Provider.EC2_AP_NORTHEAST2: Provider.EC2, + Provider.EC2_AP_NORTHEAST: Provider.EC2, + Provider.EC2_AP_SOUTHEAST2: Provider.EC2, + Provider.EC2_AP_SOUTHEAST: Provider.EC2, + Provider.EC2_CA_CENTRAL1: Provider.EC2, Provider.EC2_EU: Provider.EC2, - Provider.EC2_EU_WEST: Provider.EC2, Provider.EC2_EU_WEST2: Provider.EC2, + Provider.EC2_EU_WEST: Provider.EC2, + Provider.EC2_SA_EAST: Provider.EC2, + Provider.EC2_US_EAST: Provider.EC2, + Provider.EC2_US_EAST_OHIO: Provider.EC2, Provider.EC2_US_WEST: Provider.EC2, - Provider.EC2_AP_SOUTHEAST: Provider.EC2, - Provider.EC2_AP_SOUTHEAST2: Provider.EC2, - Provider.EC2_AP_NORTHEAST: Provider.EC2, - Provider.EC2_AP_NORTHEAST1: Provider.EC2, - Provider.EC2_AP_NORTHEAST2: Provider.EC2, Provider.EC2_US_WEST_OREGON: Provider.EC2, - Provider.EC2_SA_EAST: Provider.EC2, - Provider.EC2_CA_CENTRAL1: Provider.EC2, } diff --git a/libcloud/dns/drivers/auroradns.py b/libcloud/dns/drivers/auroradns.py deleted file mode 100644 index 0cd40239b0..0000000000 --- a/libcloud/dns/drivers/auroradns.py +++ /dev/null @@ -1,667 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -AuroraDNS DNS Driver -""" - -import hmac -import json -import base64 -import datetime -from hashlib import sha256 - -from libcloud.dns.base import Zone, Record, DNSDriver -from libcloud.dns.types import ( - RecordType, - ZoneDoesNotExistError, - ZoneAlreadyExistsError, - RecordDoesNotExistError, -) -from libcloud.utils.py3 import b, httplib -from libcloud.common.base import JsonResponse, ConnectionUserAndKey -from libcloud.common.types import LibcloudError, ProviderError, InvalidCredsError - -API_HOST = "api.auroradns.eu" - -# Default TTL required by libcloud, but doesn't do anything in AuroraDNS -DEFAULT_ZONE_TTL = 3600 -DEFAULT_ZONE_TYPE = "master" - -VALID_RECORD_PARAMS_EXTRA = ["ttl", "prio", "health_check_id", "disabled"] - - -class AuroraDNSHealthCheckType: - """ - Healthcheck type. - """ - - HTTP = "HTTP" - HTTPS = "HTTPS" - TCP = "TCP" - - -class HealthCheckError(LibcloudError): - error_type = "HealthCheckError" - - def __init__(self, value, driver, health_check_id): - self.health_check_id = health_check_id - super().__init__(value=value, driver=driver) - - def __str__(self): - return self.__repr__() - - def __repr__(self): - return "<{} in {}, health_check_id={}, value={}>".format( - self.error_type, - repr(self.driver), - self.health_check_id, - self.value, - ) - - -class HealthCheckDoesNotExistError(HealthCheckError): - error_type = "HealthCheckDoesNotExistError" - - -class AuroraDNSHealthCheck: - """ - AuroraDNS Healthcheck resource. - """ - - def __init__( - self, - id, - type, - hostname, - ipaddress, - port, - interval, - path, - threshold, - health, - enabled, - zone, - driver, - extra=None, - ): - """ - :param id: Healthcheck id - :type id: ``str`` - - :param hostname: Hostname or FQDN of the target - :type hostname: ``str`` - - :param ipaddress: IPv4 or IPv6 address of the target - :type ipaddress: ``str`` - - :param port: The port on the target to monitor - :type port: ``int`` - - :param interval: The interval of the health check - :type interval: ``int`` - - :param path: The path to monitor on the target - :type path: ``str`` - - :param threshold: The threshold of before marking a check as failed - :type threshold: ``int`` - - :param health: The current health of the health check - :type health: ``bool`` - - :param enabled: If the health check is currently enabled - :type enabled: ``bool`` - - :param zone: Zone instance. - :type zone: :class:`Zone` - - :param driver: DNSDriver instance. - :type driver: :class:`DNSDriver` - - :param extra: (optional) Extra attributes (driver specific). - :type extra: ``dict`` - """ - self.id = str(id) if id else None - self.type = type - self.hostname = hostname - self.ipaddress = ipaddress - self.port = int(port) if port else None - self.interval = int(interval) - self.path = path - self.threshold = int(threshold) - self.health = bool(health) - self.enabled = bool(enabled) - self.zone = zone - self.driver = driver - self.extra = extra or {} - - def update( - self, - type=None, - hostname=None, - ipaddress=None, - port=None, - interval=None, - path=None, - threshold=None, - enabled=None, - extra=None, - ): - return self.driver.ex_update_healthcheck( - healthcheck=self, - type=type, - hostname=hostname, - ipaddress=ipaddress, - port=port, - path=path, - interval=interval, - threshold=threshold, - enabled=enabled, - extra=extra, - ) - - def delete(self): - return self.driver.ex_delete_healthcheck(healthcheck=self) - - def __repr__(self): - return ( - "" - % ( - self.zone.id, - self.id, - self.type, - self.hostname, - self.ipaddress, - self.port, - self.interval, - self.health, - self.driver.name, - ) - ) - - -class AuroraDNSResponse(JsonResponse): - def success(self): - return self.status in [httplib.OK, httplib.CREATED, httplib.ACCEPTED] - - def parse_error(self): - status = int(self.status) - error = {"driver": self, "value": ""} - - if status == httplib.UNAUTHORIZED: - error["value"] = "Authentication failed" - raise InvalidCredsError(**error) - elif status == httplib.FORBIDDEN: - error["value"] = "Authorization failed" - error["http_code"] = status - raise ProviderError(**error) - elif status == httplib.NOT_FOUND: - context = self.connection.context - if context["resource"] == "zone": - error["zone_id"] = context["id"] - raise ZoneDoesNotExistError(**error) - elif context["resource"] == "record": - error["record_id"] = context["id"] - raise RecordDoesNotExistError(**error) - elif context["resource"] == "healthcheck": - error["health_check_id"] = context["id"] - raise HealthCheckDoesNotExistError(**error) - elif status == httplib.CONFLICT: - context = self.connection.context - if context["resource"] == "zone": - error["zone_id"] = context["id"] - raise ZoneAlreadyExistsError(**error) - elif status == httplib.BAD_REQUEST: - context = self.connection.context - body = self.parse_body() - raise ProviderError(value=body["errormsg"], http_code=status, driver=self) - - -class AuroraDNSConnection(ConnectionUserAndKey): - host = API_HOST - responseCls = AuroraDNSResponse - - def calculate_auth_signature(self, secret_key, method, url, timestamp): - b64_hmac = base64.b64encode( - hmac.new(b(secret_key), b(method) + b(url) + b(timestamp), digestmod=sha256).digest() - ) - - return b64_hmac.decode("utf-8") - - def gen_auth_header(self, api_key, secret_key, method, url, timestamp): - signature = self.calculate_auth_signature(secret_key, method, url, timestamp) - - auth_b64 = base64.b64encode(b("{}:{}".format(api_key, signature))) - return "AuroraDNSv1 %s" % (auth_b64.decode("utf-8")) - - def request(self, action, params=None, data="", headers=None, method="GET"): - if not headers: - headers = {} - if not params: - params = {} - - if method in ("POST", "PUT"): - headers = {"Content-Type": "application/json; charset=UTF-8"} - - t = datetime.datetime.utcnow() - timestamp = t.strftime("%Y%m%dT%H%M%SZ") - - headers["X-AuroraDNS-Date"] = timestamp - headers["Authorization"] = self.gen_auth_header( - self.user_id, self.key, method, action, timestamp - ) - - return super().request( - action=action, params=params, data=data, method=method, headers=headers - ) - - -class AuroraDNSDriver(DNSDriver): - name = "AuroraDNS" - website = "https://www.pcextreme.nl/en/aurora/dns" - connectionCls = AuroraDNSConnection - - RECORD_TYPE_MAP = { - RecordType.A: "A", - RecordType.AAAA: "AAAA", - RecordType.CNAME: "CNAME", - RecordType.MX: "MX", - RecordType.NS: "NS", - RecordType.SOA: "SOA", - RecordType.SRV: "SRV", - RecordType.TXT: "TXT", - RecordType.DS: "DS", - RecordType.PTR: "PTR", - RecordType.SSHFP: "SSHFP", - RecordType.TLSA: "TLSA", - } - - HEALTHCHECK_TYPE_MAP = { - AuroraDNSHealthCheckType.HTTP: "HTTP", - AuroraDNSHealthCheckType.HTTPS: "HTTPS", - AuroraDNSHealthCheckType.TCP: "TCP", - } - - def iterate_zones(self): - res = self.connection.request("/zones") - for zone in res.parse_body(): - yield self.__res_to_zone(zone) - - def iterate_records(self, zone): - self.connection.set_context({"resource": "zone", "id": zone.id}) - res = self.connection.request("/zones/%s/records" % zone.id) - - for record in res.parse_body(): - yield self.__res_to_record(zone, record) - - def get_zone(self, zone_id): - self.connection.set_context({"resource": "zone", "id": zone_id}) - res = self.connection.request("/zones/%s" % zone_id) - zone = res.parse_body() - return self.__res_to_zone(zone) - - def get_record(self, zone_id, record_id): - self.connection.set_context({"resource": "record", "id": record_id}) - res = self.connection.request("/zones/{}/records/{}".format(zone_id, record_id)) - record = res.parse_body() - - zone = self.get_zone(zone_id) - - return self.__res_to_record(zone, record) - - def create_zone(self, domain, type="master", ttl=None, extra=None): - self.connection.set_context({"resource": "zone", "id": domain}) - res = self.connection.request("/zones", method="POST", data=json.dumps({"name": domain})) - zone = res.parse_body() - return self.__res_to_zone(zone) - - def create_record(self, name, zone, type, data, extra=None): - if name is None: - name = "" - - rdata = {"name": name, "type": self.RECORD_TYPE_MAP[type], "content": data} - - rdata = self.__merge_extra_data(rdata, extra) - - if "ttl" not in rdata: - rdata["ttl"] = DEFAULT_ZONE_TTL - - self.connection.set_context({"resource": "zone", "id": zone.id}) - res = self.connection.request( - "/zones/%s/records" % zone.id, method="POST", data=json.dumps(rdata) - ) - - record = res.parse_body() - return self.__res_to_record(zone, record) - - def delete_zone(self, zone): - self.connection.set_context({"resource": "zone", "id": zone.id}) - self.connection.request("/zones/%s" % zone.id, method="DELETE") - return True - - def delete_record(self, record): - self.connection.set_context({"resource": "record", "id": record.id}) - self.connection.request( - "/zones/{}/records/{}".format(record.zone.id, record.id), method="DELETE" - ) - return True - - def list_record_types(self): - types = [] - for record_type in self.RECORD_TYPE_MAP.keys(): - types.append(record_type) - - return types - - def update_record(self, record, name, type, data, extra=None): - rdata = {} - - if name is not None: - rdata["name"] = name - - if type is not None: - rdata["type"] = self.RECORD_TYPE_MAP[type] - - if data is not None: - rdata["content"] = data - - rdata = self.__merge_extra_data(rdata, extra) - - self.connection.set_context({"resource": "record", "id": record.id}) - self.connection.request( - "/zones/{}/records/{}".format(record.zone.id, record.id), - method="PUT", - data=json.dumps(rdata), - ) - - return self.get_record(record.zone.id, record.id) - - def ex_list_healthchecks(self, zone): - """ - List all Health Checks in a zone. - - :param zone: Zone to list health checks for. - :type zone: :class:`Zone` - - :return: ``list`` of :class:`AuroraDNSHealthCheck` - """ - healthchecks = [] - self.connection.set_context({"resource": "zone", "id": zone.id}) - res = self.connection.request("/zones/%s/health_checks" % zone.id) - - for healthcheck in res.parse_body(): - healthchecks.append(self.__res_to_healthcheck(zone, healthcheck)) - - return healthchecks - - def ex_get_healthcheck(self, zone, health_check_id): - """ - Get a single Health Check from a zone - - :param zone: Zone in which the health check is - :type zone: :class:`Zone` - - :param health_check_id: ID of the required health check - :type health_check_id: ``str`` - - :return: :class:`AuroraDNSHealthCheck` - """ - self.connection.set_context({"resource": "healthcheck", "id": health_check_id}) - res = self.connection.request("/zones/{}/health_checks/{}".format(zone.id, health_check_id)) - check = res.parse_body() - - return self.__res_to_healthcheck(zone, check) - - def ex_create_healthcheck( - self, - zone, - type, - hostname, - port, - path, - interval, - threshold, - ipaddress=None, - enabled=True, - extra=None, - ): - """ - Create a new Health Check in a zone - - :param zone: Zone in which the health check should be created - :type zone: :class:`Zone` - - :param type: The type of health check to be created - :type type: :class:`AuroraDNSHealthCheckType` - - :param hostname: The hostname of the target to monitor - :type hostname: ``str`` - - :param port: The port of the target to monitor. E.g. 80 for HTTP - :type port: ``int`` - - :param path: The path of the target to monitor. Only used by HTTP - at this moment. Usually this is simple /. - :type path: ``str`` - - :param interval: The interval of checks. 10, 30 or 60 seconds. - :type interval: ``int`` - - :param threshold: The threshold of failures before the healthcheck is - marked as failed. - :type threshold: ``int`` - - :param ipaddress: (optional) The IP Address of the target to monitor. - You can pass a empty string if this is not required. - :type ipaddress: ``str`` - - :param enabled: (optional) If this healthcheck is enabled to run - :type enabled: ``bool`` - - :param extra: (optional) Extra attributes (driver specific). - :type extra: ``dict`` - - :return: :class:`AuroraDNSHealthCheck` - """ - cdata = { - "type": self.HEALTHCHECK_TYPE_MAP[type], - "hostname": hostname, - "ipaddress": ipaddress, - "port": int(port), - "interval": int(interval), - "path": path, - "threshold": int(threshold), - "enabled": enabled, - } - - self.connection.set_context({"resource": "zone", "id": zone.id}) - res = self.connection.request( - "/zones/%s/health_checks" % zone.id, method="POST", data=json.dumps(cdata) - ) - - healthcheck = res.parse_body() - return self.__res_to_healthcheck(zone, healthcheck) - - def ex_update_healthcheck( - self, - healthcheck, - type=None, - hostname=None, - ipaddress=None, - port=None, - path=None, - interval=None, - threshold=None, - enabled=None, - extra=None, - ): - """ - Update an existing Health Check - - :param zone: The healthcheck which has to be updated - :type zone: :class:`AuroraDNSHealthCheck` - - :param type: (optional) The type of health check to be created - :type type: :class:`AuroraDNSHealthCheckType` - - :param hostname: (optional) The hostname of the target to monitor - :type hostname: ``str`` - - :param ipaddress: (optional) The IP Address of the target to monitor. - You can pass a empty string if this is not required. - :type ipaddress: ``str`` - - :param port: (optional) The port of the target to monitor. E.g. 80 - for HTTP - :type port: ``int`` - - :param path: (optional) The path of the target to monitor. - Only used by HTTP at this moment. Usually just '/'. - :type path: ``str`` - - :param interval: (optional) The interval of checks. - 10, 30 or 60 seconds. - :type interval: ``int`` - - :param threshold: (optional) The threshold of failures before the - healthcheck is marked as failed. - :type threshold: ``int`` - - :param enabled: (optional) If this healthcheck is enabled to run - :type enabled: ``bool`` - - :param extra: (optional) Extra attributes (driver specific). - :type extra: ``dict`` - - :return: :class:`AuroraDNSHealthCheck` - """ - cdata = {} - - if type is not None: - cdata["type"] = self.HEALTHCHECK_TYPE_MAP[type] - - if hostname is not None: - cdata["hostname"] = hostname - - if ipaddress is not None: - if len(ipaddress) == 0: - cdata["ipaddress"] = None - else: - cdata["ipaddress"] = ipaddress - - if port is not None: - cdata["port"] = int(port) - - if path is not None: - cdata["path"] = path - - if interval is not None: - cdata["interval"] = int(interval) - - if threshold is not None: - cdata["threshold"] = threshold - - if enabled is not None: - cdata["enabled"] = bool(enabled) - - self.connection.set_context({"resource": "healthcheck", "id": healthcheck.id}) - - self.connection.request( - "/zones/{}/health_checks/{}".format(healthcheck.zone.id, healthcheck.id), - method="PUT", - data=json.dumps(cdata), - ) - - return self.ex_get_healthcheck(healthcheck.zone, healthcheck.id) - - def ex_delete_healthcheck(self, healthcheck): - """ - Remove an existing Health Check - - :param zone: The healthcheck which has to be removed - :type zone: :class:`AuroraDNSHealthCheck` - """ - self.connection.set_context({"resource": "healthcheck", "id": healthcheck.id}) - - self.connection.request( - "/zones/{}/health_checks/{}".format(healthcheck.zone.id, healthcheck.id), - method="DELETE", - ) - return True - - def __res_to_record(self, zone, record): - if len(record["name"]) == 0: - name = None - else: - name = record["name"] - - extra = {} - extra["created"] = record["created"] - extra["modified"] = record["modified"] - extra["disabled"] = record["disabled"] - extra["ttl"] = record["ttl"] - extra["priority"] = record["prio"] - - return Record( - id=record["id"], - name=name, - type=record["type"], - data=record["content"], - zone=zone, - driver=self.connection.driver, - ttl=record["ttl"], - extra=extra, - ) - - def __res_to_zone(self, zone): - return Zone( - id=zone["id"], - domain=zone["name"], - type=DEFAULT_ZONE_TYPE, - ttl=DEFAULT_ZONE_TTL, - driver=self.connection.driver, - extra={ - "created": zone["created"], - "servers": zone["servers"], - "account_id": zone["account_id"], - "cluster_id": zone["cluster_id"], - }, - ) - - def __res_to_healthcheck(self, zone, healthcheck): - return AuroraDNSHealthCheck( - id=healthcheck["id"], - type=healthcheck["type"], - hostname=healthcheck["hostname"], - ipaddress=healthcheck["ipaddress"], - health=healthcheck["health"], - threshold=healthcheck["threshold"], - path=healthcheck["path"], - interval=healthcheck["interval"], - port=healthcheck["port"], - enabled=healthcheck["enabled"], - zone=zone, - driver=self.connection.driver, - ) - - def __merge_extra_data(self, rdata, extra): - if extra is not None: - for param in VALID_RECORD_PARAMS_EXTRA: - if param in extra: - rdata[param] = extra[param] - - return rdata diff --git a/libcloud/dns/providers.py b/libcloud/dns/providers.py index 7469275897..518625be57 100644 --- a/libcloud/dns/providers.py +++ b/libcloud/dns/providers.py @@ -29,34 +29,30 @@ DRIVERS = { Provider.DUMMY: ("libcloud.dns.drivers.dummy", "DummyDNSDriver"), - Provider.LINODE: ("libcloud.dns.drivers.linode", "LinodeDNSDriver"), - Provider.ZERIGO: ("libcloud.dns.drivers.zerigo", "ZerigoDNSDriver"), - Provider.RACKSPACE: ("libcloud.dns.drivers.rackspace", "RackspaceDNSDriver"), - Provider.ROUTE53: ("libcloud.dns.drivers.route53", "Route53DNSDriver"), + Provider.BUDDYNS: ("libcloud.dns.drivers.buddyns", "BuddyNSDNSDriver"), + Provider.CLOUDFLARE: ("libcloud.dns.drivers.cloudflare", "CloudFlareDNSDriver"), + Provider.DIGITAL_OCEAN: ("libcloud.dns.drivers.digitalocean", "DigitalOceanDNSDriver"), + Provider.DNSIMPLE: ("libcloud.dns.drivers.dnsimple", "DNSimpleDNSDriver"), + Provider.DURABLEDNS: ("libcloud.dns.drivers.durabledns", "DurableDNSDriver"), Provider.GANDI: ("libcloud.dns.drivers.gandi", "GandiDNSDriver"), Provider.GANDI_LIVE: ("libcloud.dns.drivers.gandi_live", "GandiLiveDNSDriver"), + Provider.GODADDY: ("libcloud.dns.drivers.godaddy", "GoDaddyDNSDriver"), Provider.GOOGLE: ("libcloud.dns.drivers.google", "GoogleDNSDriver"), - Provider.DIGITAL_OCEAN: ( - "libcloud.dns.drivers.digitalocean", - "DigitalOceanDNSDriver", - ), - Provider.WORLDWIDEDNS: ("libcloud.dns.drivers.worldwidedns", "WorldWideDNSDriver"), - Provider.DNSIMPLE: ("libcloud.dns.drivers.dnsimple", "DNSimpleDNSDriver"), - Provider.POINTDNS: ("libcloud.dns.drivers.pointdns", "PointDNSDriver"), - Provider.VULTR: ("libcloud.dns.drivers.vultr", "VultrDNSDriver"), + Provider.LINODE: ("libcloud.dns.drivers.linode", "LinodeDNSDriver"), Provider.LIQUIDWEB: ("libcloud.dns.drivers.liquidweb", "LiquidWebDNSDriver"), - Provider.ZONOMI: ("libcloud.dns.drivers.zonomi", "ZonomiDNSDriver"), - Provider.DURABLEDNS: ("libcloud.dns.drivers.durabledns", "DurableDNSDriver"), - Provider.AURORADNS: ("libcloud.dns.drivers.auroradns", "AuroraDNSDriver"), - Provider.GODADDY: ("libcloud.dns.drivers.godaddy", "GoDaddyDNSDriver"), - Provider.CLOUDFLARE: ("libcloud.dns.drivers.cloudflare", "CloudFlareDNSDriver"), + Provider.LUADNS: ("libcloud.dns.drivers.luadns", "LuadnsDNSDriver"), Provider.NFSN: ("libcloud.dns.drivers.nfsn", "NFSNDNSDriver"), Provider.NSONE: ("libcloud.dns.drivers.nsone", "NsOneDNSDriver"), - Provider.LUADNS: ("libcloud.dns.drivers.luadns", "LuadnsDNSDriver"), - Provider.BUDDYNS: ("libcloud.dns.drivers.buddyns", "BuddyNSDNSDriver"), - Provider.POWERDNS: ("libcloud.dns.drivers.powerdns", "PowerDNSDriver"), Provider.ONAPP: ("libcloud.dns.drivers.onapp", "OnAppDNSDriver"), + Provider.POINTDNS: ("libcloud.dns.drivers.pointdns", "PointDNSDriver"), + Provider.POWERDNS: ("libcloud.dns.drivers.powerdns", "PowerDNSDriver"), + Provider.RACKSPACE: ("libcloud.dns.drivers.rackspace", "RackspaceDNSDriver"), Provider.RCODEZERO: ("libcloud.dns.drivers.rcodezero", "RcodeZeroDNSDriver"), + Provider.ROUTE53: ("libcloud.dns.drivers.route53", "Route53DNSDriver"), + Provider.VULTR: ("libcloud.dns.drivers.vultr", "VultrDNSDriver"), + Provider.WORLDWIDEDNS: ("libcloud.dns.drivers.worldwidedns", "WorldWideDNSDriver"), + Provider.ZERIGO: ("libcloud.dns.drivers.zerigo", "ZerigoDNSDriver"), + Provider.ZONOMI: ("libcloud.dns.drivers.zonomi", "ZonomiDNSDriver"), # Deprecated Provider.RACKSPACE_US: ("libcloud.dns.drivers.rackspace", "RackspaceUSDNSDriver"), Provider.RACKSPACE_UK: ("libcloud.dns.drivers.rackspace", "RackspaceUKDNSDriver"), diff --git a/libcloud/dns/types.py b/libcloud/dns/types.py index ec2cb7b45f..76aa213e72 100644 --- a/libcloud/dns/types.py +++ b/libcloud/dns/types.py @@ -37,7 +37,6 @@ class Provider: """ DUMMY = "dummy" - AURORADNS = "auroradns" BUDDYNS = "buddyns" CLOUDFLARE = "cloudflare" DIGITAL_OCEAN = "digitalocean" diff --git a/libcloud/storage/drivers/auroraobjects.py b/libcloud/storage/drivers/auroraobjects.py deleted file mode 100644 index ad128117f8..0000000000 --- a/libcloud/storage/drivers/auroraobjects.py +++ /dev/null @@ -1,50 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from libcloud.common.types import LibcloudError -from libcloud.storage.providers import Provider -from libcloud.storage.drivers.s3 import BaseS3Connection, BaseS3StorageDriver - -__all__ = ["AuroraObjectsStorageDriver"] - -AURORA_OBJECTS_EU_HOST = "o.auroraobjects.eu" - -NO_CDN_SUPPORT_ERROR = "CDN is not supported by AuroraObjects" - - -class BaseAuroraObjectsConnection(BaseS3Connection): - host = AURORA_OBJECTS_EU_HOST - - -class BaseAuroraObjectsStorageDriver(BaseS3StorageDriver): - type = Provider.AURORAOBJECTS - name = "PCextreme AuroraObjects" - website = "https://www.pcextreme.com/aurora/objects" - - -class AuroraObjectsStorageDriver(BaseAuroraObjectsStorageDriver): - connectionCls = BaseAuroraObjectsConnection - - def enable_container_cdn(self, *argv): - raise LibcloudError(NO_CDN_SUPPORT_ERROR, driver=self) - - def enable_object_cdn(self, *argv): - raise LibcloudError(NO_CDN_SUPPORT_ERROR, driver=self) - - def get_container_cdn_url(self, *argv): - raise LibcloudError(NO_CDN_SUPPORT_ERROR, driver=self) - - def get_object_cdn_url(self, *argv): - raise LibcloudError(NO_CDN_SUPPORT_ERROR, driver=self) diff --git a/libcloud/storage/providers.py b/libcloud/storage/providers.py index 2bd1db4c68..57be9f0865 100644 --- a/libcloud/storage/providers.py +++ b/libcloud/storage/providers.py @@ -78,10 +78,6 @@ "AzureBlobsStorageDriver", ), Provider.KTUCLOUD: ("libcloud.storage.drivers.ktucloud", "KTUCloudStorageDriver"), - Provider.AURORAOBJECTS: ( - "libcloud.storage.drivers.auroraobjects", - "AuroraObjectsStorageDriver", - ), Provider.BACKBLAZE_B2: ( "libcloud.storage.drivers.backblaze_b2", "BackblazeB2StorageDriver", diff --git a/libcloud/storage/types.py b/libcloud/storage/types.py index 41d524f99d..bbd5692ac1 100644 --- a/libcloud/storage/types.py +++ b/libcloud/storage/types.py @@ -38,7 +38,6 @@ class Provider: :cvar DUMMY: Example provider :cvar ALIYUN_OSS: Aliyun OSS storage driver - :cvar AURORAOBJECTS: AuroraObjects storage driver :cvar AZURE_BLOBS: Azure Blob Storage driver :cvar BACKBLAZE_B2: Backblaze B2 Cloud Storage driver :cvar CLOUDFILES: CloudFiles @@ -50,31 +49,30 @@ class Provider: :cvar NINEFOLD: Ninefold :cvar OPENSTACK_SWIFT: OpenStack Swift driver :cvar S3: Amazon S3 US - :cvar S3_AP_NORTHEAST: Amazon S3 Asia North East (Tokyo) :cvar S3_AP_NORTHEAST1: Amazon S3 Asia North East (Tokyo) :cvar S3_AP_NORTHEAST2: Amazon S3 Asia North East (Seoul) + :cvar S3_AP_NORTHEAST: Amazon S3 Asia North East (Tokyo) :cvar S3_AP_SOUTH: Amazon S3 Asia South (Mumbai) - :cvar S3_AP_SOUTHEAST: Amazon S3 Asia South East (Singapore) :cvar S3_AP_SOUTHEAST2: Amazon S3 Asia South East 2 (Sydney) + :cvar S3_AP_SOUTHEAST: Amazon S3 Asia South East (Singapore) :cvar S3_CA_CENTRAL: Amazon S3 Canada (Central) :cvar S3_CN_NORTH: Amazon S3 CN North (Beijing) - :cvar S3_EU_WEST: Amazon S3 EU West (Ireland) - :cvar S3_EU_WEST2: Amazon S3 EU West 2 (London) - :cvar S3_EU_WEST3: Amazon S3 EU West 3 (Paris) :cvar S3_EU_CENTRAL: Amazon S3 EU Central (Frankfurt) :cvar S3_EU_NORTH1: Amazon S3 EU North 1 (Stockholm) + :cvar S3_EU_WEST2: Amazon S3 EU West 2 (London) + :cvar S3_EU_WEST3: Amazon S3 EU West 3 (Paris) + :cvar S3_EU_WEST: Amazon S3 EU West (Ireland) + :cvar S3_RGW: S3 RGW + :cvar S3_RGW_OUTSCALE: OUTSCALE S3 RGW :cvar S3_SA_EAST: Amazon S3 South America East (Sao Paulo) :cvar S3_US_EAST2: Amazon S3 US East 2 (Ohio) + :cvar S3_US_GOV_WEST: Amazon S3 GovCloud (US) :cvar S3_US_WEST: Amazon S3 US West (Northern California) :cvar S3_US_WEST_OREGON: Amazon S3 US West 2 (Oregon) - :cvar S3_US_GOV_WEST: Amazon S3 GovCloud (US) - :cvar S3_RGW: S3 RGW - :cvar S3_RGW_OUTSCALE: OUTSCALE S3 RGW """ DUMMY = "dummy" ALIYUN_OSS = "aliyun_oss" - AURORAOBJECTS = "auroraobjects" AZURE_BLOBS = "azure_blobs" BACKBLAZE_B2 = "backblaze_b2" CLOUDFILES = "cloudfiles" @@ -82,9 +80,11 @@ class Provider: GOOGLE_STORAGE = "google_storage" KTUCLOUD = "ktucloud" LOCAL = "local" + MINIO = "minio" NIMBUS = "nimbus" NINEFOLD = "ninefold" OPENSTACK_SWIFT = "openstack_swift" + OVH = "ovh" S3 = "s3" S3_AP_NORTHEAST = "s3_ap_northeast" S3_AP_NORTHEAST1 = "s3_ap_northeast_1" @@ -95,21 +95,19 @@ class Provider: S3_CA_CENTRAL = "s3_ca_central" S3_CN_NORTH = "s3_cn_north" S3_CN_NORTHWEST = "s3_cn_northwest" + S3_EU_CENTRAL = "s3_eu_central" + S3_EU_NORTH1 = "s3_eu_north_1" S3_EU_WEST = "s3_eu_west" S3_EU_WEST2 = "s3_eu_west_2" S3_EU_WEST3 = "s3_eu_west_3" - S3_EU_CENTRAL = "s3_eu_central" - S3_EU_NORTH1 = "s3_eu_north_1" + S3_RGW = "s3_rgw" + S3_RGW_OUTSCALE = "s3_rgw_outscale" S3_SA_EAST = "s3_sa_east" S3_US_EAST2 = "s3_us_east_2" + S3_US_GOV_WEST = "s3_us_gov_west" S3_US_WEST = "s3_us_west" S3_US_WEST_OREGON = "s3_us_west_oregon" - S3_US_GOV_WEST = "s3_us_gov_west" - S3_RGW = "s3_rgw" - S3_RGW_OUTSCALE = "s3_rgw_outscale" - MINIO = "minio" SCALEWAY = "scaleway" - OVH = "ovh" # Deprecated CLOUDFILES_US = "cloudfiles_us" diff --git a/libcloud/test/dns/fixtures/auroradns/zone_create.json b/libcloud/test/dns/fixtures/auroradns/zone_create.json deleted file mode 100644 index 5f3694a458..0000000000 --- a/libcloud/test/dns/fixtures/auroradns/zone_create.json +++ /dev/null @@ -1,11 +0,0 @@ - { - "created":"2015-05-21T13:51:12Z", - "id":"ffb62570-8414-4578-a346-526b44e320b7", - "account_id": "7be65324-6e97-4b73-9427-0f4abcf7d216", - "cluster_id": "734f21f4-765e-4fea-b571-eedef73b20c5", - "name":"example.com", - "servers":[ - "ns1.auroradns.eu", - "ns2.auroradns.info" - ] - } diff --git a/libcloud/test/dns/fixtures/auroradns/zone_example_com.json b/libcloud/test/dns/fixtures/auroradns/zone_example_com.json deleted file mode 100644 index 5f3694a458..0000000000 --- a/libcloud/test/dns/fixtures/auroradns/zone_example_com.json +++ /dev/null @@ -1,11 +0,0 @@ - { - "created":"2015-05-21T13:51:12Z", - "id":"ffb62570-8414-4578-a346-526b44e320b7", - "account_id": "7be65324-6e97-4b73-9427-0f4abcf7d216", - "cluster_id": "734f21f4-765e-4fea-b571-eedef73b20c5", - "name":"example.com", - "servers":[ - "ns1.auroradns.eu", - "ns2.auroradns.info" - ] - } diff --git a/libcloud/test/dns/fixtures/auroradns/zone_example_com_health_check.json b/libcloud/test/dns/fixtures/auroradns/zone_example_com_health_check.json deleted file mode 100644 index a00f0ce99f..0000000000 --- a/libcloud/test/dns/fixtures/auroradns/zone_example_com_health_check.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "created": "2015-08-07T13:56:59Z", - "enabled": true, - "health": true, - "hostname": "www.pcextreme.nl", - "id": "9990ec60-d592-4673-9e7e-9220ed42ee0b", - "interval": 10, - "ipaddress": "109.72.87.252", - "next_run": "2015-08-10T14:22:32Z", - "path": "/", - "port": 8080, - "threshold": 3, - "type": "HTTP" -} \ No newline at end of file diff --git a/libcloud/test/dns/fixtures/auroradns/zone_example_com_health_checks.json b/libcloud/test/dns/fixtures/auroradns/zone_example_com_health_checks.json deleted file mode 100644 index 177fdebf44..0000000000 --- a/libcloud/test/dns/fixtures/auroradns/zone_example_com_health_checks.json +++ /dev/null @@ -1,44 +0,0 @@ -[ - { - "created": "2015-08-07T13:56:59Z", - "enabled": true, - "health": true, - "hostname": "www.pcextreme.nl", - "id": "9990ec60-d592-4673-9e7e-9220ed42ee0b", - "interval": 60, - "ipaddress": "109.72.87.252", - "next_run": "2015-08-10T14:22:32Z", - "path": "/", - "port": 80, - "threshold": 3, - "type": "HTTP" - }, - { - "created": "2015-08-07T13:56:59Z", - "enabled": true, - "health": true, - "hostname": "www.pcextreme.nl", - "id": "3f29a813-6a25-41c5-a45e-f771347de526", - "interval": 60, - "ipaddress": "2a00:f10:101::3eb:1", - "next_run": "2015-08-10T14:22:32Z", - "path": "/", - "port": 80, - "threshold": 3, - "type": "HTTP" - }, - { - "created": "2015-08-07T13:56:59Z", - "enabled": true, - "health": true, - "hostname": "www.pcextreme.nl", - "id": "7719a4c5-b319-46e7-a917-3dc57bdab1d4", - "interval": 60, - "ipaddress": null, - "next_run": "2015-08-10T14:22:32Z", - "path": "/", - "port": 80, - "threshold": 3, - "type": "HTTP" - } -] \ No newline at end of file diff --git a/libcloud/test/dns/fixtures/auroradns/zone_example_com_record_localhost.json b/libcloud/test/dns/fixtures/auroradns/zone_example_com_record_localhost.json deleted file mode 100644 index baf7fdf0df..0000000000 --- a/libcloud/test/dns/fixtures/auroradns/zone_example_com_record_localhost.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "id": "5592f1ff", - "content": "127.0.0.1", - "disabled": false, - "health_check_id": null, - "name": "localhost", - "prio": null, - "ttl": 900, - "type": "A", - "created": "2015-08-07T13:56:51Z", - "modified": "2015-08-07T14:11:40Z" -} diff --git a/libcloud/test/dns/fixtures/auroradns/zone_example_com_records.json b/libcloud/test/dns/fixtures/auroradns/zone_example_com_records.json deleted file mode 100644 index c10aa1b657..0000000000 --- a/libcloud/test/dns/fixtures/auroradns/zone_example_com_records.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "content":"ns1.auroradns.eu admin.auroradns.eu 2015021901 86400 7200 604800 300", - "created":"2015-08-07T13:56:51Z", - "disabled":false, - "health_check_id":null, - "id":"8f4a27b2-0b15-4ed7-b652-813b23c2027f", - "modified":"2015-08-07T14:11:40Z", - "name":"", - "prio":null, - "ttl":3600, - "type":"SOA" - }, - { - "content":"ns1.auroradns.eu", - "created":"2015-08-07T13:56:50Z", - "disabled":false, - "health_check_id":null, - "id":"4d8aaffc-2e43-49c6-82cc-a26d01a159bc", - "modified":"2015-08-07T14:11:40Z", - "name":"", - "prio":null, - "ttl":3600, - "type":"NS" - }, - { - "content":"109.72.87.137", - "created":"2015-08-07T13:56:50Z", - "disabled":false, - "health_check_id":"aecad772-9234-4722-9a05-66ad5ff6a5b0", - "id":"30245a1a-5569-4136-900f-864f088c60ee", - "modified":"2015-08-10T14:10:17Z", - "name":"smtp", - "prio":null, - "ttl":3600, - "type":"A" - } -] diff --git a/libcloud/test/dns/fixtures/auroradns/zone_list.json b/libcloud/test/dns/fixtures/auroradns/zone_list.json deleted file mode 100644 index c96e113e1d..0000000000 --- a/libcloud/test/dns/fixtures/auroradns/zone_list.json +++ /dev/null @@ -1,24 +0,0 @@ -[ - { - "created":"2015-05-21T13:51:12Z", - "id":"ffb62570-8414-4578-a346-526b44e320b7", - "account_id": "7be65324-6e97-4b73-9427-0f4abcf7d216", - "cluster_id": "734f21f4-765e-4fea-b571-eedef73b20c5", - "name":"auroradns1.eu", - "servers":[ - "ns1.auroradns.eu", - "ns2.auroradns.info" - ] - }, - { - "created":"2015-07-07T08:15:14Z", - "id":"e3c012266-72e5-48a1-ad3d-ffa7daa06dc5", - "account_id": "78971987-f0a0-4714-8926-5d9206601aa9", - "cluster_id": "d842505b-8dd9-4597-a34d-93fde6b61818", - "name":"auroradns2.nl", - "servers":[ - "ns1.auroradns.eu", - "ns2.auroradns.info" - ] - } -] diff --git a/libcloud/test/dns/test_auroradns.py b/libcloud/test/dns/test_auroradns.py deleted file mode 100644 index 5da4ebd961..0000000000 --- a/libcloud/test/dns/test_auroradns.py +++ /dev/null @@ -1,326 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and - -import sys -import json - -from libcloud.test import MockHttp, LibcloudTestCase, unittest -from libcloud.dns.base import Zone -from libcloud.dns.types import ( - RecordType, - ZoneDoesNotExistError, - ZoneAlreadyExistsError, - RecordDoesNotExistError, -) -from libcloud.utils.py3 import httplib -from libcloud.common.types import ProviderError -from libcloud.test.secrets import DNS_PARAMS_AURORADNS -from libcloud.test.file_fixtures import DNSFileFixtures -from libcloud.dns.drivers.auroradns import AuroraDNSDriver, AuroraDNSHealthCheckType - - -class AuroraDNSDriverTests(LibcloudTestCase): - def setUp(self): - AuroraDNSDriver.connectionCls.conn_class = AuroraDNSDriverMockHttp - AuroraDNSDriverMockHttp.type = None - self.driver = AuroraDNSDriver(*DNS_PARAMS_AURORADNS) - - def test_403_status_code(self): - AuroraDNSDriverMockHttp.type = "HTTP_FORBIDDEN" - - with self.assertRaises(ProviderError) as ctx: - self.driver.list_zones() - - self.assertEqual(ctx.exception.value, "Authorization failed") - self.assertEqual(ctx.exception.http_code, 403) - - def test_merge_extra_data(self): - rdata = {"name": "localhost", "type": RecordType.A, "content": "127.0.0.1"} - - params = {"ttl": 900, "prio": 0, "health_check_id": None, "disabled": False} - - for param in params: - extra = {param: params[param]} - - data = self.driver._AuroraDNSDriver__merge_extra_data(rdata, extra) - self.assertEqual(data["content"], "127.0.0.1") - self.assertEqual(data["type"], RecordType.A) - self.assertEqual(data[param], params[param]) - self.assertEqual(data["name"], "localhost") - - def test_res_to_record(self): - res = { - "id": 2, - "name": "www", - "type": "AAAA", - "content": "2001:db8:100", - "created": 1234, - "modified": 2345, - "disabled": False, - "ttl": 1800, - "prio": 10, - } - - zone = Zone(id=1, domain="example.com", type=None, ttl=60, driver=self.driver) - - record = self.driver._AuroraDNSDriver__res_to_record(zone, res) - self.assertEqual(res["name"], record.name) - self.assertEqual(res["ttl"], record.extra["ttl"]) - self.assertEqual(res["prio"], record.extra["priority"]) - self.assertEqual(res["type"], record.type) - self.assertEqual(res["content"], record.data) - self.assertEqual(zone, record.zone) - self.assertEqual(self.driver, record.driver) - - def test_record_types(self): - types = self.driver.list_record_types() - self.assertEqual(len(types), 12) - self.assertTrue(RecordType.A in types) - self.assertTrue(RecordType.AAAA in types) - self.assertTrue(RecordType.MX in types) - self.assertTrue(RecordType.NS in types) - self.assertTrue(RecordType.SOA in types) - self.assertTrue(RecordType.TXT in types) - self.assertTrue(RecordType.CNAME in types) - self.assertTrue(RecordType.SRV in types) - self.assertTrue(RecordType.DS in types) - self.assertTrue(RecordType.SSHFP in types) - self.assertTrue(RecordType.PTR in types) - self.assertTrue(RecordType.TLSA in types) - - def test_list_zones(self): - zones = self.driver.list_zones() - self.assertEqual(len(zones), 2) - for zone in zones: - self.assertTrue(zone.domain.startswith("auroradns")) - - def test_create_zone(self): - zone = self.driver.create_zone("example.com") - self.assertEqual(zone.domain, "example.com") - - def test_get_zone(self): - zone = self.driver.get_zone("example.com") - self.assertEqual(zone.domain, "example.com") - self.assertEqual(zone.id, "ffb62570-8414-4578-a346-526b44e320b7") - - def test_delete_zone(self): - zone = self.driver.get_zone("example.com") - self.assertTrue(self.driver.delete_zone(zone)) - - def test_create_record(self): - zone = self.driver.get_zone("example.com") - record = zone.create_record( - name="localhost", type=RecordType.A, data="127.0.0.1", extra={"ttl": 900} - ) - self.assertEqual(record.id, "5592f1ff") - self.assertEqual(record.name, "localhost") - self.assertEqual(record.data, "127.0.0.1") - self.assertEqual(record.type, RecordType.A) - self.assertEqual(record.extra["ttl"], 900) - - def test_get_record(self): - zone = self.driver.get_zone("example.com") - record = self.driver.get_record(zone.id, "5592f1ff") - self.assertEqual(record.id, "5592f1ff") - self.assertEqual(record.name, "localhost") - self.assertEqual(record.data, "127.0.0.1") - self.assertEqual(record.type, RecordType.A) - self.assertEqual(record.extra["ttl"], 900) - self.assertEqual(record.extra["priority"], None) - - def test_update_record(self): - ttl = 900 - zone = self.driver.get_zone("example.com") - record = self.driver.get_record(zone.id, "5592f1ff") - record = record.update(extra={"ttl": ttl}) - self.assertEqual(record.extra["ttl"], ttl) - - def test_delete_record(self): - zone = self.driver.get_zone("example.com") - record = self.driver.get_record(zone.id, "5592f1ff") - self.assertTrue(record.delete()) - - def test_list_records(self): - zone = self.driver.get_zone("example.com") - for record in zone.list_records(): - self.assertEqual(record.extra["ttl"], 3600) - self.assertEqual(record.extra["disabled"], False) - - def test_get_zone_non_exist(self): - try: - self.driver.get_zone("nonexists.example.com") - self.fail("expected a ZoneDoesNotExistError") - except ZoneDoesNotExistError: - pass - except Exception: - raise - - def test_delete_zone_non_exist(self): - try: - self.driver.delete_zone( - Zone( - id=1, - domain="nonexists.example.com", - type="NATIVE", - driver=AuroraDNSDriver, - ttl=3600, - ) - ) - self.fail("expected a ZoneDoesNotExistError") - except ZoneDoesNotExistError: - pass - except Exception: - raise - - def test_create_zone_already_exist(self): - try: - self.driver.create_zone("exists.example.com") - self.fail("expected a ZoneAlreadyExistsError") - except ZoneAlreadyExistsError: - pass - except Exception: - raise - - def test_list_records_non_exist(self): - try: - self.driver.list_records( - Zone( - id=1, - domain="nonexists.example.com", - type="NATIVE", - driver=AuroraDNSDriver, - ttl=3600, - ) - ) - self.fail("expected a ZoneDoesNotExistError") - except ZoneDoesNotExistError: - pass - except Exception: - raise - - def test_get_record_non_exist(self): - try: - self.driver.get_record(1, 1) - self.fail("expected a RecordDoesNotExistError") - except RecordDoesNotExistError: - pass - except Exception: - raise - - def test_create_health_check(self): - zone = self.driver.get_zone("example.com") - - type = AuroraDNSHealthCheckType.HTTP - hostname = "www.pcextreme.nl" - ipaddress = "109.72.87.252" - port = 8080 - interval = 10 - threshold = 3 - - check = self.driver.ex_create_healthcheck( - zone=zone, - type=type, - hostname=hostname, - port=port, - path=None, - interval=interval, - threshold=threshold, - ipaddress=ipaddress, - ) - - self.assertEqual(check.interval, interval) - self.assertEqual(check.threshold, threshold) - self.assertEqual(check.port, port) - self.assertEqual(check.type, type) - self.assertEqual(check.hostname, hostname) - self.assertEqual(check.path, "/") - self.assertEqual(check.ipaddress, ipaddress) - - def test_list_health_checks(self): - zone = self.driver.get_zone("example.com") - checks = self.driver.ex_list_healthchecks(zone) - - self.assertEqual(len(checks), 3) - - for check in checks: - self.assertEqual(check.interval, 60) - self.assertEqual(check.type, AuroraDNSHealthCheckType.HTTP) - - -class AuroraDNSDriverMockHttp(MockHttp): - fixtures = DNSFileFixtures("auroradns") - - def _zones(self, method, url, body, headers): - if method == "POST": - body_json = json.loads(body) - if body_json["name"] == "exists.example.com": - return (httplib.CONFLICT, body, {}, httplib.responses[httplib.CONFLICT]) - body = self.fixtures.load("zone_example_com.json") - else: - body = self.fixtures.load("zone_list.json") - return (httplib.OK, body, {}, httplib.responses[httplib.OK]) - - def _zones_HTTP_FORBIDDEN(self, method, url, body, headers): - body = "{}" - return (httplib.FORBIDDEN, body, {}, httplib.responses[httplib.FORBIDDEN]) - - def _zones_example_com(self, method, url, body, headers): - body = None - if method == "GET": - body = self.fixtures.load("zone_example_com.json") - - return (httplib.OK, body, {}, httplib.responses[httplib.OK]) - - def _zones_nonexists_example_com(self, method, url, body, headers): - return (httplib.NOT_FOUND, body, {}, httplib.responses[httplib.NOT_FOUND]) - - def _zones_ffb62570_8414_4578_a346_526b44e320b7(self, method, url, body, headers): - body = self.fixtures.load("zone_example_com.json") - return (httplib.OK, body, {}, httplib.responses[httplib.OK]) - - def _zones_ffb62570_8414_4578_a346_526b44e320b7_records(self, method, url, body, headers): - if method == "POST": - body = self.fixtures.load("zone_example_com_record_localhost.json") - else: - body = self.fixtures.load("zone_example_com_records.json") - return (httplib.OK, body, {}, httplib.responses[httplib.OK]) - - def _zones_ffb62570_8414_4578_a346_526b44e320b7_health_checks(self, method, url, body, headers): - if method == "POST": - body = self.fixtures.load("zone_example_com_health_check.json") - else: - body = self.fixtures.load("zone_example_com_health_checks.json") - return (httplib.OK, body, {}, httplib.responses[httplib.OK]) - - def _zones_1(self, method, url, body, headers): - return (httplib.NOT_FOUND, body, {}, httplib.responses[httplib.NOT_FOUND]) - - def _zones_1_records(self, method, url, body, headers): - return (httplib.NOT_FOUND, body, {}, httplib.responses[httplib.NOT_FOUND]) - - def _zones_1_records_1(self, method, url, body, headers): - return (httplib.NOT_FOUND, body, {}, httplib.responses[httplib.NOT_FOUND]) - - def _zones_ffb62570_8414_4578_a346_526b44e320b7_records_5592f1ff( - self, method, url, body, headers - ): - body = None - if method == "GET": - body = self.fixtures.load("zone_example_com_record_localhost.json") - - return (httplib.OK, body, {}, httplib.responses[httplib.OK]) - - -if __name__ == "__main__": - sys.exit(unittest.main()) diff --git a/libcloud/test/secrets.py-dist b/libcloud/test/secrets.py-dist index 7715d08d20..d64d5b2c4c 100644 --- a/libcloud/test/secrets.py-dist +++ b/libcloud/test/secrets.py-dist @@ -88,7 +88,6 @@ DNS_PARAMS_ZONOMI = ('key') DNS_PARAMS_DURABLEDNS = ('api_user', 'api_key') DNS_PARAMS_GODADDY = ('customer-id', 'api_user', 'api_key') DNS_PARAMS_CLOUDFLARE = ('user@example.com', 'key') -DNS_PARAMS_AURORADNS = ('apikey', 'secretkey') DNS_PARAMS_NSONE = ('key', ) DNS_PARAMS_LUADNS = ('user', 'key') DNS_PARAMS_BUDDYNS = ('key', ) diff --git a/libcloud/test/storage/test_aurora.py b/libcloud/test/storage/test_aurora.py deleted file mode 100644 index 682d747ec7..0000000000 --- a/libcloud/test/storage/test_aurora.py +++ /dev/null @@ -1,43 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import sys -import unittest - -from libcloud.common.types import LibcloudError -from libcloud.test.storage.test_s3 import S3Tests, S3MockHttp -from libcloud.storage.drivers.auroraobjects import AuroraObjectsStorageDriver - - -class AuroraObjectsTests(S3Tests, unittest.TestCase): - driver_type = AuroraObjectsStorageDriver - - def setUp(self): - super().setUp() - - AuroraObjectsStorageDriver.connectionCls.conn_class = S3MockHttp - S3MockHttp.type = None - self.driver = self.create_driver() - - def test_get_object_cdn_url(self): - self.mock_response_klass.type = "get_object" - obj = self.driver.get_object(container_name="test2", object_name="test") - - with self.assertRaises(LibcloudError): - self.driver.get_object_cdn_url(obj) - - -if __name__ == "__main__": - sys.exit(unittest.main())