# -*- coding: utf-8 -*-
from ecl.connectivity.v1.cic import CIC, EIC
from ecl.connectivity.v1.mcic import MCIC, MEIC
from ecl.connectivity.v1.operation import Operation
from ecl.connectivity.v1.server_segment import ServerSegment
from ecl import proxy2
[docs]class Proxy(proxy2.BaseProxy):
[docs] def mcics(self, **query):
"""Return a list of MCICs
:param kwargs query: Query parameter to get mCICs.
* string tenant_id: ID of a tenant to retrieve mCICs.
:returns: A list of MCICs objects
"""
mcic_list = self._list(MCIC, paginated=False, **query)
return [mcic for mcic in mcic_list if mcic.service_type == "NGC-colo"]
[docs] def meics(self, **query):
"""Return a list of MEICs
:param kwargs query: Query parameter to get mEICs.
* string tenant_id: ID of a tenant to retrieve mEICs.
:returns: A list of MEICs objects
"""
meic_list = self._list(MEIC, paginated=False, **query)
return [meic for meic in meic_list if meic.service_type == "NGC-EC"]
[docs] def get_mcic(self, mcic):
"""Get a single mcic
:param mcic: The value can be the ID of a mcic or a
:class:`~ecl.connectivity.v2.mcic.MCIC` instance.
:returns: One :class:`~ecl.connectivity.v2.mcic.MCIC`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
return self._get(MCIC, mcic)
[docs] def get_meic(self, meic):
"""Get a single meic
:param meic: The value can be the ID of a meic or a
:class:`~ecl.connectivity.v2.mcic.MEIC` instance.
:returns: One :class:`~ecl.connectivity.v2.mcic.MEIC`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
return self._get(MEIC, meic)
[docs] def cics(self, mcic_id, **query):
"""Return a list of CICs
:param string mcic_id: ID of a mcic that cics belong to
:returns: A list of CICs objects
"""
return self._list(CIC, paginated=False, mcic_id=mcic_id, **query)
[docs] def eics(self, meic_id, **query):
"""Return a list of EICs
:param string meic_id: ID of a meic that eics belong to
:returns: A list of EICs objects
"""
return self._list(EIC, paginated=False, mcic_id=meic_id, **query)
[docs] def get_cic(self, mcic_id, cic):
"""Get a single cic
:param string mcic_id: ID of a mcic
:param cic: The value can be the ID of a cic or a
:class:`~ecl.connectivity.v2.cic.CIC` instance.
:returns: One :class:`~ecl.connectivity.v2.cic.CIC`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
cic = self._get_resource(CIC, cic, mcic_id=mcic_id)
return self._get(CIC, cic)
[docs] def get_eic(self, meic_id, eic):
"""Get a single eic
:param string meic_id: ID of a meic
:param eic: The value can be the ID of a eic or a
:class:`~ecl.connectivity.v2.cic.EIC` instance.
:returns: One :class:`~ecl.connectivity.v2.cic.EIC`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
eic = self._get_resource(EIC, eic, mcic_id=meic_id)
return self._get(CIC, eic)
[docs] def create_cic(self, mcic_id, cic_name, network_id, colo_vlan):
"""Create a single cic
:param string mcic_id: The value is the ID of a mcic
:param string cic_name: The value is the name of a cic
:param string network_id: The value is the ID of network of a cic
:param int colo_vlan: The value indicates the colocation vlan of a cic
:returns: One :class:`~ecl.connectivity.v2.cic.CIC`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
body = {
"cic_name": cic_name,
"network_id": network_id,
"colo_vlan": colo_vlan,
"mcic_id": mcic_id
}
return self._create(CIC, **body)
[docs] def create_eic(self, meic_id, eic_name, network_id, server_segment_nbr):
"""Create a single eic
:param string meic_id: The value is the ID of a meic
:param string eic_name: The value is the name of eic
:returns: One :class:`~ecl.connectivity.v2.cic.EIC`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
body = {
"cic_name": eic_name,
"network_id": network_id,
"server_segment_nbr": server_segment_nbr,
"mcic_id": meic_id
}
return self._create(EIC, **body)
[docs] def delete_cic(self, mcic_id, cic):
"""Delete a single cic
:param string mcic_id: The value is the ID of a mcic
:param cic: The value can be the ID of a cic or a
:class:`~ecl.connectivity.v2.cic.CIC` instance.
:returns: One :class:`~ecl.connectivity.v2.cic.CIC`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
return self._delete(CIC, cic, mcic_id=mcic_id)
[docs] def delete_eic(self, meic_id, eic):
"""Delete a single eic
:param string meic_id: The value is the ID of a meic
:param eic: The value can be the ID of a eic or a
:class:`~ecl.connectivity.v2.cic.EIC` instance.
:returns: One :class:`~ecl.connectivity.v2.cic.EIC`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
return self._delete(EIC, eic, mcic_id=meic_id)
[docs] def update_cic(self, mcic_id, cic, cic_name):
"""Update a single cic
:param string mcic_id: The value is the ID of a mcic
:param cic: The value can be the ID of a cic or a
:class:`~ecl.connectivity.v2.cic.CIC` instance.
:param cic_name: The name of CIC to update
:returns: One :class:`~ecl.connectivity.v2.cic.CIC`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
body = {"cic_name": cic_name}
res = self._get_resource(CIC, cic, **body)
return res.update(self.session, mcic_id, cic, **body)
[docs] def update_eic(self, meic_id, eic, eic_name):
"""Update a single eic
:param string meic_id: The value is the ID of a meic
:param eic: The value can be the ID of a eic or a
:class:`~ecl.connectivity.v2.cic.EIC` instance.
:param eic_name: The name of EIC to update
:returns: One :class:`~ecl.connectivity.v2.cic.EIC`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
body = {"cic_name": eic_name}
res = self._get_resource(CIC, eic, **body)
return res.update(self.session, meic_id, eic, **body)
[docs] def operations(self, **query):
"""Return a list of MCICs
:param kwargs query: Query parameter to get operations.
* string mcic_id: ID of a mcic
* string cic_id: ID of a cic
:returns: A list of Operation objects
"""
return list(self._list(Operation, paginated=False, **query))
[docs] def get_operation(self, operation):
"""Get a single operation
:param operation: The value can be the ID of a operation or a
:class:`~ecl.connectivity.v2.operation.Operation` instance.
:returns: One :class:`~ecl.connectivity.v2.operation.Operation`
:raises: :class:`~ecl.exceptions.ResourceNotFound`
when no resource can be found.
"""
return self._get(Operation, operation)
[docs] def server_segments(self, service_id):
"""Return a list of Server Segments.
:param string service_id: Enterprise Cloud service ID
:returns: A list of ServerSegment objects
"""
return list(self._list(ServerSegment, service_id=service_id))