// Copyright (c) 2005 DMTF.  All rights reserved.
// <change cr="ArchCR00066.004" type="add">Add UmlPackagePath
// qualifier values to CIM Schema.</change>
// ==================================================================
//  CIM_FileSystem 
// ==================================================================
   [Version ( "2.7.0" ), 
    UMLPackagePath ( "CIM::System::FileElements" ), 
    Description ( 
       "A file or dataset store local to a System (such as a "
       "ComputerSystem or an ApplicationSystem) or remotely mounted "
       "from a file server." )]
class CIM_FileSystem : CIM_EnabledLogicalElement {

      [Key, Description ( 
          "The scoping System\'s CreationClassName. Note that this "
          "class was originally defined in the scope of a "
          "ComputerSystem, and was later allowed to be scoped by "
          "any System (for example, a computer or application "
          "system). Unfortunately, the property name, "
          "CSCreationClassName, could not be changed (for example, "
          "to SystemCreationClass Name) without deprecating the "
          "class. This change was not deemed critical to the "
          "semantics and therefore did not merit deprecation. So, "
          "the property name remains." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_System.CreationClassName" )]
   string CSCreationClassName;

      [Key, Description ( 
          "The scoping System\'s Name. Note that this class was "
          "originally defined in the scope of a ComputerSystem, and "
          "was later allowed to be scoped by any System (for "
          "example, a computer or application system). "
          "Unfortunately, the property name, CSName, could not be "
          "changed (for example, to SystemName) without deprecating "
          "the class. This change was not deemed critical to the "
          "semantics and therefore did not merit deprecation. So, "
          "the property name remains." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_System.Name" )]
   string CSName;

      [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 key of a FileSystem "
          "instance within a ComputerSystem." ), 
       MaxLen ( 256 )]
   string Name;

      [Description ( 
          "Path name or other information defining the root of the "
          "FileSystem." ), 
       MappingStrings { 
          "MIB.IETF|HOST-RESOURCES-MIB.hrFSMountPoint", 
          "MIF.DMTF|Host File System|001.2" }]
   string Root;

      [Description ( 
          "FileSystems can read/write data in blocks which are "
          "defined independently of the underlying StorageExtents. "
          "This property captures the FileSystem\'s block size for "
          "data storage and retrieval." ), 
       Units ( "Bytes" )]
   uint64 BlockSize;

      [Description ( 
          "The FileSystemSize property stores the total size of the "
          "File System in bytes. If unknown, enter 0." ), 
       Units ( "Bytes" ), 
       MappingStrings { "MIF.DMTF|Host File System|001.13" }]
   uint64 FileSystemSize;

      [Description ( 
          "AvailableSpace indicates the total amount of free space "
          "for the FileSystem, in bytes. If unknown, enter 0." ), 
       Units ( "Bytes" ), 
       Gauge, MappingStrings { "MIF.DMTF|Host File System|001.14", 
          "MIF.DMTF|Partition|002.4" }]
   uint64 AvailableSpace;

      [Description ( 
          "Indicates that the FileSystem is designated as read only." ), 
       MappingStrings { "MIB.IETF|HOST-RESOURCES-MIB.hrFSAccess", 
          "MIF.DMTF|Host File System|001.5" }]
   boolean ReadOnly;

      [Description ( 
          "A free form string indicating the algorithm or tool used "
          "to encrypt the FileSystem. If it is not possible or not "
          "desired to describe the encryption scheme (perhaps for "
          "security reasons), recommend using the following words: "
          "\"Unknown\" to represent that it is not known whether "
          "the FileSystem is encrypted or not, \"Encrypted\" to "
          "represent that the File System is encrypted but either "
          "its encryption scheme is not known or not disclosed, and "
          "\"Not Encrypted\" to represent that the FileSystem is "
          "not encrypted." ), 
       MappingStrings { "MIF.DMTF|Partition|002.8" }]
   string EncryptionMethod;

      [Description ( 
          "A free form string indicating the algorithm or tool used "
          "to compress the FileSystem. If it is not possible or not "
          "desired to describe the compression scheme (perhaps "
          "because it is not known), recommend using the following "
          "words: \"Unknown\" to represent that it is not known "
          "whether the FileSystem is compressed or not, "
          "\"Compressed\" to represent that the File System is "
          "compressed but either its compression scheme is not "
          "known or not disclosed, and \"Not Compressed\" to "
          "represent that the FileSystem is not compressed." ), 
       MappingStrings { "MIF.DMTF|Partition|002.7" }]
   string CompressionMethod;

      [Description ( 
          "Indicates that case sensitive file names are supported." )]
   boolean CaseSensitive;

      [Description ( 
          "Indicates that the case of file names are preserved." )]
   boolean CasePreserved;

      [Description ( 
          "Array defining the character sets or encoding supported "
          "by the FileSystem. For example, the values, \"ASCII\" "
          "(2) or \"ISO2022\" (4), may be specified." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8" }, 
       Values { "Unknown", "Other", "ASCII", "Unicode", "ISO2022", 
          "ISO8859", "Extended UNIX Code", "UTF-8", "UCS-2" }]
   uint16 CodeSet[];

      [Description ( 
          "Integer indicating the maximum length of a file name "
          "within the FileSystem. 0 indicates that there is no "
          "limit on file name length." )]
   uint32 MaxFileNameLength;

      [Description ( 
          "The minimum file allocation size (an integral number of "
          "blocks), imposed by the FileSystem. (The size of a block "
          "is specified in the BlockSize property for the "
          "FileSystem.) Minimum allocation size is the smallest "
          "amount of storage allocated to a LogicalFile by the "
          "FileSystem. This is not a mandatory minimum allocation "
          "for all FileSystems. Under stress conditions, some "
          "FileSystems may allocate storage in amounts smaller than "
          "the ClusterSize." )]
   uint32 ClusterSize;

      [Description ( 
          "String describing the type of FileSystem and therefore, "
          "its conventions. For example, \"NTFS\" or \"S5\" may be "
          "listed as well as any additional information on the "
          "FileSystem\'s implementation. Since various flavors of "
          "FileSystems (like S5) exist, this property is defined as "
          "a string." ), 
       MappingStrings { "MIF.DMTF|Partition|002.6", 
          "MIF.DMTF|Host File System|001.4" }]
   string FileSystemType;

      [Description ( 
          "An enumerated value representing the FileSystem\'s "
          "perception of its own persistence characteristics. This "
          "property would typically be set at the time the "
          "FileSystem is instantiated and would not be changed by "
          "external actions. A value of \"Persistent\" indicates "
          "that the FileSystem is persistent, will be preserved "
          "through an orderly shutdown and should be protected. A "
          "value of \"Temporary\" indicates that the FileSystem is "
          "non-persistent, should not be protected and may not "
          "survive a shutdown. A value of \"External\" indicates "
          "that the FileSystem is controlled outside of the scope "
          "of the operating environment and may need to be "
          "protected by specialized means. A value of \"Other\" is "
          "provided to allow for additional persistence types, to "
          "be described in the OtherPersistenceType attribute, and "
          "is expected to be rarely, if ever, used. A value of "
          "\"Unknown\" indicates that the persistence of the "
          "FileSystem can not be determined." ), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Other", "Persistent", "Temporary", 
          "External" }, 
       ModelCorrespondence { "CIM_FileSystem.OtherPersistenceType" }]
   uint16 PersistenceType;

      [Description ( 
          "A string describing the persistence characteristics when "
          "PersistenceType is \"Other\"." ), 
       ModelCorrespondence { "CIM_FileSystem.PersistenceType" }]
   string OtherPersistenceType;

      [Description ( 
          "The number of files contained in the FileSystem." )]
   uint64 NumberOfFiles;


};
