// Copyright (c) 2008 DMTF.  All rights reserved.
   [Version ( "2.18.0" ), 
    UMLPackagePath ( "CIM::Physical::Package" ), 
    Description ( 
       "The PhysicalPackage class represents PhysicalElements that "
       "contain or host other components. Examples are a Rack "
       "enclosure or an adapter Card." )]
class CIM_PhysicalPackage : CIM_PhysicalElement {

      [Description ( 
          "The RemovalCapabilites property is used to describe the "
          "conditions under which a PhysicalPackage can be removed. "
          "Since all PhysicalPackages are not removable, this "
          "property defaults to 2, \'Not Applicable\'." ), 
       ValueMap { "0", "2", "3", "4" }, 
       Values { "Unknown", "Not Applicable", "Removable when off", 
          "Removable when on or off" }]
   uint16 RemovalConditions = 2;

      [Deprecated { "CIM_PhysicalPackage.RemovalConditions" }, 
       Description ( 
          "The use of this property is being deprecated. Instead "
          "RemovalConditions should be used. The RemovalConditions "
          "property addresses whether a PhysicalPackage is "
          "removable with or without power being applied. \n"
          "A PhysicalPackage is Removable if it is designed to be "
          "taken in and out of the physical container in which it "
          "is normally found, without impairing the function of the "
          "overall packaging. A Package can still be Removable if "
          "power must be \'off\' in order to perform the removal. "
          "If power can be \'on\' and the Package removed, then the "
          "Element is both Removable and HotSwappable. For example, "
          "an extra battery in a laptop is Removable, as is a disk "
          "drive Package inserted using SCA connectors. However, "
          "the latter is also HotSwappable. A laptop\'s display is "
          "not Removable, nor is a non-redundant power supply. "
          "Removing these components would impact the function of "
          "the overall packaging or is impossible due to the tight "
          "integration of the Package." )]
   boolean Removable;

      [Deprecated { "No Value" }, 
       Description ( 
          "The use of this property is being deprecated because it "
          "is redundant with the FRU class and its associations. A "
          "PhysicalPackage is Replaceable if it is possible to "
          "replace (FRU or upgrade) the Element with a physically "
          "different one. For example, some ComputerSystems allow "
          "the main Processor chip to be upgraded to one of a "
          "higher clock rating. In this case, the Processor is said "
          "to be Replaceable. Another example is a power supply "
          "Package mounted on sliding rails. All Removable packages "
          "are inherently Replaceable." )]
   boolean Replaceable;

      [Deprecated { "CIM_PhysicalPackage.RemovalConditions" }, 
       Description ( 
          "The use of this property is being deprecated. Instead "
          "RemovalConditions should be used. The RemovalConditions "
          "property addresses whether a PhysicalPackage is "
          "removable with or without power being applied. \n"
          "\n"
          "A PhysicalPackage is HotSwappable if it is possible to "
          "replace the Element with a physically different but "
          "equivalent one while the containing Package has power "
          "applied to it (ie, is \'on\'). For example, a disk drive "
          "Package inserted using SCA connectors is both Removable "
          "and HotSwappable. All HotSwappable packages are "
          "inherently Removable and Replaceable." )]
   boolean HotSwappable;

      [Description ( "The height of the PhysicalPackage in inches." ), 
       Units ( "Inches" ), 
       PUnit ( "inch" )]
   real32 Height;

      [Description ( "The depth of the PhysicalPackage in inches." ), 
       Units ( "Inches" ), 
       PUnit ( "inch" )]
   real32 Depth;

      [Description ( "The width of the PhysicalPackage in inches." ), 
       Units ( "Inches" ), 
       PUnit ( "inch" )]
   real32 Width;

      [Description ( "The weight of the PhysicalPackage in pounds." ), 
       Units ( "Pounds" ), 
       PUnit ( "pound" )]
   real32 Weight;

