# 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_capacity_pac import TapiCommonCapacityPac  # noqa: F401,E501
from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass  # 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_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_topology_cost_characteristic import TapiTopologyCostCharacteristic  # noqa: F401,E501
from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic  # noqa: F401,E501
from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef  # noqa: F401,E501
from tapi_server.models.tapi_topology_node_owned_node_edge_point import TapiTopologyNodeOwnedNodeEdgePoint  # noqa: F401,E501
from tapi_server.models.tapi_topology_node_rule_group import TapiTopologyNodeRuleGroup  # noqa: F401,E501
from tapi_server.models.tapi_topology_topology_ref import TapiTopologyTopologyRef  # noqa: F401,E501
from tapi_server.models.tapi_topology_transfer_cost_pac import TapiTopologyTransferCostPac  # noqa: F401,E501
from tapi_server.models.tapi_topology_transfer_integrity_pac import TapiTopologyTransferIntegrityPac  # noqa: F401,E501
from tapi_server.models.tapi_topology_transfer_timing_pac import TapiTopologyTransferTimingPac  # noqa: F401,E501
from tapi_server import util


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

    Do not edit the class manually.
    """

    def __init__(self, operational_state=None, lifecycle_state=None, administrative_state=None, available_capacity=None, total_potential_capacity=None, name=None, uuid=None, cost_characteristic=None, error_characteristic=None, unavailable_time_characteristic=None, server_integrity_process_characteristic=None, delivery_order_characteristic=None, repeat_delivery_characteristic=None, loss_characteristic=None, latency_characteristic=None, layer_protocol_name=None, encap_topology=None, owned_node_edge_point=None, node_rule_group=None, aggregated_node_edge_point=None):  # noqa: E501
        """TapiTopologyTopologyNode - a model defined in OpenAPI

        :param operational_state: The operational_state of this TapiTopologyTopologyNode.  # noqa: E501
        :type operational_state: TapiCommonOperationalState
        :param lifecycle_state: The lifecycle_state of this TapiTopologyTopologyNode.  # noqa: E501
        :type lifecycle_state: TapiCommonLifecycleState
        :param administrative_state: The administrative_state of this TapiTopologyTopologyNode.  # noqa: E501
        :type administrative_state: TapiCommonAdministrativeState
        :param available_capacity: The available_capacity of this TapiTopologyTopologyNode.  # noqa: E501
        :type available_capacity: TapiCommonCapacity
        :param total_potential_capacity: The total_potential_capacity of this TapiTopologyTopologyNode.  # noqa: E501
        :type total_potential_capacity: TapiCommonCapacity
        :param name: The name of this TapiTopologyTopologyNode.  # noqa: E501
        :type name: List[TapiCommonNameAndValue]
        :param uuid: The uuid of this TapiTopologyTopologyNode.  # noqa: E501
        :type uuid: str
        :param cost_characteristic: The cost_characteristic of this TapiTopologyTopologyNode.  # noqa: E501
        :type cost_characteristic: List[TapiTopologyCostCharacteristic]
        :param error_characteristic: The error_characteristic of this TapiTopologyTopologyNode.  # noqa: E501
        :type error_characteristic: str
        :param unavailable_time_characteristic: The unavailable_time_characteristic of this TapiTopologyTopologyNode.  # noqa: E501
        :type unavailable_time_characteristic: str
        :param server_integrity_process_characteristic: The server_integrity_process_characteristic of this TapiTopologyTopologyNode.  # noqa: E501
        :type server_integrity_process_characteristic: str
        :param delivery_order_characteristic: The delivery_order_characteristic of this TapiTopologyTopologyNode.  # noqa: E501
        :type delivery_order_characteristic: str
        :param repeat_delivery_characteristic: The repeat_delivery_characteristic of this TapiTopologyTopologyNode.  # noqa: E501
        :type repeat_delivery_characteristic: str
        :param loss_characteristic: The loss_characteristic of this TapiTopologyTopologyNode.  # noqa: E501
        :type loss_characteristic: str
        :param latency_characteristic: The latency_characteristic of this TapiTopologyTopologyNode.  # noqa: E501
        :type latency_characteristic: List[TapiTopologyLatencyCharacteristic]
        :param layer_protocol_name: The layer_protocol_name of this TapiTopologyTopologyNode.  # noqa: E501
        :type layer_protocol_name: List[TapiCommonLayerProtocolName]
        :param encap_topology: The encap_topology of this TapiTopologyTopologyNode.  # noqa: E501
        :type encap_topology: TapiTopologyTopologyRef
        :param owned_node_edge_point: The owned_node_edge_point of this TapiTopologyTopologyNode.  # noqa: E501
        :type owned_node_edge_point: List[TapiTopologyNodeOwnedNodeEdgePoint]
        :param node_rule_group: The node_rule_group of this TapiTopologyTopologyNode.  # noqa: E501
        :type node_rule_group: List[TapiTopologyNodeRuleGroup]
        :param aggregated_node_edge_point: The aggregated_node_edge_point of this TapiTopologyTopologyNode.  # noqa: E501
        :type aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef]
        """
        self.openapi_types = {
            'operational_state': TapiCommonOperationalState,
            'lifecycle_state': TapiCommonLifecycleState,
            'administrative_state': TapiCommonAdministrativeState,
            'available_capacity': TapiCommonCapacity,
            'total_potential_capacity': TapiCommonCapacity,
            'name': List[TapiCommonNameAndValue],
            'uuid': str,
            'cost_characteristic': List[TapiTopologyCostCharacteristic],
            'error_characteristic': str,
            'unavailable_time_characteristic': str,
            'server_integrity_process_characteristic': str,
            'delivery_order_characteristic': str,
            'repeat_delivery_characteristic': str,
            'loss_characteristic': str,
            'latency_characteristic': List[TapiTopologyLatencyCharacteristic],
            'layer_protocol_name': List[TapiCommonLayerProtocolName],
            'encap_topology': TapiTopologyTopologyRef,
            'owned_node_edge_point': List[TapiTopologyNodeOwnedNodeEdgePoint],
            'node_rule_group': List[TapiTopologyNodeRuleGroup],
            'aggregated_node_edge_point': List[TapiTopologyNodeEdgePointRef]
        }

        self.attribute_map = {
            'operational_state': 'operational-state',
            'lifecycle_state': 'lifecycle-state',
            'administrative_state': 'administrative-state',
            'available_capacity': 'available-capacity',
            'total_potential_capacity': 'total-potential-capacity',
            'name': 'name',
            'uuid': 'uuid',
            'cost_characteristic': 'cost-characteristic',
            'error_characteristic': 'error-characteristic',
            'unavailable_time_characteristic': 'unavailable-time-characteristic',
            'server_integrity_process_characteristic': 'server-integrity-process-characteristic',
            'delivery_order_characteristic': 'delivery-order-characteristic',
            'repeat_delivery_characteristic': 'repeat-delivery-characteristic',
            'loss_characteristic': 'loss-characteristic',
            'latency_characteristic': 'latency-characteristic',
            'layer_protocol_name': 'layer-protocol-name',
            'encap_topology': 'encap-topology',
            'owned_node_edge_point': 'owned-node-edge-point',
            'node_rule_group': 'node-rule-group',
            'aggregated_node_edge_point': 'aggregated-node-edge-point'
        }

        self._operational_state = operational_state
        self._lifecycle_state = lifecycle_state
        self._administrative_state = administrative_state
        self._available_capacity = available_capacity
        self._total_potential_capacity = total_potential_capacity
        self._name = name
        self._uuid = uuid
        self._cost_characteristic = cost_characteristic
        self._error_characteristic = error_characteristic
        self._unavailable_time_characteristic = unavailable_time_characteristic
        self._server_integrity_process_characteristic = server_integrity_process_characteristic
        self._delivery_order_characteristic = delivery_order_characteristic
        self._repeat_delivery_characteristic = repeat_delivery_characteristic
        self._loss_characteristic = loss_characteristic
        self._latency_characteristic = latency_characteristic