# 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_context_service_interface_point import TapiCommonContextServiceInterfacePoint  # noqa: F401,E501
from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass  # noqa: F401,E501
from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue  # noqa: F401,E501
from tapi_server.models.tapi_connectivity_connectivity_context import TapiConnectivityConnectivityContext  # noqa: F401,E501
from tapi_server.models.tapi_connectivity_context_augmentation4 import TapiConnectivityContextAugmentation4  # noqa: F401,E501
from tapi_server.models.tapi_notification_context_augmentation2 import TapiNotificationContextAugmentation2  # noqa: F401,E501
from tapi_server.models.tapi_notification_notification_context import TapiNotificationNotificationContext  # noqa: F401,E501
from tapi_server.models.tapi_oam_context_augmentation1 import TapiOamContextAugmentation1  # noqa: F401,E501
from tapi_server.models.tapi_oam_oam_context import TapiOamOamContext  # noqa: F401,E501
from tapi_server.models.tapi_path_computation_context_augmentation3 import TapiPathComputationContextAugmentation3  # noqa: F401,E501
from tapi_server.models.tapi_path_computation_path_computation_context import TapiPathComputationPathComputationContext  # noqa: F401,E501
from tapi_server.models.tapi_topology_context_augmentation5 import TapiTopologyContextAugmentation5  # noqa: F401,E501
from tapi_server.models.tapi_topology_topology_context import TapiTopologyTopologyContext  # noqa: F401,E501
from tapi_server import util