      [Description ( 
          "Enumeration defining the type of the PhysicalPackage. "
          "Note that this enumeration expands on the list in the "
          "Entity MIB (the attribute, entPhysicalClass). The "
          "numeric values are consistent with CIM\'s enum numbering "
          "guidelines, but are slightly different than the MIB\'s values.\n"
          "Unknown - indicates that the package type is not known.\n"
          "Other - The package type does not correspond to an "
          "existing enumerated value. The value is specified using "
          "the OtherPackageType property.\n"
          "The values \"Rack\" through \"Port/Connector\" are "
          "defined per the Entity-MIB (where the semantics of rack "
          "are equivalent to the MIB\'s \'stack\' value). The other "
          "values (for battery, processor, memory, power "
          "source/generator and storage media package) are self-explanatory.\n"
          "A value of \"Blade\" should be used when the "
          "PhysicalPackage contains the operational hardware "
          "aspects of a ComputerSystem, without the supporting "
          "mechanicals such as power and cooling. For example, a "
          "Blade Server includes processor(s) and memory, and "
          "relies on the containing chassis to supply power and "
          "cooling. In many respects, a Blade can be considered a "
          "\"Module/Card\". However, it is tracked differently by "
          "inventory systems and differs in terms of service "
          "philosophy. For example, a Blade is intended to be "
          "hot-plugged into a hosting enclosure without requiring "
          "additional cabling, and does not require a cover to be "
          "removed from the enclosure for installation. Similarly, "
          "a \"Blade Expansion\" has characteristics of a \"Blade\" "
          "and a \"Module/Card\". However, it is distinct from both "
          "due to inventory tracking and service philosophy, and "
          "because of its hardware dependence on a Blade. A Blade "
          "Expansion must be attached to a Blade prior to inserting "
          "the resultant assembly into an enclosure." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "15", "16", "17" }, 
       Values { "Unknown", "Other", "Rack", "Chassis/Frame", 
          "Cross Connect/Backplane", "Container/Frame Slot", 
          "Power Supply", "Fan", "Sensor", "Module/Card", 
          "Port/Connector", "Battery", "Processor", "Memory", 
          "Power Source/Generator", 
          "Storage Media Package (e.g., Disk or Tape Drive)", 
          "Blade", "Blade Expansion" }, 
       MappingStrings { "MIB.IETF|ENTITY-MIB.entPhysicalClass" }, 
       ModelCorrespondence { "CIM_PhysicalPackage.OtherPackageType" }]
   uint16 PackageType;

      [Description ( 
          "A string describing the package when the instance\'s "
          "PackageType property is 1 (\"Other\")." ), 
       ModelCorrespondence { "CIM_PhysicalPackage.PackageType" }]
   string OtherPackageType;

      [Description ( 
          "An array of strings that identify the component that is "
          "compatible with, and can be inserted in a slot that "
          "reports this string as one of the array element in the "
          "VendorCompatibilityStrings This allows system "
          "administrators to determine whether it is appropriateto "
          "insert a package into a slot \n"
          "In order to ensure uniqueness within the NameSpace, each "
          "value defined by the vendor for use in the "
          "VendorCompatibilityStrings property 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 creating/defining the InstanceID, or "
          "is a registered ID that is assigned to the business "
          "entity by a recognized global authority (This 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 re-used to identify different underlying "
          "(real-world) elements." ), 
       ModelCorrespondence { "CIM_Slot.VendorCompatibilityStrings" }]
   string VendorCompatibilityStrings[];


      [Deprecated { "No Value" }, 
       Description ( 
          "This method is being deprecated. A PhysicalPackage "
          "cannot determine if it is compatible with another "
          "object. The IsCompatible method verifies whether the "
          "referenced PhysicalElement may be contained by or "
          "inserted into the PhysicalPackage. The return value "
          "should be 0 if the request was successfully executed, 1 "
          "if the request is not supported and some other value if "
          "an error occurred. In a subclass, the set of possible "
          "return codes could be specified, using a ValueMap "
          "qualifier on the method. The strings to which the "
          "ValueMap contents are \'translated\' may also be "
          "specified in the subclass as a Values array qualifier." )]
   uint32 IsCompatible(
         [IN, Description ( 
             "The element to check for compatibility with this one."
              )]
      CIM_PhysicalElement REF ElementToCheck);

};
