Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions docs/compute/drivers/outscale_inc.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Outscale INC Driver Documentation
=================================

`Outscale INC`_ provides an IaaS platform allowing
developers to benefit from all the flexibility of the Cloud.
This IaaS platform relies on TINA OS, its Cloud manager which purpose is to
provide great performances on the Cloud.
TINA OS is an own developed software with APIs compatible with AWS EC2 (TM).

.. figure:: /_static/images/provider_logos/outscale.png
:align: center
:width: 300
:target: https://www.outscale.com/

Outscale users can start virtual machines in the following regions:

* EU West (Paris France) Region
* US East (Boston US) Region
* (Soon) US East (New Jersey) Region
* (Soon) Asia (Hong Kong) Region

Outscale INC is an american company: prices are in $.

API Docs
--------

.. autoclass:: libcloud.compute.drivers.ec2.OutscaleINCNodeDriver
:members:
:inherited-members:

.. _`Outscale INC`: https://www.outscale.com/
6 changes: 3 additions & 3 deletions docs/compute/drivers/outscale_sas.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Outscale Driver Documentation
=============================
Outscale SAS Driver Documentation
=================================

`Outscale SAS`_ provides an IaaS platform allowing
developers to benefit from all the flexibility of the Cloud.
Expand All @@ -24,7 +24,7 @@ Outscale SAS is an european company: prices are in €.
API Docs
--------

.. autoclass:: libcloud.compute.drivers.ec2.OutscaleNodeDriver
.. autoclass:: libcloud.compute.drivers.ec2.OutscaleSASNodeDriver
:members:
:inherited-members:

Expand Down
177 changes: 145 additions & 32 deletions libcloud/compute/drivers/ec2.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
'INSTANCE_TYPES',
'OUTSCALE_INSTANCE_TYPES',
'OUTSCALE_SAS_REGION_DETAILS',
'OUTSCALE_INC_REGION_DETAILS',
'DEFAULT_EUCA_API_VERSION',
'EUCA_NAMESPACE',

Expand All @@ -59,6 +60,7 @@
'EucNodeDriver',

'OutscaleSASNodeDriver',
'OutscaleINCNodeDriver',

'EC2NodeLocation',
'EC2ReservedNode',
Expand Down Expand Up @@ -873,7 +875,7 @@
"""
The function manipulating Outscale cloud regions will be overriden because
Outscale instances types are in a separate dict so also declare Outscale cloud
regions in another constant.
regions in some other constants.
"""
OUTSCALE_SAS_REGION_DETAILS = {
'eu-west-3': {
Expand Down Expand Up @@ -960,6 +962,91 @@
}


OUTSCALE_INC_REGION_DETAILS = {
'eu-west-1': {
'endpoint': 'api.eu-west-1.outscale.com',
'api_name': 'osc_inc_eu_west_1',
'country': 'FRANCE',
'instance_types': [
't1.micro',
'm1.small',
'm1.medium',
'm1.large',
'm1.xlarge',
'c1.medium',
'c1.xlarge',
'm2.xlarge',
'm2.2xlarge',
'm2.4xlarge',
'nv1.small',
'nv1.medium',
'nv1.large',
'nv1.xlarge',
'cc1.4xlarge',
'cc2.8xlarge',
'm3.xlarge',
'm3.2xlarge',
'cr1.8xlarge',
'os1.8xlarge'
]
},
'eu-west-3': {
'endpoint': 'api-ppd.outscale.com',
'api_name': 'osc_inc_eu_west_3',
'country': 'FRANCE',
'instance_types': [
't1.micro',
'm1.small',
'm1.medium',
'm1.large',
'm1.xlarge',
'c1.medium',
'c1.xlarge',
'm2.xlarge',
'm2.2xlarge',
'm2.4xlarge',
'nv1.small',
'nv1.medium',
'nv1.large',
'nv1.xlarge',
'cc1.4xlarge',
'cc2.8xlarge',
'm3.xlarge',
'm3.2xlarge',
'cr1.8xlarge',
'os1.8xlarge'
]
},
'us-east-1': {
'endpoint': 'api.us-east-1.outscale.com',
'api_name': 'osc_inc_us_east_1',
'country': 'USA',
'instance_types': [
't1.micro',
'm1.small',
'm1.medium',
'm1.large',
'm1.xlarge',
'c1.medium',
'c1.xlarge',
'm2.xlarge',
'm2.2xlarge',
'm2.4xlarge',
'nv1.small',
'nv1.medium',
'nv1.large',
'nv1.xlarge',
'cc1.4xlarge',
'cc2.8xlarge',
'm3.xlarge',
'm3.2xlarge',
'cr1.8xlarge',
'os1.8xlarge'
]
}
}


"""
Define the extra dictionary for specific resources
"""
Expand Down Expand Up @@ -4629,6 +4716,32 @@ class OutscaleNodeDriver(BaseEC2NodeDriver):
'stopped': NodeState.STOPPED
}

