# coding: utf-8

"""
    Karbon Platform Services API reference.

    OpenAPI documentation for public facing Karbon Platform Services API  This API documentation is generated from source code using go-swagger. Do not edit the generated kps_api.json directly!  # noqa: E501

    OpenAPI spec version: 1.0
    Contact: karbon-platform-services-api@nutanix.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six
from kps_api.models.attribute_manifest import AttributeManifest  # noqa: F401,E501
from kps_api.models.authorization_policy import AuthorizationPolicy  # noqa: F401,E501
from kps_api.models.cluster_rbac_config import ClusterRbacConfig  # noqa: F401,E501
from kps_api.models.destination_rule import DestinationRule  # noqa: F401,E501
from kps_api.models.envoy_filter import EnvoyFilter  # noqa: F401,E501
from kps_api.models.gateway import Gateway  # noqa: F401,E501
from kps_api.models.http_api_spec import HttpApiSpec  # noqa: F401,E501
from kps_api.models.http_api_spec_binding import HttpApiSpecBinding  # noqa: F401,E501
from kps_api.models.istio_adapter import IstioAdapter  # noqa: F401,E501
from kps_api.models.istio_handler import IstioHandler  # noqa: F401,E501
from kps_api.models.istio_instance import IstioInstance  # noqa: F401,E501
from kps_api.models.istio_rule import IstioRule  # noqa: F401,E501
from kps_api.models.istio_template import IstioTemplate  # noqa: F401,E501
from kps_api.models.istio_validation import IstioValidation  # noqa: F401,E501
from kps_api.models.mesh_policy import MeshPolicy  # noqa: F401,E501
from kps_api.models.namespace import Namespace  # noqa: F401,E501
from kps_api.models.peer_authentication import PeerAuthentication  # noqa: F401,E501
from kps_api.models.policy import Policy  # noqa: F401,E501
from kps_api.models.quota_spec import QuotaSpec  # noqa: F401,E501
from kps_api.models.quota_spec_binding import QuotaSpecBinding  # noqa: F401,E501
from kps_api.models.rbac_config import RbacConfig  # noqa: F401,E501
from kps_api.models.request_authentication import RequestAuthentication  # noqa: F401,E501
from kps_api.models.resource_permissions import ResourcePermissions  # noqa: F401,E501
from kps_api.models.service_entry import ServiceEntry  # noqa: F401,E501
from kps_api.models.service_mesh_policy import ServiceMeshPolicy  # noqa: F401,E501
from kps_api.models.service_mesh_rbac_config import ServiceMeshRbacConfig  # noqa: F401,E501
from kps_api.models.service_role import ServiceRole  # noqa: F401,E501
from kps_api.models.service_role_binding import ServiceRoleBinding  # noqa: F401,E501
from kps_api.models.sidecar import Sidecar  # noqa: F401,E501
from kps_api.models.virtual_service import VirtualService  # noqa: F401,E501
from kps_api.models.workload_entry import WorkloadEntry  # noqa: F401,E501


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

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'adapter': 'IstioAdapter',
        'attribute_manifest': 'AttributeManifest',
        'authorization_policy': 'AuthorizationPolicy',
        'cluster_rbac_config': 'ClusterRbacConfig',
        'destination_rule': 'DestinationRule',
        'envoy_filter': 'EnvoyFilter',
        'gateway': 'Gateway',
        'handler': 'IstioHandler',
        'http_api_spec': 'HttpApiSpec',
        'http_api_spec_binding': 'HttpApiSpecBinding',
        'instance': 'IstioInstance',
        'istio_validation': 'IstioValidation',
        'mesh_policy': 'MeshPolicy',
        'namespace': 'Namespace',
        'object_type': 'str',
        'peer_authentication': 'PeerAuthentication',
        'permissions': 'ResourcePermissions',
        'policy': 'Policy',
        'quota_spec': 'QuotaSpec',
        'quota_spec_binding': 'QuotaSpecBinding',
        'rbac_config': 'RbacConfig',
        'request_authentication': 'RequestAuthentication',
        'rule': 'IstioRule',
        'service_entry': 'ServiceEntry',
        'service_mesh_policy': 'ServiceMeshPolicy',
        'service_mesh_rbac_config': 'ServiceMeshRbacConfig',
        'service_role': 'ServiceRole',
        'service_role_binding': 'ServiceRoleBinding',
        'sidecar': 'Sidecar',
        'template': 'IstioTemplate',
        'virtual_service': 'VirtualService',
        'workload_entry': 'WorkloadEntry'
    }

    attribute_map = {
        'adapter': 'adapter',
        'attribute_manifest': 'attributeManifest',
        'authorization_policy': 'authorizationPolicy',
        'cluster_rbac_config': 'clusterRbacConfig',
        'destination_rule': 'destinationRule',
        'envoy_filter': 'envoyFilter',
        'gateway': 'gateway',
        'handler': 'handler',
        'http_api_spec': 'httpApiSpec',
        'http_api_spec_binding': 'httpApiSpecBinding',
        'instance': 'instance',
        'istio_validation': 'istioValidation',
        'mesh_policy': 'meshPolicy',
        'namespace': 'namespace',
        'object_type': 'objectType',
        'peer_authentication': 'peerAuthentication',
        'permissions': 'permissions',
        'policy': 'policy',
        'quota_spec': 'quotaSpec',
        'quota_spec_binding': 'quotaSpecBinding',
        'rbac_config': 'rbacConfig',
        'request_authentication': 'requestAuthentication',
        'rule': 'rule',
        'service_entry': 'serviceEntry',
        'service_mesh_policy': 'serviceMeshPolicy',
        'service_mesh_rbac_config': 'serviceMeshRbacConfig',
        'service_role': 'serviceRole',
        'service_role_binding': 'serviceRoleBinding',
        'sidecar': 'sidecar',
        'template': 'template',
        'virtual_service': 'virtualService',
        'workload_entry': 'workloadEntry'
    }

    def __init__(self, adapter=None, attribute_manifest=None, authorization_policy=None, cluster_rbac_config=None, destination_rule=None, envoy_filter=None, gateway=None, handler=None, http_api_spec=None, http_api_spec_binding=None, instance=None, istio_validation=None, mesh_policy=None, namespace=None, object_type=None, peer_authentication=None, permissions=None, policy=None, quota_spec=None, quota_spec_binding=None, rbac_config=None, request_authentication=None, rule=None, service_entry=None, service_mesh_policy=None, service_mesh_rbac_config=None, service_role=None, service_role_binding=None, sidecar=None, template=None, virtual_service=None, workload_entry=None):  # noqa: E501
        """IstioConfigDetails - a model defined in Swagger"""  # noqa: E501
        self._adapter = None
        self._attribute_manifest = None
        self._authorization_policy = None
        self._cluster_rbac_config = None
        self._destination_rule = None
        self._envoy_filter = None
        self._gateway = None
        self._handler = None
        self._http_api_spec = None
        self._http_api_spec_binding = None
        self._instance = None
        self._istio_validation = None
        self._mesh_policy = None
        self._namespace = None
        self._object_type = None
        self._peer_authentication = None
        self._permissions = None
        self._policy = None
        self._quota_spec = None
        self._quota_spec_binding = None
        self._rbac_config = None
        self._request_authentication = None
        self._rule = None
        self._service_entry = None
        self._service_mesh_policy = None
        self._service_mesh_rbac_config = None
        self._service_role = None
        self._service_role_binding = None
        self._sidecar = None
        self._template = None
        self._virtual_service = None
        self._workload_entry = None
        self.discriminator = None
        if adapter is not None:
            self.adapter = adapter
        if attribute_manifest is not None:
            self.attribute_manifest = attribute_manifest
        if authorization_policy is not None:
            self.authorization_policy = authorization_policy
        if cluster_rbac_config is not None:
            self.cluster_rbac_config = cluster_rbac_config
        if destination_rule is not None:
            self.destination_rule = destination_rule
        if envoy_filter is not None:
            self.envoy_filter = envoy_filter
        if gateway is not None:
            self.gateway = gateway
        if handler is not None:
            self.handler = handler
        if http_api_spec is not None:
            self.http_api_spec = http_api_spec
        if http_api_spec_binding is not None:
            self.http_api_spec_binding = http_api_spec_binding
        if instance is not None:
            self.instance = instance
        if istio_validation is not None:
            self.istio_validation = istio_validation
        if mesh_policy is not None:
            self.mesh_policy = mesh_policy
        if namespace is not None:
            self.namespace = namespace
        if object_type is not None:
            self.object_type = object_type
        if peer_authentication is not None:
            self.peer_authentication = peer_authentication
        if permissions is not None:
            self.permissions = permissions
        if policy is not None:
            self.policy = policy
        if quota_spec is not None:
            self.quota_spec = quota_spec
        if quota_spec_binding is not None:
            self.quota_spec_binding = quota_spec_binding
        if rbac_config is not None:
            self.rbac_config = rbac_config
        if request_authentication is not None:
            self.request_authentication = request_authentication
        if rule is not None:
            self.rule = rule
        if service_entry is not None:
            self.service_entry = service_entry
        if service_mesh_policy is not None:
            self.service_mesh_policy = service_mesh_policy
        if service_mesh_rbac_config is not None:
            self.service_mesh_rbac_config = service_mesh_rbac_config
        if service_role is not None:
            self.service_role = service_role
        if service_role_binding is not None:
            self.service_role_binding = service_role_binding
        if sidecar is not None:
            self.sidecar = sidecar
        if template is not None:
            self.template = template
        if virtual_service is not None:
            self.virtual_service = virtual_service
        if workload_entry is not None:
            self.workload_entry = workload_entry

    @property
    def adapter(self):
        """Gets the adapter of this IstioConfigDetails.  # noqa: E501


        :return: The adapter of this IstioConfigDetails.  # noqa: E501
        :rtype: IstioAdapter
        """
        return self._adapter

    @adapter.setter
    def adapter(self, adapter):
        """Sets the adapter of this IstioConfigDetails.


        :param adapter: The adapter of this IstioConfigDetails.  # noqa: E501
        :type: IstioAdapter
        """

        self._adapter = adapter

    @property
    def attribute_manifest(self):
        """Gets the attribute_manifest of this IstioConfigDetails.  # noqa: E501


        :return: The attribute_manifest of this IstioConfigDetails.  # noqa: E501
        :rtype: AttributeManifest
        """
        return self._attribute_manifest

    @attribute_manifest.setter
    def attribute_manifest(self, attribute_manifest):
        """Sets the attribute_manifest of this IstioConfigDetails.


        :param attribute_manifest: The attribute_manifest of this IstioConfigDetails.  # noqa: E501
        :type: AttributeManifest
        """

        self._attribute_manifest = attribute_manifest

    @property
    def authorization_policy(self):
        """Gets the authorization_policy of this IstioConfigDetails.  # noqa: E501


        :return: The authorization_policy of this IstioConfigDetails.  # noqa: E501
        :rtype: AuthorizationPolicy
        """
        return self._authorization_policy

    @authorization_policy.setter
    def authorization_policy(self, authorization_policy):
        """Sets the authorization_policy of this IstioConfigDetails.


        :param authorization_policy: The authorization_policy of this IstioConfigDetails.  # noqa: E501
        :type: AuthorizationPolicy
        """

        self._authorization_policy = authorization_policy

    @property
    def cluster_rbac_config(self):
        """Gets the cluster_rbac_config of this IstioConfigDetails.  # noqa: E501


        :return: The cluster_rbac_config of this IstioConfigDetails.  # noqa: E501
        :rtype: ClusterRbacConfig
        """
        return self._cluster_rbac_config

    @cluster_rbac_config.setter
    def cluster_rbac_config(self, cluster_rbac_config):
        """Sets the cluster_rbac_config of this IstioConfigDetails.


        :param cluster_rbac_config: The cluster_rbac_config of this IstioConfigDetails.  # noqa: E501
        :type: ClusterRbacConfig
        """

        self._cluster_rbac_config = cluster_rbac_config

    @property
    def destination_rule(self):
        """Gets the destination_rule of this IstioConfigDetails.  # noqa: E501


        :return: The destination_rule of this IstioConfigDetails.  # noqa: E501
        :rtype: DestinationRule
        """
        return self._destination_rule

    @destination_rule.setter
    def destination_rule(self, destination_rule):
        """Sets the destination_rule of this IstioConfigDetails.


        :param destination_rule: The destination_rule of this IstioConfigDetails.  # noqa: E501
        :type: DestinationRule
        """

        self._destination_rule = destination_rule

    @property
    def envoy_filter(self):
        """Gets the envoy_filter of this IstioConfigDetails.  # noqa: E501


        :return: The envoy_filter of this IstioConfigDetails.  # noqa: E501
        :rtype: EnvoyFilter
        """
        return self._envoy_filter

    @envoy_filter.setter
    def envoy_filter(self, envoy_filter):
        """Sets the envoy_filter of this IstioConfigDetails.


        :param envoy_filter: The envoy_filter of this IstioConfigDetails.  # noqa: E501
        :type: EnvoyFilter
        """

        self._envoy_filter = envoy_filter

    @property
    def gateway(self):
        """Gets the gateway of this IstioConfigDetails.  # noqa: E501


        :return: The gateway of this IstioConfigDetails.  # noqa: E501
        :rtype: Gateway
        """
        return self._gateway

    @gateway.setter
    def gateway(self, gateway):
        """Sets the gateway of this IstioConfigDetails.


        :param gateway: The gateway of this IstioConfigDetails.  # noqa: E501
        :type: Gateway
        """

        self._gateway = gateway

    @property
    def handler(self):
        """Gets the handler of this IstioConfigDetails.  # noqa: E501


        :return: The handler of this IstioConfigDetails.  # noqa: E501
        :rtype: IstioHandler
        """
        return self._handler

    @handler.setter
    def handler(self, handler):
        """Sets the handler of this IstioConfigDetails.


        :param handler: The handler of this IstioConfigDetails.  # noqa: E501
        :type: IstioHandler
        """

        self._handler = handler

    @property
    def http_api_spec(self):
        """Gets the http_api_spec of this IstioConfigDetails.  # noqa: E501


        :return: The http_api_spec of this IstioConfigDetails.  # noqa: E501
        :rtype: HttpApiSpec
        """
        return self._http_api_spec

    @http_api_spec.setter
    def http_api_spec(self, http_api_spec):
        """Sets the http_api_spec of this IstioConfigDetails.


        :param http_api_spec: The http_api_spec of this IstioConfigDetails.  # noqa: E501
        :type: HttpApiSpec
        """

        self._http_api_spec = http_api_spec

    @property
    def http_api_spec_binding(self):
        """Gets the http_api_spec_binding of this IstioConfigDetails.  # noqa: E501


        :return: The http_api_spec_binding of this IstioConfigDetails.  # noqa: E501
        :rtype: HttpApiSpecBinding
        """
        return self._http_api_spec_binding

    @http_api_spec_binding.setter
    def http_api_spec_binding(self, http_api_spec_binding):
        """Sets the http_api_spec_binding of this IstioConfigDetails.


        :param http_api_spec_binding: The http_api_spec_binding of this IstioConfigDetails.  # noqa: E501
        :type: HttpApiSpecBinding
        """

        self._http_api_spec_binding = http_api_spec_binding

    @property
    def instance(self):
        """Gets the instance of this IstioConfigDetails.  # noqa: E501


        :return: The instance of this IstioConfigDetails.  # noqa: E501
        :rtype: IstioInstance
        """
        return self._instance

    @instance.setter
    def instance(self, instance):
        """Sets the instance of this IstioConfigDetails.


        :param instance: The instance of this IstioConfigDetails.  # noqa: E501
        :type: IstioInstance
        """

        self._instance = instance

    @property
    def istio_validation(self):
        """Gets the istio_validation of this IstioConfigDetails.  # noqa: E501


        :return: The istio_validation of this IstioConfigDetails.  # noqa: E501
        :rtype: IstioValidation
        """
        return self._istio_validation

    @istio_validation.setter
    def istio_validation(self, istio_validation):
        """Sets the istio_validation of this IstioConfigDetails.


        :param istio_validation: The istio_validation of this IstioConfigDetails.  # noqa: E501
        :type: IstioValidation
        """

        self._istio_validation = istio_validation

    @property
    def mesh_policy(self):
        """Gets the mesh_policy of this IstioConfigDetails.  # noqa: E501


        :return: The mesh_policy of this IstioConfigDetails.  # noqa: E501
        :rtype: MeshPolicy
        """
        return self._mesh_policy

    @mesh_policy.setter
    def mesh_policy(self, mesh_policy):
        """Sets the mesh_policy of this IstioConfigDetails.


        :param mesh_policy: The mesh_policy of this IstioConfigDetails.  # noqa: E501
        :type: MeshPolicy
        """

        self._mesh_policy = mesh_policy

    @property
    def namespace(self):
        """Gets the namespace of this IstioConfigDetails.  # noqa: E501


        :return: The namespace of this IstioConfigDetails.  # noqa: E501
        :rtype: Namespace
        """
        return self._namespace

    @namespace.setter
    def namespace(self, namespace):
        """Sets the namespace of this IstioConfigDetails.


        :param namespace: The namespace of this IstioConfigDetails.  # noqa: E501
        :type: Namespace
        """

        self._namespace = namespace

    @property
    def object_type(self):
        """Gets the object_type of this IstioConfigDetails.  # noqa: E501


        :return: The object_type of this IstioConfigDetails.  # noqa: E501
        :rtype: str
        """
        return self._object_type

    @object_type.setter
    def object_type(self, object_type):
        """Sets the object_type of this IstioConfigDetails.


        :param object_type: The object_type of this IstioConfigDetails.  # noqa: E501
        :type: str
        """

        self._object_type = object_type

    @property
    def peer_authentication(self):
        """Gets the peer_authentication of this IstioConfigDetails.  # noqa: E501


        :return: The peer_authentication of this IstioConfigDetails.  # noqa: E501
        :rtype: PeerAuthentication
        """
        return self._peer_authentication

    @peer_authentication.setter
    def peer_authentication(self, peer_authentication):
        """Sets the peer_authentication of this IstioConfigDetails.


        :param peer_authentication: The peer_authentication of this IstioConfigDetails.  # noqa: E501
        :type: PeerAuthentication
        """

        self._peer_authentication = peer_authentication

    @property
    def permissions(self):
        """Gets the permissions of this IstioConfigDetails.  # noqa: E501


        :return: The permissions of this IstioConfigDetails.  # noqa: E501
        :rtype: ResourcePermissions
        """
        return self._permissions

    @permissions.setter
    def permissions(self, permissions):
        """Sets the permissions of this IstioConfigDetails.


        :param permissions: The permissions of this IstioConfigDetails.  # noqa: E501
        :type: ResourcePermissions
        """

        self._permissions = permissions

    @property
    def policy(self):
        """Gets the policy of this IstioConfigDetails.  # noqa: E501


        :return: The policy of this IstioConfigDetails.  # noqa: E501
        :rtype: Policy
        """
        return self._policy

    @policy.setter
    def policy(self, policy):
        """Sets the policy of this IstioConfigDetails.


        :param policy: The policy of this IstioConfigDetails.  # noqa: E501
        :type: Policy
        """

        self._policy = policy

    @property
    def quota_spec(self):
        """Gets the quota_spec of this IstioConfigDetails.  # noqa: E501


        :return: The quota_spec of this IstioConfigDetails.  # noqa: E501
        :rtype: QuotaSpec
        """
        return self._quota_spec

    @quota_spec.setter
    def quota_spec(self, quota_spec):
        """Sets the quota_spec of this IstioConfigDetails.


        :param quota_spec: The quota_spec of this IstioConfigDetails.  # noqa: E501
        :type: QuotaSpec
        """

        self._quota_spec = quota_spec

    @property
    def quota_spec_binding(self):
        """Gets the quota_spec_binding of this IstioConfigDetails.  # noqa: E501


        :return: The quota_spec_binding of this IstioConfigDetails.  # noqa: E501
        :rtype: QuotaSpecBinding
        """
        return self._quota_spec_binding

    @quota_spec_binding.setter
    def quota_spec_binding(self, quota_spec_binding):
        """Sets the quota_spec_binding of this IstioConfigDetails.


        :param quota_spec_binding: The quota_spec_binding of this IstioConfigDetails.  # noqa: E501
        :type: QuotaSpecBinding
        """

        self._quota_spec_binding = quota_spec_binding

    @property
    def rbac_config(self):
        """Gets the rbac_config of this IstioConfigDetails.  # noqa: E501


        :return: The rbac_config of this IstioConfigDetails.  # noqa: E501
        :rtype: RbacConfig
        """
        return self._rbac_config

    @rbac_config.setter
    def rbac_config(self, rbac_config):
        """Sets the rbac_config of this IstioConfigDetails.


        :param rbac_config: The rbac_config of this IstioConfigDetails.  # noqa: E501
        :type: RbacConfig
        """

        self._rbac_config = rbac_config

    @property
    def request_authentication(self):
        """Gets the request_authentication of this IstioConfigDetails.  # noqa: E501


        :return: The request_authentication of this IstioConfigDetails.  # noqa: E501
        :rtype: RequestAuthentication
        """
        return self._request_authentication

    @request_authentication.setter
    def request_authentication(self, request_authentication):
        """Sets the request_authentication of this IstioConfigDetails.


        :param request_authentication: The request_authentication of this IstioConfigDetails.  # noqa: E501
        :type: RequestAuthentication
        """

        self._request_authentication = request_authentication

    @property
    def rule(self):
        """Gets the rule of this IstioConfigDetails.  # noqa: E501


        :return: The rule of this IstioConfigDetails.  # noqa: E501
        :rtype: IstioRule
        """
        return self._rule

    @rule.setter
    def rule(self, rule):
        """Sets the rule of this IstioConfigDetails.


        :param rule: The rule of this IstioConfigDetails.  # noqa: E501
        :type: IstioRule
        """

        self._rule = rule

    @property
    def service_entry(self):
        """Gets the service_entry of this IstioConfigDetails.  # noqa: E501


        :return: The service_entry of this IstioConfigDetails.  # noqa: E501
        :rtype: ServiceEntry
        """
        return self._service_entry

    @service_entry.setter
    def service_entry(self, service_entry):
        """Sets the service_entry of this IstioConfigDetails.


        :param service_entry: The service_entry of this IstioConfigDetails.  # noqa: E501
        :type: ServiceEntry
        """

        self._service_entry = service_entry

    @property
    def service_mesh_policy(self):
        """Gets the service_mesh_policy of this IstioConfigDetails.  # noqa: E501


        :return: The service_mesh_policy of this IstioConfigDetails.  # noqa: E501
        :rtype: ServiceMeshPolicy
        """
        return self._service_mesh_policy

    @service_mesh_policy.setter
    def service_mesh_policy(self, service_mesh_policy):
        """Sets the service_mesh_policy of this IstioConfigDetails.


        :param service_mesh_policy: The service_mesh_policy of this IstioConfigDetails.  # noqa: E501
        :type: ServiceMeshPolicy
        """

        self._service_mesh_policy = service_mesh_policy

    @property
    def service_mesh_rbac_config(self):
        """Gets the service_mesh_rbac_config of this IstioConfigDetails.  # noqa: E501


        :return: The service_mesh_rbac_config of this IstioConfigDetails.  # noqa: E501
        :rtype: ServiceMeshRbacConfig
        """
        return self._service_mesh_rbac_config

    @service_mesh_rbac_config.setter
    def service_mesh_rbac_config(self, service_mesh_rbac_config):
        """Sets the service_mesh_rbac_config of this IstioConfigDetails.


        :param service_mesh_rbac_config: The service_mesh_rbac_config of this IstioConfigDetails.  # noqa: E501
        :type: ServiceMeshRbacConfig
        """

        self._service_mesh_rbac_config = service_mesh_rbac_config

    @property
    def service_role(self):
        """Gets the service_role of this IstioConfigDetails.  # noqa: E501


        :return: The service_role of this IstioConfigDetails.  # noqa: E501
        :rtype: ServiceRole
        """
        return self._service_role

    @service_role.setter
    def service_role(self, service_role):
        """Sets the service_role of this IstioConfigDetails.


        :param service_role: The service_role of this IstioConfigDetails.  # noqa: E501
        :type: ServiceRole
        """

        self._service_role = service_role

    @property
    def service_role_binding(self):
        """Gets the service_role_binding of this IstioConfigDetails.  # noqa: E501


        :return: The service_role_binding of this IstioConfigDetails.  # noqa: E501
        :rtype: ServiceRoleBinding
        """
        return self._service_role_binding

    @service_role_binding.setter
    def service_role_binding(self, service_role_binding):
        """Sets the service_role_binding of this IstioConfigDetails.


        :param service_role_binding: The service_role_binding of this IstioConfigDetails.  # noqa: E501
        :type: ServiceRoleBinding
        """

        self._service_role_binding = service_role_binding

    @property
    def sidecar(self):
        """Gets the sidecar of this IstioConfigDetails.  # noqa: E501


        :return: The sidecar of this IstioConfigDetails.  # noqa: E501
        :rtype: Sidecar
        """
        return self._sidecar

    @sidecar.setter
    def sidecar(self, sidecar):
        """Sets the sidecar of this IstioConfigDetails.


        :param sidecar: The sidecar of this IstioConfigDetails.  # noqa: E501
        :type: Sidecar
        """

        self._sidecar = sidecar

    @property
    def template(self):
        """Gets the template of this IstioConfigDetails.  # noqa: E501


        :return: The template of this IstioConfigDetails.  # noqa: E501
        :rtype: IstioTemplate
        """
        return self._template

    @template.setter
    def template(self, template):
        """Sets the template of this IstioConfigDetails.


        :param template: The template of this IstioConfigDetails.  # noqa: E501
        :type: IstioTemplate
        """

        self._template = template

    @property
    def virtual_service(self):
        """Gets the virtual_service of this IstioConfigDetails.  # noqa: E501


        :return: The virtual_service of this IstioConfigDetails.  # noqa: E501
        :rtype: VirtualService
        """
        return self._virtual_service

    @virtual_service.setter
    def virtual_service(self, virtual_service):
        """Sets the virtual_service of this IstioConfigDetails.


        :param virtual_service: The virtual_service of this IstioConfigDetails.  # noqa: E501
        :type: VirtualService
        """

        self._virtual_service = virtual_service

    @property
    def workload_entry(self):
        """Gets the workload_entry of this IstioConfigDetails.  # noqa: E501


        :return: The workload_entry of this IstioConfigDetails.  # noqa: E501
        :rtype: WorkloadEntry
        """
        return self._workload_entry

    @workload_entry.setter
    def workload_entry(self, workload_entry):
        """Sets the workload_entry of this IstioConfigDetails.


        :param workload_entry: The workload_entry of this IstioConfigDetails.  # noqa: E501
        :type: WorkloadEntry
        """

        self._workload_entry = workload_entry

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(IstioConfigDetails, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, IstioConfigDetails):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