class TapiCommonContext(Model):
    """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

    Do not edit the class manually.
    """

    def __init__(self, name=None, uuid=None, connectivity_context=None, notification_context=None, oam_context=None, path_computation_context=None, topology_context=None, service_interface_point=None):  # noqa: E501
        """TapiCommonContext - a model defined in OpenAPI

        :param name: The name of this TapiCommonContext.  # noqa: E501
        :type name: List[TapiCommonNameAndValue]
        :param uuid: The uuid of this TapiCommonContext.  # noqa: E501
        :type uuid: str
        :param connectivity_context: The connectivity_context of this TapiCommonContext.  # noqa: E501
        :type connectivity_context: TapiConnectivityConnectivityContext
        :param notification_context: The notification_context of this TapiCommonContext.  # noqa: E501
        :type notification_context: TapiNotificationNotificationContext
        :param oam_context: The oam_context of this TapiCommonContext.  # noqa: E501
        :type oam_context: TapiOamOamContext
        :param path_computation_context: The path_computation_context of this TapiCommonContext.  # noqa: E501
        :type path_computation_context: TapiPathComputationPathComputationContext
        :param topology_context: The topology_context of this TapiCommonContext.  # noqa: E501
        :type topology_context: TapiTopologyTopologyContext
        :param service_interface_point: The service_interface_point of this TapiCommonContext.  # noqa: E501
        :type service_interface_point: List[TapiCommonContextServiceInterfacePoint]
        """
        self.openapi_types = {
            'name': List[TapiCommonNameAndValue],
            'uuid': str,
            'connectivity_context': TapiConnectivityConnectivityContext,
            'notification_context': TapiNotificationNotificationContext,
            'oam_context': TapiOamOamContext,
            'path_computation_context': TapiPathComputationPathComputationContext,
            'topology_context': TapiTopologyTopologyContext,
            'service_interface_point': List[TapiCommonContextServiceInterfacePoint]
        }

        self.attribute_map = {
            'name': 'name',
            'uuid': 'uuid',
            'connectivity_context': 'connectivity-context',
            'notification_context': 'notification-context',
            'oam_context': 'oam-context',
            'path_computation_context': 'path-computation-context',
            'topology_context': 'topology-context',
            'service_interface_point': 'service-interface-point'
        }

        self._name = name
        self._uuid = uuid
        self._connectivity_context = connectivity_context
        self._notification_context = notification_context
        self._oam_context = oam_context
        self._path_computation_context = path_computation_context
        self._topology_context = topology_context
        self._service_interface_point = service_interface_point

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

        :param dikt: A dict.
        :type: dict
        :return: The tapi.common.Context of this TapiCommonContext.  # noqa: E501
        :rtype: TapiCommonContext
        """
        return util.deserialize_model(dikt, cls)

    @property
    def name(self):
        """Gets the name of this TapiCommonContext.

        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 TapiCommonContext.
        :rtype: List[TapiCommonNameAndValue]
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this TapiCommonContext.

        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 TapiCommonContext.
        :type name: List[TapiCommonNameAndValue]
        """

        self._name = name

    @property
    def uuid(self):
        """Gets the uuid of this TapiCommonContext.

        UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity.                      UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.                      Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}                       Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6  # noqa: E501

        :return: The uuid of this TapiCommonContext.
        :rtype: str
        """
        return self._uuid

    @uuid.setter
    def uuid(self, uuid):
        """Sets the uuid of this TapiCommonContext.

        UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity.                      UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.                      Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}                       Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6  # noqa: E501

        :param uuid: The uuid of this TapiCommonContext.
        :type uuid: str
        """

        self._uuid = uuid

    @property
    def connectivity_context(self):
        """Gets the connectivity_context of this TapiCommonContext.


        :return: The connectivity_context of this TapiCommonContext.
        :rtype: TapiConnectivityConnectivityContext
        """
        return self._connectivity_context

    @connectivity_context.setter
    def connectivity_context(self, connectivity_context):
        """Sets the connectivity_context of this TapiCommonContext.


        :param connectivity_context: The connectivity_context of this TapiCommonContext.
        :type connectivity_context: TapiConnectivityConnectivityContext
        """

        self._connectivity_context = connectivity_context

    @property
    def notification_context(self):
        """Gets the notification_context of this TapiCommonContext.


        :return: The notification_context of this TapiCommonContext.
        :rtype: TapiNotificationNotificationContext
        """
        return self._notification_context

    @notification_context.setter
    def notification_context(self, notification_context):
        """Sets the notification_context of this TapiCommonContext.


        :param notification_context: The notification_context of this TapiCommonContext.
        :type notification_context: TapiNotificationNotificationContext
        """

        self._notification_context = notification_context

    @property
    def oam_context(self):
        """Gets the oam_context of this TapiCommonContext.


        :return: The oam_context of this TapiCommonContext.
        :rtype: TapiOamOamContext
        """
        return self._oam_context

    @oam_context.setter
    def oam_context(self, oam_context):
        """Sets the oam_context of this TapiCommonContext.


        :param oam_context: The oam_context of this TapiCommonContext.
        :type oam_context: TapiOamOamContext
        """

        self._oam_context = oam_context

    @property
    def path_computation_context(self):
        """Gets the path_computation_context of this TapiCommonContext.


        :return: The path_computation_context of this TapiCommonContext.
        :rtype: TapiPathComputationPathComputationContext
        """
        return self._path_computation_context

    @path_computation_context.setter
    def path_computation_context(self, path_computation_context):
        """Sets the path_computation_context of this TapiCommonContext.


        :param path_computation_context: The path_computation_context of this TapiCommonContext.
        :type path_computation_context: TapiPathComputationPathComputationContext
        """

        self._path_computation_context = path_computation_context

    @property
    def topology_context(self):
        """Gets the topology_context of this TapiCommonContext.


        :return: The topology_context of this TapiCommonContext.
        :rtype: TapiTopologyTopologyContext
        """
        return self._topology_context

    @topology_context.setter
    def topology_context(self, topology_context):
        """Sets the topology_context of this TapiCommonContext.


        :param topology_context: The topology_context of this TapiCommonContext.
        :type topology_context: TapiTopologyTopologyContext
        """

        self._topology_context = topology_context

    @property
    def service_interface_point(self):
        """Gets the service_interface_point of this TapiCommonContext.

        none  # noqa: E501

        :return: The service_interface_point of this TapiCommonContext.
        :rtype: List[TapiCommonContextServiceInterfacePoint]
        """
        return self._service_interface_point

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

        none  # noqa: E501

        :param service_interface_point: The service_interface_point of this TapiCommonContext.
        :type service_interface_point: List[TapiCommonContextServiceInterfacePoint]
        """

        self._service_interface_point = service_interface_point
