# coding: utf-8
# Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.


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 CopyBootVolumeBackupDetails(object):
    """
    CopyBootVolumeBackupDetails model.
    """

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

        :param destination_region:
            The value to assign to the destination_region property of this CopyBootVolumeBackupDetails.
        :type destination_region: str

        :param display_name:
            The value to assign to the display_name property of this CopyBootVolumeBackupDetails.
        :type display_name: str

        :param kms_key_id:
            The value to assign to the kms_key_id property of this CopyBootVolumeBackupDetails.
        :type kms_key_id: str

        """
        self.swagger_types = {
            'destination_region': 'str',
            'display_name': 'str',
            'kms_key_id': 'str'
        }

        self.attribute_map = {
            'destination_region': 'destinationRegion',
            'display_name': 'displayName',
            'kms_key_id': 'kmsKeyId'
        }

        self._destination_region = None
        self._display_name = None
        self._kms_key_id = None

    @property
    def destination_region(self):
        """
        **[Required]** Gets the destination_region of this CopyBootVolumeBackupDetails.
        The name of the destination region.

        Example: `us-ashburn-1`


        :return: The destination_region of this CopyBootVolumeBackupDetails.
        :rtype: str
        """
        return self._destination_region

    @destination_region.setter
    def destination_region(self, destination_region):
        """
        Sets the destination_region of this CopyBootVolumeBackupDetails.
        The name of the destination region.

        Example: `us-ashburn-1`


        :param destination_region: The destination_region of this CopyBootVolumeBackupDetails.
        :type: str
        """
        self._destination_region = destination_region

    @property
    def display_name(self):
        """
        Gets the display_name of this CopyBootVolumeBackupDetails.
        A user-friendly name for the boot volume backup. Does not have to be unique and it's changeable.
        Avoid entering confidential information.


        :return: The display_name of this CopyBootVolumeBackupDetails.
        :rtype: str
        """
        return self._display_name

    @display_name.setter
    def display_name(self, display_name):
        """
        Sets the display_name of this CopyBootVolumeBackupDetails.
        A user-friendly name for the boot volume backup. Does not have to be unique and it's changeable.
        Avoid entering confidential information.


        :param display_name: The display_name of this CopyBootVolumeBackupDetails.
        :type: str
        """
        self._display_name = display_name

    @property
    def kms_key_id(self):
        """
        Gets the kms_key_id of this CopyBootVolumeBackupDetails.
        The OCID of the Key Management key in the destination region which will be the master encryption key
        for the copied boot volume backup. If you do not specify this attribute the boot volume backup
        will be encrypted with the Oracle-provided encryption key when it is copied to the destination region.


        For more information about the Key Management service and encryption keys, see
        `Overview of Key Management`__ and
        `Using Keys`__.

        __ https://docs.cloud.oracle.com/Content/KeyManagement/Concepts/keyoverview.htm
        __ https://docs.cloud.oracle.com/Content/KeyManagement/Tasks/usingkeys.htm


        :return: The kms_key_id of this CopyBootVolumeBackupDetails.
        :rtype: str
        """
        return self._kms_key_id

    @kms_key_id.setter
    def kms_key_id(self, kms_key_id):
        """
        Sets the kms_key_id of this CopyBootVolumeBackupDetails.
        The OCID of the Key Management key in the destination region which will be the master encryption key
        for the copied boot volume backup. If you do not specify this attribute the boot volume backup
        will be encrypted with the Oracle-provided encryption key when it is copied to the destination region.


        For more information about the Key Management service and encryption keys, see
        `Overview of Key Management`__ and
        `Using Keys`__.

        __ https://docs.cloud.oracle.com/Content/KeyManagement/Concepts/keyoverview.htm
        __ https://docs.cloud.oracle.com/Content/KeyManagement/Tasks/usingkeys.htm


        :param kms_key_id: The kms_key_id of this CopyBootVolumeBackupDetails.
        :type: str
        """
        self._kms_key_id = kms_key_id

    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
