// Copyright (c) 2005 DMTF.  All rights reserved.
// <change cr="SysDevCR00711.001" type ="change">Update of
// descriptions based on Tech Edit review.</change>
// <change cr="ArchCR00066.004" type="add">Add UmlPackagePath
// qualifier values to CIM Schema.</change>
// <change cr="CIMCoreCR00902" type="add">Promoted OtherIdentifyingInfo
// and IdentifyingDescription from ComputerSystem to System.</change>
// ==================================================================
//  CIM_System
// ==================================================================
   [Abstract, Version ( "2.15.0" ), 
    UMLPackagePath ( "CIM::Core::CoreElements" ), 
    Description ( 
       "CIM_System represents an entity made up of component parts "
       "(defined by the SystemComponent relationship), that operates "
       "as a \'functional whole\'. Systems are top-level objects in "
       "the CIM hierarchy, requiring no scoping or weak relationships "
       "in order to exist and have context. It should be reasonable to "
       "uniquely name and manage a System at an enterprise level. For "
       "example, a ComputerSystem is a kind of System that can be "
       "uniquely named and independently managed in an enterprise. "
       "However, these qualities are not true for the power supply (or "
       "the power supply sub-\'system\') within the computer. \n"
       "\n"
       "Although a System can be viewed as a Collection, this view is "
       "not the correct model. A Collection is simply a \'bag\' that "
       "\'holds\' its members. A System is a higher-level abstraction, "
       "built out of its individual components. It is more than the "
       "sum of its parts. Note that System is a subclass of "
       "EnabledLogicalElement which allows the entire abstraction to "
       "be functionally enabled or disabled at a higher level than "
       "enabling or disabling its component parts." )]
class CIM_System : CIM_EnabledLogicalElement {

      [Key, Description ( 
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this "
          "property allows all instances of this class and its "
          "subclasses to be uniquely identified." ), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Override ( "Name" ), 
       Description ( 
          "The inherited Name serves as the key of a System "
          "instance in an enterprise environment." ), 
       MaxLen ( 256 )]
   string Name;

      [Description ( 
          "The System object and its derivatives are top-level "
          "objects of CIM. They provide the scope for numerous "
          "components. Having unique System keys is required. A "
          "heuristic can be defined in individual System subclasses "
          "to attempt to always generate the same System Name Key. "
          "The NameFormat property identifies how the System name "
          "was generated, using the heuristic of the subclass." ), 
       MaxLen ( 64 )]
   string NameFormat;

      [Write, Description ( 
          "The name of the primary system owner. The system owner "
          "is the primary user of the system." ), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|General Information|001.3" }]
   string PrimaryOwnerName;

      [Write, Description ( 
          "A string that provides information on how the primary "
          "system owner can be reached (for example, phone number, "
          "e-mail address, and so on)." ), 
       MaxLen ( 256 ), 
       MappingStrings { "MIF.DMTF|General Information|001.4" }]
   string PrimaryOwnerContact;

      [Write, Description ( 
          "An array (bag) of strings that specifies the "
          "administrator -defined roles this System plays in the "
          "managed environment. Examples might be \'Building 8 "
          "print server\' or \'Boise user directories\'. A single "
          "system may perform multiple roles. \n"
          "Note that the instrumentation view of the \'roles\' of a "
          "System is defined by instantiating a specific subclass "
          "of System, or by properties in a subclass, or both. For "
          "example, the purpose of a ComputerSystem is defined "
          "using the Dedicated and OtherDedicatedDescription "
          "properties." )]
   string Roles[];

      [Description ( 
          "OtherIdentifyingInfo captures additional data, beyond "
          "System Name information, that could be used to identify "
          "a ComputerSystem. One example would be to hold the Fibre "
          "Channel World-Wide Name (WWN) of a node. Note that if "
          "only the Fibre Channel name is available and is unique "
          "(able to be used as the System key), then this property "
          "would be NULL and the WWN would become the System key, "
          "its data placed in the Name property." ), 
       ArrayType ( "Indexed" ), 
       MaxLen ( 256 ), 
       ModelCorrespondence { "CIM_System.IdentifyingDescriptions" }]
   string OtherIdentifyingInfo[];

      [Description ( 
          "An array of free-form strings providing explanations and "
          "details behind the entries in the OtherIdentifying Info "
          "array. Note, each entry of this array is related to the "
          "entry in OtherIdentifyingInfo that is located at the "
          "same index." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_System.OtherIdentifyingInfo" }]
   string IdentifyingDescriptions[];


};
