# coding: utf-8
# Copyright (c) 2016, 2026, Oracle and/or its affiliates.  All rights reserved.
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.

# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220509


from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel  # noqa: F401
from oci.decorators import init_model_state_from_kwargs


@init_model_state_from_kwargs
class OlvmDisplay(object):
    """
    Display object in OLVM
    """

    #: A constant which can be used with the display_type property of a OlvmDisplay.
    #: This constant has a value of "SPICE"
    DISPLAY_TYPE_SPICE = "SPICE"

    #: A constant which can be used with the display_type property of a OlvmDisplay.
    #: This constant has a value of "VNC"
    DISPLAY_TYPE_VNC = "VNC"

    def __init__(self, **kwargs):
        """
        Initializes a new OlvmDisplay object with values from keyword arguments.
        The following keyword arguments are supported (corresponding to the getters/setters of this class):

        :param address:
            The value to assign to the address property of this OlvmDisplay.
        :type address: str

        :param is_allow_override:
            The value to assign to the is_allow_override property of this OlvmDisplay.
        :type is_allow_override: bool

        :param certificate:
            The value to assign to the certificate property of this OlvmDisplay.
        :type certificate: oci.cloud_bridge.models.OlvmCertificate

        :param is_copy_paste_enabled:
            The value to assign to the is_copy_paste_enabled property of this OlvmDisplay.
        :type is_copy_paste_enabled: bool

        :param disconnect_action:
            The value to assign to the disconnect_action property of this OlvmDisplay.
        :type disconnect_action: str

        :param disconnect_action_delay_in_minutes:
            The value to assign to the disconnect_action_delay_in_minutes property of this OlvmDisplay.
        :type disconnect_action_delay_in_minutes: int

        :param is_file_transfer_enabled:
            The value to assign to the is_file_transfer_enabled property of this OlvmDisplay.
        :type is_file_transfer_enabled: bool

        :param keyboard_layout:
            The value to assign to the keyboard_layout property of this OlvmDisplay.
        :type keyboard_layout: str

        :param monitors:
            The value to assign to the monitors property of this OlvmDisplay.
        :type monitors: int

        :param port:
            The value to assign to the port property of this OlvmDisplay.
        :type port: int

        :param proxy:
            The value to assign to the proxy property of this OlvmDisplay.
        :type proxy: str

        :param secure_port:
            The value to assign to the secure_port property of this OlvmDisplay.
        :type secure_port: int

        :param is_single_qxl_pci:
            The value to assign to the is_single_qxl_pci property of this OlvmDisplay.
        :type is_single_qxl_pci: bool

        :param display_type:
            The value to assign to the display_type property of this OlvmDisplay.
            Allowed values for this property are: "SPICE", "VNC"
        :type display_type: str

        """
        self.swagger_types = {
            'address': 'str',
            'is_allow_override': 'bool',
            'certificate': 'OlvmCertificate',
            'is_copy_paste_enabled': 'bool',
            'disconnect_action': 'str',
            'disconnect_action_delay_in_minutes': 'int',
            'is_file_transfer_enabled': 'bool',
            'keyboard_layout': 'str',
            'monitors': 'int',
            'port': 'int',
            'proxy': 'str',
            'secure_port': 'int',
            'is_single_qxl_pci': 'bool',
            'display_type': 'str'
        }
        self.attribute_map = {
            'address': 'address',
            'is_allow_override': 'isAllowOverride',
            'certificate': 'certificate',
            'is_copy_paste_enabled': 'isCopyPasteEnabled',
            'disconnect_action': 'disconnectAction',
            'disconnect_action_delay_in_minutes': 'disconnectActionDelayInMinutes',
            'is_file_transfer_enabled': 'isFileTransferEnabled',
            'keyboard_layout': 'keyboardLayout',
            'monitors': 'monitors',
            'port': 'port',
            'proxy': 'proxy',
            'secure_port': 'securePort',
            'is_single_qxl_pci': 'isSingleQxlPci',
            'display_type': 'displayType'
        }
        self._address = None
        self._is_allow_override = None
        self._certificate = None
        self._is_copy_paste_enabled = None
        self._disconnect_action = None
        self._disconnect_action_delay_in_minutes = None
        self._is_file_transfer_enabled = None
        self._keyboard_layout = None
        self._monitors = None
        self._port = None
        self._proxy = None
        self._secure_port = None
        self._is_single_qxl_pci = None
        self._display_type = None

    @property
    def address(self):
        """
        Gets the address of this OlvmDisplay.
        The IP address of the guest to connect the graphic console client to.


        :return: The address of this OlvmDisplay.
        :rtype: str
        """
        return self._address

    @address.setter
    def address(self, address):
        """
        Sets the address of this OlvmDisplay.
        The IP address of the guest to connect the graphic console client to.


        :param address: The address of this OlvmDisplay.
        :type: str
        """
        self._address = address

    @property
    def is_allow_override(self):
        """
        Gets the is_allow_override of this OlvmDisplay.
        Indicates if to override the display address per host.


        :return: The is_allow_override of this OlvmDisplay.
        :rtype: bool
        """
        return self._is_allow_override

    @is_allow_override.setter
    def is_allow_override(self, is_allow_override):
        """
        Sets the is_allow_override of this OlvmDisplay.
        Indicates if to override the display address per host.


        :param is_allow_override: The is_allow_override of this OlvmDisplay.
        :type: bool
        """
        self._is_allow_override = is_allow_override

    @property
    def certificate(self):
        """
        Gets the certificate of this OlvmDisplay.

        :return: The certificate of this OlvmDisplay.
        :rtype: oci.cloud_bridge.models.OlvmCertificate
        """
        return self._certificate

    @certificate.setter
    def certificate(self, certificate):
        """
        Sets the certificate of this OlvmDisplay.

        :param certificate: The certificate of this OlvmDisplay.
        :type: oci.cloud_bridge.models.OlvmCertificate
        """
        self._certificate = certificate

    @property
    def is_copy_paste_enabled(self):
        """
        Gets the is_copy_paste_enabled of this OlvmDisplay.
        Indicates whether a user is able to copy and paste content from an external host into the graphic console.


        :return: The is_copy_paste_enabled of this OlvmDisplay.
        :rtype: bool
        """
        return self._is_copy_paste_enabled

    @is_copy_paste_enabled.setter
    def is_copy_paste_enabled(self, is_copy_paste_enabled):
        """
        Sets the is_copy_paste_enabled of this OlvmDisplay.
        Indicates whether a user is able to copy and paste content from an external host into the graphic console.


        :param is_copy_paste_enabled: The is_copy_paste_enabled of this OlvmDisplay.
        :type: bool
        """
        self._is_copy_paste_enabled = is_copy_paste_enabled

    @property
    def disconnect_action(self):
        """
        Gets the disconnect_action of this OlvmDisplay.
        Returns the action that will take place when the graphic console is disconnected.


        :return: The disconnect_action of this OlvmDisplay.
        :rtype: str
        """
        return self._disconnect_action

    @disconnect_action.setter
    def disconnect_action(self, disconnect_action):
        """
        Sets the disconnect_action of this OlvmDisplay.
        Returns the action that will take place when the graphic console is disconnected.


        :param disconnect_action: The disconnect_action of this OlvmDisplay.
        :type: str
        """
        self._disconnect_action = disconnect_action

    @property
    def disconnect_action_delay_in_minutes(self):
        """
        Gets the disconnect_action_delay_in_minutes of this OlvmDisplay.
        Delay (in minutes) before the graphic console disconnect action is carried out.


        :return: The disconnect_action_delay_in_minutes of this OlvmDisplay.
        :rtype: int
        """
        return self._disconnect_action_delay_in_minutes

    @disconnect_action_delay_in_minutes.setter
    def disconnect_action_delay_in_minutes(self, disconnect_action_delay_in_minutes):
        """
        Sets the disconnect_action_delay_in_minutes of this OlvmDisplay.
        Delay (in minutes) before the graphic console disconnect action is carried out.


        :param disconnect_action_delay_in_minutes: The disconnect_action_delay_in_minutes of this OlvmDisplay.
        :type: int
        """
        self._disconnect_action_delay_in_minutes = disconnect_action_delay_in_minutes

    @property
    def is_file_transfer_enabled(self):
        """
        Gets the is_file_transfer_enabled of this OlvmDisplay.
        Indicates if a user is able to drag and drop files from an external host into the graphic console.


        :return: The is_file_transfer_enabled of this OlvmDisplay.
        :rtype: bool
        """
        return self._is_file_transfer_enabled

    @is_file_transfer_enabled.setter
    def is_file_transfer_enabled(self, is_file_transfer_enabled):
        """
        Sets the is_file_transfer_enabled of this OlvmDisplay.
        Indicates if a user is able to drag and drop files from an external host into the graphic console.


        :param is_file_transfer_enabled: The is_file_transfer_enabled of this OlvmDisplay.
        :type: bool
        """
        self._is_file_transfer_enabled = is_file_transfer_enabled

    @property
    def keyboard_layout(self):
        """
        Gets the keyboard_layout of this OlvmDisplay.
        The keyboard layout to use with this graphic console.


        :return: The keyboard_layout of this OlvmDisplay.
        :rtype: str
        """
        return self._keyboard_layout

    @keyboard_layout.setter
    def keyboard_layout(self, keyboard_layout):
        """
        Sets the keyboard_layout of this OlvmDisplay.
        The keyboard layout to use with this graphic console.


        :param keyboard_layout: The keyboard_layout of this OlvmDisplay.
        :type: str
        """
        self._keyboard_layout = keyboard_layout

    @property
    def monitors(self):
        """
        Gets the monitors of this OlvmDisplay.
        The number of monitors opened for this graphic console.


        :return: The monitors of this OlvmDisplay.
        :rtype: int
        """
        return self._monitors

    @monitors.setter
    def monitors(self, monitors):
        """
        Sets the monitors of this OlvmDisplay.
        The number of monitors opened for this graphic console.


        :param monitors: The monitors of this OlvmDisplay.
        :type: int
        """
        self._monitors = monitors

    @property
    def port(self):
        """
        Gets the port of this OlvmDisplay.
        The port address on the guest to connect the graphic console client to


        :return: The port of this OlvmDisplay.
        :rtype: int
        """
        return self._port

    @port.setter
    def port(self, port):
        """
        Sets the port of this OlvmDisplay.
        The port address on the guest to connect the graphic console client to


        :param port: The port of this OlvmDisplay.
        :type: int
        """
        self._port = port

    @property
    def proxy(self):
        """
        Gets the proxy of this OlvmDisplay.
        The proxy IP which will be used by the graphic console client to connect to the guest.


        :return: The proxy of this OlvmDisplay.
        :rtype: str
        """
        return self._proxy

    @proxy.setter
    def proxy(self, proxy):
        """
        Sets the proxy of this OlvmDisplay.
        The proxy IP which will be used by the graphic console client to connect to the guest.


        :param proxy: The proxy of this OlvmDisplay.
        :type: str
        """
        self._proxy = proxy

    @property
    def secure_port(self):
        """
        Gets the secure_port of this OlvmDisplay.
        The secured port address on the guest, in case of using TLS, to connect the graphic console client to.


        :return: The secure_port of this OlvmDisplay.
        :rtype: int
        """
        return self._secure_port

    @secure_port.setter
    def secure_port(self, secure_port):
        """
        Sets the secure_port of this OlvmDisplay.
        The secured port address on the guest, in case of using TLS, to connect the graphic console client to.


        :param secure_port: The secure_port of this OlvmDisplay.
        :type: int
        """
        self._secure_port = secure_port

    @property
    def is_single_qxl_pci(self):
        """
        Gets the is_single_qxl_pci of this OlvmDisplay.
        The engine now sets it automatically according to the operating system.


        :return: The is_single_qxl_pci of this OlvmDisplay.
        :rtype: bool
        """
        return self._is_single_qxl_pci

    @is_single_qxl_pci.setter
    def is_single_qxl_pci(self, is_single_qxl_pci):
        """
        Sets the is_single_qxl_pci of this OlvmDisplay.
        The engine now sets it automatically according to the operating system.


        :param is_single_qxl_pci: The is_single_qxl_pci of this OlvmDisplay.
        :type: bool
        """
        self._is_single_qxl_pci = is_single_qxl_pci

    @property
    def display_type(self):
        """
        Gets the display_type of this OlvmDisplay.
        The graphic console protocol type.

        Allowed values for this property are: "SPICE", "VNC"


        :return: The display_type of this OlvmDisplay.
        :rtype: str
        """
        return self._display_type

    @display_type.setter
    def display_type(self, display_type):
        """
        Sets the display_type of this OlvmDisplay.
        The graphic console protocol type.


        :param display_type: The display_type of this OlvmDisplay.
        :type: str
        """
        allowed_values = ["SPICE", "VNC"]
        if not value_allowed_none_or_none_sentinel(display_type, allowed_values):
            raise ValueError(
                f"Invalid value for `display_type`, must be None or one of {allowed_values}"
            )
        self._display_type = display_type

    def __repr__(self):
        return formatted_flat_dict(self)

    def __eq__(self, other):
        if other is None:
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not self == other
