// Copyright (c) 2009 DMTF.  All rights reserved.
   [Version ( "2.22.0" ), 
    UMLPackagePath ( "CIM::Core::Resource" ), 
    Description ( 
       "A ResourcePool is a logical entity (with associated "
       "controls)provided by the host system for the purpose of "
       "allocation and assignment of resources. A given ResourcePool "
       "may be used to allocate resources of a specific type. "
       "Hierarchies of ResourcePools may be created to provide "
       "administrative control over allocations. In the cases where "
       "resources are subdivided, multiple resource pools may exist "
       "(e.g. nodal boundaries in NUMA-like systems). In systems that "
       "support over commitment, pools represent the reservable "
       "capacity, not an upper bound or limit on the maximum amount "
       "that can be allocated. Admission control during power on may "
       "detect and prevent systems from powering due to resource "
       "exhaustion. For example, over commitment on a ResourcePool "
       "with ResourceType=Memory would require that sufficient space "
       "be available in some backing-store, that may be managed "
       "through a storage ResourcePool." )]
class CIM_ResourcePool : CIM_LogicalElement {

      [Key, Override ( "InstanceID" ), 
       Description ( 
          "Within the scope of the instantiating Namespace, "
          "InstanceID opaquely and uniquely identifies an instance "
          "of this class. To ensure uniqueness within the "
          "NameSpace, the value of InstanceID should be constructed "
          "using the following \"preferred\" algorithm: \n"
          "<OrgID>:<LocalID> \n"
          "Where <OrgID> and <LocalID> are separated by a colon "
          "(:), and where <OrgID> must include a copyrighted, "
          "trademarked, or otherwise unique name that is owned by "
          "the business entity that is creating or defining the "
          "InstanceID or that is a registered ID assigned to the "
          "business entity by a recognized global authority. (This "
          "requirement is similar to the <Schema Name>_<Class Name> "
          "structure of Schema class names.) In addition, to ensure "
          "uniqueness, <OrgID> must not contain a colon (:). When "
          "using this algorithm, the first colon to appear in "
          "InstanceID must appear between <OrgID> and <LocalID>. \n"
          "<LocalID> is chosen by the business entity and should "
          "not be reused to identify different underlying "
          "(real-world) elements. If the above \"preferred\" "
          "algorithm is not used, the defining entity must ensure "
          "that the resulting InstanceID is not reused across any "
          "InstanceIDs produced by this or other providers for the "
          "NameSpace of this instance. \n"
          "For DMTF-defined instances, the \"preferred\" algorithm "
          "must be used with the <OrgID> set to CIM." )]
   string InstanceID;

      [Description ( 
          "An opaque identifier for the pool. This property is used "
          "to provide correlation across save and restore of "
          "configuration data to underlying persistent storage." ), 
       ModelCorrespondence { 
          "CIM_ResourceAllocationSettingData.PoolId" }]
   string PoolID;

      [Description ( 
          "If true, \"Primordial\" indicates that this ResourcePool "
          "is a base from which resources are drawn and returned in "
          "the activity of resource management. Being primordial "
          "means that this ResourcePool shall not be created or "
          "deleted by consumers of this model. However, other "
          "actions, modeled or not, may affect the characteristics "
          "or size of primordial ResourcePools. If false, "
          "\"Primordial\" indicates that the ResourcePool, a "
          "concrete Resource Pool, is subject to resource "
          "allocation services functions. This distinction is "
          "important because higher-level ResourcePools may be "
          "assembled using the Component or "
          "ElementAllocatedFromPool associations. Although the "
          "higher-level abstractions can be created and deleted, "
          "the most basic, (i.e. primordial), hardware-based "
          "ResourcePools cannot. They are physically realized as "
          "part of the System, or are actually managed by some "
          "other System and imported as if they were physically "
          "realized." )]
   boolean Primordial = false;

      [Description ( 
          "This property represents the maximum amount (in units of "
          "AllocationUnits) of reservations that the ResourcePool "
          "can support." )]
   uint64 Capacity;

      [Description ( 
          "This property represents the current reservations (in "
          "units of AllocationUnits) spread across all active "
          "allocations from this pool. In a hierarchical "
          "configuration, this represents the sum of all descendant "
          "ResourcePool current reservations." )]
   uint64 Reserved;

      [Description ( 
          "The type of resource this ResourcePool may allocate." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "14", "15", "16", "17", "18", "19", 
          "20", "21", "22", "23", "24", "25", "26", "27", "28", 
          "29", "30", "31", "32", "33", "..", "0x8000..0xFFFF" }, 
       Values { "Other", "Computer System", "Processor", "Memory", 
          "IDE Controller", "Parallel SCSI HBA", "FC HBA", 
          "iSCSI HBA", "IB HCA", "Ethernet Adapter", 
          "Other Network Adapter", "I/O Slot", "I/O Device", 
          "Floppy Drive", "CD Drive", "DVD drive", "Disk Drive", 
          "Tape Drive", "Storage Extent", "Other storage device", 
          "Serial port", "Parallel port", "USB Controller", 
          "Graphics controller", "IEEE 1394 Controller", 
          "Partitionable Unit", "Base Partitionable Unit", "Power", 
          "Cooling Capacity", "Ethernet Switch Port", 
          "Logical Disk", "Storage Volume", "Ethernet Connection", 
          "DMTF reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_ResourcePool.OtherResourceType", 
          "CIM_ResourcePool.ResourceSubType" }]
   uint16 ResourceType;

      [Description ( 
          "A string that describes the resource type when a well "
          "defined value is not available and ResourceType is set "
          "to 0 for Other." ), 
       ModelCorrespondence { "CIM_ResourcePool.ResourceType" }]
   string OtherResourceType;

      [Description ( 
          "A string describing an implementation specific sub-type "
          "for this pool. For example, this may be used to "
          "distinguish different models of the same resource type." ), 
       ModelCorrespondence { "CIM_ResourcePool.ResourceType" }]
   string ResourceSubType;

      [Description ( 
          "This property specifies the units of allocation used by "
          "the Reservation and Limit properties. For example, when "
          "ResourceType=Processor, AllocationUnits may be set to "
          "hertz*10^6 or percent. When ResourceType=Memory, "
          "AllocationUnits may be set to bytes*10^3. The value of "
          "this property shall be a legal value of the Programmatic "
          "Units qualifier as defined in Appendix C.1 of DSP0004 "
          "V2.4 or later." ), 
       IsPUnit]
   string AllocationUnits;

      [Description ( 
          "This property specifies the units for the MaxConsumable "
          "and the Consumed properties." ), 
       ModelCorrespondence { 
          "CIM_ResourcePool.MaxConsumableResource", 
          "CIM_ResourcePool.CurrentlyConsumedResource" }, 
       IsPUnit]
   string ConsumedResourceUnits = "count";

      [Description ( 
          "This property specifies the amount of resource that the "
          "resource pool currently presents to consumers.\n"
          "This property is different from the Reserved property in "
          "that it describes the consumers view of the resource "
          "while the Reserved property describes the producers view "
          "of the resource." ), 
       ModelCorrespondence { "CIM_ResourcePool.ConsumedResourceUnits" }]
   uint64 CurrentlyConsumedResource;

      [Description ( 
          "This property specifies the maximum of amount of "
          "consumable resource that the resource pool can present "
          "to consumers.\n"
          "This property is different from the Capacity property in "
          "that it describes the consumers view of the resource "
          "while the Capacity property describes the producers view "
          "of the resource." ), 
       ModelCorrespondence { "CIM_ResourcePool.ConsumedResourceUnits" }]
   uint64 MaxConsumableResource;


};
