# 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: 20251101


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 ComputeCapacityDetails(object):
    """
    Capacity details of the Database Infrastructure.
    """

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

        :param total_cores:
            The value to assign to the total_cores property of this ComputeCapacityDetails.
        :type total_cores: int

        :param allocated_cores:
            The value to assign to the allocated_cores property of this ComputeCapacityDetails.
        :type allocated_cores: int

        :param reserved_cores:
            The value to assign to the reserved_cores property of this ComputeCapacityDetails.
        :type reserved_cores: int

        :param available_cores:
            The value to assign to the available_cores property of this ComputeCapacityDetails.
        :type available_cores: int

        :param total_memory_in_gbs:
            The value to assign to the total_memory_in_gbs property of this ComputeCapacityDetails.
        :type total_memory_in_gbs: int

        :param used_memory_in_gbs:
            The value to assign to the used_memory_in_gbs property of this ComputeCapacityDetails.
        :type used_memory_in_gbs: int

        :param reserved_memory_in_gbs:
            The value to assign to the reserved_memory_in_gbs property of this ComputeCapacityDetails.
        :type reserved_memory_in_gbs: int

        :param available_memory_in_gbs:
            The value to assign to the available_memory_in_gbs property of this ComputeCapacityDetails.
        :type available_memory_in_gbs: int

        """
        self.swagger_types = {
            'total_cores': 'int',
            'allocated_cores': 'int',
            'reserved_cores': 'int',
            'available_cores': 'int',
            'total_memory_in_gbs': 'int',
            'used_memory_in_gbs': 'int',
            'reserved_memory_in_gbs': 'int',
            'available_memory_in_gbs': 'int'
        }
        self.attribute_map = {
            'total_cores': 'totalCores',
            'allocated_cores': 'allocatedCores',
            'reserved_cores': 'reservedCores',
            'available_cores': 'availableCores',
            'total_memory_in_gbs': 'totalMemoryInGBs',
            'used_memory_in_gbs': 'usedMemoryInGBs',
            'reserved_memory_in_gbs': 'reservedMemoryInGBs',
            'available_memory_in_gbs': 'availableMemoryInGBs'
        }
        self._total_cores = None
        self._allocated_cores = None
        self._reserved_cores = None
        self._available_cores = None
        self._total_memory_in_gbs = None
        self._used_memory_in_gbs = None
        self._reserved_memory_in_gbs = None
        self._available_memory_in_gbs = None

    @property
    def total_cores(self):
        """
        Gets the total_cores of this ComputeCapacityDetails.
        Total CPU cores count.


        :return: The total_cores of this ComputeCapacityDetails.
        :rtype: int
        """
        return self._total_cores

    @total_cores.setter
    def total_cores(self, total_cores):
        """
        Sets the total_cores of this ComputeCapacityDetails.
        Total CPU cores count.


        :param total_cores: The total_cores of this ComputeCapacityDetails.
        :type: int
        """
        self._total_cores = total_cores

    @property
    def allocated_cores(self):
        """
        Gets the allocated_cores of this ComputeCapacityDetails.
        Total CPU cores count allocated..


        :return: The allocated_cores of this ComputeCapacityDetails.
        :rtype: int
        """
        return self._allocated_cores

    @allocated_cores.setter
    def allocated_cores(self, allocated_cores):
        """
        Sets the allocated_cores of this ComputeCapacityDetails.
        Total CPU cores count allocated..


        :param allocated_cores: The allocated_cores of this ComputeCapacityDetails.
        :type: int
        """
        self._allocated_cores = allocated_cores

    @property
    def reserved_cores(self):
        """
        Gets the reserved_cores of this ComputeCapacityDetails.
        Total Reserved CPU cores count.


        :return: The reserved_cores of this ComputeCapacityDetails.
        :rtype: int
        """
        return self._reserved_cores

    @reserved_cores.setter
    def reserved_cores(self, reserved_cores):
        """
        Sets the reserved_cores of this ComputeCapacityDetails.
        Total Reserved CPU cores count.


        :param reserved_cores: The reserved_cores of this ComputeCapacityDetails.
        :type: int
        """
        self._reserved_cores = reserved_cores

    @property
    def available_cores(self):
        """
        Gets the available_cores of this ComputeCapacityDetails.
        Total available CPU cores count.


        :return: The available_cores of this ComputeCapacityDetails.
        :rtype: int
        """
        return self._available_cores

    @available_cores.setter
    def available_cores(self, available_cores):
        """
        Sets the available_cores of this ComputeCapacityDetails.
        Total available CPU cores count.


        :param available_cores: The available_cores of this ComputeCapacityDetails.
        :type: int
        """
        self._available_cores = available_cores

    @property
    def total_memory_in_gbs(self):
        """
        Gets the total_memory_in_gbs of this ComputeCapacityDetails.
        Total memory allocated, in gigabytes (GB).


        :return: The total_memory_in_gbs of this ComputeCapacityDetails.
        :rtype: int
        """
        return self._total_memory_in_gbs

    @total_memory_in_gbs.setter
    def total_memory_in_gbs(self, total_memory_in_gbs):
        """
        Sets the total_memory_in_gbs of this ComputeCapacityDetails.
        Total memory allocated, in gigabytes (GB).


        :param total_memory_in_gbs: The total_memory_in_gbs of this ComputeCapacityDetails.
        :type: int
        """
        self._total_memory_in_gbs = total_memory_in_gbs

    @property
    def used_memory_in_gbs(self):
        """
        Gets the used_memory_in_gbs of this ComputeCapacityDetails.
        Memory allocated to Oracle database virtual machine cluster or Instance, in gigabytes (GB).


        :return: The used_memory_in_gbs of this ComputeCapacityDetails.
        :rtype: int
        """
        return self._used_memory_in_gbs

    @used_memory_in_gbs.setter
    def used_memory_in_gbs(self, used_memory_in_gbs):
        """
        Sets the used_memory_in_gbs of this ComputeCapacityDetails.
        Memory allocated to Oracle database virtual machine cluster or Instance, in gigabytes (GB).


        :param used_memory_in_gbs: The used_memory_in_gbs of this ComputeCapacityDetails.
        :type: int
        """
        self._used_memory_in_gbs = used_memory_in_gbs

    @property
    def reserved_memory_in_gbs(self):
        """
        Gets the reserved_memory_in_gbs of this ComputeCapacityDetails.
        Reserved memory, in gigabytes (GB).


        :return: The reserved_memory_in_gbs of this ComputeCapacityDetails.
        :rtype: int
        """
        return self._reserved_memory_in_gbs

    @reserved_memory_in_gbs.setter
    def reserved_memory_in_gbs(self, reserved_memory_in_gbs):
        """
        Sets the reserved_memory_in_gbs of this ComputeCapacityDetails.
        Reserved memory, in gigabytes (GB).


        :param reserved_memory_in_gbs: The reserved_memory_in_gbs of this ComputeCapacityDetails.
        :type: int
        """
        self._reserved_memory_in_gbs = reserved_memory_in_gbs

    @property
    def available_memory_in_gbs(self):
        """
        Gets the available_memory_in_gbs of this ComputeCapacityDetails.
        Available memory, in gigabytes (GB).


        :return: The available_memory_in_gbs of this ComputeCapacityDetails.
        :rtype: int
        """
        return self._available_memory_in_gbs

    @available_memory_in_gbs.setter
    def available_memory_in_gbs(self, available_memory_in_gbs):
        """
        Sets the available_memory_in_gbs of this ComputeCapacityDetails.
        Available memory, in gigabytes (GB).


        :param available_memory_in_gbs: The available_memory_in_gbs of this ComputeCapacityDetails.
        :type: int
        """
        self._available_memory_in_gbs = available_memory_in_gbs

    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
