# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from tapi_server.models.base_model_ import Model
from tapi_server.models.tapi_common_admin_state_pac import TapiCommonAdminStatePac  # noqa: F401,E501
from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState  # noqa: F401,E501
from tapi_server.models.tapi_common_capacity import TapiCommonCapacity  # noqa: F401,E501
from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName  # noqa: F401,E501
from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState  # noqa: F401,E501
from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass  # noqa: F401,E501
from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue  # noqa: F401,E501
from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState  # noqa: F401,E501
from tapi_server.models.tapi_common_port_direction import TapiCommonPortDirection  # noqa: F401,E501
from tapi_server.models.tapi_common_port_role import TapiCommonPortRole  # noqa: F401,E501
from tapi_server.models.tapi_common_service_interface_point_ref import TapiCommonServiceInterfacePointRef  # noqa: F401,E501
from tapi_server.models.tapi_connectivity_connection_end_point_ref import TapiConnectivityConnectionEndPointRef  # noqa: F401,E501
from tapi_server.models.tapi_connectivity_connectivity_service_end_point_ref import TapiConnectivityConnectivityServiceEndPointRef  # noqa: F401,E501
from tapi_server.models.tapi_connectivity_protection_role import TapiConnectivityProtectionRole  # noqa: F401,E501
from tapi_server import util


