# coding: utf-8

"""
    AssistedInstall

    Assisted installation  # noqa: E501

    OpenAPI spec version: 1.0.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class InstallCmdRequest(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 = {
        'cluster_id': 'str',
        'infra_env_id': 'str',
        'host_id': 'str',
        'role': 'HostRole',
        'boot_device': 'str',
        'controller_image': 'str',
        'installer_image': 'str',
        'high_availability_mode': 'str',
        'proxy': 'Proxy',
        'check_cvo': 'bool',
        'disks_to_format': 'list[str]',
        'must_gather_image': 'str',
        'mco_image': 'str',
        'openshift_version': 'str',
        'service_ips': 'list[str]',
        'installer_args': 'str',
        'skip_installation_disk_cleanup': 'bool',
        'enable_skip_mco_reboot': 'bool',
        'notify_num_reboots': 'bool'
    }

    attribute_map = {
        'cluster_id': 'cluster_id',
        'infra_env_id': 'infra_env_id',
        'host_id': 'host_id',
        'role': 'role',
        'boot_device': 'boot_device',
        'controller_image': 'controller_image',
        'installer_image': 'installer_image',
        'high_availability_mode': 'high_availability_mode',
        'proxy': 'proxy',
        'check_cvo': 'check_cvo',
        'disks_to_format': 'disks_to_format',
        'must_gather_image': 'must_gather_image',
        'mco_image': 'mco_image',
        'openshift_version': 'openshift_version',
        'service_ips': 'service_ips',
        'installer_args': 'installer_args',
        'skip_installation_disk_cleanup': 'skip_installation_disk_cleanup',
        'enable_skip_mco_reboot': 'enable_skip_mco_reboot',
        'notify_num_reboots': 'notify_num_reboots'
    }

    def __init__(self, cluster_id=None, infra_env_id=None, host_id=None, role=None, boot_device=None, controller_image=None, installer_image=None, high_availability_mode='Full', proxy=None, check_cvo=True, disks_to_format=None, must_gather_image=None, mco_image=None, openshift_version=None, service_ips=None, installer_args=None, skip_installation_disk_cleanup=None, enable_skip_mco_reboot=None, notify_num_reboots=None):  # noqa: E501
        """InstallCmdRequest - a model defined in Swagger"""  # noqa: E501

        self._cluster_id = None
        self._infra_env_id = None
        self._host_id = None
        self._role = None
        self._boot_device = None
        self._controller_image = None
        self._installer_image = None
        self._high_availability_mode = None
        self._proxy = None
        self._check_cvo = None
        self._disks_to_format = None
        self._must_gather_image = None
        self._mco_image = None
        self._openshift_version = None
        self._service_ips = None
        self._installer_args = None
        self._skip_installation_disk_cleanup = None
        self._enable_skip_mco_reboot = None
        self._notify_num_reboots = None
        self.discriminator = None

        self.cluster_id = cluster_id
        self.infra_env_id = infra_env_id
        self.host_id = host_id
        self.role = role
        self.boot_device = boot_device
        self.controller_image = controller_image
        self.installer_image = installer_image
        if high_availability_mode is not None:
            self.high_availability_mode = high_availability_mode
        if proxy is not None:
            self.proxy = proxy
        if check_cvo is not None:
            self.check_cvo = check_cvo
        if disks_to_format is not None:
            self.disks_to_format = disks_to_format
        if must_gather_image is not None:
            self.must_gather_image = must_gather_image
        if mco_image is not None:
            self.mco_image = mco_image
        if openshift_version is not None:
            self.openshift_version = openshift_version
        if service_ips is not None:
            self.service_ips = service_ips
        if installer_args is not None:
            self.installer_args = installer_args
        if skip_installation_disk_cleanup is not None:
            self.skip_installation_disk_cleanup = skip_installation_disk_cleanup
        if enable_skip_mco_reboot is not None:
            self.enable_skip_mco_reboot = enable_skip_mco_reboot
        if notify_num_reboots is not None:
            self.notify_num_reboots = notify_num_reboots

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

        Cluster id  # noqa: E501

        :return: The cluster_id of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._cluster_id

    @cluster_id.setter
    def cluster_id(self, cluster_id):
        """Sets the cluster_id of this InstallCmdRequest.

        Cluster id  # noqa: E501

        :param cluster_id: The cluster_id of this InstallCmdRequest.  # noqa: E501
        :type: str
        """
        if cluster_id is None:
            raise ValueError("Invalid value for `cluster_id`, must not be `None`")  # noqa: E501

        self._cluster_id = cluster_id

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

        Infra env id  # noqa: E501

        :return: The infra_env_id of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._infra_env_id

    @infra_env_id.setter
    def infra_env_id(self, infra_env_id):
        """Sets the infra_env_id of this InstallCmdRequest.

        Infra env id  # noqa: E501

        :param infra_env_id: The infra_env_id of this InstallCmdRequest.  # noqa: E501
        :type: str
        """
        if infra_env_id is None:
            raise ValueError("Invalid value for `infra_env_id`, must not be `None`")  # noqa: E501

        self._infra_env_id = infra_env_id

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

        Host id  # noqa: E501

        :return: The host_id of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._host_id

    @host_id.setter
    def host_id(self, host_id):
        """Sets the host_id of this InstallCmdRequest.

        Host id  # noqa: E501

        :param host_id: The host_id of this InstallCmdRequest.  # noqa: E501
        :type: str
        """
        if host_id is None:
            raise ValueError("Invalid value for `host_id`, must not be `None`")  # noqa: E501

        self._host_id = host_id

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


        :return: The role of this InstallCmdRequest.  # noqa: E501
        :rtype: HostRole
        """
        return self._role

    @role.setter
    def role(self, role):
        """Sets the role of this InstallCmdRequest.


        :param role: The role of this InstallCmdRequest.  # noqa: E501
        :type: HostRole
        """
        if role is None:
            raise ValueError("Invalid value for `role`, must not be `None`")  # noqa: E501

        self._role = role

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

        Boot device to write image on  # noqa: E501

        :return: The boot_device of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._boot_device

    @boot_device.setter
    def boot_device(self, boot_device):
        """Sets the boot_device of this InstallCmdRequest.

        Boot device to write image on  # noqa: E501

        :param boot_device: The boot_device of this InstallCmdRequest.  # noqa: E501
        :type: str
        """
        if boot_device is None:
            raise ValueError("Invalid value for `boot_device`, must not be `None`")  # noqa: E501

        self._boot_device = boot_device

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

        Assisted installer controller image  # noqa: E501

        :return: The controller_image of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._controller_image

    @controller_image.setter
    def controller_image(self, controller_image):
        """Sets the controller_image of this InstallCmdRequest.

        Assisted installer controller image  # noqa: E501

        :param controller_image: The controller_image of this InstallCmdRequest.  # noqa: E501
        :type: str
        """
        if controller_image is None:
            raise ValueError("Invalid value for `controller_image`, must not be `None`")  # noqa: E501

        self._controller_image = controller_image

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

        Assisted installer image  # noqa: E501

        :return: The installer_image of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._installer_image

    @installer_image.setter
    def installer_image(self, installer_image):
        """Sets the installer_image of this InstallCmdRequest.

        Assisted installer image  # noqa: E501

        :param installer_image: The installer_image of this InstallCmdRequest.  # noqa: E501
        :type: str
        """
        if installer_image is None:
            raise ValueError("Invalid value for `installer_image`, must not be `None`")  # noqa: E501

        self._installer_image = installer_image

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

        Guaranteed availability of the installed cluster. 'Full' installs a Highly-Available cluster over multiple master nodes whereas 'None' installs a full cluster over one node.   # noqa: E501

        :return: The high_availability_mode of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._high_availability_mode

    @high_availability_mode.setter
    def high_availability_mode(self, high_availability_mode):
        """Sets the high_availability_mode of this InstallCmdRequest.

        Guaranteed availability of the installed cluster. 'Full' installs a Highly-Available cluster over multiple master nodes whereas 'None' installs a full cluster over one node.   # noqa: E501

        :param high_availability_mode: The high_availability_mode of this InstallCmdRequest.  # noqa: E501
        :type: str
        """
        allowed_values = ["Full", "None"]  # noqa: E501
        if high_availability_mode not in allowed_values:
            raise ValueError(
                "Invalid value for `high_availability_mode` ({0}), must be one of {1}"  # noqa: E501
                .format(high_availability_mode, allowed_values)
            )

        self._high_availability_mode = high_availability_mode

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


        :return: The proxy of this InstallCmdRequest.  # noqa: E501
        :rtype: Proxy
        """
        return self._proxy

    @proxy.setter
    def proxy(self, proxy):
        """Sets the proxy of this InstallCmdRequest.


        :param proxy: The proxy of this InstallCmdRequest.  # noqa: E501
        :type: Proxy
        """

        self._proxy = proxy

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

        Check CVO status if needed  # noqa: E501

        :return: The check_cvo of this InstallCmdRequest.  # noqa: E501
        :rtype: bool
        """
        return self._check_cvo

    @check_cvo.setter
    def check_cvo(self, check_cvo):
        """Sets the check_cvo of this InstallCmdRequest.

        Check CVO status if needed  # noqa: E501

        :param check_cvo: The check_cvo of this InstallCmdRequest.  # noqa: E501
        :type: bool
        """

        self._check_cvo = check_cvo

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

        List of disks to format  # noqa: E501

        :return: The disks_to_format of this InstallCmdRequest.  # noqa: E501
        :rtype: list[str]
        """
        return self._disks_to_format

    @disks_to_format.setter
    def disks_to_format(self, disks_to_format):
        """Sets the disks_to_format of this InstallCmdRequest.

        List of disks to format  # noqa: E501

        :param disks_to_format: The disks_to_format of this InstallCmdRequest.  # noqa: E501
        :type: list[str]
        """

        self._disks_to_format = disks_to_format

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

        Must-gather images to use  # noqa: E501

        :return: The must_gather_image of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._must_gather_image

    @must_gather_image.setter
    def must_gather_image(self, must_gather_image):
        """Sets the must_gather_image of this InstallCmdRequest.

        Must-gather images to use  # noqa: E501

        :param must_gather_image: The must_gather_image of this InstallCmdRequest.  # noqa: E501
        :type: str
        """

        self._must_gather_image = must_gather_image

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

        Machine config operator image  # noqa: E501

        :return: The mco_image of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._mco_image

    @mco_image.setter
    def mco_image(self, mco_image):
        """Sets the mco_image of this InstallCmdRequest.

        Machine config operator image  # noqa: E501

        :param mco_image: The mco_image of this InstallCmdRequest.  # noqa: E501
        :type: str
        """

        self._mco_image = mco_image

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

        Version of the OpenShift cluster.  # noqa: E501

        :return: The openshift_version of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._openshift_version

    @openshift_version.setter
    def openshift_version(self, openshift_version):
        """Sets the openshift_version of this InstallCmdRequest.

        Version of the OpenShift cluster.  # noqa: E501

        :param openshift_version: The openshift_version of this InstallCmdRequest.  # noqa: E501
        :type: str
        """

        self._openshift_version = openshift_version

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

        List of service ips  # noqa: E501

        :return: The service_ips of this InstallCmdRequest.  # noqa: E501
        :rtype: list[str]
        """
        return self._service_ips

    @service_ips.setter
    def service_ips(self, service_ips):
        """Sets the service_ips of this InstallCmdRequest.

        List of service ips  # noqa: E501

        :param service_ips: The service_ips of this InstallCmdRequest.  # noqa: E501
        :type: list[str]
        """

        self._service_ips = service_ips

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

        Core-os installer addtional args  # noqa: E501

        :return: The installer_args of this InstallCmdRequest.  # noqa: E501
        :rtype: str
        """
        return self._installer_args

    @installer_args.setter
    def installer_args(self, installer_args):
        """Sets the installer_args of this InstallCmdRequest.

        Core-os installer addtional args  # noqa: E501

        :param installer_args: The installer_args of this InstallCmdRequest.  # noqa: E501
        :type: str
        """

        self._installer_args = installer_args

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

        Skip formatting installation disk  # noqa: E501

        :return: The skip_installation_disk_cleanup of this InstallCmdRequest.  # noqa: E501
        :rtype: bool
        """
        return self._skip_installation_disk_cleanup

    @skip_installation_disk_cleanup.setter
    def skip_installation_disk_cleanup(self, skip_installation_disk_cleanup):
        """Sets the skip_installation_disk_cleanup of this InstallCmdRequest.

        Skip formatting installation disk  # noqa: E501

        :param skip_installation_disk_cleanup: The skip_installation_disk_cleanup of this InstallCmdRequest.  # noqa: E501
        :type: bool
        """

        self._skip_installation_disk_cleanup = skip_installation_disk_cleanup

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

        If true, assisted service will attempt to skip MCO reboot  # noqa: E501

        :return: The enable_skip_mco_reboot of this InstallCmdRequest.  # noqa: E501
        :rtype: bool
        """
        return self._enable_skip_mco_reboot

    @enable_skip_mco_reboot.setter
    def enable_skip_mco_reboot(self, enable_skip_mco_reboot):
        """Sets the enable_skip_mco_reboot of this InstallCmdRequest.

        If true, assisted service will attempt to skip MCO reboot  # noqa: E501

        :param enable_skip_mco_reboot: The enable_skip_mco_reboot of this InstallCmdRequest.  # noqa: E501
        :type: bool
        """

        self._enable_skip_mco_reboot = enable_skip_mco_reboot

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

        If true, notify number of reboots by assisted controller  # noqa: E501

        :return: The notify_num_reboots of this InstallCmdRequest.  # noqa: E501
        :rtype: bool
        """
        return self._notify_num_reboots

    @notify_num_reboots.setter
    def notify_num_reboots(self, notify_num_reboots):
        """Sets the notify_num_reboots of this InstallCmdRequest.

        If true, notify number of reboots by assisted controller  # noqa: E501

        :param notify_num_reboots: The notify_num_reboots of this InstallCmdRequest.  # noqa: E501
        :type: bool
        """

        self._notify_num_reboots = notify_num_reboots

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

        return self.__dict__ == other.__dict__

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