# 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 Connect(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 = {
        'helper': 'object',
        'rc_file_override': 'str',
        'bastion_ctrl_path': 'str',
        'bastion_ctrl_port': 'str',
        'bastion_ctrl_proto': 'str',
        'bastion_ctrl_subdomain': 'str',
        'cert_issuer_name': 'str',
        'identity_file': 'str',
        'json': 'bool',
        'name': 'str',
        'ssh_command': 'str',
        'ssh_extra_args': 'str',
        'ssh_legacy_signing_alg': 'bool',
        'target': 'str',
        'token': 'str',
        'uid_token': 'str',
        'via_bastion': 'str'
    }

    attribute_map = {
        'helper': 'Helper',
        'rc_file_override': 'RcFileOverride',
        'bastion_ctrl_path': 'bastion-ctrl-path',
        'bastion_ctrl_port': 'bastion-ctrl-port',
        'bastion_ctrl_proto': 'bastion-ctrl-proto',
        'bastion_ctrl_subdomain': 'bastion-ctrl-subdomain',
        'cert_issuer_name': 'cert-issuer-name',
        'identity_file': 'identity-file',
        'json': 'json',
        'name': 'name',
        'ssh_command': 'ssh-command',
        'ssh_extra_args': 'ssh-extra-args',
        'ssh_legacy_signing_alg': 'ssh-legacy-signing-alg',
        'target': 'target',
        'token': 'token',
        'uid_token': 'uid-token',
        'via_bastion': 'via-bastion'
    }

    def __init__(self, helper=None, rc_file_override=None, bastion_ctrl_path=None, bastion_ctrl_port='9900', bastion_ctrl_proto='http', bastion_ctrl_subdomain=None, cert_issuer_name=None, identity_file=None, json=None, name=None, ssh_command=None, ssh_extra_args=None, ssh_legacy_signing_alg=None, target=None, token=None, uid_token=None, via_bastion=None, local_vars_configuration=None):  # noqa: E501
        """Connect - 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._helper = None
        self._rc_file_override = None
        self._bastion_ctrl_path = None
        self._bastion_ctrl_port = None
        self._bastion_ctrl_proto = None
        self._bastion_ctrl_subdomain = None
        self._cert_issuer_name = None
        self._identity_file = None
        self._json = None
        self._name = None
        self._ssh_command = None
        self._ssh_extra_args = None
        self._ssh_legacy_signing_alg = None
        self._target = None
        self._token = None
        self._uid_token = None
        self._via_bastion = None
        self.discriminator = None

        if helper is not None:
            self.helper = helper
        if rc_file_override is not None:
            self.rc_file_override = rc_file_override
        if bastion_ctrl_path is not None:
            self.bastion_ctrl_path = bastion_ctrl_path
        if bastion_ctrl_port is not None:
            self.bastion_ctrl_port = bastion_ctrl_port
        if bastion_ctrl_proto is not None:
            self.bastion_ctrl_proto = bastion_ctrl_proto
        if bastion_ctrl_subdomain is not None:
            self.bastion_ctrl_subdomain = bastion_ctrl_subdomain
        if cert_issuer_name is not None:
            self.cert_issuer_name = cert_issuer_name
        if identity_file is not None:
            self.identity_file = identity_file
        if json is not None:
            self.json = json
        if name is not None:
            self.name = name
        if ssh_command is not None:
            self.ssh_command = ssh_command
        if ssh_extra_args is not None:
            self.ssh_extra_args = ssh_extra_args
        if ssh_legacy_signing_alg is not None:
            self.ssh_legacy_signing_alg = ssh_legacy_signing_alg
        if target is not None:
            self.target = target
        if token is not None:
            self.token = token
        if uid_token is not None:
            self.uid_token = uid_token
        if via_bastion is not None:
            self.via_bastion = via_bastion

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


        :return: The helper of this Connect.  # noqa: E501
        :rtype: object
        """
        return self._helper

    @helper.setter
    def helper(self, helper):
        """Sets the helper of this Connect.


        :param helper: The helper of this Connect.  # noqa: E501
        :type: object
        """

        self._helper = helper

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

        used to override .akeyless-connect.rc in tests  # noqa: E501

        :return: The rc_file_override of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._rc_file_override

    @rc_file_override.setter
    def rc_file_override(self, rc_file_override):
        """Sets the rc_file_override of this Connect.

        used to override .akeyless-connect.rc in tests  # noqa: E501

        :param rc_file_override: The rc_file_override of this Connect.  # noqa: E501
        :type: str
        """

        self._rc_file_override = rc_file_override

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

        The Bastion API path  # noqa: E501

        :return: The bastion_ctrl_path of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._bastion_ctrl_path

    @bastion_ctrl_path.setter
    def bastion_ctrl_path(self, bastion_ctrl_path):
        """Sets the bastion_ctrl_path of this Connect.

        The Bastion API path  # noqa: E501

        :param bastion_ctrl_path: The bastion_ctrl_path of this Connect.  # noqa: E501
        :type: str
        """

        self._bastion_ctrl_path = bastion_ctrl_path

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

        The Bastion API Port  # noqa: E501

        :return: The bastion_ctrl_port of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._bastion_ctrl_port

    @bastion_ctrl_port.setter
    def bastion_ctrl_port(self, bastion_ctrl_port):
        """Sets the bastion_ctrl_port of this Connect.

        The Bastion API Port  # noqa: E501

        :param bastion_ctrl_port: The bastion_ctrl_port of this Connect.  # noqa: E501
        :type: str
        """

        self._bastion_ctrl_port = bastion_ctrl_port

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

        The Bastion API protocol  # noqa: E501

        :return: The bastion_ctrl_proto of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._bastion_ctrl_proto

    @bastion_ctrl_proto.setter
    def bastion_ctrl_proto(self, bastion_ctrl_proto):
        """Sets the bastion_ctrl_proto of this Connect.

        The Bastion API protocol  # noqa: E501

        :param bastion_ctrl_proto: The bastion_ctrl_proto of this Connect.  # noqa: E501
        :type: str
        """

        self._bastion_ctrl_proto = bastion_ctrl_proto

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

        The Bastion API prefix  # noqa: E501

        :return: The bastion_ctrl_subdomain of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._bastion_ctrl_subdomain

    @bastion_ctrl_subdomain.setter
    def bastion_ctrl_subdomain(self, bastion_ctrl_subdomain):
        """Sets the bastion_ctrl_subdomain of this Connect.

        The Bastion API prefix  # noqa: E501

        :param bastion_ctrl_subdomain: The bastion_ctrl_subdomain of this Connect.  # noqa: E501
        :type: str
        """

        self._bastion_ctrl_subdomain = bastion_ctrl_subdomain

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

        The Akeyless certificate issuer name  # noqa: E501

        :return: The cert_issuer_name of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._cert_issuer_name

    @cert_issuer_name.setter
    def cert_issuer_name(self, cert_issuer_name):
        """Sets the cert_issuer_name of this Connect.

        The Akeyless certificate issuer name  # noqa: E501

        :param cert_issuer_name: The cert_issuer_name of this Connect.  # noqa: E501
        :type: str
        """

        self._cert_issuer_name = cert_issuer_name

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

        The file from which the identity (private key) for public key authentication is read  # noqa: E501

        :return: The identity_file of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._identity_file

    @identity_file.setter
    def identity_file(self, identity_file):
        """Sets the identity_file of this Connect.

        The file from which the identity (private key) for public key authentication is read  # noqa: E501

        :param identity_file: The identity_file of this Connect.  # noqa: E501
        :type: str
        """

        self._identity_file = identity_file

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

        Set output format to JSON  # noqa: E501

        :return: The json of this Connect.  # noqa: E501
        :rtype: bool
        """
        return self._json

    @json.setter
    def json(self, json):
        """Sets the json of this Connect.

        Set output format to JSON  # noqa: E501

        :param json: The json of this Connect.  # noqa: E501
        :type: bool
        """

        self._json = json

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

        The Secret name (for database and AWS producers - producer name)  # noqa: E501

        :return: The name of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._name

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

        The Secret name (for database and AWS producers - producer name)  # noqa: E501

        :param name: The name of this Connect.  # noqa: E501
        :type: str
        """

        self._name = name

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

        Path to SSH executable. e.g. /usr/bin/ssh  # noqa: E501

        :return: The ssh_command of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._ssh_command

    @ssh_command.setter
    def ssh_command(self, ssh_command):
        """Sets the ssh_command of this Connect.

        Path to SSH executable. e.g. /usr/bin/ssh  # noqa: E501

        :param ssh_command: The ssh_command of this Connect.  # noqa: E501
        :type: str
        """

        self._ssh_command = ssh_command

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

        The Use to add offical SSH arguments (except -i)  # noqa: E501

        :return: The ssh_extra_args of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._ssh_extra_args

    @ssh_extra_args.setter
    def ssh_extra_args(self, ssh_extra_args):
        """Sets the ssh_extra_args of this Connect.

        The Use to add offical SSH arguments (except -i)  # noqa: E501

        :param ssh_extra_args: The ssh_extra_args of this Connect.  # noqa: E501
        :type: str
        """

        self._ssh_extra_args = ssh_extra_args

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

        Set this option to output legacy ('ssh-rsa-cert-v01@openssh.com') signing algorithm name in the ssh certificate.  # noqa: E501

        :return: The ssh_legacy_signing_alg of this Connect.  # noqa: E501
        :rtype: bool
        """
        return self._ssh_legacy_signing_alg

    @ssh_legacy_signing_alg.setter
    def ssh_legacy_signing_alg(self, ssh_legacy_signing_alg):
        """Sets the ssh_legacy_signing_alg of this Connect.

        Set this option to output legacy ('ssh-rsa-cert-v01@openssh.com') signing algorithm name in the ssh certificate.  # noqa: E501

        :param ssh_legacy_signing_alg: The ssh_legacy_signing_alg of this Connect.  # noqa: E501
        :type: bool
        """

        self._ssh_legacy_signing_alg = ssh_legacy_signing_alg

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

        The target  # noqa: E501

        :return: The target of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._target

    @target.setter
    def target(self, target):
        """Sets the target of this Connect.

        The target  # noqa: E501

        :param target: The target of this Connect.  # noqa: E501
        :type: str
        """

        self._target = target

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

        Authentication token (see `/auth` and `/configure`)  # noqa: E501

        :return: The token of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._token

    @token.setter
    def token(self, token):
        """Sets the token of this Connect.

        Authentication token (see `/auth` and `/configure`)  # noqa: E501

        :param token: The token of this Connect.  # noqa: E501
        :type: str
        """

        self._token = token

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

        The universal identity token, Required only for universal_identity authentication  # noqa: E501

        :return: The uid_token of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._uid_token

    @uid_token.setter
    def uid_token(self, uid_token):
        """Sets the uid_token of this Connect.

        The universal identity token, Required only for universal_identity authentication  # noqa: E501

        :param uid_token: The uid_token of this Connect.  # noqa: E501
        :type: str
        """

        self._uid_token = uid_token

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

        The jump box server  # noqa: E501

        :return: The via_bastion of this Connect.  # noqa: E501
        :rtype: str
        """
        return self._via_bastion

    @via_bastion.setter
    def via_bastion(self, via_bastion):
        """Sets the via_bastion of this Connect.

        The jump box server  # noqa: E501

        :param via_bastion: The via_bastion of this Connect.  # noqa: E501
        :type: str
        """

        self._via_bastion = via_bastion

    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, Connect):
            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, Connect):
            return True

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