class TapiConnectivityConnectivityServiceEndPoint(Model):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, administrative_state: TapiCommonAdministrativeState=None, protection_role: TapiConnectivityProtectionRole=None, role: TapiCommonPortRole=None, service_interface_point: TapiCommonServiceInterfacePointRef=None, peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef=None, layer_protocol_name: TapiCommonLayerProtocolName=None, layer_protocol_qualifier: str=None, connection_end_point: List[TapiConnectivityConnectionEndPointRef]=None, server_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef=None, protecting_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef=None, direction: TapiCommonPortDirection=None, capacity: TapiCommonCapacity=None):  # noqa: E501
        """TapiConnectivityConnectivityServiceEndPoint - a model defined in Swagger

        :param name: The name of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type name: List[TapiCommonNameAndValue]
        :param local_id: The local_id of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type local_id: str
        :param operational_state: The operational_state of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type operational_state: TapiCommonOperationalState
        :param lifecycle_state: The lifecycle_state of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type lifecycle_state: TapiCommonLifecycleState
        :param administrative_state: The administrative_state of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type administrative_state: TapiCommonAdministrativeState
        :param protection_role: The protection_role of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type protection_role: TapiConnectivityProtectionRole
        :param role: The role of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type role: TapiCommonPortRole
        :param service_interface_point: The service_interface_point of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type service_interface_point: TapiCommonServiceInterfacePointRef
        :param peer_fwd_connectivity_service_end_point: The peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef
        :param layer_protocol_name: The layer_protocol_name of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type layer_protocol_name: TapiCommonLayerProtocolName
        :param layer_protocol_qualifier: The layer_protocol_qualifier of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type layer_protocol_qualifier: str
        :param connection_end_point: The connection_end_point of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type connection_end_point: List[TapiConnectivityConnectionEndPointRef]
        :param server_connectivity_service_end_point: The server_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type server_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef
        :param protecting_connectivity_service_end_point: The protecting_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type protecting_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef
        :param direction: The direction of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type direction: TapiCommonPortDirection
        :param capacity: The capacity of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :type capacity: TapiCommonCapacity
        """
        self.swagger_types = {
            'name': List[TapiCommonNameAndValue],
            'local_id': str,
            'operational_state': TapiCommonOperationalState,
            'lifecycle_state': TapiCommonLifecycleState,
            'administrative_state': TapiCommonAdministrativeState,
            'protection_role': TapiConnectivityProtectionRole,
            'role': TapiCommonPortRole,
            'service_interface_point': TapiCommonServiceInterfacePointRef,
            'peer_fwd_connectivity_service_end_point': TapiConnectivityConnectivityServiceEndPointRef,
            'layer_protocol_name': TapiCommonLayerProtocolName,
            'layer_protocol_qualifier': str,
            'connection_end_point': List[TapiConnectivityConnectionEndPointRef],
            'server_connectivity_service_end_point': TapiConnectivityConnectivityServiceEndPointRef,
            'protecting_connectivity_service_end_point': TapiConnectivityConnectivityServiceEndPointRef,
            'direction': TapiCommonPortDirection,
            'capacity': TapiCommonCapacity
        }

        self.attribute_map = {
            'name': 'name',
            'local_id': 'local-id',
            'operational_state': 'operational-state',
            'lifecycle_state': 'lifecycle-state',
            'administrative_state': 'administrative-state',
            'protection_role': 'protection-role',
            'role': 'role',
            'service_interface_point': 'service-interface-point',
            'peer_fwd_connectivity_service_end_point': 'peer-fwd-connectivity-service-end-point',
            'layer_protocol_name': 'layer-protocol-name',
            'layer_protocol_qualifier': 'layer-protocol-qualifier',
            'connection_end_point': 'connection-end-point',
            'server_connectivity_service_end_point': 'server-connectivity-service-end-point',
            'protecting_connectivity_service_end_point': 'protecting-connectivity-service-end-point',
            'direction': 'direction',
            'capacity': 'capacity'
        }
        self._name = name
        self._local_id = local_id
        self._operational_state = operational_state
        self._lifecycle_state = lifecycle_state
        self._administrative_state = administrative_state
        self._protection_role = protection_role
        self._role = role
        self._service_interface_point = service_interface_point
        self._peer_fwd_connectivity_service_end_point = peer_fwd_connectivity_service_end_point
        self._layer_protocol_name = layer_protocol_name
        self._layer_protocol_qualifier = layer_protocol_qualifier
        self._connection_end_point = connection_end_point
        self._server_connectivity_service_end_point = server_connectivity_service_end_point
        self._protecting_connectivity_service_end_point = protecting_connectivity_service_end_point
        self._direction = direction
        self._capacity = capacity

    @classmethod
    def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityServiceEndPoint':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The tapi.connectivity.ConnectivityServiceEndPoint of this TapiConnectivityConnectivityServiceEndPoint.  # noqa: E501
        :rtype: TapiConnectivityConnectivityServiceEndPoint
        """
        return util.deserialize_model(dikt, cls)

    @property
    def name(self) -> List[TapiCommonNameAndValue]:
        """Gets the name of this TapiConnectivityConnectivityServiceEndPoint.

        List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.  # noqa: E501

        :return: The name of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: List[TapiCommonNameAndValue]
        """
        return self._name

    @name.setter
    def name(self, name: List[TapiCommonNameAndValue]):
        """Sets the name of this TapiConnectivityConnectivityServiceEndPoint.

        List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.  # noqa: E501

        :param name: The name of this TapiConnectivityConnectivityServiceEndPoint.
        :type name: List[TapiCommonNameAndValue]
        """

        self._name = name

    @property
    def local_id(self) -> str:
        """Gets the local_id of this TapiConnectivityConnectivityServiceEndPoint.

        none  # noqa: E501

        :return: The local_id of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: str
        """
        return self._local_id

    @local_id.setter
    def local_id(self, local_id: str):
        """Sets the local_id of this TapiConnectivityConnectivityServiceEndPoint.

        none  # noqa: E501

        :param local_id: The local_id of this TapiConnectivityConnectivityServiceEndPoint.
        :type local_id: str
        """

        self._local_id = local_id

    @property
    def operational_state(self) -> TapiCommonOperationalState:
        """Gets the operational_state of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The operational_state of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiCommonOperationalState
        """
        return self._operational_state

    @operational_state.setter
    def operational_state(self, operational_state: TapiCommonOperationalState):
        """Sets the operational_state of this TapiConnectivityConnectivityServiceEndPoint.


        :param operational_state: The operational_state of this TapiConnectivityConnectivityServiceEndPoint.
        :type operational_state: TapiCommonOperationalState
        """

        self._operational_state = operational_state

    @property
    def lifecycle_state(self) -> TapiCommonLifecycleState:
        """Gets the lifecycle_state of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The lifecycle_state of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiCommonLifecycleState
        """
        return self._lifecycle_state

    @lifecycle_state.setter
    def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState):
        """Sets the lifecycle_state of this TapiConnectivityConnectivityServiceEndPoint.


        :param lifecycle_state: The lifecycle_state of this TapiConnectivityConnectivityServiceEndPoint.
        :type lifecycle_state: TapiCommonLifecycleState
        """

        self._lifecycle_state = lifecycle_state

    @property
    def administrative_state(self) -> TapiCommonAdministrativeState:
        """Gets the administrative_state of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The administrative_state of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiCommonAdministrativeState
        """
        return self._administrative_state

    @administrative_state.setter
    def administrative_state(self, administrative_state: TapiCommonAdministrativeState):
        """Sets the administrative_state of this TapiConnectivityConnectivityServiceEndPoint.


        :param administrative_state: The administrative_state of this TapiConnectivityConnectivityServiceEndPoint.
        :type administrative_state: TapiCommonAdministrativeState
        """

        self._administrative_state = administrative_state

    @property
    def protection_role(self) -> TapiConnectivityProtectionRole:
        """Gets the protection_role of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The protection_role of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiConnectivityProtectionRole
        """
        return self._protection_role

    @protection_role.setter
    def protection_role(self, protection_role: TapiConnectivityProtectionRole):
        """Sets the protection_role of this TapiConnectivityConnectivityServiceEndPoint.


        :param protection_role: The protection_role of this TapiConnectivityConnectivityServiceEndPoint.
        :type protection_role: TapiConnectivityProtectionRole
        """

        self._protection_role = protection_role

    @property
    def role(self) -> TapiCommonPortRole:
        """Gets the role of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The role of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiCommonPortRole
        """
        return self._role

    @role.setter
    def role(self, role: TapiCommonPortRole):
        """Sets the role of this TapiConnectivityConnectivityServiceEndPoint.


        :param role: The role of this TapiConnectivityConnectivityServiceEndPoint.
        :type role: TapiCommonPortRole
        """

        self._role = role

    @property
    def service_interface_point(self) -> TapiCommonServiceInterfacePointRef:
        """Gets the service_interface_point of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The service_interface_point of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiCommonServiceInterfacePointRef
        """
        return self._service_interface_point

    @service_interface_point.setter
    def service_interface_point(self, service_interface_point: TapiCommonServiceInterfacePointRef):
        """Sets the service_interface_point of this TapiConnectivityConnectivityServiceEndPoint.


        :param service_interface_point: The service_interface_point of this TapiConnectivityConnectivityServiceEndPoint.
        :type service_interface_point: TapiCommonServiceInterfacePointRef
        """

        self._service_interface_point = service_interface_point

    @property
    def peer_fwd_connectivity_service_end_point(self) -> TapiConnectivityConnectivityServiceEndPointRef:
        """Gets the peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiConnectivityConnectivityServiceEndPointRef
        """
        return self._peer_fwd_connectivity_service_end_point

    @peer_fwd_connectivity_service_end_point.setter
    def peer_fwd_connectivity_service_end_point(self, peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef):
        """Sets the peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.


        :param peer_fwd_connectivity_service_end_point: The peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.
        :type peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef
        """

        self._peer_fwd_connectivity_service_end_point = peer_fwd_connectivity_service_end_point

    @property
    def layer_protocol_name(self) -> TapiCommonLayerProtocolName:
        """Gets the layer_protocol_name of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The layer_protocol_name of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiCommonLayerProtocolName
        """
        return self._layer_protocol_name

    @layer_protocol_name.setter
    def layer_protocol_name(self, layer_protocol_name: TapiCommonLayerProtocolName):
        """Sets the layer_protocol_name of this TapiConnectivityConnectivityServiceEndPoint.


        :param layer_protocol_name: The layer_protocol_name of this TapiConnectivityConnectivityServiceEndPoint.
        :type layer_protocol_name: TapiCommonLayerProtocolName
        """

        self._layer_protocol_name = layer_protocol_name

    @property
    def layer_protocol_qualifier(self) -> str:
        """Gets the layer_protocol_qualifier of this TapiConnectivityConnectivityServiceEndPoint.

        none  # noqa: E501

        :return: The layer_protocol_qualifier of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: str
        """
        return self._layer_protocol_qualifier

    @layer_protocol_qualifier.setter
    def layer_protocol_qualifier(self, layer_protocol_qualifier: str):
        """Sets the layer_protocol_qualifier of this TapiConnectivityConnectivityServiceEndPoint.

        none  # noqa: E501

        :param layer_protocol_qualifier: The layer_protocol_qualifier of this TapiConnectivityConnectivityServiceEndPoint.
        :type layer_protocol_qualifier: str
        """

        self._layer_protocol_qualifier = layer_protocol_qualifier

    @property
    def connection_end_point(self) -> List[TapiConnectivityConnectionEndPointRef]:
        """Gets the connection_end_point of this TapiConnectivityConnectivityServiceEndPoint.

        none  # noqa: E501

        :return: The connection_end_point of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: List[TapiConnectivityConnectionEndPointRef]
        """
        return self._connection_end_point

    @connection_end_point.setter
    def connection_end_point(self, connection_end_point: List[TapiConnectivityConnectionEndPointRef]):
        """Sets the connection_end_point of this TapiConnectivityConnectivityServiceEndPoint.

        none  # noqa: E501

        :param connection_end_point: The connection_end_point of this TapiConnectivityConnectivityServiceEndPoint.
        :type connection_end_point: List[TapiConnectivityConnectionEndPointRef]
        """

        self._connection_end_point = connection_end_point

    @property
    def server_connectivity_service_end_point(self) -> TapiConnectivityConnectivityServiceEndPointRef:
        """Gets the server_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The server_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiConnectivityConnectivityServiceEndPointRef
        """
        return self._server_connectivity_service_end_point

    @server_connectivity_service_end_point.setter
    def server_connectivity_service_end_point(self, server_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef):
        """Sets the server_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.


        :param server_connectivity_service_end_point: The server_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.
        :type server_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef
        """

        self._server_connectivity_service_end_point = server_connectivity_service_end_point

    @property
    def protecting_connectivity_service_end_point(self) -> TapiConnectivityConnectivityServiceEndPointRef:
        """Gets the protecting_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The protecting_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiConnectivityConnectivityServiceEndPointRef
        """
        return self._protecting_connectivity_service_end_point

    @protecting_connectivity_service_end_point.setter
    def protecting_connectivity_service_end_point(self, protecting_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef):
        """Sets the protecting_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.


        :param protecting_connectivity_service_end_point: The protecting_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint.
        :type protecting_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef
        """

        self._protecting_connectivity_service_end_point = protecting_connectivity_service_end_point

    @property
    def direction(self) -> TapiCommonPortDirection:
        """Gets the direction of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The direction of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiCommonPortDirection
        """
        return self._direction

    @direction.setter
    def direction(self, direction: TapiCommonPortDirection):
        """Sets the direction of this TapiConnectivityConnectivityServiceEndPoint.


        :param direction: The direction of this TapiConnectivityConnectivityServiceEndPoint.
        :type direction: TapiCommonPortDirection
        """

        self._direction = direction

    @property
    def capacity(self) -> TapiCommonCapacity:
        """Gets the capacity of this TapiConnectivityConnectivityServiceEndPoint.


        :return: The capacity of this TapiConnectivityConnectivityServiceEndPoint.
        :rtype: TapiCommonCapacity
        """
        return self._capacity

    @capacity.setter
    def capacity(self, capacity: TapiCommonCapacity):
        """Sets the capacity of this TapiConnectivityConnectivityServiceEndPoint.


        :param capacity: The capacity of this TapiConnectivityConnectivityServiceEndPoint.
        :type capacity: TapiCommonCapacity
        """

        self._capacity = capacity