def __init__(self, key, secret=None, secure=True, host=None, port=None,
region='us-east-1', region_details=None, **kwargs):
if hasattr(self, '_region'):
region = self._region

if region_details is None:
raise ValueError('Invalid region_details argument')

if region not in region_details.keys():
raise ValueError('Invalid region: %s' % (region))

self.region_name = region
self.region_details = region_details
details = self.region_details[region]
self.api_name = details['api_name']
self.country = details['country']

self.connectionCls.host = details['endpoint']

self._not_implemented_msg =\
'This method is not supported in the Outscale driver'

super(BaseEC2NodeDriver, self).__init__(key=key, secret=secret,
secure=secure, host=host,
port=port, **kwargs)

def create_node(self, **kwargs):
"""
Create a new Outscale node. The ex_iamprofile keyword is not supported.
Expand Down Expand Up @@ -4806,36 +4919,6 @@ def ex_detach_network_interface(self, attachment_id, force=False):
"""
raise NotImplementedError(self._not_implemented_msg)


class OutscaleSASNodeDriver(OutscaleNodeDriver):
"""
Outscale SAS node driver
"""
name = 'Outscale SAS'
type = Provider.OUTSCALE_SAS

def __init__(self, key, secret=None, secure=True, host=None, port=None,
region='us-east-1', **kwargs):
if hasattr(self, '_region'):
region = self._region

if region not in OUTSCALE_SAS_REGION_DETAILS.keys():
raise ValueError('Invalid region: %s' % (region))

details = OUTSCALE_SAS_REGION_DETAILS[region]
self.region_name = region
self.api_name = details['api_name']
self.country = details['country']

self.connectionCls.host = details['endpoint']

self._not_implemented_msg =\
'This method is not supported in the Outscale driver'

super(OutscaleNodeDriver, self).__init__(key=key, secret=secret,
secure=secure, host=host,
port=port, **kwargs)

def list_sizes(self, location=None):
"""
List available instance flavors/sizes
Expand All @@ -4845,7 +4928,7 @@ def list_sizes(self, location=None):
:rtype: ``list`` of :class:`NodeSize`
"""
available_types =\
OUTSCALE_SAS_REGION_DETAILS[self.region_name]['instance_types']
self.region_details[self.region_name]['instance_types']
sizes = []

for instance_type in available_types:
Expand All @@ -4855,3 +4938,33 @@ def list_sizes(self, location=None):
attributes.update({'price': price})
sizes.append(NodeSize(driver=self, **attributes))
return sizes


class OutscaleSASNodeDriver(OutscaleNodeDriver):
"""
Outscale SAS node driver
"""
name = 'Outscale SAS'
type = Provider.OUTSCALE_SAS

def __init__(self, key, secret=None, secure=True, host=None, port=None,
region='us-east-1', region_details=None, **kwargs):
super(OutscaleSASNodeDriver, self).__init__(
key=key, secret=secret, secure=secure, host=host, port=port,
region=region, region_details=OUTSCALE_SAS_REGION_DETAILS,
**kwargs)


class OutscaleINCNodeDriver(OutscaleNodeDriver):
"""
Outscale INC node driver
"""
name = 'Outscale INC'
type = Provider.OUTSCALE_INC

