http://git-wip-us.apache.org/repos/asf/libcloud/blob/7118a02c/libcloud/common/dimensiondata.py ---------------------------------------------------------------------- diff --git a/libcloud/common/dimensiondata.py b/libcloud/common/dimensiondata.py index f3ec27b..448c99d 100644 --- a/libcloud/common/dimensiondata.py +++ b/libcloud/common/dimensiondata.py @@ -57,9 +57,14 @@ API_ENDPOINTS = { 'host': 'api-au.dimensiondata.com', 'vendor': 'DimensionData' }, + 'dd-au-gov': { + 'name': 'Australia Canberra ACT (AU)', + 'host': 'api-canberra.dimensiondata.com', + 'vendor': 'DimensionData' + }, 'dd-af': { 'name': 'Africa (AF)', - 'host': 'api-af.dimensiondata.com', + 'host': 'api-mea.dimensiondata.com', 'vendor': 'DimensionData' }, 'dd-ap': { @@ -76,7 +81,192 @@ API_ENDPOINTS = { 'name': 'Canada (CA)', 'host': 'api-canada.dimensiondata.com', 'vendor': 'DimensionData' - } + }, + 'is-na': { + 'name': 'North America (NA)', + 'host': 'usapi.cloud.is.co.za', + 'vendor': 'InternetSolutions' + }, + 'is-eu': { + 'name': 'Europe (EU)', + 'host': 'euapi.cloud.is.co.za', + 'vendor': 'InternetSolutions' + }, + 'is-au': { + 'name': 'Australia (AU)', + 'host': 'auapi.cloud.is.co.za', + 'vendor': 'InternetSolutions' + }, + 'is-af': { + 'name': 'Africa (AF)', + 'host': 'meaapi.cloud.is.co.za', + 'vendor': 'InternetSolutions' + }, + 'is-ap': { + 'name': 'Asia Pacific (AP)', + 'host': 'apapi.cloud.is.co.za', + 'vendor': 'InternetSolutions' + }, + 'is-latam': { + 'name': 'South America (LATAM)', + 'host': 'latamapi.cloud.is.co.za', + 'vendor': 'InternetSolutions' + }, + 'is-canada': { + 'name': 'Canada (CA)', + 'host': 'canadaapi.cloud.is.co.za', + 'vendor': 'InternetSolutions' + }, + 'ntta-na': { + 'name': 'North America (NA)', + 'host': 'cloudapi.nttamerica.com', + 'vendor': 'NTTNorthAmerica' + }, + 'ntta-eu': { + 'name': 'Europe (EU)', + 'host': 'eucloudapi.nttamerica.com', + 'vendor': 'NTTNorthAmerica' + }, + 'ntta-au': { + 'name': 'Australia (AU)', + 'host': 'aucloudapi.nttamerica.com', + 'vendor': 'NTTNorthAmerica' + }, + 'ntta-af': { + 'name': 'Africa (AF)', + 'host': 'sacloudapi.nttamerica.com', + 'vendor': 'NTTNorthAmerica' + }, + 'ntta-ap': { + 'name': 'Asia Pacific (AP)', + 'host': 'hkcloudapi.nttamerica.com', + 'vendor': 'NTTNorthAmerica' + }, + 'cisco-na': { + 'name': 'North America (NA)', + 'host': 'iaas-api-na.cisco-ccs.com', + 'vendor': 'Cisco' + }, + 'cisco-eu': { + 'name': 'Europe (EU)', + 'host': 'iaas-api-eu.cisco-ccs.com', + 'vendor': 'Cisco' + }, + 'cisco-au': { + 'name': 'Australia (AU)', + 'host': 'iaas-api-au.cisco-ccs.com', + 'vendor': 'Cisco' + }, + 'cisco-af': { + 'name': 'Africa (AF)', + 'host': 'iaas-api-mea.cisco-ccs.com', + 'vendor': 'Cisco' + }, + 'cisco-ap': { + 'name': 'Asia Pacific (AP)', + 'host': 'iaas-api-ap.cisco-ccs.com', + 'vendor': 'Cisco' + }, + 'cisco-latam': { + 'name': 'South America (LATAM)', + 'host': 'iaas-api-sa.cisco-ccs.com', + 'vendor': 'Cisco' + }, + 'cisco-canada': { + 'name': 'Canada (CA)', + 'host': 'iaas-api-ca.cisco-ccs.com', + 'vendor': 'Cisco' + }, + 'med1-il': { + 'name': 'Israel (IL)', + 'host': 'api.cloud.med-1.com', + 'vendor': 'Med-1' + }, + 'med1-na': { + 'name': 'North America (NA)', + 'host': 'api-na.cloud.med-1.com', + 'vendor': 'Med-1' + }, + 'med1-eu': { + 'name': 'Europe (EU)', + 'host': 'api-eu.cloud.med-1.com', + 'vendor': 'Med-1' + }, + 'med1-au': { + 'name': 'Australia (AU)', + 'host': 'api-au.cloud.med-1.com', + 'vendor': 'Med-1' + }, + 'med1-af': { + 'name': 'Africa (AF)', + 'host': 'api-af.cloud.med-1.com', + 'vendor': 'Med-1' + }, + 'med1-ap': { + 'name': 'Asia Pacific (AP)', + 'host': 'api-ap.cloud.med-1.com', + 'vendor': 'Med-1' + }, + 'med1-latam': { + 'name': 'South America (LATAM)', + 'host': 'api-sa.cloud.med-1.com', + 'vendor': 'Med-1' + }, + 'med1-canada': { + 'name': 'Canada (CA)', + 'host': 'api-ca.cloud.med-1.com', + 'vendor': 'Med-1' + }, + 'indosat-id': { + 'name': 'Indonesia (ID)', + 'host': 'iaas-api.indosat.com', + 'vendor': 'Indosat' + }, + 'indosat-na': { + 'name': 'North America (NA)', + 'host': 'iaas-usapi.indosat.com', + 'vendor': 'Indosat' + }, + 'indosat-eu': { + 'name': 'Europe (EU)', + 'host': 'iaas-euapi.indosat.com', + 'vendor': 'Indosat' + }, + 'indosat-au': { + 'name': 'Australia (AU)', + 'host': 'iaas-auapi.indosat.com', + 'vendor': 'Indosat' + }, + 'indosat-af': { + 'name': 'Africa (AF)', + 'host': 'iaas-afapi.indosat.com', + 'vendor': 'Indosat' + }, + 'bsnl-in': { + 'name': 'India (IN)', + 'host': 'api.bsnlcloud.com', + 'vendor': 'BSNL' + }, + 'bsnl-na': { + 'name': 'North America (NA)', + 'host': 'usapi.bsnlcloud.com', + 'vendor': 'BSNL' + }, + 'bsnl-eu': { + 'name': 'Europe (EU)', + 'host': 'euapi.bsnlcloud.com', + 'vendor': 'BSNL' + }, + 'bsnl-au': { + 'name': 'Australia (AU)', + 'host': 'auapi.bsnlcloud.com', + 'vendor': 'BSNL' + }, + 'bsnl-af': { + 'name': 'Africa (AF)', + 'host': 'afapi.bsnlcloud.com', + 'vendor': 'BSNL' + }, } # Default API end-point for the base connection class.
http://git-wip-us.apache.org/repos/asf/libcloud/blob/7118a02c/libcloud/compute/drivers/bsnl.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/bsnl.py b/libcloud/compute/drivers/bsnl.py new file mode 100644 index 0000000..8b4736e --- /dev/null +++ b/libcloud/compute/drivers/bsnl.py @@ -0,0 +1,56 @@ +# 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. +""" +BSNL Driver +""" + +from libcloud.compute.providers import Provider +from libcloud.common.dimensiondata import (DimensionDataConnection, + API_ENDPOINTS) +from libcloud.compute.drivers.dimensiondata import DimensionDataNodeDriver + +DEFAULT_REGION = 'bsnl-in' + + +class BSNLNodeDriver(DimensionDataNodeDriver): + """ + BSNL node driver, based on Dimension Data driver + """ + + selected_region = None + connectionCls = DimensionDataConnection + name = 'BSNL' + website = 'http://www.bsnlcloud.com/' + type = Provider.BSNL + 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(BSNLNodeDriver, self).__init__( + key=key, + secret=secret, + secure=secure, + host=host, + port=port, + api_version=api_version, + region=region, + **kwargs) http://git-wip-us.apache.org/repos/asf/libcloud/blob/7118a02c/libcloud/compute/drivers/ciscoccs.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/ciscoccs.py b/libcloud/compute/drivers/ciscoccs.py new file mode 100644 index 0000000..adc21f1 --- /dev/null +++ b/libcloud/compute/drivers/ciscoccs.py @@ -0,0 +1,56 @@ +# 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. +""" +Cisco CCS Driver +""" + +from libcloud.compute.providers import Provider +from libcloud.common.dimensiondata import (DimensionDataConnection, + API_ENDPOINTS) +from libcloud.compute.drivers.dimensiondata import DimensionDataNodeDriver + +DEFAULT_REGION = 'cisco-na' + + +class CiscoCCSNodeDriver(DimensionDataNodeDriver): + """ + Cisco CCS node driver, based on Dimension Data driver + """ + + selected_region = None + connectionCls = DimensionDataConnection + name = 'CiscoCCS' + website = 'http://www.cisco.com/' + type = Provider.CISCOCCS + 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(CiscoCCSNodeDriver, self).__init__( + key=key, + secret=secret, + secure=secure, + host=host, + port=port, + api_version=api_version, + region=region, + **kwargs) http://git-wip-us.apache.org/repos/asf/libcloud/blob/7118a02c/libcloud/compute/drivers/indosat.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/indosat.py b/libcloud/compute/drivers/indosat.py new file mode 100644 index 0000000..8913dfb --- /dev/null +++ b/libcloud/compute/drivers/indosat.py @@ -0,0 +1,56 @@ +# 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. +""" +Indosat Driver +""" + +from libcloud.compute.providers import Provider +from libcloud.common.dimensiondata import (DimensionDataConnection, + API_ENDPOINTS) +from libcloud.compute.drivers.dimensiondata import DimensionDataNodeDriver + +DEFAULT_REGION = 'indosat-id' + + +class IndosatNodeDriver(DimensionDataNodeDriver): + """ + Indosat node driver, based on Dimension Data driver + """ + + selected_region = None + connectionCls = DimensionDataConnection + name = 'Indosat' + website = 'http://www.indosat.com/' + type = Provider.INDOSAT + 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(IndosatNodeDriver, self).__init__( + key=key, + secret=secret, + secure=secure, + host=host, + port=port, + api_version=api_version, + region=region, + **kwargs) http://git-wip-us.apache.org/repos/asf/libcloud/blob/7118a02c/libcloud/compute/drivers/internetsolutions.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/internetsolutions.py b/libcloud/compute/drivers/internetsolutions.py new file mode 100644 index 0000000..49415ae --- /dev/null +++ b/libcloud/compute/drivers/internetsolutions.py @@ -0,0 +1,56 @@ +# 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 (DimensionDataConnection, + API_ENDPOINTS) +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(InternetSolutionsNodeDriver, self).__init__( + key=key, + secret=secret, + secure=secure, + host=host, + port=port, + api_version=api_version, + region=region, + **kwargs) http://git-wip-us.apache.org/repos/asf/libcloud/blob/7118a02c/libcloud/compute/drivers/medone.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/medone.py b/libcloud/compute/drivers/medone.py new file mode 100644 index 0000000..2273303 --- /dev/null +++ b/libcloud/compute/drivers/medone.py @@ -0,0 +1,56 @@ +# 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. +""" +Med-1 Driver +""" + +from libcloud.compute.providers import Provider +from libcloud.common.dimensiondata import (DimensionDataConnection, + API_ENDPOINTS) +from libcloud.compute.drivers.dimensiondata import DimensionDataNodeDriver + +DEFAULT_REGION = 'med1-il' + + +class MedOneNodeDriver(DimensionDataNodeDriver): + """ + Med-1 node driver, based on Dimension Data driver + """ + + selected_region = None + connectionCls = DimensionDataConnection + name = 'MedOne' + website = 'http://www.med-1.com/' + type = Provider.MEDONE + 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(MedOneNodeDriver, self).__init__( + key=key, + secret=secret, + secure=secure, + host=host, + port=port, + api_version=api_version, + region=region, + **kwargs) http://git-wip-us.apache.org/repos/asf/libcloud/blob/7118a02c/libcloud/compute/drivers/ntta.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/ntta.py b/libcloud/compute/drivers/ntta.py new file mode 100644 index 0000000..5ef5cb9 --- /dev/null +++ b/libcloud/compute/drivers/ntta.py @@ -0,0 +1,56 @@ +# 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. +""" +NTT America Driver +""" + +from libcloud.compute.providers import Provider +from libcloud.common.dimensiondata import (DimensionDataConnection, + API_ENDPOINTS) +from libcloud.compute.drivers.dimensiondata import DimensionDataNodeDriver + +DEFAULT_REGION = 'ntta-na' + + +class NTTAmericaNodeDriver(DimensionDataNodeDriver): + """ + NTT America node driver, based on Dimension Data driver + """ + + selected_region = None + connectionCls = DimensionDataConnection + name = 'NTTAmerica' + website = 'http://www.nttamerica.com/' + type = Provider.NTTA + 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(NTTAmericaNodeDriver, self).__init__( + key=key, + secret=secret, + secure=secure, + host=host, + port=port, + api_version=api_version, + region=region, + **kwargs) http://git-wip-us.apache.org/repos/asf/libcloud/blob/7118a02c/libcloud/compute/providers.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/providers.py b/libcloud/compute/providers.py index 8a3793e..7560094 100644 --- a/libcloud/compute/providers.py +++ b/libcloud/compute/providers.py @@ -169,6 +169,18 @@ DRIVERS = { ('libcloud.compute.drivers.onapp', 'OnAppNodeDriver'), Provider.RUNABOVE: ('libcloud.compute.drivers.runabove', 'RunAboveNodeDriver'), + Provider.INTERNETSOLUTIONS: + ('libcloud.compute.drivers.internetsolutions', 'InternetSolutionsNodeDriver'), + Provider.INDOSAT: + ('libcloud.compute.drivers.indosat', 'IndosatNodeDriver'), + Provider.MEDONE: + ('libcloud.compute.drivers.medone', 'MedOneNodeDriver'), + Provider.BSNL: + ('libcloud.compute.drivers.bsnl', 'BSNLNodeDriver'), + Provider.CISCOCCS: + ('libcloud.compute.drivers.ciscoccs', 'CiscoCCSNodeDriver'), + Provider.NTTA: + ('libcloud.compute.drivers.ntta', 'NTTAmericaNodeDriver'), # Deprecated Provider.CLOUDSIGMA_US: http://git-wip-us.apache.org/repos/asf/libcloud/blob/7118a02c/libcloud/compute/types.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/types.py b/libcloud/compute/types.py index 0ddb4f1..1cef29c 100644 --- a/libcloud/compute/types.py +++ b/libcloud/compute/types.py @@ -153,6 +153,12 @@ class Provider(Type): CLOUDWATT = 'cloudwatt' PACKET = 'packet' RUNABOVE = 'runabove' + INTERNETSOLUTIONS = 'internetsolutions' + INDOSAT = 'indosat' + BSNL = 'bsnl' + NTTA = 'ntta' + MEDONE = 'medone' + CISCOCCS = 'ciscoccs' # OpenStack based providers HPCLOUD = 'hpcloud'