# coding: utf-8

"""
    Akeyless API

    The purpose of this application is to provide access to Akeyless API.  # noqa: E501

    The version of the OpenAPI document: 2.0
    Contact: support@akeyless.io
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from akeyless.configuration import Configuration


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

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'cert_issue_details': 'CertificateIssueInfo',
        'certificate_chain_info': 'CertificateChainInfo',
        'classic_key_details': 'ClassicKeyDetailsInfo',
        'cluster_gw_url': 'str',
        'display_metadata': 'str',
        'dynamic_secret_producer_details': 'DynamicSecretProducerInfo',
        'password_policy': 'PasswordPolicyInfo',
        'rotated_secret_details': 'RotatedSecretDetailsInfo',
        'secure_remote_access_details': 'SecureRemoteAccess',
        'static_secret_info': 'StaticSecretDetailsInfo',
        'tokenizer_info': 'TokenizerInfo'
    }

    attribute_map = {
        'cert_issue_details': 'cert_issue_details',
        'certificate_chain_info': 'certificate_chain_info',
        'classic_key_details': 'classic_key_details',
        'cluster_gw_url': 'cluster_gw_url',
        'display_metadata': 'display_metadata',
        'dynamic_secret_producer_details': 'dynamic_secret_producer_details',
        'password_policy': 'password_policy',
        'rotated_secret_details': 'rotated_secret_details',
        'secure_remote_access_details': 'secure_remote_access_details',
        'static_secret_info': 'static_secret_info',
        'tokenizer_info': 'tokenizer_info'
    }

    def __init__(self, cert_issue_details=None, certificate_chain_info=None, classic_key_details=None, cluster_gw_url=None, display_metadata=None, dynamic_secret_producer_details=None, password_policy=None, rotated_secret_details=None, secure_remote_access_details=None, static_secret_info=None, tokenizer_info=None, local_vars_configuration=None):  # noqa: E501
        """ItemGeneralInfo - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._cert_issue_details = None
        self._certificate_chain_info = None
        self._classic_key_details = None
        self._cluster_gw_url = None
        self._display_metadata = None
        self._dynamic_secret_producer_details = None
        self._password_policy = None
        self._rotated_secret_details = None
        self._secure_remote_access_details = None
        self._static_secret_info = None
        self._tokenizer_info = None
        self.discriminator = None

        if cert_issue_details is not None:
            self.cert_issue_details = cert_issue_details
        if certificate_chain_info is not None:
            self.certificate_chain_info = certificate_chain_info
        if classic_key_details is not None:
            self.classic_key_details = classic_key_details
        if cluster_gw_url is not None:
            self.cluster_gw_url = cluster_gw_url
        if display_metadata is not None:
            self.display_metadata = display_metadata
        if dynamic_secret_producer_details is not None:
            self.dynamic_secret_producer_details = dynamic_secret_producer_details
        if password_policy is not None:
            self.password_policy = password_policy
        if rotated_secret_details is not None:
            self.rotated_secret_details = rotated_secret_details
        if secure_remote_access_details is not None:
            self.secure_remote_access_details = secure_remote_access_details
        if static_secret_info is not None:
            self.static_secret_info = static_secret_info
        if tokenizer_info is not None:
            self.tokenizer_info = tokenizer_info

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


        :return: The cert_issue_details of this ItemGeneralInfo.  # noqa: E501
        :rtype: CertificateIssueInfo
        """
        return self._cert_issue_details

    @cert_issue_details.setter
    def cert_issue_details(self, cert_issue_details):
        """Sets the cert_issue_details of this ItemGeneralInfo.


        :param cert_issue_details: The cert_issue_details of this ItemGeneralInfo.  # noqa: E501
        :type: CertificateIssueInfo
        """

        self._cert_issue_details = cert_issue_details

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


        :return: The certificate_chain_info of this ItemGeneralInfo.  # noqa: E501
        :rtype: CertificateChainInfo
        """
        return self._certificate_chain_info

    @certificate_chain_info.setter
    def certificate_chain_info(self, certificate_chain_info):
        """Sets the certificate_chain_info of this ItemGeneralInfo.


        :param certificate_chain_info: The certificate_chain_info of this ItemGeneralInfo.  # noqa: E501
        :type: CertificateChainInfo
        """

        self._certificate_chain_info = certificate_chain_info

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


        :return: The classic_key_details of this ItemGeneralInfo.  # noqa: E501
        :rtype: ClassicKeyDetailsInfo
        """
        return self._classic_key_details

    @classic_key_details.setter
    def classic_key_details(self, classic_key_details):
        """Sets the classic_key_details of this ItemGeneralInfo.


        :param classic_key_details: The classic_key_details of this ItemGeneralInfo.  # noqa: E501
        :type: ClassicKeyDetailsInfo
        """

        self._classic_key_details = classic_key_details

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


        :return: The cluster_gw_url of this ItemGeneralInfo.  # noqa: E501
        :rtype: str
        """
        return self._cluster_gw_url

    @cluster_gw_url.setter
    def cluster_gw_url(self, cluster_gw_url):
        """Sets the cluster_gw_url of this ItemGeneralInfo.


        :param cluster_gw_url: The cluster_gw_url of this ItemGeneralInfo.  # noqa: E501
        :type: str
        """

        self._cluster_gw_url = cluster_gw_url

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


        :return: The display_metadata of this ItemGeneralInfo.  # noqa: E501
        :rtype: str
        """
        return self._display_metadata

    @display_metadata.setter
    def display_metadata(self, display_metadata):
        """Sets the display_metadata of this ItemGeneralInfo.


        :param display_metadata: The display_metadata of this ItemGeneralInfo.  # noqa: E501
        :type: str
        """

        self._display_metadata = display_metadata

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


        :return: The dynamic_secret_producer_details of this ItemGeneralInfo.  # noqa: E501
        :rtype: DynamicSecretProducerInfo
        """
        return self._dynamic_secret_producer_details

    @dynamic_secret_producer_details.setter
    def dynamic_secret_producer_details(self, dynamic_secret_producer_details):
        """Sets the dynamic_secret_producer_details of this ItemGeneralInfo.


        :param dynamic_secret_producer_details: The dynamic_secret_producer_details of this ItemGeneralInfo.  # noqa: E501
        :type: DynamicSecretProducerInfo
        """

        self._dynamic_secret_producer_details = dynamic_secret_producer_details

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


        :return: The password_policy of this ItemGeneralInfo.  # noqa: E501
        :rtype: PasswordPolicyInfo
        """
        return self._password_policy

    @password_policy.setter
    def password_policy(self, password_policy):
        """Sets the password_policy of this ItemGeneralInfo.


        :param password_policy: The password_policy of this ItemGeneralInfo.  # noqa: E501
        :type: PasswordPolicyInfo
        """

        self._password_policy = password_policy

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


        :return: The rotated_secret_details of this ItemGeneralInfo.  # noqa: E501
        :rtype: RotatedSecretDetailsInfo
        """
        return self._rotated_secret_details

    @rotated_secret_details.setter
    def rotated_secret_details(self, rotated_secret_details):
        """Sets the rotated_secret_details of this ItemGeneralInfo.


        :param rotated_secret_details: The rotated_secret_details of this ItemGeneralInfo.  # noqa: E501
        :type: RotatedSecretDetailsInfo
        """

        self._rotated_secret_details = rotated_secret_details

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


        :return: The secure_remote_access_details of this ItemGeneralInfo.  # noqa: E501
        :rtype: SecureRemoteAccess
        """
        return self._secure_remote_access_details

    @secure_remote_access_details.setter
    def secure_remote_access_details(self, secure_remote_access_details):
        """Sets the secure_remote_access_details of this ItemGeneralInfo.


        :param secure_remote_access_details: The secure_remote_access_details of this ItemGeneralInfo.  # noqa: E501
        :type: SecureRemoteAccess
        """

        self._secure_remote_access_details = secure_remote_access_details

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


        :return: The static_secret_info of this ItemGeneralInfo.  # noqa: E501
        :rtype: StaticSecretDetailsInfo
        """
        return self._static_secret_info

    @static_secret_info.setter
    def static_secret_info(self, static_secret_info):
        """Sets the static_secret_info of this ItemGeneralInfo.


        :param static_secret_info: The static_secret_info of this ItemGeneralInfo.  # noqa: E501
        :type: StaticSecretDetailsInfo
        """

        self._static_secret_info = static_secret_info

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


        :return: The tokenizer_info of this ItemGeneralInfo.  # noqa: E501
        :rtype: TokenizerInfo
        """
        return self._tokenizer_info

    @tokenizer_info.setter
    def tokenizer_info(self, tokenizer_info):
        """Sets the tokenizer_info of this ItemGeneralInfo.


        :param tokenizer_info: The tokenizer_info of this ItemGeneralInfo.  # noqa: E501
        :type: TokenizerInfo
        """

        self._tokenizer_info = tokenizer_info

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

        for attr, _ in six.iteritems(self.openapi_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

        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, ItemGeneralInfo):
            return False

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