def __init__(self, key, secret=None, secure=True, host=None, port=None,
region='us-east-1', region_details=None, **kwargs):
super(OutscaleINCNodeDriver, self).__init__(
key=key, secret=secret, secure=secure, host=host, port=port,
region=region, region_details=OUTSCALE_INC_REGION_DETAILS,
**kwargs)
2 changes: 2 additions & 0 deletions libcloud/compute/providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@
('libcloud.compute.drivers.ikoula', 'IkoulaNodeDriver'),
Provider.OUTSCALE_SAS:
('libcloud.compute.drivers.ec2', 'OutscaleSASNodeDriver'),
Provider.OUTSCALE_INC:
('libcloud.compute.drivers.ec2', 'OutscaleINCNodeDriver'),

# Deprecated
Provider.CLOUDSIGMA_US:
Expand Down
2 changes: 2 additions & 0 deletions libcloud/compute/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ class Provider(object):
:cvar EXOSCALE: Exoscale driver.
:cvar IKOULA: Ikoula driver.
:cvar OUTSCALE_SAS: Outscale SAS driver.
:cvar OUTSCALE_INC: Outscale INC driver.
"""
DUMMY = 'dummy'
EC2 = 'ec2_us_east'
Expand Down Expand Up @@ -119,6 +120,7 @@ class Provider(object):
EXOSCALE = 'exoscale'
IKOULA = 'ikoula'
OUTSCALE_SAS = 'outscale_sas'
OUTSCALE_INC = 'outscale_inc'

# OpenStack based providers
HPCLOUD = 'hpcloud'
Expand Down
69 changes: 69 additions & 0 deletions libcloud/data/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,75 @@
"cr1.8xlarge": "3.750",
"os1.8xlarge": "6.400",
"os1.8xlarge": "6.400"
},
"osc_inc_eu_west_1": {
"t1.micro": "0.040",
"m1.small": "0.090",
"m1.medium": "0.120",
"m1.large": "0.360",
"m1.xlarge": "0.730",
"c1.medium": "0.230",
"c1.xlarge": "0.900",
"m2.xlarge": "0.410",
"m2.2xlarge": "0.820",
"m2.4xlarge": "1.640",
"nv1.small": "5.220",
"nv1.medium": "5.250",
"nv1.large": "5.490",
"nv1.xlarge": "5.610",
"cc1.4xlarge": "1.300",
"cc2.8xlarge": "2.400",
"m3.xlarge": "0.780",
"m3.2xlarge": "1.560",
"cr1.8xlarge": "3.500",
"os1.8xlarge": "4.310",
"os1.8xlarge": "4.310"
},
"osc_inc_eu_west_3": {
"t1.micro": "0.040",
"m1.small": "0.090",
"m1.medium": "0.120",
"m1.large": "0.360",
"m1.xlarge": "0.730",
"c1.medium": "0.230",
"c1.xlarge": "0.900",
"m2.xlarge": "0.410",
"m2.2xlarge": "0.820",
"m2.4xlarge": "1.640",
"nv1.small": "5.220",
"nv1.medium": "5.250",
"nv1.large": "5.490",
"nv1.xlarge": "5.610",
"cc1.4xlarge": "1.300",
"cc2.8xlarge": "2.400",
"m3.xlarge": "0.780",
"m3.2xlarge": "1.560",
"cr1.8xlarge": "3.500",
"os1.8xlarge": "4.310",
"os1.8xlarge": "4.310"
},
"osc_inc_us_east_1": {
"t1.micro": "0.020",
"m1.small": "0.060",
"m1.medium": "0.180",
"m1.large": "0.240",
"m1.xlarge": "0.730",
"c1.medium": "0.150",
"c1.xlarge": "0.580",
"m2.xlarge": "0.410",
"m2.2xlarge": "1.020",
"m2.4xlarge": "2.040",
"nv1.small": "5.190",
"nv1.medium": "5.250",
"nv1.large": "5.490",
"nv1.xlarge": "5.610",
"cc1.4xlarge": "1.610",
"cc2.8xlarge": "2.400",
"m3.xlarge": "0.500",
"m3.2xlarge": "1.560",
"cr1.8xlarge": "3.500",
"os1.8xlarge": "6.400",
"os1.8xlarge": "6.400"
}
},
"storage": {},
Expand Down