// Copyright (c) 2005 DMTF. All rights reserved. [Version ( "2.11.0" ), UMLPackagePath ( "CIM::Device::StorageServices" ), Description ( "A subclass of Capabilities that defines the Capabilities of a " "StorageService or StoragePool. For example, an instance of " "StorageCapabilities could be associated with either a " "StorageConfigurationService or StoragePool by using " "ElementCapabilities." )] class CIM_StorageCapabilities : CIM_Capabilities { [Description ( "Enumeration indicating the type of element to which this " "StorageCapabilities applies." ), ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, Values { "Unknown", "Reserved", "Any Type", "StorageVolume", "StorageExtent", "StoragePool", "StorageConfigurationService", "LogicalDisk" }] uint16 ElementType; [Description ( "Indicates whether or not the associated element supports " "no single point of failure. Values are: FALSE = does not " "support no single point of failure, and TRUE = supports " "no single point of failure." ), ModelCorrespondence { "CIM_StorageCapabilities.NoSinglePointOfFailureDefault" }] boolean NoSinglePointOfFailure; [Description ( "Indicates the default value for the " "NoSinglePointOfFailure property." ), ModelCorrespondence { "CIM_StorageCapabilities.NoSinglePointOfFailure" }] boolean NoSinglePointOfFailureDefault; [Description ( "DataRedundancyMax describes the maximum number of " "complete copies of data that can be maintained. Examples " "would be RAID 5 (where 1 copy is maintained) and RAID 1 " "(where 2 or more copies are maintained). Possible values " "are 1 to n. The default redundancy is specified using " "DataRedundancyDefault, while the minimum is defined by " "DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence { "CIM_StorageCapabilities.DataRedundancyMin", "CIM_StorageCapabilities.DataRedundancyDefault" }] uint16 DataRedundancyMax; [Description ( "DataRedundancyMin describes the minimum number of " "complete copies of data that can be maintained. Examples " "would be RAID 5 where 1 copy is maintained and RAID 1 " "where 2 or more copies are maintained). Possible values " "are 1 to n. The default redundancy is specified using " "DataRedundancyDefault, while the maximum is defined by " "DataRedundancyMax." ), MinValue ( 1 ), ModelCorrespondence { "CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyDefault" }] uint16 DataRedundancyMin; [Description ( "DataRedundancyDefault describes the default number of " "complete copies of data that can be maintained. Examples " "would be RAID 5 where 1 copy is maintained and RAID 1 " "where 2 or more copies are maintained. Possible values " "are 1 to n. The bounds for the redundancy (max and min) " "are defined by DataRedundancyMax and DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence { "CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyMin" }] uint16 DataRedundancyDefault; [Description ( "PackageRedundancyMax describes the maximum number of " "redundant packages that can be used. For example, in the " "storage domain, package redundancy describes how many " "disk spindles can fail without data loss including, at " "most, one spare. An example would be RAID5 with a spare " "disk which would have a PackageRedundancy of 2. Possible " "values are 0 to n. The default redundancy is specified " "using PackageRedundancyDefault, while the maximum is " "defined by PackageRedundancyMax." ), ModelCorrespondence { "CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyDefault" }] uint16 PackageRedundancyMax; [Description ( "PackageRedundancyMin describes the minimum number of " "redundant packages that can be used. For example, in the " "storage domain, package redundancy describes how many " "disk spindles can fail without data loss including, at " "most, one spare. An example would be RAID5 with a spare " "disk which would have a PackageRedundancy of 2. Possible " "values are 0 to n. The default redundancy is specified " "using PackageRedundancyDefault, while the minimum is " "defined by PackageRedundancyMin." ), ModelCorrespondence { "CIM_StorageCapabilities.PackageRedundancyMax", "CIM_StorageCapabilities.PackageRedundancyDefault" }] uint16 PackageRedundancyMin; [Description ( "PackageRedundancyDefault describes the default number of " "redundant packages that will be used. For example, in " "the storage domain, package redundancy describes how " "many disk spindles can fail without data loss including, " "at most, one spare. An example would be RAID5 with a " "spare disk which would have a PackageRedundancy of 2. " "Possible values are 0 to n. The bounds for redundancy " "are specified using the properties, PackageRedundancyMax " "and PackageRedundancyMin." ), ModelCorrespondence { "CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyMax" }] uint16 PackageRedundancyDefault; [Description ( "DeltaReservatioMax is a number between 1 (1%) and a 100 " "(100%) that specifies the maximum amount of space " "reserved in a replica for caching changes. For a " "complete copy this would be 100%, but it can be lower in " "some implementations. This parameter sets the upper " "limit, while DeltaReservationMin sets the lower limit." ), Units ( "Percentage" ), MinValue ( 0 ), MaxValue ( 100 ), ModelCorrespondence { "CIM_StorageCapabilities.DeltaReservationMin", "CIM_StorageCapabilities.DeltaReservationDefault" }] uint16 DeltaReservationMax; [Description ( "DeltaReservationMin is a number between 1 (1%) and a 100 " "(100%) that specifies the minimum amount of space that " "should be reserved in a replica for caching changes. For " "a complete copy this would be 100%, but it can be lower " "in some implementations. This parameter sets the lower " "limit, while DeltaReservationMax sets the upper limit." ), Units ( "Percentage" ), MinValue ( 0 ), MaxValue ( 100 ), ModelCorrespondence { "CIM_StorageCapabilities.DeltaReservationMax", "CIM_StorageCapabilities.DeltaReservationDefault" }] uint16 DeltaReservationMin; [Description ( "Delta reservation is a number between 1 (1%) and a 100 " "(100%) that specifies how much space should be reserved " "by default in a replica for caching changes. For a " "complete copy this would be 100%, but it can be lower in " "some implementations. This parameter sets the default " "value, while DeletaReservationMax and DeltReservationMin " "set the upper and lower bounds." ), Units ( "Percentage" ), MinValue ( 0 ), MaxValue ( 100 ), ModelCorrespondence { "CIM_StorageCapabilities.DeltaReservationMax", "CIM_StorageCapabilities.DeltaReservationMin" }] uint16 DeltaReservationDefault; [Description ( "Extent Stripe Length describes the number of underlying " "StorageExtents across which data is striped in the " "common striping-based storage organizations. This is " "also known as the number of \'members\' or \'columns\'. \n" "A NULL value for ExtentStripeLengthDefault indicates " "that the system does not support configuration of " "storage by specifying Stripe Length. \n" "If Extent Stripe Length is supported, and this " "Capabilities instance is associated with a pool that was " "created with a range of QOS then " "ExtentStripeLengthDefault represents the default value. " "Other available values(such as min, max, and discrete " "values) can be determined by using the " "\'GetSupportedStripeLengths\' and " "\'GetSupportedStripeLengthRange\' methods. \n" "If Extent Stripe Length is supported and the pool was " "created with a single specific QOS, representing a Raid " "group, set, or rank, then this property represents the " "current/fixed value for the pool, and Extent Stripe " "Length is not supported in subsequent creation of " "elements from this pool. Consequently, the " "\'GetSupportedStripeLength\' methods cannot be used, and " "in a StorageSetting instance used as a goal when " "creating or modifying a child element of the pool, " "ExtentStripeLengthGoal, ExtentStripeLengthMin, and " "ExtentStripeLengthMax MUST be set to NULL." ), MinValue ( 1 )] uint16 ExtentStripeLengthDefault; [Description ( "ParityLayout specifies whether a parity-based storage " "organization is using rotated or non-rotated parity. If " "this capabilities instance is associated with a pool " "that was created with a range of QOS then " "ParityLayoutDefault represents the default value. Other " "available values can be determined by using the " "\'GetSupportedParityLayouts\' method. If the pool was " "created with a single specific QOS, representing a Raid " "group, set, or rank, then this property represents the " "current/fixed value for the pool, and ParityLayout is " "not supported in subsequent creation of elements from " "this pool. Consequently, the \'GetSupportedParityLayouts\' " "method cannot be used, and the ParityLayoutGoal property " "in StorageSetting instances used in child element " "operations on this pool MUST be set to NULL. A NULL " "value for ParityLayoutDefault indicates that the system " "does not support configuration of storage by specifying " "ParityLayout." ), ValueMap { "2", "3" }, Values { "Non-Rotated Parity", "Rotated Parity" }] uint16 ParityLayoutDefault; [Description ( "User Data Stripe Depth describes the number of bytes " "forming a strip in common striping-based storage " "organizations. The strip is defined as the size of the " "portion of a stripe that lies on one extent. Thus, " "ExtentStripeLength * UserDataStripeDepth will yield the " "size of one stripe of user data. A NULL value for " "UserDataStripeDepthDefault indicates that the system " "does not support configuration of storage by specifying " "Stripe Depth. \n" "If User Data Stripe Depth is supported, and this " "Capabilities instance is associated with a pool that was " "created with a range of QOS then " "UserDataStripeDepthDefault represents the default value. " "Other available values(such as min, max, and discrete " "values) can be determined by using the " "\'GetSupportedStripeDepths\' and " "\'GetSupportedStripeDepthRange\' methods. \n" "If User Data Stripe Depth is supported and the pool was " "created with a single specific QOS, representing a Raid " "group, set, or rank, then this property represents the " "current/fixed value for the pool, and User Data Stripe " "Depth is not supported in subsequent creation of " "elements from this pool. Consequently, the " "\'GetSupportedStripeDepth\' methods cannot be used, and " "in a StorageSetting instance used as a goal when " "creating or modifying a child element of the pool, " "UserDataStripeDepthGoal, UserDataStripeDepthMin, and " "UserDataStripeDepthMax MUST be set to NULL." ), Units ( "Bytes" ), MinValue ( 1 )] uint64 UserDataStripeDepthDefault; [Description ( "Method to create and populate a StorageSetting instance " "from a StorageCapability instance. This removes the need " "to populate default settings and other settings in the " "context of each StorageCapabilities (which could be " "numerous). If the underlying instrumentation supports " "the StorageSettingWithHints subclass, then an instance " "of that class will be created instead." ), ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" }, Values { "Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Vendor Specific" }] uint32 CreateSetting( [IN, Description ( "If \'Default\' is passed for the CreateDefault " "parameter, the Max, Goal, and Min setting " "attributes are set to the Default values of the " "parent StorageCapabilities when the instance is " "created. \n" "If set to \'Goal\' the new StorageSetting " "attributes are set to the related attributes of " "the parent StorageCapabilities, e.g. Min to Min, " "Goal to Default, and Max to Max. \n" "\n" "This method maybe deprecated in lieu of intrinsics " "once limitations in the CIM Operations are " "addressed." ), ValueMap { "2", "3" }, Values { "Default", "Goal" }] uint16 SettingType, [IN ( false ), OUT, Description ( "Reference to the created StorageSetting instance." )] CIM_StorageSetting REF NewSetting); [Description ( "For systems that support Parity-based storage " "organizations for volume or pool creation, this method " "can be used to the supported parity layouts." ), ValueMap { "0", "1", "2" }, Values { "Method completed OK", "Method not supported", "Choice not aavailable for this capability" }] uint32 GetSupportedParityLayouts( [IN ( false ), OUT, Description ( "List of supported Parity for a Volume/Pool " "creation or modification." ), ValueMap { "2", "3" }, Values { "Non-Rotated Parity", "Rotated Parity" }, ArrayType ( "Indexed" )] uint16 ParityLayout[]); };