
#pragma namespace ("/root/ibm")

#pragma Locale ("en-US")

// ASSOCIATION

Qualifier ASSOCIATION :  boolean = false,
	Scope( Association
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Abstract

Qualifier Abstract :  boolean = false,
	Scope( Class,
	 Association,
	 Indication
 ),
	Flavor(	 EnableOverride,
	 Restricted
 );

// Aggregate

Qualifier Aggregate :  boolean = false,
	Scope( Reference
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Aggregation

Qualifier Aggregation :  boolean = false,
	Scope( Association
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// ArrayType

Qualifier ArrayType :  string = "Bag",
	Scope( Property,
	 Parameter
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Composition

Qualifier Composition :  boolean = false,
	Scope( Association
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Counter

Qualifier Counter :  boolean = false,
	Scope( Property,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

// Deprecated

Qualifier Deprecated : string[],
	Scope( Class,
	 Association,
	 Indication,
	 Property,
	 Reference,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 Restricted
 );

// Description

Qualifier Description :  string = null,
	Scope( Class,
	 Association,
	 Indication,
	 Property,
	 Reference,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass,
	 Translatable
 );

// EmbeddedInstance

Qualifier EmbeddedInstance :  string=null,
	Scope( Property,
	 Method,
	 Parameter
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// EmbeddedObject

Qualifier EmbeddedObject :  boolean = false,
	Scope( Property,
	 Method,
	 Parameter
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Experimental

Qualifier Experimental :  boolean = false,
	Scope( Class,
	 Association,
	 Indication,
	 Property,
	 Reference,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 Restricted
 );

// Gauge

Qualifier Gauge :  boolean = false,
	Scope( Property,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

// IBMExtension

Qualifier IBMExtension :  string = null,
	Scope( Class,
	 Association,
	 Indication,
	 Property,
	 Reference,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

// IN

Qualifier In :  boolean = true,
	Scope( Parameter
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// INDICATION

Qualifier INDICATION :  boolean = false,
	Scope( Class,
	 Indication
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Key

Qualifier Key :  boolean = false,
	Scope( Property,
	 Reference
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// MappingStrings

Qualifier MappingStrings : string[],
	Scope( Class,
	 Association,
	 Indication,
	 Property,
	 Reference,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

// Max

Qualifier Max :  uint32 = null,
	Scope( Reference
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

// MaxLen

Qualifier MaxLen :  uint32 = null,
	Scope( Property,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

// MaxValue

Qualifier MaxValue :  sint64 = null,
	Scope( Property,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

// Min

Qualifier Min :  uint32 = 0,
	Scope( Reference
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

// MinValue

Qualifier MinValue :  sint64 = null,
	Scope( Property,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

// ModelCorrespondence

Qualifier ModelCorrespondence : string[],
	Scope( Class,
	 Association,
	 Indication,
	 Property,
	 Reference,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );
 
 // Octetstring
 
 Qualifier Octetstring : boolean = false, 
    Scope(property, method, parameter), 
    Flavor(DisableOverride);

// OUT

Qualifier Out :  boolean = false,
	Scope( Parameter
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Override

Qualifier Override :  string = null,
	Scope( Property,
	 Reference,
	 Method
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Propagated

Qualifier Propagated :  string = null,
	Scope( Property
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// REQUIRED

Qualifier Required :  boolean = false,
	Scope( Property,
	 Reference,
	 Parameter
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Static

Qualifier Static :  boolean = false,
	Scope( Property,
	 Method
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Units

Qualifier Units :  string = null,
	Scope( Property,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass,
	 Translatable
 );

// ValueMap

Qualifier ValueMap : string[],
	Scope( Property,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

// Values

Qualifier Values : string[],
	Scope( Property,
	 Method,
	 Parameter
 ),
	Flavor(	 EnableOverride,
	 ToSubclass,
	 Translatable
 );

// Version

Qualifier Version :  string = null,
	Scope( Class,
	 Association,
	 Indication
 ),
	Flavor(	 EnableOverride,
	 Restricted,
	 Translatable
 );

// Weak

Qualifier Weak :  boolean = false,
	Scope( Reference
 ),
	Flavor(	 DisableOverride,
	 ToSubclass
 );

// Write

Qualifier Write :  boolean = false,
	Scope( Property
 ),
	Flavor(	 EnableOverride,
	 ToSubclass
 );

//Provider

Qualifier Provider : string = null,
	Scope( Any
);

// CIM_ManagedElement

	[Abstract ( true ), Description ( "ManagedElement is an abstract class that provides a common superclass (or top of the inheritance tree) for the non-association classes in the CIM Schema." ), Version ( "2.10.0" )]
class CIM_ManagedElement {
	[Description ( "The Caption property is a short textual description (one- line string) of the object." ), MaxLen ( 64 )]
	string Caption;

 	[Description ( "The Description property provides a textual description of the object." )]
	string Description;

 	[Description ( "A user-friendly name for the object. This property allows each instance to define a user-friendly name in addition to its key properties, identity data, and description information. \nNote that the Name property of ManagedSystemElement is also defined as a user-friendly name. But, it is often subclassed to be a Key. It is not reasonable that the same property can convey both identity and a user-friendly name, without inconsistencies. Where Name exists and is not a Key (such as for instances of LogicalDevice), the same information can be present in both the Name and ElementName properties." )]
	string ElementName;


};

// CIM_LogicalIdentity

[ASSOCIATION ( true ), Abstract ( true ),  Description ( "CIM_LogicalIdentity is an abstract and generic association, indicating that two ManagedElements represent different aspects of the same underlying entity. This relationship conveys what could be defined with multiple inheritance. In most scenarios, the Identity relationship is determined by the equivalence of Keys or some other identifying properties of the related Elements. \n\nThis relationship is reasonable in several scenarios. For example, it could be used to represent that a LogicalDevice is both a \'bus\' entity and a \'functional\' entity. A Device could be both a USB (bus) and a Keyboard (functional) entity." ), Version ( "2.10.0" )]
class CIM_LogicalIdentity {
	[Description ( "SameElement represents an alternate aspect of the ManagedElement." ), Key ( true )]
	CIM_ManagedElement ref SameElement;

 	[Description ( "SystemElement represents one aspect of the Managed Element. The use of \'System\' in the role name does not limit the scope of the association. The role name was defined in the original association, where the referenced elements were limited to LogicalElements. Since that time, it has been found valuable to instantiate these types of relationships for ManagedElements, such as Collections. So, the referenced elements of the association were redefined to be ManagedElements. Unfortunately, the role name could not be changed without deprecating the entire association. This was not deemed necessary just to correct the role name." ), Key ( true )]
	CIM_ManagedElement ref SystemElement;


};

// CIM_ConcreteIdentity

[ASSOCIATION ( true ),  Description ( "CIM_ConcreteIdentity associates two elements that represent different aspects of the same underlying entity. It is defined as a concrete subclass of the abstract CIM_LogicalIdentity class, to be used in place of many specific subclasses of LogicalIdentity that add no semantics, that is, subclasses that do not clarify the type of identity, update cardinalities, or add or remove qualifiers. Note that when you define additional semantics for LogicalIdentity, this class should not be subclassed. Specific semantics continue to be defined as subclasses of the abstract CIM_LogicalIdentity. ConcreteIdentity is limited in its use as a concrete form of a general identity relationship. \n\nIt was deemed more prudent to create this concrete subclass than to change LogicalIdentity from an abstract to a concrete class. LogicalIdentity already had multiple abstract subclasses in the CIM Schema, and wider industry usage and impact could not be anticipated." ), Version ( "2.10.0" )]
class CIM_ConcreteIdentity : CIM_LogicalIdentity {
	[Description ( "Another aspect of the ManagedElement." ), Override ( "SameElement" )]
	CIM_ManagedElement ref SameElement;

 	[Description ( "One aspect of the ManagedElement. The use of \'System\' in the name does not limit the scope of the association. This name is an artifact of the original definition of the association." ), Override ( "SystemElement" )]
	CIM_ManagedElement ref SystemElement;


};

// CIM_Dependency

[ASSOCIATION ( true ), Abstract ( true ),  Description ( "CIM_Dependency is a generic association used to establish dependency relationships between ManagedElements." ), Version ( "2.10.0" )]
class CIM_Dependency {
	[Description ( "Antecedent represents the independent object in this association." ), Key ( true )]
	CIM_ManagedElement ref Antecedent;

 	[Description ( "Dependent represents the object that is dependent on the Antecedent." ), Key ( true )]
	CIM_ManagedElement ref Dependent;


};

// CIM_ManagedSystemElement

	[Abstract ( true ), Description ( "CIM_ManagedSystemElement is the base class for the System Element hierarchy. Any distinguishable component of a System is a candidate for inclusion in this class. Examples of system components include: \n- software components such as application servers, databases, and applications \n- operating system components such as files, processes, and threads \n- device components such as disk drives, controllers, processors, and printers \n- physical components such as chips and cards." ), Version ( "2.10.0" )]
class CIM_ManagedSystemElement : CIM_ManagedElement {
	[Description ( "Indicates the current health of the element. This attribute expresses the health of this element but not necessarily that of its subcomponents. The possible values are 0 to 30, where 5 means the element is entirely healthy and 30 means the element is completely non-functional. The following continuum is defined: \n\"Non-recoverable Error\" (30) - The element has completely failed, and recovery is not possible. All functionality provided by this element has been lost. \n\"Critical Failure\" (25) - The element is non-functional and recovery might not be possible. \n\"Major Failure\" (20) - The element is failing. It is possible that some or all of the functionality of this component is degraded or not working. \n\"Minor Failure\" (15) - All functionality is available but some might be degraded. \n\"Degraded/Warning\" (10) - The element is in working order and all functionality is provided. However, the element is not working to the best of its abilities. For example, the element might not be operating at optimal performance or it might be reporting recoverable errors. \n\"OK\" (5) - The element is fully functional and is operating within normal operational parameters and without error. \n\"Unknown\" (0) - The implementation cannot report on HealthState at this time. \nDMTF has reserved the unused portion of the continuum for additional HealthStates in the future." ), Experimental ( true ), ValueMap{"0", "5", "10", "15", "20", "25", "30", ".."}, Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"}]
	uint16 HealthState;

 	[Description ( "A datetime value that indicates when the object was installed. Lack of a value does not indicate that the object is not installed." ), MappingStrings{"MIF.DMTF|ComponentID|001.5"}]
	datetime InstallDate;

 	[Description ( "The Name property defines the label by which the object is known. When subclassed, the Name property can be overridden to be a Key property." ), MaxLen ( 1024 )]
	string Name;

 	[ArrayType ( "Indexed" ), Description ( "Indicates the current statuses of the element. Various operational statuses are defined. Many of the enumeration\'s values are self-explanatory. However, a few are not and are described here in more detail. \n\"Stressed\" indicates that the element is functioning, but needs attention. Examples of \"Stressed\" states are overload, overheated, and so on. \n\"Predictive Failure\" indicates that an element is functioning nominally but predicting a failure in the near future. \n\"In Service\" describes an element being configured, maintained, cleaned, or otherwise administered. \n\"No Contact\" indicates that the monitoring system has knowledge of this element, but has never been able to establish communications with it. \n\"Lost Communication\" indicates that the ManagedSystem Element is known to exist and has been contacted successfully in the past, but is currently unreachable. \n\"Stopped\" and \"Aborted\" are similar, although the former implies a clean and orderly stop, while the latter implies an abrupt stop where the state and configuration of the element might need to be updated. \n\"Dormant\" indicates that the element is inactive or quiesced. \n\"Supporting Entity in Error\" indicates that this element might be \"OK\" but that another element, on which it is dependent, is in error. An example is a network service or endpoint that cannot function due to lower-layer networking problems. \n\"Completed\" indicates that the element has completed its operation. This value should be combined with either OK, Error, or Degraded so that a client can tell if the complete operation Completed with OK (passed), Completed with Error (failed), or Completed with Degraded (the operation finished, but it did not complete OK or did not report an error). \n\"Power Mode\" indicates that the element has additional power model information contained in the Associated PowerManagementService association. \nOperationalStatus replaces the Status property on ManagedSystemElement to provide a consistent approach to enumerations, to address implementation needs for an array property, and to provide a migration path from today\'s environment to the future. This change was not made earlier because it required the deprecated qualifier. Due to the widespread use of the existing Status property in management applications, it is strongly recommended that providers or instrumentation provide both the Status and OperationalStatus properties. Further, the first value of OperationalStatus should contain the primary status for the element. When instrumented, Status (because it is single-valued) should also provide the primary status of the element." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Deprecated{"CIM_ManagedSystemElement.OperationalStatus"}, Description ( "A string indicating the current status of the object. Various operational and non-operational statuses are defined. This property is deprecated in lieu of OperationalStatus, which includes the same semantics in its enumeration. This change is made for 3 reasons: \n1) Status is more correctly defined as an array. This definition overcomes the limitation of describing status using a single value, when it is really a multi-valued property (for example, an element might be OK AND Stopped. \n2) A MaxLen of 10 is too restrictive and leads to unclear enumerated values. \n3) The change to a uint16 data type was discussed when CIM V2.0 was defined. However, existing V1.0 implementations used the string property and did not want to modify their code. Therefore, Status was grandfathered into the Schema. Use of the deprecated qualifier allows the maintenance of the existing property, but also permits an improved definition using OperationalStatus." ), MaxLen ( 10 ), ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service", "Stressed", "NonRecover", "No Contact", "Lost Comm", "Stopped"}]
	string Status;

 	[ArrayType ( "Indexed" ), Description ( "Strings describing the various OperationalStatus array values. For example, if \"Stopping\" is the value assigned to OperationalStatus, then this property may contain an explanation as to why an object is being stopped. Note that entries in this array are correlated with those at the same array index in OperationalStatus." ), ModelCorrespondence{"CIM_ManagedSystemElement.OperationalStatus"}]
	string StatusDescriptions[];


};

// CIM_LogicalElement

	[Abstract ( true ), Description ( "CIM_LogicalElement is a base class for all the components of a System that represent abstract system components, such as Files, Processes, or LogicalDevices." ), Version ( "2.6.0" )]
class CIM_LogicalElement : CIM_ManagedSystemElement {
};

// CIM_EnabledLogicalElement

	[Abstract ( true ), Description ( "This class extends LogicalElement to abstract the concept of an element that is enabled and disabled, such as a LogicalDevice or a ServiceAccessPoint." ), Version ( "2.10.0" )]
class CIM_EnabledLogicalElement : CIM_LogicalElement {
	[Description ( "An enumerated value indicating an administrator\'s default or startup configuration for the Enabled State of an element. By default, the element is \"Enabled\" (value=2)." ), ValueMap{"2", "3", "5", "6", "7", "8..32767", "32768..65535"}, Values{"Enabled", "Disabled", "Not Applicable", "Enabled but Offline", "No Default", "DMTF Reserved", "Vendor Reserved"}, Write ( true )]
	uint16 EnabledDefault = 2;

 	[Description ( "EnabledState is an integer enumeration that indicates the enabled and disabled states of an element. It can also indicate the transitions between these requested states. For example, shutting down (value=4) and starting (value=10) are transient states between enabled and disabled. The following text briefly summarizes the various enabled and disabled states: \nEnabled (2) indicates that the element is or could be executing commands, will process any queued commands, and queues new requests. \nDisabled (3) indicates that the element will not execute commands and will drop any new requests. \nShutting Down (4) indicates that the element is in the process of going to a Disabled state. \nNot Applicable (5) indicates the element does not support being enabled or disabled. \nEnabled but Offline (6) indicates that the element might be completing commands, and will drop any new requests. \nTest (7) indicates that the element is in a test state. \nDeferred (8) indicates that the element might be completing commands, but will queue any new requests. \nQuiesce (9) indicates that the element is enabled but in a restricted mode. The behavior of the element is similar to the Enabled state, but it processes only a restricted set of commands. All other requests are queued. \nStarting (10) indicates that the element is in the process of going to an Enabled state. New requests are queued." ), ModelCorrespondence{"CIM_EnabledLogicalElement.OtherEnabledState"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11..32767", "32768..65535"}, Values{"Unknown", "Other", "Enabled", "Disabled", "Shutting Down", "Not Applicable", "Enabled but Offline", "In Test", "Deferred", "Quiesce", "Starting", "DMTF Reserved", "Vendor Reserved"}]
	uint16 EnabledState = 5;

 	[Description ( "A string that describes the enabled or disabled state of the element when the EnabledState property is set to 1 (\"Other\"). This property must be set to null when EnabledState is any value other than 1." ), ModelCorrespondence{"CIM_EnabledLogicalElement.EnabledState"}]
	string OtherEnabledState;

 	[Description ( "RequestedState is an integer enumeration that indicates the last requested or desired state for the element. The actual state of the element is represented by EnabledState. This property is provided to compare the last requested and current enabled or disabled states. Note that when EnabledState is set to 5 (\"Not Applicable\"), then this property has no meaning. By default, the RequestedState of the element is 5 (\"No Change\"). Refer to the EnabledState property description for explanations of the values in the RequestedState enumeration. \n\nIt should be noted that there are two new values in RequestedState that build on the statuses of EnabledState. These are \"Reboot\" (10) and \"Reset\" (11). Reboot refers to doing a \"Shut Down\" and then moving to an \"Enabled\" state. Reset indicates that the element is first \"Disabled\" and then \"Enabled\". The distinction between requesting \"Shut Down\" and \"Disabled\" should also be noted. Shut Down requests an orderly transition to the Disabled state, and might involve removing power, to completely erase any existing state. The Disabled state requests an immediate disabling of the element, such that it will not execute or accept any commands or processing requests. \n\nThis property is set as the result of a method invocation (such as Start or StopService on CIM_Service), or can be overridden and defined as WRITEable in a subclass. The method approach is considered superior to a WRITEable property, because it allows an explicit invocation of the operation and the return of a result code. \n\nA particular instance of EnabledLogicalElement might not support RequestedStateChange. If this occurs, the value 12 (\"Not Applicable\") is used." ), ModelCorrespondence{"CIM_EnabledLogicalElement.EnabledState"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "32768..65535"}, Values{"Enabled", "Disabled", "Shut Down", "No Change", "Offline", "Test", "Deferred", "Quiesce", "Reboot", "Reset", "Not Applicable", "DMTF Reserved", "Vendor Reserved"}]
	uint16 RequestedState = 12;

 	[Description ( "The date or time when the EnabledState of the element last changed. If the state of the element has not changed and this property is populated, then it must be set to a 0 interval value. If a state change was requested, but rejected or not yet processed, the property must not be updated." )]
	datetime TimeOfLastStateChange;


		[Description ( "Requests that the state of the element be changed to the value specified in the RequestedState parameter. When the requested state change takes place, the EnabledState and RequestedState of the element will be the same. Invoking the RequestStateChange method multiple times could result in earlier requests being overwritten or lost. \nIf 0 is returned, then the task completed successfully and the use of ConcreteJob was not required. If 4096 (0x1000) is returned, then the task will take some time to complete, ConcreteJob will be created, and its reference returned in the output parameter Job. Any other return code indicates an error condition." ), ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098", "4099", "4100..32767", "32768..65535"}, Values{"Completed with No Error", "Not Supported", "Unknown or Unspecified Error", "Cannot complete within Timeout Period", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Invalid State Transition", "Use of Timeout Parameter Not Supported", "Busy", "Method Reserved", "Vendor Specific"}]
	uint32 RequestStateChange(
		[Description ( "Reference to the job (can be null if the task is completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "The state requested for the element. This information will be placed into the RequestedState property of the instance if the return code of the RequestStateChange method is 0 (\'Completed with No Error\'), 3 (\'Timeout\'), or 4096 (0x1000) (\'Job Started\'). Refer to the description of the EnabledState and RequestedState properties for the detailed explanations of the RequestedState values." ), IN ( true ), ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}, ValueMap{"2", "3", "4", "6", "7", "8", "9", "10", "11", "..", "32768..65535"}, Values{"Enabled", "Disabled", "Shut Down", "Offline", "Test", "Defer", "Quiesce", "Reboot", "Reset", "DMTF Reserved", "Vendor Reserved"}]
		uint16 RequestedState,
	 	[Description ( "A timeout period that specifies the maximum amount of time that the client expects the transition to the new state to take. The interval format must be used to specify the TimeoutPeriod. A value of 0 or a null parameter indicates that the client has no time requirements for the transition. \nIf this property does not contain 0 or null and the implementation does not support this parameter, a return code of \'Use Of Timeout Parameter Not Supported\' must be returned." ), IN ( true )]
		datetime TimeoutPeriod
	);
};

// CIM_LogicalDevice

	[Abstract ( true ), Description ( "An abstraction or emulation of a hardware entity, that might or might not be Realized in physical hardware. Any characteristics of a LogicalDevice that are used to manage its operation or configuration are contained in, or associated with, the LogicalDevice object. Examples of the operational properties of a Printer would be paper sizes supported or detected errors. Examples of the configuration properties of a Sensor Device would be threshold settings. Various configurations could exist for a LogicalDevice. These configurations could be contained in Setting objects and associated with the LogicalDevice." ), Version ( "2.10.0" )]
class CIM_LogicalDevice : CIM_EnabledLogicalElement {
	[Description ( "Additional availability and status of the Device in addition to that specified in the Availability property. The Availability property denotes the primary status and availability of the Device. In some cases, this property will not be sufficient to denote the complete status of the Device. In those cases, the AdditionalAvailability property can be used to provide further information. For example, the primary Availability of a device might be \"Off line\" (value=8) or in a low-power state (AdditionalAvailability value=14), or the Device could be running Diagnostics (AdditionalAvailability value=5, \"In Test\")." ), ModelCorrespondence{"CIM_LogicalDevice.Availability"}, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21"}, Values{"Other", "Unknown", "Running/Full Power", "Warning", "In Test", "Not Applicable", "Power Off", "Off Line", "Off Duty", "Degraded", "Not Installed", "Install Error", "Power Save - Unknown", "Power Save - Low Power Mode", "Power Save - Standby", "Power Cycle", "Power Save - Warning", "Paused", "Not Ready", "Not Configured", "Quiesced"}]
	uint16 AdditionalAvailability[];

 	[Deprecated{"CIM_AssociatedPowerManagementService.PowerState", "CIM_ManagedSystemElement.OperationalStatus", "CIM_EnabledLogicalElement.EnabledState"}, Description ( "Note: The use of this property has been deprecated. \nDeprecated description: The primary availability and status of the Device. (Additional status information can be specified using the Additional Availability array property.) For example, the Availability property indicates that the Device is running and has full power (value=3), or is in a warning (4), test (5), degraded (10) or power save state (values 13-15 and 17). The Power Save states are defined as follows: Value 13 (\"Power Save - Unknown\") indicates that the Device is known to be in a power save mode, but its exact status in this mode is unknown; value 14 (\"Power Save - Low Power Mode\") indicates that the Device is in a power save state but still functioning, and might exhibit degraded performance; value 15 (\"Power Save - Standby\") indicates that the Device is not functioning but could be brought to full power \'quickly\'; and value 17 (\"Power Save - Warning\") indicates that the Device is in a warning state, but is also in a power save mode." ), MappingStrings{"MIF.DMTF|Operational State|006.5", "MIB.IETF|HOST-RESOURCES-MIB.hrDeviceStatus", "MIF.DMTF|Host Device|001.5"}, ModelCorrespondence{"CIM_LogicalDevice.AdditionalAvailability"}, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21"}, Values{"Other", "Unknown", "Running/Full Power", "Warning", "In Test", "Not Applicable", "Power Off", "Off Line", "Off Duty", "Degraded", "Not Installed", "Install Error", "Power Save - Unknown", "Power Save - Low Power Mode", "Power Save - Standby", "Power Cycle", "Power Save - Warning", "Paused", "Not Ready", "Not Configured", "Quiesced"}]
	uint16 Availability;

 	[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." ), Key ( true ), MaxLen ( 256 )]
	string CreationClassName;

 	[Description ( "An address or other identifying information used to uniquely name the LogicalDevice." ), Key ( true ), MaxLen ( 64 )]
	string DeviceID;

 	[Deprecated{"CIM_ManagedSystemElement.OperationalStatus"}, Description ( "Note: The use of this method is deprecated. \nDeprecated description: ErrorCleared is a Boolean property that indicates that the error reported in LastErrorCode is now cleared." )]
	boolean ErrorCleared;

 	[Deprecated{"CIM_DeviceErrorData.ErrorDescription"}, Description ( "Note: The use of this method is deprecated. \nDeprecated description: ErrorDescription is a free-form string that supplies more information about the error recorded in LastErrorCode and information on any corrective actions that can be taken." )]
	string ErrorDescription;

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

 	[Deprecated{"CIM_DeviceErrorData.LastErrorCode"}, Description ( "Note: The use of this method is deprecated. \nDeprecated description: LastErrorCode captures the last error code reported by the LogicalDevice." )]
	uint32 LastErrorCode;

 	[Deprecated{"No value"}, Description ( "Note: The use of this property has been deprecated. When evaluating the use of Quiesce, it was determined that this single property is not adequate for describing when a device will automatically exit a quiescent state. In fact, the most likely scenario for a device to exit a quiescent state was determined to be based on the number of outstanding requests queued rather than on a maximum time. This decision will be re-evaluated and repositioned later. \nDeprecated description: Maximum time, in milliseconds, that a Device can run in a \"Quiesced\" state. The state is defined in its Availability and AdditionalAvailability properties, where \"Quiesced\" is conveyed by the value 21. What occurs at the end of the time limit is device-specific. The Device can unquiesce, can be offline, or can take other actions. A value of 0 indicates that a Device can remain quiesced indefinitely." ), Units ( "MilliSeconds" )]
	uint64 MaxQuiesceTime;

 	[ArrayType ( "Indexed" ), Description ( "OtherIdentifyingInfo captures data, in addition to DeviceID information, that could be used to identify a LogicalDevice. For example, you could use this property to hold the operating system\'s user-friendly name for the Device." ), MaxLen ( 256 ), ModelCorrespondence{"CIM_LogicalDevice.IdentifyingDescriptions"}]
	string OtherIdentifyingInfo[];

 	[Deprecated{"CIM_PowerManagementCapabilities.PowerCapabilities"}, Description ( "Note: The use of this property has been deprecated. Instead, use the PowerCapabilites property in an associated PowerManagementCapabilities class. Deprecated description: An enumerated array describing the power management capabilities of the Device." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "Not Supported", "Disabled", "Enabled", "Power Saving Modes Entered Automatically", "Power State Settable", "Power Cycling Supported", "Timed Power On Supported"}]
	uint16 PowerManagementCapabilities[];

 	[Deprecated{"CIM_PowerManagementCapabilities"}, Description ( "Note: The use of this property has been deprecated. Instead, the existence of an associated PowerManagementCapabilities class (associated using the ElementCapabilities relationship) indicates that power management is supported. Deprecated description: Boolean that indicates that the Device can use power management." )]
	boolean PowerManagementSupported;

 	[Counter ( true ), Deprecated{"CIM_PoweredStatisticalData.PowerOnHours"}, Description ( "Note: The use of this method is deprecated. \nDeprecated description: The number of consecutive hours that this Device has been powered on since its last power cycle." ), Units ( "Hours" )]
	uint64 PowerOnHours;

 	[Deprecated{"CIM_EnabledLogicalElement.EnabledState"}, Description ( "Note: The use of this method is deprecated in lieu of a more clearly named property (EnabledState) that is inherited from ManagedSystemElement and that has additional enumerated values. \nDeprecated description: The StatusInfo property indicates whether the Logical Device is in an enabled state (value=3), disabled state (value=4), some other state (value=1), or an unknown state (value=2). If this property does not apply to the LogicalDevice, the value 5 (\"Not Applicable\") should be used. If a Device is (\"Enabled\")(value=3), it has been powered up and is configured and operational. The Device might or might not be functionally active, depending on whether its Availability (or AdditionalAvailability) indicates that it is (\"Running/Full Power\")(value=3) or (\"Off line\") (value=8). In an enabled but offline mode, a Device might be performing out-of-band requests, such as running Diagnostics. If StatusInfo is (\"Disabled\") (value=4), a Device can only be \"enabled\" or powered off. In a personal computer environment, (\"Disabled\") means that the driver of the device is not available in the stack. In other environments, a Device can be disabled by removing its configuration file. A disabled device is physically present in a System and consuming resources, but it cannot be communicated with until a driver is loaded, a configuration file is loaded, or some other \"enabling\" activity has occurred." ), MappingStrings{"MIF.DMTF|Operational State|006.4"}, ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "Unknown", "Enabled", "Disabled", "Not Applicable"}]
	uint16 StatusInfo;

 	[Description ( "The CreationClassName of the scoping system." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The System Name of the scoping system." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_System.Name" )]
	string SystemName;

 	[Counter ( true ), Deprecated{"CIM_PoweredStatisticalData.TotalPowerOnHours"}, Description ( "Note: The use of this method is deprecated. \nDeprecated description: The total number of hours that this Device has been powered on." ), Units ( "Hours" )]
	uint64 TotalPowerOnHours;


		[Deprecated{"CIM_EnabledLogicalElement.RequestStateChange"}, Description ( "Note: The use of this method has been deprecated in lieu of the more general RequestStateChange method that directly overlaps with the functionality provided by this method. \nDeprecated description: Requests that the LogicalDevice be enabled (\"Enabled\" input parameter=TRUE) or disabled (=FALSE). If successful, the StatusInfo or EnabledState properties of the Device should reflect the desired state (enabled or disabled). Note that this function overlaps with the RequestedState property. RequestedState was added to the model to maintain a record (for example, a persisted value) of the last state request. Invoking the EnableDevice method should set the RequestedState property appropriately. \nThe return code 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 by using a ValueMap qualifier on the method. The strings to which the ValueMap contents are \'translated\' can also be specified in the subclass as a Values array qualifier." )]
	uint32 EnableDevice(
		[Description ( "If TRUE, enable the device. If FALSE, disable the device." ), IN ( true )]
		boolean Enabled
	);
	 	[Deprecated{"CIM_EnabledLogicalElement.RequestStateChange"}, Description ( "Note: The use of this method has been deprecated in lieu of the more general RequestStateChange method that directly overlaps with the functionality provided by this method. \nDeprecated description: Requests that the LogicalDevice be brought online (\"Online\" input parameter=TRUE) or taken offline (=FALSE). \"Online\" indicates that the Device is ready to accept requests, and is operational and fully functioning. In this case, the Availability property of the Device would be set to a value of 3 (\"Running/Full Power\"). \"Offline\" indicates that a Device is powered on and operational, but is not processing functional requests. In an offline state, a Device might be capable of running diagnostics or generating operational alerts. For example, when the \"Offline\" button is pushed on a Printer, the Device is no longer available to process print jobs, but it could be available for diagnostics or maintenance. \nIf this method is successful, the Availability and AdditionalAvailability properties of the Device should reflect the updated status. If a failure occurs when you try to bring the Device online or offline, it should remain in its current state. The request, if unsuccessful, should not leave the Device in an indeterminate state. When bringing a Device back \"Online\" from an \"Offline\" mode, the Device should be restored to its last \"Online\" state, if at all possible. Only a Device that has an EnabledState or StatusInfo of \"Enabled\" and has been configured can be brought online or taken offline. \nOnlineDevice should return 0 if successful, 1 if the request is not supported at all, 2 if the request is not supported due to the current state of the Device, and some other value if any other 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\' can also be specified in the subclass as a Values array qualifier. \nNote that the function of this method overlaps with the RequestedState property. RequestedState was added to the model to maintain a record (for example, a persisted value) of the last state request. Invoking the OnlineDevice method should set the RequestedState property appropriately." )]
	uint32 OnlineDevice(
		[Description ( "If TRUE, take the device online. If FALSE, take the device offline." ), IN ( true )]
		boolean Online
	);
	 	[Deprecated{"CIM_EnabledLogicalElement.RequestStateChange"}, Description ( "Note: The use of this method has been deprecated in lieu of the more general RequestStateChange method that directly overlaps with the functionality provided by this method. \nDeprecated description: Requests that the LogicalDevice cleanly cease all activity (\"Quiesce\" input parameter=TRUE) or resume activity (=FALSE). For this method to quiesce a Device, that Device should have an Availability (or Additional Availability) of \"Running/Full Power\" (value=3) and an EnabledStatus/StatusInfo of \"Enabled\". For example, if quiesced, a Device can then be taken offline for diagnostics, or disabled for power off and hot swap. For the method to \"unquiesce\" a Device, that Device should have an Availability (or AdditionalAvailability) of \"Quiesced\" (value=21) and an EnabledStatus or StatusInfo of \"Enabled\". In this case, the Device would be returned to an \"Enabled\" and \"Running/Full Power\" status. \nThe return code of the method should indicate the success or failure of the quiesce. It should return 0 if successful, 1 if the request is not supported at all, 2 if the request is not supported due to the current state of the Device, and some other value if any other 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\' can also be specified in the subclass as a Values array qualifier." )]
	uint32 QuiesceDevice(
		[Description ( "If set to TRUE, then cleanly cease all activity. If FALSE, resume activity." ), IN ( true )]
		boolean Quiesce
	);
	 	[Description ( "Requests a reset of the LogicalDevice. 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\' can also be specified in the subclass as a Values array qualifier." )]
	uint32 Reset(
	
	);
	 	[Deprecated{"CIM_ConfigurationData.ApplyConfiguration"}, Description ( "Note: The use of this method is deprecated. Its function is handled more generally by the ConfigurationData subclass of SettingData. \nRequests that the Device re-establish its configuration, setup or state information, or both from a backing store. The information would have been captured at an earlier time (using the SaveProperties method). This method might not be supported by all Devices. The method should return 0 if successful, 1 if the request is not supported, and some other value if any other 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\' can also be specified in the subclass as a Values array qualifier." )]
	uint32 RestoreProperties(
	
	);
	 	[Deprecated{"CIM_ConfigurationData.ConfigurationInformation"}, Description ( "Note: The use of this method is deprecated. Its function is handled more generally by the ConfigurationData subclass of SettingData. \nDeprecated description: Requests that the Device capture its current configuration, setup or state information, or both in a backing store. \nThe information returned by this method could be used at a later time (using the RestoreProperties method) to return a Device to its present \"condition\". This method might not be supported by all Devices. The method should return 0 if successful, 1 if the request is not supported, and some other value if any other 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\' can also be specified in the subclass as a Values array qualifier." )]
	uint32 SaveProperties(
	
	);
	 	[Deprecated{"CIM_PowerManagementService.SetPowerState"}, Description ( "Note: The use of this method has been deprecated. Instead, use the SetPowerState method in the associated PowerManagementService class. Deprecated description: Sets the power state of the Device." )]
	uint32 SetPowerState(
		[Description ( "The power state to set." ), IN ( true ), ValueMap{"1", "2", "3", "4", "5", "6"}, Values{"Full Power", "Power Save - Low Power Mode", "Power Save - Standby", "Power Save - Other", "Power Cycle", "Power Off"}]
		uint16 PowerState,
	 	[Description ( "Time indicates when the power state should be set, either as a regular date-time value or as an interval value (where the interval begins when the method invocation is received)." ), IN ( true )]
		datetime Time
	);
};

// CIM_ServiceAccessPoint

	[Abstract ( true ), Description ( "CIM_ServiceAccessPoint represents the ability to utilize or invoke a Service. Access points represent that a Service is made available for other entities to use." ), Version ( "2.10.0" )]
class CIM_ServiceAccessPoint : CIM_EnabledLogicalElement {
	[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." ), Key ( true ), MaxLen ( 256 )]
	string CreationClassName;

 	[Description ( "The Name property uniquely identifies the ServiceAccessPoint and provides an indication of the functionality that is managed. This functionality is described in more detail in the Description property of the object." ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[Description ( "The CreationClassName of the scoping System." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The Name of the scoping System." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_System.Name" )]
	string SystemName;


};

// CIM_DeviceSAPImplementation

[ASSOCIATION ( true ),  Description ( "An association between a ServiceAccessPoint (SAP) and how it is implemented. The cardinality of this association is many-to-many. A SAP can be provided by more than one LogicalDevice, operating in conjunction. And, any Device can provide more than one ServiceAccessPoint. When many LogicalDevices are associated with a single SAP, it is assumed that these elements operate in conjunction to provide the AccessPoint. If different implementations of a SAP exist, each of these implementations would result in individual instantiations of the ServiceAccessPoint object. These individual instantiations would then have associations to the unique implementations." ), Version ( "2.10.0" )]
class CIM_DeviceSAPImplementation : CIM_Dependency {
	[Description ( "The LogicalDevice." ), Override ( "Antecedent" )]
	CIM_LogicalDevice ref Antecedent;

 	[Description ( "The ServiceAccessPoint implemented using the LogicalDevice." ), Override ( "Dependent" )]
	CIM_ServiceAccessPoint ref Dependent;


};

// CIM_Component

[ASSOCIATION ( true ), Abstract ( true ), Aggregation ( true ),  Description ( "CIM_Component is a generic association used to establish \'part of\' relationships between Managed Elements. For example, it could be used to define the components or parts of a System." ), Version ( "2.7.0" )]
class CIM_Component {
	[Aggregate ( true ), Description ( "The parent element in the association." ), Key ( true )]
	CIM_ManagedElement ref GroupComponent;

 	[Description ( "The child element in the association." ), Key ( true )]
	CIM_ManagedElement ref PartComponent;


};

// CIM_System

	[Abstract ( true ), 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\nAlthough 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." ), Version ( "2.10.0" )]
class CIM_System : CIM_EnabledLogicalElement {
	[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." ), Key ( true ), MaxLen ( 256 )]
	string CreationClassName;

 	[Description ( "The inherited Name serves as the key of a System instance in an enterprise environment." ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	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;

 	[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)." ), MappingStrings{"MIF.DMTF|General Information|001.4"}, MaxLen ( 256 ), Write ( true )]
	string PrimaryOwnerContact;

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

 	[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. \nNote 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." ), Write ( true )]
	string Roles[];


};

// CIM_SystemComponent

[ASSOCIATION ( true ), Aggregation ( true ),  Description ( "CIM_SystemComponent is a specialization of the CIM_Component association that establishes \'part of\' relationships between a System and any ManagedSystemElements of which it is composed. \nUse this association with caution when using it instead of a subclass such as SystemDevice or a peer association such as HostedService. This class is very broadly defined, which can lead to erroneous use. For example, Access Points that are dependent on (and hosted on) a System are NOT Components of the System. The System is not made up of any AccessPoint \'parts\', which is why a Dependency association, HostedAccessPoint, was defined. Similarly, a PhysicalPackage is not a \'part\' of a System, because the physical element exists independently of any internal components, software, and so on. In fact, again, a Dependency relationship is true where a ComputerSystem is Dependent on its packaging, as described by the ComputerSystemPackage association." ), Version ( "2.10.0" )]
class CIM_SystemComponent : CIM_Component {
	[Aggregate ( true ), Description ( "The parent System in the Association." ), Override ( "GroupComponent" )]
	CIM_System ref GroupComponent;

 	[Description ( "The child element that is a component of a System." ), Override ( "PartComponent" )]
	CIM_ManagedSystemElement ref PartComponent;


};

// CIM_Collection

	[Abstract ( true ), Description ( "Collection is an abstract class that provides a common superclass for data elements that represent collections of ManagedElements and its subclasses." ), Version ( "2.6.0" )]
class CIM_Collection : CIM_ManagedElement {
};

// CIM_SystemDevice

[ASSOCIATION ( true ), Aggregation ( true ),  Composition ( true ), Description ( "LogicalDevices can be aggregated by a System. This relationship is made explicit by the SystemDevice association." ), Version ( "2.10.0" )]
class CIM_SystemDevice : CIM_SystemComponent {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	CIM_System ref GroupComponent;

 	[Description ( "The LogicalDevice that is a component of a System." ), Override ( "PartComponent" ), Weak ( true )]
	CIM_LogicalDevice ref PartComponent;


};

// CIM_ComputerSystem

	[Description ( "A class derived from System that is a special collection of ManagedSystemElements. This collection is related to the providing of compute capabilities and MAY serve as an aggregation point to associate one or more of the following elements: FileSystem, OperatingSystem, Processor and Memory (Volatile and/or NonVolatile Storage)." ), Version ( "2.10.0" )]
class CIM_ComputerSystem : CIM_System {
	[ArrayType ( "Indexed" ), Description ( "Enumeration indicating whether the ComputerSystem is a special-purpose System (ie, dedicated to a particular use), versus being \'general purpose\'. For example, one could specify that the System is dedicated to \"Print\" (value=11) or acts as a \"Hub\" (value=8). \nA clarification is needed with respect to the value 17 (\"Mobile User Device\"). An example of a dedicated user device is a mobile phone or a barcode scanner in a store that communicates via radio frequency. These systems are quite limited in functionality and programmability, and are not considered \'general purpose\' computing platforms. Alternately, an example of a mobile system that is \'general purpose\' (i.e., is NOT dedicated) is a hand-held computer. Although limited in its programmability, new software can be downloaded and its functionality expanded by the user. \nA value of \"Management\" indicates this instance is dedicated to hosting system management software. \nA value of \"Management Controller\" indicates this instance represents specialized hardware dedicated to systems management (i.e., a Baseboard Management Controller (BMC) or service processor). \nThe management scope of a \"Management Controller\" is typically a single managed system in which it is contained. \nA value of \"Chassis Manager\" indicates this instance represents a system dedicated to management of a blade chassis and its contained devices. This value would be used to represent a Shelf Controller. A \"Chassis Manager\" is an aggregation point for management and may rely on subordinate management controllers for the management of constituent parts." ), MappingStrings{"MIB.IETF|MIB-II.sysServices", "FC-GS.INCITS-T11 | Platform | PlatformType"}, ModelCorrespondence{"CIM_ComputerSystem.OtherDedicatedDescriptions"}, ValueMap{"0", "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", "28..32567", "32568..65535"}, Values{"Not Dedicated", "Unknown", "Other", "Storage", "Router", "Switch", "Layer 3 Switch", "Central Office Switch", "Hub", "Access Server", "Firewall", "Print", "I/O", "Web Caching", "Management", "Block Server", "File Server", "Mobile User Device", "Repeater", "Bridge/Extender", "Gateway", "Storage Virtualizer", "Media Library", "ExtenderNode", "NAS Head", "Self-contained NAS", "UPS", "IP Phone", "Management Controller", "Chassis Manager", "DMTF Reserved", "Vendor Reserved"}]
	uint16 Dedicated[];

 	[ArrayType ( "Indexed" ), 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." ), ModelCorrespondence{"CIM_ComputerSystem.OtherIdentifyingInfo"}]
	string IdentifyingDescriptions[];

 	[Description ( "The ComputerSystem object and its derivatives are Top Level Objects of CIM. They provide the scope for numerous components. Having unique System keys is required. The NameFormat property identifies how the ComputerSystem Name is generated. The NameFormat ValueMap qualifier defines the various mechanisms for assigning the name. Note that another name can be assigned and used for the ComputerSystem that better suit a business, using the inherited ElementName property." ), Override ( "NameFormat" ), ValueMap{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN", "NAA"}]
	string NameFormat;

 	[ArrayType ( "Indexed" ), Description ( "A string describing how or why the system is dedicated when the Dedicated array includes the value 2, \"Other\"." ), ModelCorrespondence{"CIM_ComputerSystem.Dedicated"}]
	string OtherDedicatedDescriptions[];

 	[ArrayType ( "Indexed" ), 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." ), MaxLen ( 256 ), ModelCorrespondence{"CIM_ComputerSystem.IdentifyingDescriptions"}]
	string OtherIdentifyingInfo[];

 	[Deprecated{"CIM_PowerManagementCapabilities.PowerCapabilities"}, Description ( "An enumerated array describing the power management capabilities of the ComputerSystem. The use of this property has been deprecated. Instead, the Power Capabilites property in an associated PowerManagement Capabilities class should be used." ), MappingStrings{"MIF.DMTF|System Power Controls|001.2"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "Not Supported", "Disabled", "Enabled", "Power Saving Modes Entered Automatically", "Power State Settable", "Power Cycling Supported", "Timed Power On Supported"}]
	uint16 PowerManagementCapabilities[];

 	[Description ( "If enabled (value = 4), the ComputerSystem can be reset via hardware (e.g. the power and reset buttons). If disabled (value = 3), hardware reset is not allowed. In addition to Enabled and Disabled, other Values for the property are also defined - \"Not Implemented\" (5), \"Other\" (1) and \"Unknown\" (2)." ), MappingStrings{"MIF.DMTF|System Hardware Security|001.4"}, ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "Unknown", "Disabled", "Enabled", "Not Implemented"}]
	uint16 ResetCapability;


		[Deprecated{"CIM_PowerManagementService.SetPowerState"}, Description ( "Sets the power state of the computer. The use of this method has been deprecated. Instead, use the SetPowerState method in the associated PowerManagementService class." )]
	uint32 SetPowerState(
		[Description ( "The Desired state for the COmputerSystem." ), IN ( true ), ValueMap{"1", "2", "3", "4", "5", "6", "7", "8"}, Values{"Full Power", "Power Save - Low Power Mode", "Power Save - Standby", "Power Save - Other", "Power Cycle", "Power Off", "Hibernate", "Soft Off"}]
		uint32 PowerState,
	 	[Description ( "Time indicates when the power state should be set, either as a regular date-time value or as an interval value (where the interval begins when the method invocation is received." ), IN ( true )]
		datetime Time
	);
};

// IBMTSDS_StorageSystem

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "IBMTSDS_StorageSystem represents the Storage Facility Image of the DS/ESS System." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageSystem : CIM_ComputerSystem {
	[Description ( "The amount of cache memory configured on the Storage Facility Image in megabytes " ), IBMExtension ( "5.2.0.650" )]
	uint32 CacheMemory;

 	[Description ( "The firmware level of the storage system" ), IBMExtension ( "5.2.0.650" )]
	string CodeLevel;

 	[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. This class is IBMTSDS_StorageSystem." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[ArrayType ( "Indexed" ), Description ( "Enumeration indicating whether the ComputerSystem is a special-purpose System (ie, dedicated to a particular use), versus being \'general purpose\'. The DS system is a storage system and block server." ), MappingStrings{"MIB.IETF|MIB-II.sysServices"}, ModelCorrespondence{"CIM_ComputerSystem.OtherDedicatedDescriptions"}, Override ( "Dedicated" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20"}, Values{"Not Dedicated", "Unknown", "Other", "Storage", "Router", "Switch", "Layer 3 Switch", "Central Office Switch", "Hub", "Access Server", "Firewall", "Print", "I/O", "Web Caching", "Management", "Block Server", "File Server", "Mobile User Device", "Repeater", "Bridge/Extender", "Gateway"}]
	uint16 Dedicated[] = {3, 15};

 	[Description ( "The value of the Name property for this system in the CIM Agent 5.1.  For ESS, this is the same as the current value for Name.  For DS, from 5.1 to 5.2.x, the Name format was changed to match the format in DSCLI and DSGUI.  This property has the old format for applications that need to match the old and new versions of the CIM Agent. In 5.1, the format was like 2107.13ABCDE. In 5.2, the format is like IBM.2107-13ABCDE." ), IBMExtension ( "5.2.1" )]
	string DeprecatedName;

 	[Description ( "A user-friendly name for the object. This will be of the form \'Storage Facility Image <SFI ID>\'." ), Override ( "ElementName" )]
	string ElementName;

 	[ArrayType ( "Indexed" ), Description ( "For DS6000, this will be {\"IPAddressV4c0\", \"IPAddressV4c1\", \"DNSc0\", \"DNSc1\", \"IPAddressV4SMC\", \"MTMS\", \"Machine Signature\", \"WWNN\", \"Codelevel\"}.\nFor DS8000, this will be {\"IPAddressV4HMC\", \"MTMS\", \"Machine Signature\", \"WWNN\", \"Codelevel\"}.\nFor ESS, this will be {\"IPAddressV4c0\", \"IPAddressV4c1\", \"MTMS\", \"WWNN\"}.For ESS, if the alternate IP is not specified, there will be no IPAddressV4c1" ), ModelCorrespondence{"CIM_ComputerSystem.OtherIdentifyingInfo"}, Override ( "IdentifyingDescriptions" )]
	string IdentifyingDescriptions[];

 	[Description ( "The minimum recommended firmware level of the storage system for this version of the CIM Agent." ), IBMExtension ( "5.2.0.650" )]
	string MinCodeLevel;

 	[Description ( "The inherited Name serves as key of a System instance in an enterprise environment. The name will be of the Storage Facility Image ID. For example, for DS, tttt.mmsssss, where tttt is the machine type (i.e. 2107), mm is the manufacture plant (i.e. 13), and sssss is the sequence number (i.e. 12345). For ESS, it will not have the manufacture plant." ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[Description ( "The name format does not follow an industry standard." ), Override ( "NameFormat" ), ValueMap{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN", "NAA"}]
	string NameFormat = "Other";

 	[Description ( "The amount of NVS memory configured on the Storage Facility Image in megabytes " ), IBMExtension ( "5.2.0.650" )]
	uint32 NVSMemory;

 	[ArrayType ( "Indexed" ), Description ( "The possible OperationalStatuses are OK, Stopped, Aborted, Stopping, In Service, Error, and Starting. The most common OperationalStatus will be Lost Communication or OK. If the CIM Agent is unable to communicate with the storage system, an instance of the StorageSystem will not be returned, since the Name key property cannot be constructed. Since no specific status can be obtained from ESS, the OperationalStatus will always be OK." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, Override ( "OperationalStatus" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[ArrayType ( "Indexed" ), Description ( "See IdentifyingDescriptions for what values will be returned in OtherIdentifyingInfo." ), MaxLen ( 256 ), ModelCorrespondence{"CIM_ComputerSystem.IdentifyingDescriptions"}, Override ( "OtherIdentifyingInfo" )]
	string OtherIdentifyingInfo[];

 	[Description ( "The amount of processor memory configured on the Storage Facility Image in megabytes " ), IBMExtension ( "5.2.0.650" )]
	uint32 ProcessorMemory;


};

// CIM_StorageExtent

	[Description ( "StorageExtent describes the capabilities and management of the various media that exist to store data and allow data retrieval. This superclass could be used to represent the various components of RAID (Hardware or Software) or as a raw logical extent on top of physical media." ), Version ( "2.8.1000" )]
class CIM_StorageExtent : CIM_LogicalDevice {
	[Description ( "Access describes whether the media is readable (value=1), writeable (value=2), or both (value=3). \"Unknown\" (0) and \"Write Once\" (4) can also be defined." ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Unknown", "Readable", "Writeable", "Read/Write Supported", "Write Once"}]
	uint16 Access;

 	[Description ( "Size in bytes of the blocks which form this StorageExtent. If variable block size, then the maximum block size in bytes should be specified. If the block size is unknown or if a block concept is not valid (for example, for AggregateExtents, Memory or LogicalDisks), enter a 1." ), MappingStrings{"MIF.DMTF|Host Storage|001.4", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits", "MIF.DMTF|Storage Devices|001.5"}, Units ( "Bytes" )]
	uint64 BlockSize;

 	[Description ( "The maximum number of blocks, of size BlockSize, which are available for consumption when layering StorageExtents using the BasedOn association. This property only has meaning when this StorageExtent is an Antecedent reference in a BasedOn relationship. For example, a StorageExtent could be composed of 120 blocks. However, the Extent itself may use 20 blocks for redundancy data. If another StorageExtent is BasedOn this Extent, only 100 blocks would be available to it. This information (\'100 blocks is available for consumption\') is indicated in the ConsumableBlocks property." )]
	uint64 ConsumableBlocks;

 	[Description ( "Type of data organization used." ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Other", "Unknown", "Fixed Block", "Variable Block", "Count Key Data"}]
	uint16 DataOrganization;

 	[Description ( "Number of complete copies of data currently maintained." ), ModelCorrespondence{"CIM_StorageSetting.DataRedundancyGoal", "CIM_StorageSetting.DataRedundancyMax", "CIM_StorageSetting.DataRedundancyMin"}]
	uint16 DataRedundancy;

 	[Description ( "Current value for Delta reservation. This is a percentage that specifies the amount of space that should be reserved in a replica for caching changes." ), MaxValue ( 100 ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.DeltaReservationGoal", "CIM_StorageSetting.DeltaReservationMax", "CIM_StorageSetting.DeltaReservationMin"}, Units ( "Percentage" )]
	uint8 DeltaReservation;

 	[Description ( "ErrorMethodology is a free-form string describing the type of error detection and correction supported by this StorageExtent." )]
	string ErrorMethodology;

 	[Description ( "StorageExtents have additional status information beyond that captured in the OperationalStatus and other properties, inherited from ManagedSystemElement. This additional information (for example, \"Protection Disabled\", value=9) is captured in the ExtentStatus property. \n\'In-Band Access Granted\' says that access to data on an extent is granted to some consumer and is only valid when \'Exported\' is also set. It is set as a side effect of PrivilegeManagementService.ChangeAccess or equivalent interfaces. \n\'Imported\' indicates that the extent is used in the current system, but known to be managed by some other system. For example, a server imports volumes from a disk array. \n\'Exported\' indicates the extent is meant to be used by some comsumer. A disk array\'s logical units are exported. \nIntermediate composite extents may be neither imported nor exported." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18..32767", "32768..65535"}, Values{"Other", "Unknown", "None/Not Applicable", "Broken", "Data Lost", "Dynamic Reconfig", "Exposed", "Fractionally Exposed", "Partially Exposed", "Protection Disabled", "Readying", "Rebuild", "Recalculate", "Spare in Use", "Verify In Progress", "In-Band Access Granted", "Imported", "Exported", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ExtentStatus[];

 	[Description ( "True indicates that the underlying StorageExtent(s) participate in a StorageRedundancyGroup." )]
	boolean IsBasedOnUnderlyingRedundancy;

 	[Description ( "A unique identifier for the Extent." ), MappingStrings{"SPC.INCITS-T10| VPD 83, Association 0 | Identifier"}, ModelCorrespondence{"CIM_StorageExtent.NameFormat", "CIM_StorageExtent.NameNamespace"}, Override ( "Name" )]
	string Name;

 	[Description ( "The list here applies to all StorageExtent subclasses. Please look at the Description in each subclass for guidelines on the approriate values for that subclass. Note that any of these formats could apply to a CompositeExtent. \n\nNote - this property originally touched on two concepts that are now separated into this property and NameNamespace. Values 2,3,4,5,6, and 8 are retained for backwards compatibility but are deprecated in lieu of the corresponding values in CIM_StorageExtent.NameNamespace. \n\nFor example, the preferred source for SCSI virtual (RAID) disk names is from Inquiry VPD page 83 response, type 3 identifiers. These will have NameFormat set to \'NAA\' and NameNamespace to \'VPD83Type3\'. \n\nFormat of the Name property. Values for extents representing SCSI volumes are (per SCSI SPC-3): \n2 = VPD Page 83, NAA IEEE Registered Extended (VPD83NAA6) \n(DEPRECATED) \n3 = VPD Page 83, NAA IEEE Registered (VPD83NAA5) \n(DEPRECATED) \n4 = VPD Page 83, (VPD83Type2) (DEPRECATED) \n5 = VPD Page 83, \nT10 Vendor Identification (VPD83Type1) (DEPRECATED) \n6 = VPD Page 83, Vendor Specific (VPD83Type0) (DEPRECATED) \n7 = Serial Number/Vendor/Model (SNVM) SNVM is 3 strings representing the vendor name, product name within the vendor namespace, and the serial number within the model namespace. Strings are delimited with a \'+\'. Spaces may be included and are significant. The serial number is the text representation of the serial number in hexadecimal upper case. This represents the vendor and model ID from SCSI Inquiry data; the vendor field MUST be 8 characters wide and the product field MUST be 16 characters wide. For example, \n\'ACME____+SUPER DISK______+124437458\' (_ is a space character) \n8 = Node WWN (for single LUN/controller) (NodeWWN) \n(DEPRECATED) \n9 = NAA as a generic format. See \nhttp://standards.ieee.org/regauth/oui/tutorials/fibrecomp_id.html. Formatted as 16 or 32 unseparated uppercase hex characters (2 per binary byte). For example \'21000020372D3C73\' \n10 = EUI as a generic format (EUI64) See \nhttp://standards.ieee.org/regauth/oui/tutorials/EUI64.html. \nFormatted as 16 unseparated uppercase hex characters (2 per binary byte) \n11 = T10 vendor identifier format as returned by SCSI Inquiry VPD page 83, identifier type 1. See T10 SPC-3 specification. This is the 8-byte ASCII vendor ID from the T10 registry followed by a vendor specific ASCII identifier; spaces are permitted. For non SCSI volumes, \'SNVM\' may be the most appropriate choice. 12 = OS Device Name (for LogicalDisks). See LogicalDisk Name description for details." ), ModelCorrespondence{"CIM_StorageExtent.Name", "CIM_StorageExtent.NameNamespace", "CIM_StorageExtent.OtherNameFormat"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}, Values{"Unknown", "Other", "VPD83NAA6", "VPD83NAA5", "VPD83Type2", "VPD83Type1", "VPD83Type0", "SNVM", "NodeWWN", "NAA", "EUI64", "T10VID", "OS Device Name"}]
	uint16 NameFormat;

 	[Description ( "The preferred source SCSI for volume names is SCSI VPD Page 83 responses. Page 83 returns a list of identifiers for various device elements. The metadata for each identifier includes an Association field, identifiers with association of 0 apply to volumes. Page 83 supports several namespaces specified in the Type field in the identifier metadata. See SCSI SPC-3 specification. \n2 = VPD Page 83, Type 3 NAA (NameFormat SHOULD be NAA) \n3 = VPD Page 83, Type 2 EUI64 (NameFormat EUI) \n4 = VPD Page 83, Type 1 T10 Vendor Identification \n(NameFormat T10) \nLess preferred volume namespaces from other interfaces: \n5 = VPD page 80, Serial number (NameFormat SHOULD be Other) \n6 = FC NodeWWN (NameFormat SHOULD be NAA or EUI) \n7 = Serial Number/Vendor/Model (NameFormat SHOULD be SNVM) \nThe preferred namespace for LogigicalDisk names is platform specific device namespace; see LogigicalDIsk Description. \n8 = OS Device Namespace." ), MappingStrings{"SPC.INCITS-T10| VPD 83, Association 0 | Identifier"}, ModelCorrespondence{"CIM_StorageExtent.Name", "CIM_StorageExtent.OtherNameNamespace", "CIM_StorageExtent.NameFormat"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8"}, Values{"Unknown", "Other", "VPD83Type3", "VPD83Type2", "VPD83Type1", "VPD80", "NodeWWN", "SNVM", "OS Device Namespace"}]
	uint16 NameNamespace;

 	[Description ( "Indicates whether or not there exists no single point of failure." ), ModelCorrespondence{"CIM_StorageSetting.NoSinglePointOfFailure"}]
	boolean NoSinglePointOfFailure;

 	[Description ( "Total number of logically contiguous blocks, of size Block Size, which form this Extent. The total size of the Extent can be calculated by multiplying BlockSize by NumberOfBlocks. If the BlockSize is 1, this property is the total size of the Extent." ), MappingStrings{"MIF.DMTF|Host Storage|001.5", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageSize"}]
	uint64 NumberOfBlocks;

 	[Description ( "A string describing the format of the Name property when NameFormat includes the value 1, \"Other\"." ), ModelCorrespondence{"CIM_StorageExtent.NameFormat"}]
	string OtherNameFormat;

 	[Description ( "A string describing the namespace of the Name property when NameNamespace includes the value 1, \"Other\"." ), ModelCorrespondence{"CIM_StorageExtent.NameNamespace"}]
	string OtherNameNamespace;

 	[Description ( "How many physical packages can currently fail without data loss. For example, in the storage domain, this might be disk spindles." ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyGoal", "CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin"}]
	uint16 PackageRedundancy;

 	[Description ( "If true, \"Primordial\" indicates that the containing System does not have the ability to create or delete this operational element. This is important because StorageExtents are assembled into higher-level abstractions using the BasedOn association. Although the higher-level abstractions can be created and deleted, the most basic, (i.e. primordial), hardware-based storage entities 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. In other words, a Primordial StorageExtent exists in, but is not created by its System and conversely a non-Primordial StorageExtent is created in the context of its System. For StorageVolumes, this property will generally be false. One use of this property is to enable algorithms that aggregate StorageExtent.ConsumableSpace across all, StorageExtents but that also want to distinquish the space that underlies Primordial StoragePools. Since implementations are not required to surface all Component StorageExtents of a StoragePool, this information is not accessible in any other way." )]
	boolean Primordial = false;

 	[Description ( "A free form string describing the media and/or its use." ), MappingStrings{"MIB.IETF|HOST-RESOURCES-MIB.hrStorageDescr"}]
	string Purpose;

 	[Description ( "Boolean set to TRUE if the Storage is sequentially accessed by a MediaAccessDevice. A TapePartition is an example of a sequentially accessed StorageExtent. StorageVolumes, Disk Partitions and LogicalDisks represent randomly accessed Extents." )]
	boolean SequentialAccess;


};

// CIM_CompositeExtent

	[Description ( "A CompositeExtent is used to model the distribution of user data across one or more underlying StorageExtents, which may or not be protected by some redundancy mechanism. CompositeExtents represent a contiguous range of logical blocks. CompositeExtents may overlap, however, the underlying StorageExtents within the overlap shall not contain any check data. Distribution of check data may be specified using the CompositeExtentBasedOn association." ), Version ( "2.7.0" )]
class CIM_CompositeExtent : CIM_StorageExtent {
	[Description ( "Number of StorageExtents to stripe as a collective set. In SCC, this value is defined as the number of stripes to count before continuing to map into the next contiguous set of Extents, beyond the current stripe." ), MappingStrings{"MIF.DMTF|Volume Set|001.5"}]
	uint64 ExtentInterleaveDepth;

 	[Description ( "Number of contiguous underlying StorageExtents counted before looping back to the first underlying StorageExtent of the current stripe. It is the number of StorageExtents forming the user data stripe." ), MappingStrings{"MIF.DMTF|Volume Set|001.4"}]
	uint64 ExtentStripeLength;

 	[Description ( "True indicates that the data is concatenated across the various StorageExtents in the Group." )]
	boolean IsConcatenated;

 	[MappingStrings{"MIF.DMTF|Volume Set|001.3"}, Override ( "NumberOfBlocks" )]
	uint64 NumberOfBlocks;


};

// IBMTSDS_ArrayExtent

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A CompositeExtent is used to model the distribution of user data across one or more underlying StorageExtents, which may or not be protected by some redundancy mechanism. ArrayExtent represents the distribution of data on an Array.Only valid for DS." ),  Version ( "2.7.0" )]
class IBMTSDS_ArrayExtent : CIM_CompositeExtent {
	[Description ( "Size in bytes of the block which form this Storage Extent. Since the DataType on the Array is unknown, this is set to 1." ), MappingStrings{"MIF.DMTF|HostStorage|001.4", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits", "MIF.DMTF|StorageDevices|001.5"}, Units ( "Bytes" )]
	uint64 BlockSize;

 	[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. This value is set to \'IBMTSDS_ArrayExtent\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "Number of complete copies of data currently maintained.Value is 1 for RAID5 and 2 for RAID10." ), ModelCorrespondence{"CIM_StorageSetting.DataRedundancyGoal", "CIM_StorageSetting.DataRedundancyMax", "CIM_StorageSetting.DataRedundancyMin"}]
	uint16 DataRedundancy;

 	[Description ( "An address or other identifying information to uniquely name the LogicalDevice. Is of the form \'<StorageSystem.Name>-A<ArrayID>\'." ), Key ( true ), MaxLen ( 64 ), Override ( "DeviceID" )]
	string DeviceID;

 	[Description ( "Number of StorageExtents to stripe as a collective set. In SCC, this value is defined as the number of stripes to count before continuing to map into the next contiguous set of Extents, beyond the current stripe." ), MappingStrings{"MIF.DMTF|Volume Set|001.5"}]
	uint64 ExtentInterleaveDepth = 0;

 	[Description ( "Not applicable" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18..32767", "32768..65535"}, Values{"Other", "Unknown", "None/Not Applicable", "Broken", "Data Lost", "Dynamic Reconfig", "Exposed", "Fractionally Exposed", "Partially Exposed", "Protection Disabled", "Readying", "Rebuild", "Recalculate", "Spare in Use", "Verify In Progress", "In-Band Access Granted", "Imported", "Exported", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ExtentStatus[] = {2};

 	[Description ( "Number of contiguous underlying StorageExtents counted before looping back to the first underlying StorageExtent of the current stripe. It is the number of StorageExtents forming the user data stripe." ), MappingStrings{"MIF.DMTF|Volume Set|001.4"}]
	uint64 ExtentStripeLength = 1;

 	[Description ( "Health state." ), Experimental ( true ), ValueMap{"0", "5", "10", "15", "20", "25", "30", ".."}, Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"}]
	uint16 HealthState;

 	[Description ( "True indicates that the underlying StorageExtent(s) participate in a StorageRedundancyGroup." )]
	boolean IsBasedOnUnderlyingRedundancy = false;

 	[Description ( "True indicates that the data is concatenated across the various StorageExtents in the Group." )]
	boolean IsConcatenated = true;

 	[Description ( "Indicates whether or not there exists no single point of failure. This is true, since DS requires the Array to be RAID5 or RAID10." ), ModelCorrespondence{"CIM_StorageSetting.NoSinglePointOfFailure"}]
	boolean NoSinglePointOfFailure = true;

 	[MappingStrings{"MIF.DMTF|Volume Set|001.3"}, Override ( "NumberOfBlocks" )]
	uint64 NumberOfBlocks;

 	[ArrayType ( "Indexed" ), Description ( "Operational status." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "How many physical packages can currently fail without data loss. Value is 1 for both RAID5 and RAID10." ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyGoal", "CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin"}]
	uint16 PackageRedundancy = 1;

 	[Description ( "By definition, Primordial is false. The DiskDriveExtents are considered to be the Primordial extents. " )]
	boolean Primordial = false;

 	[Description ( "The scoping System\'s CreationClassName. Set to \'IBMTSDS_StorageSystem\'." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_System.Name" )]
	string SystemName;


};

// IBMTSDS_StorageSystemToArrayExtent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "LogicalDevices may be aggregated by a System. This relationship is made explicit by the SystemDevice association." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageSystemToArrayExtent : CIM_SystemDevice {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The LogicalDevice that is a component of a System." ), Key ( true ), Override ( "PartComponent" ), Weak ( true )]
	IBMTSDS_ArrayExtent ref PartComponent;


};

// CIM_SettingData

	[Abstract ( true ), Description ( "The SettingData class represents configuration-related and operational parameters for one or more ManagedElements. A ManagedElement can have multiple SettingData objects associated with it. The current operational values for the parameters of the element are reflected by properties in the Element itself or by properties in its associations. These properties do not have to be the same values that are present in the SettingData object. For example, a modem might have a SettingData baud rate of 56Kb/sec but be operating at 19.2Kb/sec. \nNote: The CIM_SettingData class is very similar to CIM_Setting, yet both classes are present in the model because many implementations have successfully used CIM_Setting. However, issues have arisen that could not be resolved without defining a new class. Therefore, until a new major release occurs, both classes will exist in the model. Refer to the Core White Paper for additional information. SettingData instances can be aggregated together into higher- level SettingData objects using ConcreteComponent associations." ), Version ( "2.10.0" )]
class CIM_SettingData : CIM_ManagedElement {
	[Description ( "The user-friendly name for this instance of SettingData. In addition, the user-friendly name can be used as an index property for a search or query. (Note: The name does not have to be unique within a namespace.)" ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[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> \nWhere <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 assure that the resulting InstanceID is not reused across any InstanceIDs produced by this or other providers for the NameSpace of this instance. \nFor DMTF-defined instances, the \"preferred\" algorithm must be used with the <OrgID> set to CIM." ), Key ( true )]
	string InstanceID;


};

// CIM_StorageSetting

	[Description ( "StorageSetting is roughly equivalent to a Service Level Agreement (SLA) It defines the characteristics, qualities of service and goals when used in a CreateOrModifyElement FromStoragePool or CreateOrModifyStoragePool method in the StorageConfigurationService. It specifies a series of properties with Maximum and Minimum values that define the (inclusive) bounds that the object should maintain. Note that the setting is associated to a StorageVolume or LogicalDisk, using ElementSetting. \nThe use of these properties differs depending on whether the StorageSetting instance is being used as a goal for a configuration operation or being used as a Service Level Agreement for a created Volume. In addition the properties fall into two categories: The QOS properties(PackageRedundancy, Data Redundancy, & NoSinglePointOfFailure) and the Detailed RAID properties(ExtentStripeLength, ParityLayout, and UserDataStripeDepth). In a Setting used as a goal, the QOS properties are required as a set; The Detailed RAID properties(if supported as indicated by the scoping StorageCapabilities instance) may be used optionally in any combination. The implementation MUST supply it\'s own best practice in the case where one or more supported RAID properties are not supplied. In this situation the use of StorageSettingWithHints can be useful to provide direction to the implementation. \nIn a Setting used as a service agreement for a Volume, the QOS properties reflect the Service Level Agreement, with goal, min, & max. The actual current service level is exposed by corresponding values in StorageExtent. \nThe Detailed RAID properties, by contrast, reflect specific values that reflect the RAID construction of the Volume. Only the primary values are meaningful; Min and Max are set to match. \nCertain StorageSetting instances may be classed as \"Fixed\", by using the \"ChangeableType\" property, indicating the setting is preset. Such settings are used when the possible setting variations are low enough to be instantiated in their entirety. The StorageCapabilities \"CreateSetting\" method MAY NOT be used to return settings that are not changeable. \nOther StorageSetting instances are created using the \"CreateSetting\" method. If the capabilities specifies ranges, then the setting can be used by a client to narrow the range to particular values within the range. In other words, the capabilities MAY be broad, but the related setting MUST be as capable or less capable, that is more narrowly defined, before it is used to create or modify resources. \nThese created StorageSetting instances MUST have their \"ChangeableType\" property = 1, \"Changeable - Transient\". \nGeneratedSettings MAY not remain after the restart or reset of the implementation. They may be deleted by implementation at any time. A reasonable minimal time to retain the generated transient settings is five minutes, although there is no minimal retention time." ), Version ( "2.10.0" )]
class CIM_StorageSetting : CIM_SettingData {
	[Description ( "Enumeration indicating the type of setting. \"Fixed - Not Changeable\" settings are primordial. These setting are defined at the implementor of the class. \"Changeable - Transient\" is the type of setting produced by the \"CreateSetting\" method. A client can subsequently request that the implementation persist the generated and potentially modified setting indefinately. Only a \"Changeable - Transient\" setting SHALL be converted to a \"Changeable = Persistent\" setting; the setting SHALL NOT be changed back." ), Experimental ( true ), ValueMap{"0", "1", "2"}, Values{"Fixed - Not Changeable", "Changeable - Transient", "Changeable - Persistent"}]
	uint16 ChangeableType;

 	[Description ( "DataRedundancyGoal describes the desired number of complete copies of data to 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 (max and min) for redundancy are defined using the properties, DataRedundancyMax and DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.DataRedundancyMax", "CIM_StorageSetting.DataRedundancyMin"}, Write ( true )]
	uint16 DataRedundancyGoal;

 	[Description ( "DataRedundancyMax describes the maximum number of complete copies of data to 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 desired redundancy is specified using DataRedundancyGoal, while the minimum is defined by DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.DataRedundancyMin", "CIM_StorageSetting.DataRedundancyGoal"}, Write ( true )]
	uint16 DataRedundancyMax;

 	[Description ( "DataRedundancyMin describes the minimum number of complete copies of data to 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 desired redundancy is specified using DataRedundancyGoal, while the maximum is defined by DataRedundancyMax." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.DataRedundancyMax", "CIM_StorageSetting.DataRedundancyGoal"}, Write ( true )]
	uint16 DataRedundancyMin;

 	[Description ( "DeltaReservationGoal is a number between 1 (1%) and a 100 (100%) which specifies the desired amount of space that should be reserved in a replica for caching changes. For a complete copy this would be 100%. The bounds (max and min) for the reservation are defined using the properties, DeltaReservationMax and DeltaReservationMin." ), MaxValue ( 100 ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.DeltaReservationMin", "CIM_StorageSetting.DeltaReservationMax"}, Units ( "Percentage" ), Write ( true )]
	uint8 DeltaReservationGoal;

 	[Description ( "DeltaReservationMax is a number between 1 (1%) and a 100 (100%) which specifies the maximum amount of space that should be reserved in a replica for caching changes. For a complete copy this would be 100%. The desired reservation is specified using DeltaReservationGoal, while the minimum is defined by DeltaReservationMin." ), MaxValue ( 100 ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.DeltaReservationMin", "CIM_StorageSetting.DeltaReservationGoal"}, Units ( "Percentage" ), Write ( true )]
	uint8 DeltaReservationMax;

 	[Description ( "DeltaReservationMin is a number between 1 (1%) and a 100 (100%) which specifies the minimum amount of space that should be reserved in a replica for caching changes. For a complete copy this would be 100%. The desired reservation is specified using DeltaReservationGoal, while the maximum is defined by DeltaReservationMax." ), MaxValue ( 100 ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.DeltaReservationMax", "CIM_StorageSetting.DeltaReservationGoal"}, Units ( "Percentage" ), Write ( true )]
	uint8 DeltaReservationMin;

 	[Description ( "ExtentStripeLength 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\'. When used in a goal setting instance, ExtentStripeLength is the optimal desired value. The bounds (max and min) for Stripe Length are defined using the properties ExtentStripeLengthMax and ExtentStripeLengthMin. ExtentStripeLength MUST be set to NULL if the scoping StorageCapablities indicates that it is not supported in this context. ExtentStripeLength can be used in conjunction with CreateOrModifyElementFromELements to explicitly configure storage. An example would be RAID 0+1 with mirroring two stripe sets, each set being three wide. In this case CreateOrModifyElementFromElements would be passed a goal setting with DataRedundancy = 2 and ExtentStripeLength = 3. The size of the InElements array would be 6 and would contain the StorageExtents to be used to construct the StorageElement as a RAID 0+1. ExtentStripeLengthMin and ExtentStripeLengthMax are meaningless and wouldbe set to NULL. If the property is supported, and is part of StorageSettingWithHints it MAY be set to NULL. If used it will constrain the effects of Hint selections. When used in a Setting instance associated to a Volume, this property indicates the specific value that the Volume was created with, and ExtentStripeLengthMin and ExtentStripeLengthMax will be set to the same specific value." ), Experimental ( true ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.ExtentStripeLengthMax", "CIM_StorageSetting.ExtentStripeLengthMin"}, Write ( true )]
	uint16 ExtentStripeLength;

 	[Description ( "ExtentStripeLength 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\'. When used in a goal setting instance, ExtentStripeLengthMax is the maximum acceptable value. The desired Stripe Length is specified using ExtentStripeLength, while the minimum is defined by ExtentStripeLengthMin. ExtentStripeLengthMax MUST be set to NULL if the scoping StorageCapablities indicates that it is not supported in this context. If the property is supported, and is part of StorageSettingWithHints it MAY be set to NULL. If used it will constrain the effects of Hint selections. When used in a Setting instance associated to a Volume, this property is set to the specific value of ExtentStripeLength." ), Experimental ( true ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.ExtentStripeLengthMin", "CIM_StorageSetting.ExtentStripeLength"}, Write ( true )]
	uint16 ExtentStripeLengthMax;

 	[Description ( "ExtentStripeLength 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\'. When used in a goal setting instance, ExtentStripeLengthMin is the minimum acceptable value. The desired Stripe Length is specified using ExtentStripeLength, while the maximum is defined by ExtentStripeLengthMax. ExtentStripeLengthMin MUST be set to NULL if the scoping StorageCapablities indicates that it is not supported in this context. If the property is supported, and is part of StorageSettingWithHints it MAY be set to NULL. If used it will constrain the effects of Hint selections. When used in a Setting instance associated to a Volume, this property is set to the specific value of ExtentStripeLength." ), Experimental ( true ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.ExtentStripeLengthMax", "CIM_StorageSetting.ExtentStripeLength"}, Write ( true )]
	uint16 ExtentStripeLengthMin;

 	[Description ( "True indicates delta replicas associated with the source element associated with this settingdata are incrementally dependent. Only the oldest replica in the set may be deleted or resynced." ), Experimental ( true )]
	boolean IncrementalDeltas;

 	[Description ( "Not Applicable indicates that this property is not applicable to the associated storage element. Other values indicate whether or not a source element should be fully copied to a target element at the time the replication is initiated. The provider does not have to comply with the client request. These other values are defined as: \n- \"Not Managed\": to start or not at initiation is up to the implementation. \n- \"Start\": start replication on initiation. \n- \"Do Not Start\": do not start replication on initiation." ), Experimental ( true ), ModelCorrespondence{"CIM_StorageReplicationCapabilities.InitialSynchronizationDefault"}, ValueMap{"0", "1", "2", "3", "..", "0x8000.."}, Values{"Not Applicable", "Not Managed", "Start", "Do Not Start", "DMTF Reserved", "Vendor Specific"}, Write ( true )]
	uint16 InitialSynchronization = 0;

 	[Description ( "Describes the use of the storage elements associated with this SettingData instance. Values: \nNot specialized. (default) \nSpecial pool for delta replica elements \nComponent extent for delta replica pool \nCreating remote mirror target element \nCreating local mirror target element \nCreating full snapshot target element \nCreating delta snapshot target element \nCreating remote replication buffer element" ), Experimental ( true ), ValueMap{"0", "2", "3", "4", "5", "6", "7", "8", "..", "0x8000.."}, Values{"Not Specialized", "Delta Pool", "Delta Pool Component", "Remote Mirror", "Local Mirror", "Full Snapshot", "Delta Snapshot", "Replication Buffer", "DMTF Reserved", "Vendor Specific"}, Write ( true )]
	uint16 IntendedUsage = 0;

 	[Description ( "LowSpaceWarningThreshold simplifies the creation of a pool specific Indication based on RemainingManagedSpace <= \n(TotalManagedSpace*LowSpaceWarningThreshold)/100. One example client for an Indication based on this property is a delta copy implementation where the pool enables continuous, variable space consumption for the delta storage. Another example client for an Indication based on this property is a provisioning manager implementing a policy for adding storage to a pool when it becomes low." ), Experimental ( true ), MaxValue ( 100 ), MinValue ( 0 ), ModelCorrespondence{"CIM_StoragePool.RemainingManagedSpace"}, Units ( "Percentage" )]
	uint16 LowSpaceWarningThreshold;

 	[Description ( "Indicates the desired value for No Single Point of Failure. Possible values are false = single point of failure, and true = no single point of failure." ), Write ( true )]
	boolean NoSinglePointOfFailure;

 	[Description ( "PackageRedundancyGoal describes the desired number of redundant packages to 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 (max and min) for redundancy are defined using the properties, PackageRedundancyMax and PackageRedundancyMin." ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin"}, Write ( true )]
	uint16 PackageRedundancyGoal;

 	[Description ( "PackageRedundancyMax describes the maximum number of redundant packages to 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 desired redundancy is specified using PackageRedundancyGoal, while the minimum is defined by PackageRedundancyMin." ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyMin", "CIM_StorageSetting.PackageRedundancyGoal"}, Write ( true )]
	uint16 PackageRedundancyMax;

 	[Description ( "PackageRedundancyMin describes the minimum number of redundant packages to 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 desired redundancy is specified using PackageRedundancyGoal, while the maximum is defined by PackageRedundancyMax." ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyGoal"}, Write ( true )]
	uint16 PackageRedundancyMin;

 	[Description ( "ParityLayout specifies whether a parity-based storage organization is using rotated or non-rotated parity. When used in a goal setting instance, ParityLayout is the desired value. It MUST be set to NULL if the scoping StorageCapablities indicates that it is not supported in this context. If the property is supported, and is part of StorageSettingWithHints it MAY be set to NULL. If used it will constrain the effects of Hint selections. When used in a Setting instance associated to a Volume, this property indicates the specific value that the Volume was created with." ), Experimental ( true ), ValueMap{"1", "2"}, Values{"Non-rotated Parity", "Rotated Parity"}, Write ( true )]
	uint16 ParityLayout;

 	[Description ( "True indicates the associated replicas persist during power off or system reset. False indicates replicas lost during these events." ), Experimental ( true )]
	boolean PersistentReplica;

 	[Description ( "Not Applicable indicates that this property is not applicable to the associated storage element. Other values indicate the relative priority of background Replication I/O operations relative to host I/O operations. These other values are: \n- \"Low\": Replication engine I/O lower priority than host I/O. \n- \"Same\": Replication engine I/O has the same priority as host I/O. \n- \"High\": Replication engine I/O has higher priority than host I/O." ), Experimental ( true ), ModelCorrespondence{"CIM_StorageReplicationCapabilities.ReplicationPriorityDefault"}, ValueMap{"0", "1", "2", "3", "4", "..", "0x8000.."}, Values{"Not Applicable", "Not Managed", "Low", "Same", "High", "DMTF Reserved", "Vendor Specific"}, Write ( true )]
	uint16 ReplicationPriority;

 	[Description ( "SpaceLimit is the consumption limit for the allocated storage element from all associated StoragePools. If asserted, then the assumption is that the storage element can grow, (for instance an element representing the storage for a delta replica). \nIf SpaceLimit is greater than zero, the space consumed by the storage element shall not exceed the value of SpaceLimit. \nIf SpaceLimit = 0 (the default) then no limits are asserted on the amount of space consumed." ), Experimental ( true ), Units ( "Bytes" )]
	uint64 SpaceLimit = 0;

 	[Description ( "If the associated storage element may dynamically consume an increasing amount of space and a space limit is enforced on the element, then a non-zero warning threshold percentage indicates when a warning indication should be generated based on the total amount of space consumed being >= (SpaceLimit*SpaceLimitWarningThreshold)/100." ), Experimental ( true ), MaxValue ( 100 ), MinValue ( 0 ), Units ( "Percentage" )]
	uint16 SpaceLimitWarningThreshold;

 	[Description ( "UserDataStripeDepth 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. When used in a goal setting instance, UserDataStripeDepth is the optimal desired value. The bounds (max and min) for Stripe Depth are defined using the properties UserDataStripeDepthMax and UserDataStripeDepthMin. UserDataStripeDepth MUST be set to NULL if the scoping StorageCapablities indicates that it is not supported in this context. If the property is supported, and is part of StorageSettingWithHints it MAY be set to NULL. If used it will constrain the effects of Hint selections. When used in a Setting instance associated to a Volume, this property indicates the specific value that the Volume was created with, and UserDataStripeDepthMin and UserDataStripeDepthMax will be set to the same specific value." ), Experimental ( true ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.UserDataStripeDepthMax", "CIM_StorageSetting.UserDataStripeDepthMin"}, Units ( "Bytes" ), Write ( true )]
	uint64 UserDataStripeDepth;

 	[Description ( "UserDataStripeDepth 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. When used in a goal setting instance, UserDataStripeDepthMax is the maximum acceptable value. The desired Stripe Depth is specified using UserDataStripeDepthGoal, while the minimum is defined by UserDataStripeDepthMin. UserDataStripeDepthMax MUST be set to NULL if the scoping StorageCapablities indicates that it is not supported in this context. If the property is supported, and is part of StorageSettingwWithHints it MAY be set to NULL. If used it will constrain the effects of Hint selections. When used in a Setting instance associated to a Volume, this property is set to the specific value of UserDataStripeDepth." ), Experimental ( true ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.UserDataStripeDepthMin", "CIM_StorageSetting.UserDataStripeDepth"}, Units ( "Bytes" ), Write ( true )]
	uint64 UserDataStripeDepthMax;

 	[Description ( "UserDataStripeDepth 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. When used in a goal setting instance, UserDataStripeDepthMin is the minimum acceptable value. The desired Stripe Depth is specified using UserDataStripeDepth, while the maximum is defined by UserDataStripeDepthMax. UserDataStripeDepthMin MUST be set to NULL if the scoping StorageCapablities indicates that it is not supported in this context. If the property is supported, and is part of StorageSettingWithHints it MAY be set to NULL. If used it will constrain the effects of Hint selections. When used in a Setting instance associated to a Volume, this property is set to the specific value of UserDataStripeDepth." ), Experimental ( true ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.UserDataStripeDepthMax", "CIM_StorageSetting.UserDataStripeDepth"}, Units ( "Bytes" ), Write ( true )]
	uint64 UserDataStripeDepthMin;

 	[Description ( "\"Not Applicable\" indicates that this property is not applicable to the associated storage element. Other values indicate whether or not remote mirror pair created with SynchronizationType \"Async\" is allowed to use a write buffer for asynchronous buffering. These other values are defined as: \n- \"Not Managed\": use or not of the buffer is up to the implementation. \n- \"Use Buffer\": use of a buffer for logging is required. \n- \"Do Not Use Buffer\": a buffer for logging shall not be used." ), Experimental ( true ), ModelCorrespondence{"CIM_StorageReplicationCapabilities.UseReplicationBufferDefault"}, ValueMap{"0", "1", "2", "3", "..", "0x8000.."}, Values{"Not Applicable", "Not Managed", "Use Buffer", "Do Not Use Buffer", "DMTF Reserved", "Vendor Specific"}, Write ( true )]
	uint16 UseReplicationBuffer = 0;


};

// IBMTSDS_DataTypeSetting

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This class of StorageSetting is used to describe Data Type. Five instances of this class exist statically for each StorageManagementSystem, representing the five valid Volume Types: Block512, Block520Protected, Block520Unprotected, 3380, and 3390. Since this is independent of the underlying redundancy, the DataRedundancy and PackageRedundancy properties have no meaning. They are set to the minimum and maximum supported levels for the underlying Pools." ),  Version ( "2.8.1000" )]
class IBMTSDS_DataTypeSetting : CIM_StorageSetting {
	[Description ( "Enumeration indicating the type of setting. \"Fixed - Not Changeable\" settings are primordial. These setting are defined at the implementor of the class. \"Changeable - Transient\" is the type of setting produced by the \"CreateSetting\" method. A client can subsequently request that the implementation persist the generated and potentially modified setting indefinately. Only a \"Changeable - Transient\" setting SHALL be converted to a \"Changeable = Persistent\" setting; the setting SHALL NOT be changed back." ), Experimental ( true ), Override ( "ChangeableType" ), ValueMap{"0", "1", "2"}, Values{"Fixed - Not Changeable", "Changeable - Transient", "Changeable - Persistent"}]
	uint16 ChangeableType = 0;

 	[Description ( "DataRedundancyGoal describes the desired number of complete copies of data that can be maintained. This is set to DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyMin"}, Override ( "DataRedundancyGoal" )]
	uint16 DataRedundancyGoal = 1;

 	[Description ( "DataRedundancyMax describes the maximum number of complete copies of data that can be maintained. The max supported redundancy is RAID10 which is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMin", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMax" )]
	uint16 DataRedundancyMax = 2;

 	[Description ( "DataRedundancyMin describes the minimum number of complete copies of data that can be maintained. The minimum is 1." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMin" )]
	uint16 DataRedundancyMin = 1;

 	[Description ( "Describes the IBM-defined Data Type. Objects such as the ExtentPool on the DS subsystem do not have Data Types defined, so the property will be set to 0. Currently multiple Data Types for one object are not allowed, but the property is set to be an array for possible future use." ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5", "6"}, Values{"Not applicable", "Unknown", "Block512", "Block520Protected", "Block520Unprotected", "3380", "3390"}]
	uint16 DataType[];

 	[Description ( "The user friendly name for this instance of SettingData. In addition, the user friendly name can be used as a index property for a search of query. Will be of the form StorageSetting for DataType <DataType>." ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. Will be of the form IBMTSDS:<DataType>, where DataType is Block512, Block520Protected, Block520Unprotected, 3380, or 3390." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[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"}, Override ( "NoSinglePointOfFailure" )]
	boolean NoSinglePointOfFailure = true;

 	[Description ( "Indicates the default value for the NoSinglePointOfFailure property." ), ModelCorrespondence{"CIM_StorageCapabilities.NoSinglePointOfFailure"}]
	boolean NoSinglePointOfFailureDefault = true;

 	[Description ( "PackageRedundancyGoal describes the desired number of redundant packages to 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 (max and min) for redundancy are defined using the properties, PackageRedundancyMax and PackageRedundancyMin. Set to Min, 1." ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin"}, Override ( "PackageRedundancyGoal" ), Write ( true )]
	uint16 PackageRedundancyGoal = 1;

 	[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. The max is from RAID10, which is 3." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMax" )]
	uint16 PackageRedundancyMax = 3;

 	[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. The minimum is from RAID5, which is 1." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMax", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMin" )]
	uint16 PackageRedundancyMin = 1;


};

// CIM_PhysicalElement

	[Abstract ( true ), Description ( "Subclasses of CIM_PhysicalElement define any component of a System that has a distinct physical identity. Instances of this class can be defined as an object that can be seen or touched. All Processes, Files, and LogicalDevices are considered not to be Physical Elements. For example, it is not possible to touch the functionality of a \'modem.\' You can touch only the card or package that implements the modem. The same card could also implement a LAN adapter. PhysicalElements are tangible ManagedSystemElements that have a physical manifestation of some sort. \n\nNote that the properties of PhysicalElement describe a hardware entity. Possible replacement (FRU) information is defined by following the ElementFRU association to one or more instances of the ReplacementFRU class. This definition allows a client to determine what hardware can be replaced (FRUed) and what \'spare\' parts might be required by a customer or engineer doing the replacement. If it can be instrumented or manually determined that an element actually replaced (FRUed) another, then this can be described in the model using the ElementHasBeenFRUed association." ), Version ( "2.10.0" )]
class CIM_PhysicalElement : CIM_ManagedSystemElement {
	[Description ( "Boolean that indicates whether this PhysicalElement can be FRUed (TRUE) or not (FALSE)." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalIsFRU"}]
	boolean CanBeFRUed;

 	[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." ), Key ( true ), MaxLen ( 256 )]
	string CreationClassName;

 	[Description ( "A textual description of the PhysicalElement." ), MappingStrings{"MIF.DMTF|FRU|003.3"}, Override ( "Description" )]
	string Description;

 	[MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalName"}, Override ( "ElementName" )]
	string ElementName;

 	[Description ( "The date that this PhysicalElement was manufactured." )]
	datetime ManufactureDate;

 	[Description ( "The name of the organization responsible for producing the PhysicalElement. This organization might be the entity from whom the Element is purchased, but this is not necessarily true. The latter information is contained in the Vendor property of CIM_Product." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalMfgName", "MIF.DMTF|FRU|003.4"}, MaxLen ( 256 )]
	string Manufacturer;

 	[Description ( "The name by which the PhysicalElement is generally known." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalDescr", "MIF.DMTF|FRU|003.5"}, MaxLen ( 256 )]
	string Model;

 	[Description ( "OtherIdentifyingInfo captures data in addition to Tag information. This information could be used to identify a Physical Element. One example is bar code data associated with an Element that also has an asset tag. Note that if only bar code data is available and is unique or able to be used as an Element key, this property would be null and the bar code data would be used as the class key, in the Tag property." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalAlias"}, Write ( true )]
	string OtherIdentifyingInfo;

 	[Description ( "The part number assigned by the organization that is responsible for producing or manufacturing the PhysicalElement." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalModelName"}, MaxLen ( 256 )]
	string PartNumber;

 	[Description ( "Boolean that indicates whether the PhysicalElement is powered on (TRUE) or is currently off (FALSE)." )]
	boolean PoweredOn;

 	[Description ( "A manufacturer-allocated number used to identify the Physical Element." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalSerialNum", "MIF.DMTF|FRU|003.7"}, MaxLen ( 256 )]
	string SerialNumber;

 	[Description ( "The stock-keeping unit number for this PhysicalElement." ), MaxLen ( 64 )]
	string SKU;

 	[Description ( "An arbitrary string that uniquely identifies the Physical Element and serves as the key of the Element. The Tag property can contain information such as asset tag or serial number data. The key for PhysicalElement is placed very high in the object hierarchy in order to independently identify the hardware or entity, regardless of physical placement in or on Cabinets, Adapters, and so on. For example, a hotswappable or removable component can be taken from its containing (scoping) Package and be temporarily unused. The object still continues to exist and can even be inserted into a different scoping container. Therefore, the key for Physical Element is an arbitrary string and is defined independently of any placement or location-oriented hierarchy." ), Key ( true ), MaxLen ( 256 )]
	string Tag;

 	[Description ( "User-assigned and writeable asset-tracking identifier for the PhysicalElement." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalAssetID"}, Write ( true )]
	string UserTracking;

 	[Description ( "A vendor-specific hardware type for the PhysicalElement. It describes the specific equipment type for the element, as defined by the vendor or manufacturer." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalVendorType"}]
	string VendorEquipmentType;

 	[Description ( "A string that indicates the version of the PhysicalElement." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalHardwareRev", "MIF.DMTF|FRU|003.8"}, MaxLen ( 64 )]
	string Version;


};

// CIM_Realizes

[ASSOCIATION ( true ),  Description ( "CIM_Realizes is the association that defines the mapping between LogicalDevices and the PhysicalElements that implement them." ), Version ( "2.6.0" )]
class CIM_Realizes : CIM_Dependency {
	[Description ( "The physical component that implements the Device." ), Override ( "Antecedent" )]
	CIM_PhysicalElement ref Antecedent;

 	[Description ( "The LogicalDevice." ), Override ( "Dependent" )]
	CIM_LogicalDevice ref Dependent;


};

// CIM_PhysicalPackage

	[Description ( "The PhysicalPackage class represents PhysicalElements that contain or host other components. Examples are a Rack enclosure or an adapter Card." ), Version ( "2.10.0" )]
class CIM_PhysicalPackage : CIM_PhysicalElement {
	[Description ( "The depth of the PhysicalPackage in inches." ), Units ( "Inches" )]
	real32 Depth;

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

 	[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\nA 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 ( "A string describing the package when the instance\'s PackageType property is 1 (\"Other\")." ), Experimental ( true ), ModelCorrespondence{"CIM_PhysicalPackage.PackageType"}]
	string OtherPackageType;

 	[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. \nUnknown - indicates that the package type is not known. \nOther - The package type does not correspond to an existing enumerated value. The value is specified using the OtherPackageType property. \nThe 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. \nA 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." ), Experimental ( true ), MappingStrings{"MIB.IETF|ENTITY-MIB.entPhysicalClass"}, ModelCorrespondence{"CIM_PhysicalPackage.OtherPackageType"}, 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"}]
	uint16 PackageType;

 	[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. \nA 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;

 	[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{"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;

 	[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 appropriate to insert a package into a slot \nIn 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> \nWhere <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." ), Experimental ( true ), ModelCorrespondence{"CIM_Slot.VendorCompatibilityStrings"}]
	string VendorCompatibilityStrings[];

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

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


		[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(
		[Description ( "The element to check for compatibility with this one." ), IN ( true )]
		CIM_PhysicalElement ref ElementToCheck
	);
};

// IBMTSDS_DiskDrivePackage

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "IBMTSDS_DiskDrivePackage describes the physical packaging attributes of the Disk Drive." ),  Version ( "2.8.0" )]
class IBMTSDS_DiskDrivePackage : CIM_PhysicalPackage {
	[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. This class is IBMTSDS_DiskDrivePackage." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[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\nA 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 = true;

 	[Description ( "Currently the only Manufacturers for disk drives on the DS systems are Seagate and Hitachi. This property is set to \'Unknown\' for ESS." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalMfgName", "MIF.DMTF|FRU|003.4"}, MaxLen ( 256 )]
	string Manufacturer;

 	[Description ( "The Model of the Disk Drive. This property is set to \'Unknown\' for ESS." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalDescr", "MIF.DMTF|FRU|003.5"}, MaxLen ( 256 )]
	string Model;

 	[Description ( "The RemovalCapabilites property is used to describe the conditions under which a PhysicalPackage can be removed. The DS Disk Drives are hot-swappable." ), ValueMap{"0", "2", "3", "4"}, Values{"Unknown", "Not Applicable", "Removable when off", "Removable when on or off"}]
	uint16 RemovalConditions = 4;

 	[Description ( "Same as IBMTSDS_DiskDrive.DeviceID." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalSerialNum", "MIF.DMTF|FRU|003.7"}, MaxLen ( 256 )]
	string SerialNumber;

 	[Description ( "An arbitrary string that uniquely identifies the Physical Element and serves as the key of the Element. The Tag will be of the form \'PhysicalPackage for DiskDrive <IBMTSDS_DiskDrive.DeviceID>." ), Key ( true ), MaxLen ( 256 ), Override ( "Tag" )]
	string Tag;

 	[Description ( "A string indicating the version of the PhysicalElement.Represents de ECLevel of the DiskDrive. Set to \'Unknown\' for ESS." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalHardwareRev"}, MaxLen ( 64 )]
	string Version;


};

// CIM_MediaAccessDevice

	[Description ( "A MediaAccessDevice represents the ability to access one or more media and use this media to store and retrieve data." ), Version ( "2.6.0" )]
class CIM_MediaAccessDevice : CIM_LogicalDevice {
	[ArrayType ( "Indexed" ), Description ( "Capabilities of the MediaAccessDevice. For example, the Device may support \"Random Access\", removeable media and \"Automatic Cleaning\". In this case, the values 3, 7 and 9 would be written to the array. \nSeveral of the enumerated values require some explanation: 1) Value 11, Supports Dual Sided Media, distinguishes a Device that can access both sides of dual sided Media, from a Device that reads only a single side and requires the Media to be flipped; and, 2) Value 12, Predismount Eject Not Required, indicates that Media does not have to be explicitly ejected from the Device before being accessed by a PickerElement." ), MappingStrings{"MIF.DMTF|Storage Devices|001.9", "MIF.DMTF|Storage Devices|001.11", "MIF.DMTF|Storage Devices|001.12", "MIF.DMTF|Disks|003.7", "MIF.DMTF|Host Disk|001.2", "MIF.DMTF|Host Disk|001.4"}, ModelCorrespondence{"CIM_MediaAccessDevice.CapabilityDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}, Values{"Unknown", "Other", "Sequential Access", "Random Access", "Supports Writing", "Encryption", "Compression", "Supports Removeable Media", "Manual Cleaning", "Automatic Cleaning", "SMART Notification", "Supports Dual Sided Media", "Predismount Eject Not Required"}]
	uint16 Capabilities[];

 	[ArrayType ( "Indexed" ), Description ( "An array of free-form strings providing more detailed explanations for any of the AccessDevice features indicated in the Capabilities array. Note, each entry of this array is related to the entry in the Capabilities array that is located at the same index." ), ModelCorrespondence{"CIM_MediaAccessDevice.Capabilities"}]
	string CapabilityDescriptions[];

 	[Description ( "A free form string indicating the algorithm or tool used by the device to support compression. 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 device supports compression capabilities or not, \"Compressed\" to represent that the device supports compression capabilities but either its compression scheme is not known or not disclosed, and \"Not Compressed\" to represent that the devices does not support compression capabilities." )]
	string CompressionMethod;

 	[Description ( "Default block size, in bytes, for this Device." ), Units ( "Bytes" )]
	uint64 DefaultBlockSize;

 	[Description ( "ErrorMethodology is a free-form string describing the type(s) of error detection and correction supported by this Device." )]
	string ErrorMethodology;

 	[Description ( "The date and time on which the Device was last cleaned." )]
	datetime LastCleaned;

 	[Description ( "Time in milliseconds from \'load\' to being able to read or write a Media. For example, for DiskDrives, this is the interval between a disk not spinning to the disk reporting that it is ready for read/write (ie, the disk spinning at nominal speeds). For TapeDrives, this is the time from a Media being injected to reporting that it is ready for an application. This is usually at the tape\'s BOT area." ), Units ( "MilliSeconds" )]
	uint64 LoadTime;

 	[Description ( "Time in milliseconds to move from the first location on the Media to the location that is furthest with respect to time. For a DiskDrive, this represents full seek + full rotational delay. For TapeDrives, this represents a search from the beginning of the tape to the most physically distant point. (The end of a tape may be at its most physically distant point, but this is not necessarily true.)" ), Units ( "MilliSeconds" )]
	uint64 MaxAccessTime;

 	[Description ( "Maximum block size, in bytes, for media accessed by this Device." ), Units ( "Bytes" )]
	uint64 MaxBlockSize;

 	[Description ( "Maximum size, in KBytes, of media supported by this Device. KBytes is interpreted as the number of bytes multiplied by 1000 (NOT the number of bytes multiplied by 1024)." ), MappingStrings{"MIF.DMTF|Sequential Access Devices|001.2", "MIF.DMTF|Host Disk|001.5"}]
	uint64 MaxMediaSize;

 	[Description ( "An unsigned integer indicating the maximum \'units\' that can be used, with respect to the AccessDevice, before the Device should be cleaned. The property, UnitsDescription, defines how \'units\' should be interpreted." ), ModelCorrespondence{"CIM_MediaAccessDevice.UnitsDescription"}]
	uint64 MaxUnitsBeforeCleaning;

 	[Description ( "True indicates that the media is locked in the Device and can not be ejected. For non-removeable Devices, this value should be true." )]
	boolean MediaIsLocked;

 	[Description ( "Minimum block size, in bytes, for media accessed by this Device." ), Units ( "Bytes" )]
	uint64 MinBlockSize;

 	[Counter ( true ), Description ( "For a MediaAccessDevice that supports removable Media, the number of times that Media have been mounted for data transfer or to clean the Device. For Devices accessing nonremovable Media, such as hard disks, this property is not applicable and should be set to 0." )]
	uint64 MountCount;

 	[Description ( "Boolean indicating that the MediaAccessDevice needs cleaning. Whether manual or automatic cleaning is possible is indicated in the Capabilities array property." )]
	boolean NeedsCleaning;

 	[Description ( "When the MediaAccessDevice supports multiple individual Media, this property defines the maximum number which can be supported or inserted." )]
	uint32 NumberOfMediaSupported;

 	[Description ( "An enumeration indicating the operational security defined for the MediaAccessDevice. For example, information that the Device is \"Read Only\" (value=4) or \"Boot Bypass\" (value=6) can be described using this property." ), MappingStrings{"MIF.DMTF|Disks|003.22"}, ValueMap{"1", "2", "3", "4", "5", "6", "7"}, Values{"Other", "Unknown", "None", "Read Only", "Locked Out", "Boot Bypass", "Boot Bypass and Read Only"}]
	uint16 Security;

 	[Description ( "For a MediaAccessDevice that supports removable Media, the most recent date and time that Media was mounted on the Device. For Devices accessing nonremovable Media, such as hard disks, this property has no meaning and is not applicable." )]
	datetime TimeOfLastMount;

 	[Description ( "For a MediaAccessDevice that supports removable Media, the total time (in seconds) that Media have been mounted for data transfer or to clean the Device. For Devices accessing nonremovable Media, such as hard disks, this property is not applicable and should be set to 0." )]
	uint64 TotalMountTime;

 	[Description ( "The sustained data transfer rate in KB/sec that the Device can read from and write to a Media. This is a sustained, raw data rate. Maximum rates or rates assuming compression should not be reported in this property." ), Units ( "KiloBytes per Second" )]
	uint32 UncompressedDataRate;

 	[Description ( "Defines \'Units\' relative to its use in the property, MaxUnitsBeforeCleaning. This describes the criteria used to determine when the MediaAccessDevice should be cleaned." ), ModelCorrespondence{"CIM_MediaAccessDevice.MaxUnitsBeforeCleaning", "CIM_MediaAccessDevice.UnitsUsed"}]
	string UnitsDescription;

 	[Description ( "An unsigned integer indicating the currently used \'units\' of the AccessDevice, helpful to describe when the Device may require cleaning. The property, UnitsDescription, defines how \'units\' should be interpreted." ), Gauge ( true ), ModelCorrespondence{"CIM_MediaAccessDevice.UnitsDescription", "CIM_MediaAccessDevice.MaxUnitsBeforeCleaning"}]
	uint64 UnitsUsed;

 	[Description ( "Time in milliseconds from being able to read or write a Media to its \'unload\'. For example, for DiskDrives, this is the interval between a disk spinning at nominal speeds and a disk not spinning. For TapeDrives, this is the time for a Media to go from its BOT to being fully ejected and accessible to a PickerElement or human operator." ), Units ( "MilliSeconds" )]
	uint64 UnloadTime;


		[Description ( "Method to lock and unlock the media in a removeable Access Device. The method takes one parameter as input - a boolean indicating whether to lock or unlock. TRUE indicates that the media should be locked in the Device, FALSE indicates that the media should be unlocked. The method returns 0 if successful, 1 if not supported, and any other value if an error occurred. The set of possible return codes should be specified in a ValueMap qualifier on the method. The strings to which the ValueMap contents are \'translated\' should be specified as a Values array qualifier on the method." )]
	uint32 LockMedia(
		[Description ( "If TRUE, lock the media. If FALSE release the media." ), IN ( true )]
		boolean Lock
	);
};

// CIM_DiskDrive

	[Abstract ( true ), Description ( "Capabilities and managment of a DiskDrive, a subtype of MediaAccessDevice." ), Version ( "2.6.0" )]
class CIM_DiskDrive : CIM_MediaAccessDevice {
};

// IBMTSDS_DiskDrive

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "Capabilities and managment of a DiskDrive, a subtype of MediaAccessDevice" ),  Version ( "2.6.0" )]
class IBMTSDS_DiskDrive : CIM_DiskDrive {
	[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. This class is IBMTSDS_DiskDrive." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "The Device Adapater Pair ID of this Disk Drive" ), IBMExtension ( "5.2.1" )]
	uint16 DAPairID;

 	[Description ( "The speed of this disk drive." ), IBMExtension ( "5.2.1" ), Units ( "RPM" )]
	uint32 DDMSpeed;

 	[Description ( "The Device Adapater ID\'s of this Disk Drive. This should only have two elements. This is not supported for ESS 2105" ), IBMExtension ( "5.2.1" )]
	string DeviceAdapters[];

 	[Description ( "An address or other identifying information to uniquely name the LogicalDevice. The value for this property is the serial number of the Disk Drive. " ), Key ( true ), MaxLen ( 64 ), Override ( "DeviceID" )]
	string DeviceID;

 	[Description ( "A user-friendly name for the object. This will be the same as Name." ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "Health state." ), Experimental ( true ), ValueMap{"0", "5", "10", "15", "20", "25", "30", ".."}, Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"}]
	uint16 HealthState;

 	[Description ( "The physical location of the disk drive. This string matches the Loc property of the dscli command lsddm -l. This property is not supported for ESS 2105." ), IBMExtension ( "5.2.1" )]
	string Location;

 	[Description ( "A user-friendly name for the object. This will be of the form \'DiskDrive <x> on <y>\'. where y is the ArraySite number for DS and the diskgroup ID for ESS." ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[ArrayType ( "Indexed" ), Description ( "The possible values for DS are Unknown, Other, OK, Predictive Failure, Error, Starting, In Service, No Contact, and Dormant. The possible values for ESS are In Service, OK, and Error." ), Override ( "OperationalStatus" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "The SSA Loop of this Disk Drive. This is not valid for DS6000/8000." ), IBMExtension ( "5.2.1" )]
	string SSALoop;

 	[Description ( "The scoping System\'s CreationClassName. Set to \'IBMTSDS_StorageSystem\'" ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_System.Name" )]
	string SystemName;


};

// IBMTSDS_DiskDriveRealizes

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This class represents the association between DiskDrive and DiskDrivePackage." ),  Version ( "2.6.0" )]
class IBMTSDS_DiskDriveRealizes : CIM_Realizes {
	[Description ( "The DiskDrivePackage." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_DiskDrivePackage ref Antecedent;

 	[Description ( "The DiskDrive." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_DiskDrive ref Dependent;


};

// CIM_HostedDependency

[ASSOCIATION ( true ),  Description ( "HostedDependency defines a ManagedElement in the context of another ManagedElement in which it resides." ), Version ( "2.8.0" )]
class CIM_HostedDependency : CIM_Dependency {
	[Description ( "The scoping ManagedElement." ), Max ( 1 ), Override ( "Antecedent" )]
	CIM_ManagedElement ref Antecedent;

 	[Description ( "The hosted ManagedElement." ), Override ( "Dependent" )]
	CIM_ManagedElement ref Dependent;


};

// CIM_SystemSpecificCollection

	[Description ( "SystemSpecificCollection represents the general concept of a collection that is scoped (or contained) by a System. It represents a Collection that has meaning only in the context of a System, a Collection whose elements are restricted by the definition of the System, or both of these types of Collections. This meaning is explicitly described by the (required) association, HostedCollection. \nAn example of a SystemSpecificCollection is a Fibre Channel zone that collects network ports, port groupings, and aliases (as required by a customer) in the context of an AdminDomain. The Collection is not a part of the domain, but merely an arbitrary grouping of the devices and other Collections in the domain. In other words, the context of the Collection is restricted to the domain, and its members are also limited by the domain." ), Version ( "2.10.0" )]
class CIM_SystemSpecificCollection : CIM_Collection {
	[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> \nWhere <OrgID> and <LocalID> are separated by a colon \':\', and where <OrgID> must include a unique name. It can be a copyrighted, trademarked, or otherwise unique name that is owned by the business entity that is creating or defining the InstanceID. Or, it could be a registered ID that is 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 re-used 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 re-used as any of InstanceIDs produced by this or other providers for the NameSpace of this instance. \nFor DMTF-defined instances, the \'preferred\' algorithm must be used with the <OrgID> set to \'CIM\'." ), Key ( true )]
	string InstanceID;


};

// CIM_HostedCollection

[ASSOCIATION ( true ),  Description ( "HostedCollection defines a SystemSpecificCollection in the context of a scoping System. It represents a Collection that has meaning only in the context of a System, a Collection whose elements are restricted by the definition of the System, or both of these types of Collections." ), Version ( "2.10.0" )]
class CIM_HostedCollection : CIM_HostedDependency {
	[Description ( "The scoping system." ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	CIM_System ref Antecedent;

 	[Description ( "The collection defined in the context of a system." ), Override ( "Dependent" )]
	CIM_SystemSpecificCollection ref Dependent;


};

// IBMTSDS_VolumeGroup

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This class is only valid for DS. It represents the VolumeGroup." ), IBMExtension ( "5.2.1" ),  Version ( "2.10.0" )]
class IBMTSDS_VolumeGroup : CIM_SystemSpecificCollection {
	[Description ( "User friendly name. Matches the Nickname of the VolumeGroup in the DS Storage Manager." ), IBMExtension ( "5.2.1" )]
	string ElementName;

 	[Description ( "Will be of the form \'IBMTSDS:<StorageSystem.Name>-<VolumeGroupNumber>\'." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The DeviceIDs of the Volumes in this VolumeGroup." ), IBMExtension ( "5.2.1" )]
	string VolumeDeviceIDs[];

 	[Description ( "Describes the IBM-defined VolumeGroup Type." ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Unknown", "SCSIMap256", "SCSIMask", "SCSI520Map256", "SCSI520Mask"}]
	uint16 VolumeGroupType;


};

// IBMTSDS_HostedVolumeGroup

[ASSOCIATION ( true ),  Description ( "HostedCollection defines a VolumeGroup in the context of its top-level computer system." ), IBMExtension ( "5.2.1" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_HostedVolumeGroup : CIM_HostedCollection {
	[Description ( "The scoping system." ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_StorageSystem ref Antecedent;

 	[Description ( "The collection defined in the context of a system." ), Override ( "Dependent" )]
	IBMTSDS_VolumeGroup ref Dependent;


};

// CIM_ConcreteDependency

[ASSOCIATION ( true ),  Description ( "CIM_ConcreteDependency is a generic association used to establish dependency relationships between ManagedElements. It is defined as a concrete subclass of the abstract CIM_Dependency class, to be used in place of many specific subclasses of Dependency that add no semantics, that is subclasses that do not clarify the type of dependency, update cardinalities, or add or remove qualifiers. Note that when you define additional semantics for Dependency, this class must not be subclassed. Specific semantics continue to be defined as subclasses of the abstract CIM_Dependency. ConcreteDependency is limited in its use as a concrete form of a general dependency. \n\nIt was deemed more prudent to create this concrete subclass than to change Dependency from an abstract to a concrete class. Dependency already had multiple abstract subclasses in the CIM Schema, and wider industry usage and impact could not be anticipated." ), Version ( "2.10.0" )]
class CIM_ConcreteDependency : CIM_Dependency {
	[Description ( "Antecedent represents the independent object in this association." ), Override ( "Antecedent" )]
	CIM_ManagedElement ref Antecedent;

 	[Description ( "Dependent represents the object that is dependent on the Antecedent." ), Override ( "Dependent" )]
	CIM_ManagedElement ref Dependent;


};

// CIM_ProtocolController

	[Abstract ( true ), Description ( "ProtocolController is a superclass for grouping controllers that are used to control the operation and function of sophisticated devices that instantiate a protocol such as SCSI. Simpler \'bus\' and device controllers are modeled using the CIM_Controller class." ), Version ( "2.8.0" )]
class CIM_ProtocolController : CIM_LogicalDevice {
	[Description ( "Maximum number of Units that can be controlled by or accessed through this ProtocolController." )]
	uint32 MaxUnitsControlled;


};

// CIM_SCSIProtocolController

	[Description ( "SCSIProtocolController is a type of ProtocolController, managing a SCSI interface." ), Version ( "2.8.1000" )]
class CIM_SCSIProtocolController : CIM_ProtocolController {
	[Description ( "The NameFormat property identifies how the Name of the SCSIProtocolController is selected. \nFor Fibre Channel, the NameFormat is \'FC Port WWN\'. \nFor iSCSI, Name can use any of the 3 iSCSI formats (iqn, eui, naa) which include the iSCSI format as as a prefix in the name, so they are not ambiguous." ), Experimental ( true ), ModelCorrespondence{"CIM_SCSIProtocolController.Name", "CIM_SCSIProtocolController.OtherNameFormat"}, ValueMap{"0", "1", "2", "3"}, Values{"Unknown", "Other", "FC Port WWN", "iSCSI Name"}]
	uint16 NameFormat;

 	[Description ( "A string describing how the ProtocolController is identified when the NameFormat is \"Other\"." ), Experimental ( true ), ModelCorrespondence{"CIM_SCSIProtocolController.Name", "CIM_SCSIProtocolController.NameFormat"}]
	string OtherNameFormat;


};

// IBMTSDS_SCSIProtocolController

	[Description ( "This class represents a \'view\'. It has a 1:1 relationship with a Privilege which in turn has a 1:1 relationship with a StorageHardwareID. This class is also associated to a set of target ports and volumes through the ProtocolControllerForUnit and ProtocolControllerForDevice associations. In DS terms, a SCSIProtocolController is a Host Port that either has Target FibreChannelPorts or a Volume Group attached to it. If the Host Port only has FibreChannelPorts and no VolumeGroup or vice versa, then the SCSIProtocolController represents a partial view. The Host Port must be associated to a set of Target Ports and VolumeGroup with Volumes to be considered a full view. If a Host Port has the Target Ports and Volumes removed then the SCSIProtocolController is considered deleted. The methods to create, modify, or delete the SCSIProtocolController are ExposePaths and HidePaths, which are in the ControllerConfigurationService class. Each volume associated to an SPC shall have a unique ProtocolControllerForUnit DeviceNumber (logical unit number). Note that a host that has an empty volume group attached is still considered a valid SCSIProtocolController (partial view) but in HidePaths, when the final volume is deleted, the corresponding volume group is destroyed. " ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_SCSIProtocolController : CIM_SCSIProtocolController {
	[Override ( "CreationClassName" )]
	string CreationClassName = "IBMTSDS_SCSIProtocolController";

 	[Description ( "An address or other identifying information to uniquely name the LogicalDevice. Will be of the form <SystemName>-<wwpn>-<ID> where ID is a vendor-specific ID that is unique per host per storage system" ), MaxLen ( 64 ), Override ( "DeviceID" )]
	string DeviceID;

 	[Description ( "Health state. Since the SCSIProtocolController does not representactual object on the device, the HealthState will be set to Unknown." ), Experimental ( true ), ValueMap{"0", "5", "10", "15", "20", "25", "30", ".."}, Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"}]
	uint16 HealthState = 0;

 	[Override ( "SystemCreationClassName" )]
	string SystemCreationClassName = "IBMTSDS_StorageSystem";

 	[Description ( "The scoping System\'s Name." ), MaxLen ( 256 ), Override ( "SystemName" )]
	string SystemName;


};

// IBMTSDS_MappedVolumeGroup

[ASSOCIATION ( true ),  Description ( "Association between VolumeGroup and the host that it is mapped to. A VolumeGroup can be mapped to multiple hosts." ), IBMExtension ( "5.2.1" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_MappedVolumeGroup : CIM_ConcreteDependency {
	[Description ( "Antecedent represents the independent object in this association." ), Override ( "Antecedent" )]
	IBMTSDS_VolumeGroup ref Antecedent;

 	[Description ( "Dependent represents the object dependent on the Antecedent." ), Override ( "Dependent" )]
	IBMTSDS_SCSIProtocolController ref Dependent;


};

// CIM_Capabilities

	[Abstract ( true ), Description ( "Capabilities is an abstract class whose subclasses describe abilities and/or potential for use. For example, one may describe the maximum number of VLANs that can be supported on a system using a subclass of Capabilities. Capabilities are tied to the elements which they describe using the ElementCapabilities association. Note that the cardinality of the ManagedElement reference is Min(1), Max(1). This cardinality mandates the instantiation of the ElementCapabilities association for the referenced instance of Capabilities. ElementCapabilities describes the existence requirements and context for the referenced instance of ManagedElement. Specifically, the ManagedElement MUST exist and provides the context for the Capabilities. Note that Capabilities do not indicate what IS configured or operational, but what CAN or CANNOT exist, be defined or be used. Note that it is possible to describe both supported and excluded abilities and functions (both capabilities and limitations) using this class." ), Version ( "2.7.0" )]
class CIM_Capabilities : CIM_ManagedElement {
	[Description ( "The user friendly name for this instance of Capabilities. In addition, the user friendly name can be used as a index property for a search of query. (Note: Name does not have to be unique within a namespace.)" ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: \n<OrgID>:<LocalID> \nWhere <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. If the above \'preferred\' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance\'s NameSpace. \nFor DMTF defined instances, the \'preferred\' algorithm MUST be used with the <OrgID> set to \'CIM\'." ), Key ( true )]
	string InstanceID;


};

// CIM_ElementCapabilities

[ASSOCIATION ( true ),  Description ( "ElementCapabilities represents the association between ManagedElements and their Capabilities. Note that the cardinality of the ManagedElement reference is Min(1), Max(1). This cardinality mandates the instantiation of the ElementCapabilities association for the referenced instance of Capabilities. ElementCapabilities describes the existence requirements and context for the referenced instance of ManagedElement. Specifically, the ManagedElement MUST exist and provides the context for the Capabilities." ), Version ( "2.7.0" )]
class CIM_ElementCapabilities {
	[Description ( "The Capabilities object associated with the element." ), Key ( true )]
	CIM_Capabilities ref Capabilities;

 	[Description ( "The managed element." ), Key ( true ), Max ( 1 ), Min ( 1 )]
	CIM_ManagedElement ref ManagedElement;


};

// CIM_Service

	[Abstract ( true ), Description ( "A CIM_Service is a Logical Element that contains the information that is necessary to represent and manage the functionality provided by a Device or a SoftwareFeature, or both. A Service is a general-purpose object that is used to configure and manage the implementation of functionality. It is not the functionality itself." ), Version ( "2.10.0" )]
class CIM_Service : CIM_EnabledLogicalElement {
	[Description ( "CreationClassName indicates the name of the class or the subclass that is 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." ), Key ( true ), MaxLen ( 256 )]
	string CreationClassName;

 	[Description ( "The Name property uniquely identifies the Service and provides an indication of the functionality that is managed. This functionality is described in more detail in the Description property of the object." ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

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

 	[Description ( "The name of the primary owner for the service, if one is defined. The primary owner is the initial support contact for the Service." ), MappingStrings{"MIF.DMTF|General Information|001.3"}, MaxLen ( 64 ), Write ( true )]
	string PrimaryOwnerName;

 	[Description ( "Started is a Boolean that indicates whether the Service has been started (TRUE), or stopped (FALSE)." )]
	boolean Started;

 	[Deprecated{"CIM_Service.EnabledDefault"}, Description ( "Note: The use of this element is deprecated in lieu of the EnabledDefault property that is inherited from EnabledLogicalElement. The EnabledLogicalElement addresses the same semantics. The change to a uint16 data type was discussed when CIM V2.0 was defined. However, existing V1.0 implementations used the string property. To remain compatible with those implementations, StartMode was grandfathered into the schema. Use of the deprecated qualifier allows the maintenance of the existing property but also permits an improved, clarified definition using EnabledDefault. \nDeprecated description: StartMode is a string value that indicates whether the Service is automatically started by a System, an Operating System, and so on, or is started only upon request." ), MaxLen ( 10 ), ValueMap{"Automatic", "Manual"}]
	string StartMode;

 	[Description ( "The CreationClassName of the scoping System." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The Name of the scoping System." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_System.Name" )]
	string SystemName;


		[Description ( "The StartService method places the Service in the started state. Note that the function of this method overlaps with the RequestedState property. RequestedState was added to the model to maintain a record (such as a persisted value) of the last state request. Invoking the StartService method should set the RequestedState property appropriately. The method returns an integer value of 0 if the Service was successfully started, 1 if the request is not supported, and any other number to indicate an error. 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 can also be specified in the subclass as a Values array qualifier. \n\nNote: The semantics of this method overlap with the RequestStateChange method that is inherited from EnabledLogicalElement. This method is maintained because it has been widely implemented, and its simple \"start\" semantics are convenient to use." )]
	uint32 StartService(
	
	);
	 	[Description ( "The StopService method places the Service in the stopped state. Note that the function of this method overlaps with the RequestedState property. RequestedState was added to the model to maintain a record (such as a persisted value) of the last state request. Invoking the StopService method should set the RequestedState property appropriately. The method returns an integer value of 0 if the Service was successfully stopped, 1 if the request is not supported, and any other number to indicate an error. 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 can also be specified in the subclass as a Values array qualifier. \n\nNote: The semantics of this method overlap with the RequestStateChange method that is inherited from EnabledLogicalElement. This method is maintained because it has been widely implemented, and its simple \"stop\" semantics are convenient to use." )]
	uint32 StopService(
	
	);
};

// CIM_StatisticsService

	[Abstract ( true ), Description ( "This is a Service that provides methods for statistics retrieval and BlockStatisticsManifest manipulation. The methods of the service that are supported by the provider can be determined from the SynchronousMethodsSupported and AsynchronousMethodsSupported properties of the StatisticsCapabilities associated to the service." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_StatisticsService : CIM_Service {
};

// CIM_BlockStatisticsService

	[Description ( "A subclass of StatisticsService that provides services for filtering and retrieving statistics from a StatisticsManifestCollection that contains instances of BlockStatisticalData." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_BlockStatisticsService : CIM_StatisticsService {
		[Description ( "Method that creates or modifies a BlockStatisticsManifest for this statistics service. A client supplies a BlockStatisticsManifestCollection in which the new BlockStatisticsManifest will be placed or an existing BlockStatisticsManifest will be modified, the element type of the statistics that the BlockStatisticsManifest will filter, and a list of metrics, which serves as a filter for statistical data of that element type." ), ValueMap{"0", "1", "2", "3", "4", "5", "..", "4096", "4097", "4098", "4099..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "Method Reserved", "Element Not Supported", "Metric not supported", "ElementType Parameter Missing", "Method Reserved", "Vendor Specific"}]
	uint32 AddOrModifyManifest(
		[Description ( "A client-defined string that identifies the BlockStatisticsManifest created or modified by this method." ), IN ( true )]
		string ElementName,
	 	[Description ( "The type of elements whose statistics the BlockStatisticsManifest will filter." ), IN ( true ), ModelCorrespondence{"CIM_BlockStatisticsManifest.ElementType"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000.."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Vendor Specific"}]
		uint16 ElementType,
	 	[Description ( "The BlockStatisticsManifest that is created or modified on successful execution of the method." ), OUT ( true )]
		CIM_BlockStatisticsManifest ref Manifest,
	 	[Description ( "BlockStatisticsManifestCollection that the BlockStatisticsManifest is or should be a member of." ), IN ( true )]
		CIM_BlockStatisticsManifestCollection ref ManifestCollection,
	 	[Description ( "The metrics that will be included by the filter. The metrics supplied here are the properties of CIM_StatisticalData or one of its subclasses that will remain after the BlockStatisticsManifest filter is applied." ), IN ( true )]
		string StatisticsList
	);
	 	[Description ( "Creates a new BlockStatisticsManifestCollection instance, whose members can serve as a filter for metrics retrieved through the GetStatisticsCollection method." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..32767", "32768..65535"}, Values{"Ok", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "Method Reserved", "Vendor Specific"}]
	uint32 CreateManifestCollection(
		[Description ( "Client-defined name for the new BlockStatisticsManifestCollection." ), IN ( true )]
		string ElementName,
	 	[Description ( "Reference to the new BlockStatisticsManifestCollection." ), OUT ( true )]
		CIM_BlockStatisticsManifestCollection ref ManifestCollection,
	 	[Description ( "The collection of statistics that will be filtered using the new BlockStatisticsManifestCollection." ), IN ( true )]
		CIM_StatisticsCollection ref Statistics
	);
	 	[Description ( "Retrieves statistics in a well-defined bulk format. The collection of statistics returned is determined by the list of element types passed in to the method and the manifests for those types contained in the supplied BlockStatisticsManifestCollection. If both the Elements and BlockStatisticsManifestCollection parameters are supplied, then the types of elements returned is an intersection of the element types listed in the Elements parameter and the types for which BlockStatisticsManifest instances exist in the supplied BlockStatisticsManifestCollection. The statistics are returned through a well-defined array of strings, whose format is specified by the StatisticsFormat parameter, that can be parsed to retrieve the desired statistics as well as limited information about the elements that those metrics describe." ), ValueMap{"0", "1", "2", "3", "4", "5", "..", "4096", "4097", "4098", "4099..32767", "32768..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "Method Reserved", "Method Parameters Checked - Job Started", "Element Not Supported", "Statistics Format Not Supported", "Method Reserved", "Vendor Specific"}]
	uint32 GetStatisticsCollection(
		[Description ( "Element types for which statistics should be returned. If not supplied (i.e. parameter is null) this parameter is not considered when filtering the instances of StatisticalData that will populate the Statistics output parameter. If the array is not null, but is empty, then no statistics will be returned by this method. A client SHOULD NOT specify this parameter if it is not meaningful (i.e. the service only provides statistics for a single type of element)." ), IN ( true ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ElementType"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000.."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Vendor Specific"}]
		uint16 ElementTypes,
	 	[Description ( "Reference to the job (may be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "The BlockStatisticsManifestCollection that contains the manifests that list the metrics to be returned for each element type. If not supplied (i.e. parameter is null), then all available statistics will be returned unfiltered. Only elements that match the element type properties (if meaningful) of the BlockStatisticsManifest instances contained within the BlockStatisticsManifestCollection will have data returned by this method. If the supplied BlockStatisticsManifestCollection does not contain any BlockStatisticsManifest instances, then no statistics will be returned by this method." ), IN ( true )]
		CIM_BlockStatisticsManifestCollection ref ManifestCollection,
	 	[Description ( "The statistics for all the elements as determined by the Elements, ManifestCollection parameters, and StatisticsFormat parameters." ), ModelCorrespondence{"CIM_BlockStatisticsService.GetStatisticsCollection(ElementTypes)", "CIM_BlockStatisticsService.GetStatisticsCollection(ManifestCollection)", "CIM_BlockStatisticsService.GetStatisticsCollection(StatisticsFormat)"}, OUT ( true )]
		string Statistics,
	 	[Description ( "Specifies the format of the Statistics output parameter. \n- CSV = Comma Separated Values." ), IN ( true ), ValueMap{"0", "1", "2", "..", "0x8000.."}, Values{"Unknown", "Other", "CSV", "DMTF Reserved", "Vendor Specific"}]
		uint16 StatisticsFormat
	);
	 	[Description ( "Extrinsic method that removes manifests from a BlockStatisticsManifestCollection." ), ValueMap{"0", "1", "2", "3", "4", "5", "..", "4096", "4097..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "Method Reserved", "Manifest not found", "Method Reserved", "Vendor Specific"}]
	uint32 RemoveManifests(
		[Description ( "BlockStatisticsManifestCollection from which the BlockStatisticsManifests will be removed." ), IN ( true )]
		CIM_BlockStatisticsManifestCollection ref ManifestCollection,
	 	[Description ( "List of BlockStatisticsManifests to be removed from the BlockStatisticsManifestCollection." ), IN ( true )]
		CIM_BlockStatisticsManifest ref Manifests[]
	);
};

// IBMTSDS_PerformanceStatisticsService

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A subclass of BlockStatisticsService that provides services for filtering and retrieving statistics from a StatisticsManifestCollection that contains instances of BlockStatisticalData." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_PerformanceStatisticsService : CIM_BlockStatisticsService {
		[Description ( "Retrieves statistics in a well-defined bulk format. The collection of statistics returned is determined by the list of element types passed in to the method and the manifests for those types contained in the supplied BlockStatisticsManifestCollection. If both the Elements and BlockStatisticsManifestCollection parameters are supplied, then the types of elements returned is an intersection of the element types listed in the Elements parameter and the types for which BlockStatisticsManifest instances exist in the supplied BlockStatisticsManifestCollection. The statistics are returned through a well-defined array of strings, whose format is specified by the StatisticsFormat parameter, that can be parsed to retrieve the desired statistics as well as limited information about the elements that those metrics describe." ), Override ( "GetStatisticsCollection" ), ValueMap{"0", "1", "2", "3", "4", "5", "..", "4096", "4097", "4098", "4099..32767", "32768", "36896", "36897..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "Method Reserved", "Method Parameters Checked - Job Started", "Element Not Supported", "Statistics Format Not Supported", "Method Reserved", "Internal provider error", "ManifestCollection is wrong.", "Device return codes - see ReturnCodes.txt"}]
	uint32 GetStatisticsCollection(
		[Description ( "Element types for which statistics should be returned. If not supplied (i.e. parameter is null) this parameter is not considered when filtering the instances of StatisticalData that will populate the Statistics output parameter. If the array is not null, but is empty, then no statistics will be returned by this method. A client SHOULD NOT specify this parameter if it is not meaningful (i.e. the service only provides statistics for a single type of element). The only supported values are Front-end Port, Volume, Rank, and ExtentPool." ), IN ( true ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ElementType"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000", "0x8001", ".."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Rank", "ExtentPool", "Vendor Specific"}]
		uint16 ElementTypes,
	 	[Description ( "The BlockStatisticsManifestCollection that contains the manifests that list the metrics to be returned for each element type. If not supplied (i.e. parameter is null), then all available statistics will be returned unfiltered. Only elements that match the element type properties (if meaningful) of the BlockStatisticsManifest instances contained within the BlockStatisticsManifestCollection will have data returned by this method. If the supplied BlockStatisticsManifestCollection does not contain any BlockStatisticsManifest instances, then no statistics will be returned by this method." ), IN ( true )]
		CIM_BlockStatisticsManifestCollection ref ManifestCollection,
	 	[Description ( "The statistics for all the elements as determined by the Elements, ManifestCollection parameters, and StatisticsFormat parameters." ), ModelCorrespondence{"CIM_BlockStatisticsService.GetStatisticsCollection(ElementTypes)", "CIM_BlockStatisticsService.GetStatisticsCollection(ManifestCollection)", "CIM_BlockStatisticsService.GetStatisticsCollection(StatisticsFormat)"}, OUT ( true )]
		string Statistics,
	 	[Description ( "Specifies the format of the Statistics output parameter. \n- CSV = Comma Separated Values. This is the only supported format." ), IN ( true ), ValueMap{"0", "1", "2", "..", "0x8000.."}, Values{"Unknown", "Other", "CSV", "DMTF Reserved", "Vendor Specific"}]
		uint16 StatisticsFormat
	);
};

// CIM_StatisticsCapabilities

	[Description ( "An instance of this class defines the specific support for the metered elements and methods for retrieving that statistical data from a StatisticsService." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_StatisticsCapabilities : CIM_Capabilities {
	[Description ( "The asychronous mechanisms supported for retrieving statistics." ), ValueMap{"..", "0x8000.."}, Values{"DMTF Reserved", "Vendor Specific"}]
	uint16 AsynchronousMethodsSupported[];

 	[Description ( "The list of element types for which statistical data is available. This property may not be meaningful if the StatisticsService these capabilities describe does not support StatisticalData instances for different types of elements." )]
	uint16 ElementTypesSupported[];

 	[Description ( "The synchronous mechanisms supported for retrieving statistics and defining and modifying filters for statistics retrieval." ), ValueMap{"..", "0x8000.."}, Values{"DMTF Reserved", "Vendor Specific"}]
	uint16 SynchronousMethodsSupported[];


};

// CIM_BasedOn

[ASSOCIATION ( true ),  Description ( "BasedOn is an association describing how StorageExtents can be assembled from lower level Extents. For example, ProtectedSpaceExtents are parts of PhysicalExtents, while VolumeSets are assembled from one or more Physical or ProtectedSpaceExtents. As another example, CacheMemory can be defined independently and realized in a PhysicalElement or can be \'based on\' Volatile or NonVolatileStorageExtents." ), Version ( "2.6.0" )]
class CIM_BasedOn : CIM_Dependency {
	[Description ( "The lower level StorageExtent." ), Override ( "Antecedent" )]
	CIM_StorageExtent ref Antecedent;

 	[Description ( "The higher level StorageExtent." ), Override ( "Dependent" )]
	CIM_StorageExtent ref Dependent;

 	[Description ( "EndingAddress indicates where in lower level storage, the higher level Extent ends. This property is useful when mapping non-contiguous Extents into a higher level grouping." )]
	uint64 EndingAddress;

 	[Description ( "If there is an order to the BasedOn associations that describe how a higher level StorageExtent is assembled, the OrderIndex property indicates this. When an order exists, the instances of BasedOn with the same Dependent value (i.e., the same higher level Extent) should place unique values in the OrderIndex property. The lowest value implies the first member of the collection of lower level Extents, and increasing values imply successive members of the collection. If there is no ordered relationship, a value of zero should be specified. An example of the use of this property is to define a RAID-0 striped array of 3 disks. The resultant RAID array is a StorageExtent that is dependent on (BasedOn) the StorageExtents that describe each of the 3 disks. The OrderIndex of each BasedOn association from the disk Extents to the RAID array could be specified as 1, 2 and 3 to indicate the order in which the disk Extents are used to access the RAID data." )]
	uint16 OrderIndex;

 	[Description ( "StartingAddress indicates where in lower level storage, the higher level Extent begins." )]
	uint64 StartingAddress;


};

// CIM_CompositeExtentBasedOn

[ASSOCIATION ( true ),  Description ( "This specialization defines how data is striped across StorageExtents. Additionally, it includes information on distribution of check data so that the \'usual case\' RAID devices can be created in one step." ), Version ( "2.7.0" )]
class CIM_CompositeExtentBasedOn : CIM_BasedOn {
	[Description ( "The underlying StorageExtent." ), Min ( 1 ), Override ( "Antecedent" )]
	CIM_StorageExtent ref Antecedent;

 	[Description ( "The Dependent\'s BlockSize is limited by the Antecedent\'s. In SCC, this is equivalent to the NUMBER OF BYTES PER LBA_PS field in the RedundancyGroup P_Extent Descriptor." ), MappingStrings{"MIF.DMTF|Protected Space Extent|001.4"}, ModelCorrespondence{"CIM_StorageExtent.BlockSize"}, Units ( "Bytes" )]
	uint64 BlockSize;

 	[Description ( "The CompositeExtent which is built on the StorageExtent." ), Override ( "Dependent" )]
	CIM_CompositeExtent ref Dependent;

 	[Description ( "True if the logical block mapping algorithm includes check data bytes. This property corresponds to the NOCHKSKIP attribute in the SCC-2 Volume Set PS_Extent Descriptor." )]
	boolean LBAMappingIncludesCheckData;

 	[Description ( "True if logical blocks in the underlying StorageExtents are mapped in decrementing order. This property corresponds to the INCDEC value in the SCC-2 Volume Set PS_Extent Descriptor." )]
	boolean LBAsMappedByDecrementing;

 	[Description ( "The total number of blocks that will be consumed on the Dependent Extent. This is limited by the Antecedent\'s NumberOfBlocks, but is included explicitly to provide for the DMTF MIF mapping. In SCC, this is equivalent to the NUMBER OF LBA_PS(s) field in the Volume Set PS_Extent Descriptor." ), MappingStrings{"MIF.DMTF|Protected Space Extent|001.3"}, ModelCorrespondence{"CIM_StorageExtent.NumberOfBlocks"}]
	uint64 NumberOfBlocks;

 	[Description ( "Order matters to CompositeExtents. An example of the use of this property is when defining a RAID-0 striped array of 3 disks. The resultant RAID array is a CompositeExtent that is dependent on (as described by CompositeExtentBasedOn) the StorageExtents that represent each of the 3 disks. The OrderIndex of each CompositeExtentBasedOn association from the disk Extents to the RAID array could be specified as 1, 2 and 3 to indicate the order in which the disk Extents are used to access the RAID data." ), MappingStrings{"MIF.DMTF|Protected Space Extent|001.1"}, Override ( "OrderIndex" ), Required ( true )]
	uint16 OrderIndex;

 	[Description ( "Number of bytes of user data to skip before starting the check data interleave." ), MappingStrings{"MIF.DMTF|Physical Extent|001.6"}, Units ( "Bytes" )]
	uint64 UnitsBeforeCheckDataInterleave;

 	[Description ( "Number of bytes to be reserved for check data." ), MappingStrings{"MIF.DMTF|Physical Extent|001.7"}, Units ( "Bytes" )]
	uint64 UnitsOfCheckData;

 	[Description ( "Number of bytes to be reserved for user data." ), MappingStrings{"MIF.DMTF|Physical Extent|001.8"}, Units ( "Bytes" )]
	uint64 UnitsOfUserData;

 	[Description ( "Number of bytes which form the stripe size for the Dependent StorageExtent. If the CompositeExtent is concatenated instead of striped, then UserDataStripeDepth should be set to zero." ), MappingStrings{"MIF.DMTF|Protected Space Extent|001.6"}, Units ( "Bytes" )]
	uint64 UserDataStripeDepth;


};

// IBMTSDS_ArraySiteExtent

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A CompositeExtent is used to model the distribution of user data across one or more underlying StorageExtents, which may or not be protected by some redundancy mechanism. ArraySiteExtent represents the distribution of data on an ArraySite.Only valid for DS." ),  Version ( "2.7.0" )]
class IBMTSDS_ArraySiteExtent : CIM_CompositeExtent {
	[Description ( "Size in bytes of the block which form this Storage Extent. Since the DataType on the Array Site is unknown, this is set to 1." ), MappingStrings{"MIF.DMTF|HostStorage|001.4", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits", "MIF.DMTF|StorageDevices|001.5"}, Units ( "Bytes" )]
	uint64 BlockSize = 1;

 	[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. This value is set to \'IBMTSDS_ArraySiteExtent\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "Number of complete copies of data currently maintained." ), ModelCorrespondence{"CIM_StorageSetting.DataRedundancyGoal", "CIM_StorageSetting.DataRedundancyMax", "CIM_StorageSetting.DataRedundancyMin"}]
	uint16 DataRedundancy = 0;

 	[Description ( "An address or other identifying information to uniquely name the LogicalDevice. Is of the form \'<StorageSystem.Name>-S<ArraySiteID>\'." ), Key ( true ), MaxLen ( 64 ), Override ( "DeviceID" )]
	string DeviceID;

 	[Description ( "Number of StorageExtents to stripe as a collective set. In SCC, this value is defined as the number of stripes to count before continuing to map into the next contiguous set of Extents, beyond the current stripe." ), MappingStrings{"MIF.DMTF|Volume Set|001.5"}]
	uint64 ExtentInterleaveDepth = 0;

 	[Description ( "StorageExtents have additional status information beyond that captured in the OperationalStatus and other properties, inherited from ManagedSystemElement. This additional information (for example, \"Protection Disabled\", value=9) is captured in the ExtentStatus property. \n\'In-Band Access Granted\' says that access to data on an extent is granted to some consumer and is only valid when \'Exported\' is also set. It is set as a side effect of PrivilegeManagementService.ChangeAccess or equivalent interfaces. \n\'Imported\' indicates that the extent is used in the current system, but known to be managed by some other system. For example, a server imports volumes from a disk array. \n\'Exported\' indicates the extent is meant to be used by some comsumer. A disk array\'s logical units are exported. \nIntermediate composite extents may be neither imported nor exported." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18..32767", "32768..65535"}, Values{"Other", "Unknown", "None/Not Applicable", "Broken", "Data Lost", "Dynamic Reconfig", "Exposed", "Fractionally Exposed", "Partially Exposed", "Protection Disabled", "Readying", "Rebuild", "Recalculate", "Spare in Use", "Verify In Progress", "In-Band Access Granted", "Imported", "Exported", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ExtentStatus[] = {2};

 	[Description ( "Number of contiguous underlying StorageExtents counted before looping back to the first underlying StorageExtent of the current stripe. It is the number of StorageExtents forming the user data stripe." ), MappingStrings{"MIF.DMTF|Volume Set|001.4"}]
	uint64 ExtentStripeLength = 1;

 	[Description ( "Health state." ), Experimental ( true ), ValueMap{"0", "5", "10", "15", "20", "25", "30", ".."}, Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"}]
	uint16 HealthState;

 	[Description ( "True indicates that the underlying StorageExtent(s) participate in a StorageRedundancyGroup." )]
	boolean IsBasedOnUnderlyingRedundancy = false;

 	[Description ( "True indicates that the data is concatenated across the various StorageExtents in the Group." )]
	boolean IsConcatenated = true;

 	[Description ( "Indicates whether or not there exists no single point of failure. This is false, because the ArraySite contains no redundancy information." ), ModelCorrespondence{"CIM_StorageSetting.NoSinglePointOfFailure"}]
	boolean NoSinglePointOfFailure;

 	[MappingStrings{"MIF.DMTF|Volume Set|001.3"}, Override ( "NumberOfBlocks" )]
	uint64 NumberOfBlocks;

 	[ArrayType ( "Indexed" ), Description ( "Operational status." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "How many physical packages can currently fail without data loss. " ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyGoal", "CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin"}]
	uint16 PackageRedundancy = 0;

 	[Description ( "By definition, Primordial is false. The DiskDriveExtents are considered to be the Primordial extents. " )]
	boolean Primordial = false;

 	[Description ( "The scoping System\'s CreationClassName. Set to \'IBMTSDS_StorageSystem\'." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_System.Name" )]
	string SystemName;


};

// IBMTSDS_ArrayBasedOnArraySiteExtent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_ArraySiteExtent and IBMTSDS_ArrayExtent. It is strongly suggested to treat this as a generic BasedOnassociation, to be traversed from Primordial StorageExtent to the volume, rather than a vendor or device specific association.Only valid for DS." ),  Version ( "2.6.0" )]
class IBMTSDS_ArrayBasedOnArraySiteExtent : CIM_CompositeExtentBasedOn {
	[Description ( "The lower level StorageExtent." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ArraySiteExtent ref Antecedent;

 	[Description ( "The higher level StorageExtent." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_ArrayExtent ref Dependent;

 	[Description ( "EndingAddress indicates where in lower level storage, the higher level Extent ends. This property is useful when mapping non-contiguous Extents into a higher level grouping. This is unknown, and set to 0." )]
	uint64 EndingAddress = 0;

 	[Description ( "Not supported. Set to 0." )]
	uint16 OrderIndex = 0;

 	[Description ( "StartingAddress indicates where in lower level storage, the higher level Extent begins. This is unknown, and set to 0." )]
	uint64 StartingAddress = 0;


};

// CIM_NetworkPipe

	[Description ( "NetworkPipe is a subclass of EnabledLogicalElement, representing the state and management of a connection or trail between endpoints. This object is different than the association between the endpoints (CIM_ActiveConnection) since the emphasis is NOT on the endpoints but on the management of the pipe itself - its state, configuration, etc. NetworkPipes are defined in the context of a CIM_Network and represent the \'transfer of information . . . between . . . endpoints\'. These concepts are aligned with the definition of the Pipe object in ITU\'s M.3100 specification." ), MappingStrings{"Recommendation.ITU|M3100.Pipe", "Recommendation.ITU|M3100.TrailR1", "Recommendation.ITU|M3100.ConnectionR1", "Recommendation.ITU|M3100.SubNetworkConnection"}, Version ( "2.7.0" )]
class CIM_NetworkPipe : CIM_EnabledLogicalElement {
	[Description ( "Indicates whether the pipe is composed of lower-level pipes, and if so, how these lower-level pipes are aggregated (in parallel or in sequence). The specific instances of NetworkPipe that are combined are described using the NetworkPipeComposition association. \n\nIn the context of M.3100, the ability to be composed of lower-level pipes is modeled as a Trail. A Trail is made up of one or more Connections. (Note that both Trails and Connections are subclasses of Pipe). Because of the flexibility of the NetworkPipeComposition association, there is no need to subclass NetworkPipe, as was done in M.3100, but merely to instantiate the NetworkPipeComposition association to describe the bundling of the lower-level pipes (i.e., the connections), or the sequencing of them." ), ValueMap{"0", "2", "3", "4"}, Values{"Unknown", "No Lower-Level Composition", "Combined In Parallel", "Combined In Sequence"}]
	uint16 AggregationBehavior;

 	[Description ( "Indicates whether the pipe is bi-directional (value = 2), unidirectional (value = 3), or this information is not known (value = 0). For unidirectional pipes, the source and sink are indicated by a property (SourceOrSink) of the association, EndpointOfNetworkPipe." ), MappingStrings{"Recommendation.ITU|M3100.Pipe.directionality"}, ValueMap{"0", "2", "3"}, Values{"Unknown", "Bi-Directional", "Unidirectional"}]
	uint16 Directionality;

 	[MappingStrings{"Recommendation.ITU|M3100.Pipe.operationalState"}, Override ( "EnabledState" )]
	uint16 EnabledState;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: \n<OrgID>:<LocalID> \nWhere <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>. (For DMTF defined instances, the \'preferred\' algorithm MUST be used with the <OrgID> set to \'CIM\'.) \n<LocalID> MUST include either a vendor specified unique identifier, or if mapping from an ITU M.3100 environment, the trailID, connectionID or subNetworkConnectionID of the instances of PipeR2." ), Key ( true ), MappingStrings{"Recommendation.ITU|M3100.TrailR1.trailId", "Recommendation.ITU|M3100.ConnectionR1.connectionID", "Recommendation.ITU|M3100.SubNetworkConnection.subNetworkConnectionID"}]
	string InstanceID;

 	[MappingStrings{"Recommendation.ITU|M3100.Pipe.administrativeState"}, Override ( "RequestedState" ), Write ( true )]
	uint16 RequestedState = 5;


};

// CIM_SecurityService

	[Abstract ( true ), Description ( "A service providing security functionaity." ), Version ( "2.6.0" )]
class CIM_SecurityService : CIM_Service {
};

// CIM_AuthorizationService

	[Abstract ( true ), Description ( "CIM_AuthorizationService determines whether an Identity, established by an AuthorizationService, is permitted access to a resource or set of resources." ), Version ( "2.8.0" )]
class CIM_AuthorizationService : CIM_SecurityService {
};

// CIM_PrivilegeManagementService

	[Description ( "The PrivilegeManagementService is responsible for creating, deleting, and associating AuthorizedPrivilege instances. References to \'subject\' and \'target\' define the entities that are associated with an AuthorizedPrivilege instance via the relationships, AuthorizedSubject and AuthorizedTarget, respectively. When created, an AuthorizedPrivilege instance is related to this (PrivilegeManagement)Service via the association, ConcreteDependency." ), Version ( "2.8.1000" )]
class CIM_PrivilegeManagementService : CIM_AuthorizationService {
		[Description ( "When this method is called, a provider updates the specified Subject\'s rights to the Target according to the parameters of this call. The rights are modeled via an AuthorizedPrivilege instance. If an AuthorizedPrivilege instance is created as a result of this call, it MUST be linked to the Subject and Target via the AuthorizedSubject and AuthorizedTarget associations, respectively. When created, the AuthorizedPrivilege instance is associated to this PrivilegeManagementService via ConcreteDependency. If the execution of this call results in no rights between the Subject and Target, then they MUST NOT be linked to a particular AuthorizedPrivilege instance via AuthorizedSubject and AuthorizedTarget respectively. \n\nNote that regardless of whether specified via parameter, or template, the Activities, ActivityQualifiers and QualifierFormats, are mutually indexed. Also note that Subject and Target references MUST be supplied. \n\nThe successful completion of the method SHALL create any necessary AuthorizedSubject, AuthorizedTarget, AuthorizedPrivilege, HostedDependency, and ConcreteDependency instances. \nNote if an associated PrivilegeManagementCapabilities.SharedPrivilegeSupported is FALSE, then an \'Unsupported Shared Privilege\' error will be returned if either the Subjects or the Targets parameter of the AssignAccess method has more than one entry." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..15999", "16000", "16001", "16002", "16003", "16004", "16005", "16005..31999", "32000..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Unsupported Subject", "Unsupported Privilege", "Unsupported Target", "Authorization Error", "NULL not supported", "UnSupported Sharing Privileges", "Method Reserved", "Vendor Specific"}]
	uint32 AssignAccess(
		[ArrayType ( "Indexed" ), Description ( "MUST be NULL unless the Privilege is NULL on input. This parameter specifies the activities to be granted or denied." ), IN ( true ), ModelCorrespondence{"CIM_AuthorizedPrivilege.Activities", "CIM_PrivilegeManagementService.AssignAccess.Privilege"}, ValueMap{"1", "2", "3", "4", "5", "6", "7", "..", "16000..65535"}, Values{"Other", "Create", "Delete", "Detect", "Read", "Write", "Execute", "DMTF Reserved", "Vendor Reserved"}]
		uint16 Activities,
	 	[ArrayType ( "Indexed" ), Description ( "MUST be NULL unless Privilege is NULL on input. This parameter defines the activity qualifiers for the Activities to be granted or denied." ), IN ( true ), ModelCorrespondence{"CIM_AuthorizedPrivilege.ActivityQualifers", "CIM_PrivilegeManagementService.AssignAccess.Privilege"}]
		string ActivityQualifiers,
	 	[Description ( "On input, this reference MUST be either NULL or refer to an instance of AuthorizedPrivilege that is used as a template. The rights granted by corresponding entries in the Activities, ActivityQualifiers and QualifierFormats array properties are applied incrementally and do not affect unnamed rights. If the property, PrivilegeGranted, is false, then the named rights are removed. If PrivilegeGranted is True, then the named rights are added. (Note that the RemoveAccess method SHOULD be used to completely remove all privileges between a subject and a target. On output, this property references an AuthorizedPrivilege instance that represents the resulting rights between the named Subject and the named Target. AuthorizedPrivilege instances used as a templates in this property SHOULD have a HostedDependency association to the PriviligeManagementService and SHOULD NOT have any AuthorizedTarget or AuthorizedSubject associations to it." ), IN ( true ), OUT ( true )]
		CIM_AuthorizedPrivilege ref Privilege,
	 	[Description ( "MUST be NULL unless Privilege is NULL on input. The PrivilegeGranted flag indicates whether the rights defined by the parameters in this call should be granted or denied to the named Subject/Target pair." ), IN ( true ), ModelCorrespondence{"CIM_AuthorizedPrivilege.PrivilegeGranted", "CIM_PrivilegeManagementService.AssignAccess.Privilege"}]
		boolean PrivilegeGranted,
	 	[ArrayType ( "Indexed" ), Description ( "MUST be NULL unless Privilege is NULL on input. This parameter defines the qualifier formats for the corresponding ActivityQualifiers." ), IN ( true ), ModelCorrespondence{"CIM_AuthorizedPrivilege.QualifierFormats", "CIM_PrivilegeManagementService.AssignAccess.Privilege"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "..", "16000..65535"}, Values{"Class Name", "<Class.>Property", "<Class.>Method", "Object Reference", "Namespace", "URL", "Directory/File Name", "Command Line Instruction", "SCSI Command", "Packets", "DMTF Reserved", "Vendor Reserved"}]
		uint16 QualifierFormats,
	 	[Description ( "The Subject parameter is a reference to a ManagedElement instance. This parameter MUST be supplied." ), IN ( true ), Required ( true )]
		CIM_ManagedElement ref Subject,
	 	[Description ( "The Target parameter is a reference to an instance of ManagedElement. This parameter MUST be supplied." ), IN ( true ), Required ( true )]
		CIM_ManagedElement ref Target
	);
	 	[Description ( "ChangeAccess updates the specified Subject\'s rights to the Target according to the parameters of this call. The method may be called to update the propagation of Privileges, and/or to define new Privileges for a Subject/Target pair. Because the Subject/Target pair is required in any usage scenario, these parameters are defined as Required. \n\nIf an instance of Privilege is created, it is associated to this Service via ConcreteDependency. Further, if the Privilege is an AuthorizedPrivilege, it is linked to the specified Subject and Target via the AuthorizedSubject and AuthorizedTarget associations, respectively." ), ValueMap{"0", "1", "2", "3", "4", "5", "..", "16000", "16001", "16002", "16003", "16004", "16005..31999", "32000..65535"}, Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Unsupported Subject", "Unsupported Privilege", "Unsupported Target", "Authorization Error", "NULL not supported", "Method Reserved", "Vendor Specific"}]
	uint32 ChangeAccess(
		[Description ( "A set of zero or more instances of CIM_Privilege (or a subclass of Privilege) that are passed \'by value\' as embedded objects. An embedded object is used since the Privilege may only define a subset of the total rights that should be assigned or revoked. On input, Privilege.PrivilegeGranted MAY be set to False to indicate that the enclosed rights are denied. On return, the embedded Privilege objects represent the cumulative rights granted between the specified Subject and Target (filtered to return the information that the requestor is authorized to view). If the Privileges array is empty, then there exist NO rights that the requestor is authorized to view between the Subject/Target pair." ), EmbeddedObject ( true ), IN ( true ), OUT ( true )]
		string Privileges,
	 	[Description ( "If supplied, PropagationPolicy defines the policy rules that govern how the specified access rights are propagated to instances associated with the named Subject and/or Target. If a policy rule is not supplied, the rights defined in the Privilege are only granted or denied between the named Subject and Target." ), IN ( true )]
		CIM_PrivilegePropagationRule ref PropagationPolicies[],
	 	[Description ( "The Subject parameter is required and references an instance of ManagedElement. The result of this operation is that the Subject SHALL be authorized to access or define the authorization rights for the Target, via one or more instances of the Privilege class - where the Privileges represent the cumulative rights of this Subject. The distinction between the Privileges specified in this method call and the \'cumulative rights\' is that the implementation returns all rights that the Subject has in regards to the Target (that the requestor is authorized to review), versus the specific subset that may be specified in this method call. The exception to the above is when there are no remaining rights between the Subject and Target. In that case, the Privilege instance MAY be deleted. \n\nNote that even if the Subject element is a Collection, the operation is only applied to the Collection itself and NOT its members via MemberOfCollection unless an appropriate PolicyPropagationRule is specified. In either case, the output parameters for this method pertain only to the specified Subject/Collection and Target, and do not provide details on the individual members of the Collection. If this information is needed, use the ShowAccess method. \n\nAs noted in the method Description, if the resultant Privileges are AuthorizedPrivileges, then AuthorizedSubject associations SHALL be created." ), IN ( true ), Required ( true )]
		CIM_ManagedElement ref Subject,
	 	[Description ( "The Target parameter is required and references an instance of ManagedElement. The result of this operation is that the Subject SHALL be authorized to access or define the authorization rights for the Target, via one or more instances of the Privilege class - where the Privileges represent the cumulative rights of this Subject. The distinction between the Privileges specified in this method call and the \'cumulative rights\' is that the implementation returns all rights that the Subject has in regards to this Target (that the requestor is authorized to review), versus the specific subset that may be specified in this method call. The exception to the above is when there are no remaining rights between the Subject and Target. In that case, the Privilege instance MAY be deleted. \n\nNote that even if the Target element is a Collection, the operation is only applied to the Collection itself and NOT its members via MemberOfCollection unless an appropriate PolicyPropagationRule is specified. In either case, the output parameters for this method pertain only to the specified Subject and Target/Collection, and do not provide details on the individual members of the Collection. If this information is needed, use the ShowAccess method. \n\nAs noted in the method Description, if the resultant Privileges are AuthorizedPrivileges, then AuthorizedTarget associations SHALL be created." ), IN ( true ), Required ( true )]
		CIM_ManagedElement ref Target
	);
	 	[Description ( "This method revokes a specific AuthorizedPrivilege or all privileges for a particular target, subject, or subject/target pair. If an AuthorizedPrivilege instance is left with no AuthorizedTarget associations, it SHOULD be deleted. The successful completion of the method SHALL remove the directly or indirectly requested AuthorizedSubject, AuthorizedTarget and AuthorizedPrivilege instances." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..15999", "16000", "16001", "16002", "16003", "16004..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Unsupported Privilege", "Unsupported Target", "Authorization Error", "Null parameter not supported", "Method Reserved", "Vendor Specific"}]
	uint32 RemoveAccess(
		[Description ( "A reference to the AuthorizedPrivilege to be revoked." ), IN ( true )]
		CIM_AuthorizedPrivilege ref Privilege,
	 	[Description ( "The Subject parameter is a reference to a ManagedElement instance (associated via AuthorizedSubject) for which privileges are to be revoked." ), IN ( true )]
		CIM_ManagedElement ref Subject,
	 	[Description ( "The Target parameter is a reference to a ManagedElement (associated via AuthorizedTarget) which will no longer be protected via the AuthorizedPrivilege." ), IN ( true )]
		CIM_ManagedElement ref Target
	);
	 	[Description ( "ShowAccess reports the Privileges (i.e., rights) granted to a particular Subject and/or Target pair. Either a Subject, a Target or both MUST be specified. In the case where only one is specified, the method will return all rights to all Targets for the specified Subject, or all rights for all subjects which apply to the specified Target. \n\nShowAccess returns the cumulative rights granted between the OutSubjects and OutTargets at the same array index (filtered to return the information that the requestor is authorized to view). If a specific array entry is NULL, then there exist NO rights that the requestor is authorized to view between the Subject/Target pair. \n\nNote that the Privileges returned by this method MAY NOT correspond to what is actually instantiated in the model, and MAY be optimized for ease of reporting. Hence, the data is passed \'by value\', as embedded objects. Also, note that multiple Privileges MAY be defined for a given Subject/Target pair. \n\nOther mechanisms MAY also be used to retrieve this information. CIM Operations\' EnumerateInstances MAY be used to return all Privileges currently instantiated within a namespace. Also, if the AuthorizedPrivilege subclass is instantiated, the CIM Operation Associators MAY be used to navigate from the Privilege to AuthorizedSubjects and AuthorizedTargets. These CIM Operations will not generally provide the functionality or optimizations available with ShowAccess." ), ValueMap{"0", "1", "2", "3", "4", "5", "..", "16000", "16002", "16003", "16004", "16005..31999", "32000..65535"}, Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Unsupported Subject", "Unsupported Target", "Authorization Error", "NULL not supported", "Method Reserved", "Vendor Specific"}]
	uint32 ShowAccess(
		[ArrayType ( "Indexed" ), Description ( "The array of Subject REFs corresponding to the individual Privileges and OutTargets arrays. The resulting OutSubjects, Privileges and OutTargets arrays define the cumulative rights granted between the Subject/Target at the corresponding index (filtered to return the information that the requestor is authorized to view)." ), IN ( false ), ModelCorrespondence{"CIM_PrivilegeManagementService.ShowAccess.Subject", "CIM_PrivilegeManagementService.ShowAccess.Privileges", "CIM_PrivilegeManagementService.ShowAccess.OutTargets"}, OUT ( true )]
		CIM_ManagedElement ref OutSubjects[],
	 	[ArrayType ( "Indexed" ), Description ( "The array of Target REFs corresponding to the individual Privileges and OutSubjects arrays. The resulting OutSubjects, Privileges and OutTargets arrays define the cumulative rights granted between the Subject/Target at the corresponding index (filtered to return the information that the requestor is authorized to view)." ), IN ( false ), ModelCorrespondence{"CIM_PrivilegeManagementService.ShowAccess.Target", "CIM_PrivilegeManagementService.ShowAccess.Privileges", "CIM_PrivilegeManagementService.ShowAccess.OutSubjects"}, OUT ( true )]
		CIM_ManagedElement ref OutTargets[],
	 	[ArrayType ( "Indexed" ), Description ( "The returned Privilege objects represent the cumulative rights granted between the OutSubjects and OutTargets at the same array index (filtered to return the information that the requestor is authorized to view). If a specific array entry is NULL, then there exist NO rights that the requestor is authorized to view between the Subject/Target pair." ), EmbeddedObject ( true ), IN ( false ), ModelCorrespondence{"CIM_PrivilegeManagementService.ShowAccess.OutTargets", "CIM_PrivilegeManagementService.ShowAccess.OutSubjects"}, OUT ( true )]
		string Privileges,
	 	[Description ( "The Subject parameter references an instance of ManagedElement. The result of this operation is that the cumulative rights of the Subject to access or define authorization rights for the Target will be reported. If no Subject is specified, then a Target MUST be supplied and ALL Subjects that have rights to access or define authorizations for the Target will be reported. (It should be noted that the information reported MUST be filtered by the rights of the requestor to view that data.) If the Subject element is a Collection, then the operation will specifically report the Privileges for all elements associated to the Collection via MemberOfCollection. These elements will be reported individually in the returned OutSubjects array." ), IN ( true ), ModelCorrespondence{"CIM_PrivilegeManagementService.ShowAccess.Target"}]
		CIM_ManagedElement ref Subject,
	 	[Description ( "The Target parameter references an instance of ManagedElement. The result of this operation is that the cumulative rights of the Subject to access or define authorization rights for the Target will be reported. If no Target is specified, then a Subject MUST be supplied and ALL Targets for which that the Subject has rights to access or define authorization will be reported. (It should be noted that the information reported MUST be filtered by the rights of the requestor to view that data.) If the Target element is a Collection, then the operation will be applied to all elements associated to the Collection via MemberOfCollection. These elements will be reported individually in the returned OutTargets array." ), IN ( true ), ModelCorrespondence{"CIM_PrivilegeManagementService.ShowAccess.Subject"}]
		CIM_ManagedElement ref Target
	);
};

// IBMTSDS_PrivilegeManagementService

	[Description ( "The PrivilegeManagementService is responsible for creating, deleting, and associating Privilege instances.  References to \'target\' define the entity (or entities) that are associated with a Privilege instance via AuthorizedTarget. References to \'subject\' define the elements associated to the Privilege instance via AuthorizedSubject. The Privilege instance is related to this AuthenticationService via ConcreteDependency." ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_PrivilegeManagementService : CIM_PrivilegeManagementService {
	[Description ( "The name of the concrete subclass" ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "User friendly name. Same as Name." ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "Uniquely identifies the service. Of the form \'PrivilegeManagementService for <StorageSystem.Name>\'" ), Override ( "Name" )]
	string Name;

 	[Description ( "The scoping System CreationClassName" ), MaxLen ( 256 ), Override ( "SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System name" ), MaxLen ( 256 ), Override ( "SystemName" )]
	string SystemName;


		[Description ( "When this method is called, a provider identifies an appropriate existing Privilege or creates a new instance of Privilege to satisfy the parameters of the request.  The Privilege is linked to the ManagedElements that are its subject and target via the AuthorizedSubject and AuthorizedTarget associations, respectively.  When created, the Privilege instance is associated to this PrivilegeManagementService via ConcreteDependency.\nNote that the method\'s input parameters, Activities, ActivityQualifiers and QualifierFormats, are mutually indexed.  Values for these parameters MAY be supplied with the method invocation or MAY be obtained via reference to an existing Privilege.  One of these two approaches MUST be taken to specify the values of the Privilege\'s properties.  Also note that Subject and Target references MAY be supplied.\nThe successful completion of the method SHALL create any necessary AuthorizedSubject, AuthorizedTarget and Privilege instances.  Returning references to the AuthorizedSubject and AuthorizedTarget instances is NOT REQUIRED since they can be construed using the Privilege output parameter and intrinsic methods." ), Override ( "AssignAccess" ), ValueMap{"0", "1", "2", "3", "4", "5", "6..15999", "16000", "16001", "16002", "16003", "16004", "16005..31999", "32000..65535"}, Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Unsupported Subject", "Unsupported Privilege", "Unsupported Target", "Authorization Error", "NULL not supported", "Method Reserved", "Vendor Specific"}]
	uint32 AssignAccess(
		[ArrayType ( "Indexed" ), Description ( "The activities granted in the new/existing Privilege." ), IN ( true ), ModelCorrespondence{"CIM_Privilege.Activities"}, ValueMap{"Other", "Create", "Delete", "Detect", "Read", "Write", "Execute", "DMTF Reserved", "Vendor Reserved"}, Values{"1", "2", "3", "4", "5", "6", "7", "8..15999", "16000..65535"}]
		uint16 Activities,
	 	[ArrayType ( "Indexed" ), Description ( "The activity qualifiers set in the new/existing Privilege." ), IN ( true ), ModelCorrespondence{"CIM_Privilege.ActivityQualifers"}]
		string ActivityQualifiers,
	 	[Description ( "Reference to the Privilege used or created.If a reference is not provided, an implementation MAY create a new instance of Privilege, or MAY reuse an existing one. The Privilege that is created or reused is returned in this parameter. If a reference is input, it serves as the definition of the Privilege, replacing the method\'s input parameters, PrivilegeGranted, Activities[]  ActivityQualifiers[] and QualifierFormats[]. Also, the existing Privilege defines the relevant \'subject\' and \'target\' ManagedElements, when one or the other of the Subject/Target input parameters is not specified. An implementation MAY use the supplied reference purely as a template and MAY return a reference to a different Privilege instance" ), IN ( true ), OUT ( true )]
		CIM_AuthorizedPrivilege ref Privilege,
	 	[Description ( "The PrivilegesGranted flag in the new/existing Privilege." ), IN ( true ), ModelCorrespondence{"CIM_Privilege.PrivilegeGranted"}]
		boolean PrivilegeGranted,
	 	[ArrayType ( "Indexed" ), Description ( "The qualifier formats set in the new/existing Privilege." ), IN ( true ), ModelCorrespondence{"CIM_Privilege.QualifierFormats"}, ValueMap{"Class Name", "<Class.>Property", "<Class.>Method", "Object Reference", "Namespace", "URL", "Directory/File Name", "Command Line Instruction", "DMTF Reserved", "Vendor Reserved"}, Values{"2", "3", "4", "5", "6", "7", "8", "9", "10..15999", "16000..65535"}]
		uint16 QualifierFormats,
	 	[Description ( "The Subject parameter is a reference to a ManagedElement instance that SHALL be associated via AuthorizedSubject to the Privilege. This parameter MAY NOT be supplied when an existing Privilege is referenced by the Privilege parameter. Note that a Subject reference MUST be provided when creating a new instance of Privilege." ), IN ( true )]
		CIM_ManagedElement ref Subject,
	 	[Description ( "The Target parameter is a reference to a ManagedElement that SHALL be associated via AuthorizedTarget to the Privilege. This parameter MAY NOT be supplied when an existing Privilege is referenced by the Privilege parameter. Note that a Target reference MUST be provided when creating a new instance of Privilege." ), IN ( true )]
		CIM_ManagedElement ref Target
	);
	 	[Description ( "This method revokes a specific privilege or all privileges for a particular target, subject, or subject/target pair.  If a Privilege instance is left with no AuthorizedTarget associations, it SHOULD be deleted.  The successful completion of the method SHALL remove the directly or indirectly requested AuthorizedSubject, AuthorizedTarget and Privilege instances." ), Override ( "RemoveAccess" ), ValueMap{"0", "1", "2", "3", "4", "5", "6..15999", "16000", "16001", "16002", "16003", "16004..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Unsupported Privilege", "Unsupported Target", "Authorization Error", "Null parameter not supported", "Method Reserved", "Vendor Specific"}]
	uint32 RemoveAccess(
		[ArrayType ( "Indexed" ), Description ( "A reference to the Privilege to be revoked." ), IN ( true )]
		CIM_AuthorizedPrivilege ref Privilege,
	 	[Description ( "The Subject parameter is a reference to a ManagedElement instance (associated via AuthorizedSubject) for which privileges are to be revoked." ), IN ( true )]
		CIM_ManagedElement ref Subject,
	 	[ArrayType ( "Indexed" ), Description ( "The Target parameter is a reference to a ManagedElement (associated via AuthorizedTarget) which will no longer be protected via the Privilege." ), IN ( true )]
		CIM_ManagedElement ref Target
	);
};

// CIM_Privilege

	[Description ( "Privilege is the base class for all types of activities which are granted or denied by a Role or an Identity. Whether an individual Privilege is granted or denied is defined using the PrivilegeGranted boolean. Any Privileges not specifically granted are assumed to be denied. An explicit deny (Privilege Granted = FALSE) takes precedence over any granted Privileges. \n\nThe association of subjects (Roles and Identities) to Privileges is accomplished using policy or explicitly via the associations on a subclass. The entities that are protected (targets) can be similarly defined. \n\nNote that Privileges may be inherited through hierarchical Roles, or may overlap. For example, a Privilege denying any instance Writes in a particular CIM Server Namespace would overlap with a Privilege defining specific access rights at an instance level within that Namespace. In this example, the AuthorizedSubjects are either Identities or Roles, and the AuthorizedTargets are a Namespace in the former case, and a particular instance in the latter." ), Version ( "2.8.1000" )]
class CIM_Privilege : CIM_ManagedElement {
	[ArrayType ( "Indexed" ), Description ( "An enumeration indicating the activities that are granted or denied. These activities apply to all entities specified in the ActivityQualifiers array. The values in the enumeration are straightforward except for one, 4=\"Detect\". This value indicates that the existence or presence of an entity may be determined, but not necessarily specific data (which requires the Read privilege to be true). This activity is exemplified by \'hidden files\'- if you list the contents of a directory, you will not see hidden files. However, if you know a specific file name, or know how to expose hidden files, then they can be \'detected\'. Another example is the ability to define search privileges in directory implementations." ), ModelCorrespondence{"CIM_Privilege.ActivityQualifiers"}, ValueMap{"1", "2", "3", "4", "5", "6", "7", "..", "16000.."}, Values{"Other", "Create", "Delete", "Detect", "Read", "Write", "Execute", "DMTF Reserved", "Vendor Reserved"}]
	uint16 Activities[];

 	[ArrayType ( "Indexed" ), Description ( "The ActivityQualifiers property is an array of string values used to further qualify and specify the privileges granted or denied. For example, it is used to specify a set of files for which \'Read\'/\'Write\' access is permitted or denied. Or, it defines a class\' methods that may be \'Executed\'. Details on the semantics of the individual entries in ActivityQualifiers are provided by corresponding entries in the QualifierFormats array." ), ModelCorrespondence{"CIM_Privilege.Activities", "CIM_Privilege.QualifierFormats"}]
	string ActivityQualifiers[];

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: \n<OrgID>:<LocalID> \nWhere <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. If the above \'preferred\' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance\'s NameSpace. For DMTF defined instances, the \'preferred\' algorithm MUST be used with the <OrgID> set to \'CIM\'." ), Key ( true )]
	string InstanceID;

 	[Description ( "Boolean indicating whether the Privilege is granted (TRUE) or denied (FALSE). The default is to grant permission." )]
	boolean PrivilegeGranted = true;

 	[ArrayType ( "Indexed" ), Description ( "Defines the semantics of corresponding entries in the ActivityQualifiers array. An example of each of these \'formats\' and their use follows: \n- 2=Class Name. Example: If the authorization target is a CIM Service or a Namespace, then the ActivityQualifiers entries can define a list of classes that the authorized subject is able to create or delete. \n- 3=<Class.>Property. Example: If the authorization target is a CIM Service, Namespace or Collection of instances, then the ActivityQualifiers entries can define the class properties that may or may not be accessed. In this case, the class names are specified with the property names to avoid ambiguity - since a CIM Service, Namespace or Collection could manage multiple classes. On the other hand, if the authorization target is an individual instance, then there is no possible ambiguity and the class name may be omitted. To specify ALL properties, the wildcard string \"*\" should be used. \n- 4=<Class.>Method. This example is very similar to the Property one, above. And, as above, the string \"*\" may be specified to select ALL methods. \n- 5=Object Reference. Example: If the authorization target is a CIM Service or Namespace, then the ActivityQualifiers entries can define a list of object references (as strings) that the authorized subject can access. \n- 6=Namespace. Example: If the authorization target is a CIM Service, then the ActivityQualifiers entries can define a list of Namespaces that the authorized subject is able to access. \n- 7=URL. Example: An authorization target may not be defined, but a Privilege could be used to deny access to specific URLs by individual Identities or for specific Roles, such as the \'under 17\' Role. \n- 8=Directory/File Name. Example: If the authorization target is a FileSystem, then the ActivityQualifiers entries can define a list of directories and files whose access is protected. \n- 9=Command Line Instruction. Example: If the authorization target is a ComputerSystem or Service, then the ActivityQualifiers entries can define a list of command line instructions that may or may not be \'Executed\' by the authorized subjects. \n- 10=SCSI Command, using a format of \'CDB=xx[,Page=pp]\'. For example, the ability to select the VPD page of the Inquiry command is encoded as \'CDB=12,Page=83\' in the corresponding ActivityQualifiers entry. A \'*\' may be used to indicate all CDBs or Page numbers. \n- 11=Packets. Example: The transmission of packets is permitted or denied by the Privilege for the target (a ComputerSystem, ProtocolEndpoint, Pipe, or other ManagedSystemElement)." ), ModelCorrespondence{"CIM_Privilege.ActivityQualifiers"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "..", "16000.."}, Values{"Class Name", "<Class.>Property", "<Class.>Method", "Object Reference", "Namespace", "URL", "Directory/File Name", "Command Line Instruction", "SCSI Command", "Packets", "DMTF Reserved", "Vendor Reserved"}]
	uint16 QualifierFormats[];

 	[Description ( "The RepresentsAuthorizationRights flag indicates whether the rights defined by this instance should be interpreted as rights of Subjects to access Targets or as rights of Subjects to change those rights on/for Targets." ), Experimental ( true )]
	boolean RepresentsAuthorizationRights = false;


};

// CIM_AuthorizedPrivilege

	[Abstract ( true ), Description ( "Privilege is the base class for all types of activities which are granted or denied to a Role or an Identity. AuthorizedPrivilege is a subclass defining static renderings of authorization policy rules. The association of Roles and Identities to AuthorizedPrivilege is accomplished using the AuthorizedSubject relationship. The entities that are protected are defined using the AuthorizedTarget relationship. \n\nNote that this class and its AuthorizedSubject/Target associations provide a short-hand, static mechanism to represent authorization policies." ), Version ( "2.8.0" )]
class CIM_AuthorizedPrivilege : CIM_Privilege {
};

// IBMTSDS_Privilege

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "Privilege is the base class for all types of activities which are granted or denied by a Role or an Identity.  Whether an individual Privilege is granted or denied is defined using the PrivilegeGranted boolean.  Any Privileges not specifically granted are assumed to be denied.  An explicit deny (Privilege Granted = FALSE) takes precedence over any granted Privileges.The association of subjects (Roles and Identities) to Privileges is accomplished using policy or explicitly via the associations on a subclass. The entities that are protected (targets) can be similarly defined.Note that Privileges may be inherited through hierarchical Roles, or may overlap.  For example, a Privilege denying any instance Writes in a particular CIM Server Namespace would overlap with a Privilege defining specific access rights at an instance level within that Namespace.  In this example, the AuthorizedSubjects are either Identities or Roles, and the AuthorizedTargets are a Namespace in the former case, and a particular instance in the latter." ),  Version ( "2.10.0" )]
class IBMTSDS_Privilege : CIM_AuthorizedPrivilege {
	[ArrayType ( "Indexed" ), Description ( "An enumeration indicating the activities that are granted or denied. This value indicates that the existence or  presence of an entity may be determined, but not necessarily specific data (which requires the Read privilege to be true).  This activity is exemplified by \'hidden files\'- if you list the contents of a directory, you will not see hidden files.  However, if you know a specific file name, or know how to expose hidden files, then they can be \'detected\'.  Another example is the ability to define search privileges in directory implementations." ), ModelCorrespondence{"CIM_Privilege.ActivityQualifiers"}, Override ( "Activities" ), ValueMap{"1", "2", "3", "4", "5", "6", "7", "..15999", "16000.."}, Values{"Other", "Create", "Delete", "Detect", "Read", "Write", "Execute", "DMTF Reserved", "Vendor Reserved"}]
	uint16 Activities[] = {5, 6};

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class.  In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: <OrgID>:<LocalID> 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>.<LocalID> is chosen by the business entity and SHOULD not be re-used to identify different underlying (real-world) elements.  If the above \'preferred\' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance\'s NameSpace.  For DMTF defined instances, the \'preferred\' algorithm MUST be used with the <OrgID> set to \'CIM\'.The format for InstanceID is IBMTSDS:<SystemName>-<WWPN>-<ID>" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "Boolean indicating whether the Privilege is granted (TRUE) or denied (FALSE). The default is to grant permission." ), Override ( "PrivilegeGranted" )]
	boolean PrivilegeGranted = true;


};

// IBMTSDS_ConcreteDependencyPrivilege

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_ConcreteDependencyPrivilege : CIM_ConcreteDependency {
	[Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_PrivilegeManagementService ref Antecedent;

 	[Key ( true ), Override ( "Dependent" )]
	IBMTSDS_Privilege ref Dependent;


};

// IBMTSDS_DiskExtent

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "DiskExtent describes the capabilities and management of Disk Drives." ),  Version ( "2.8.1000" )]
class IBMTSDS_DiskExtent : CIM_StorageExtent {
	[Description ( "Access describes whether the media is readable (value=1), writeable (value=2), or both (value=3). \"Unknown\" (0) and \"Write Once\" (4) can also be defined." ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Unknown", "Readable", "Writeable", "Read/Write Supported", "Write Once"}]
	uint16 Access = 3;

 	[Description ( "Size in bytes of the blocks which form this StorageExtent. If variable block size, then the maximum block size in bytes should be specified. The block size for DiskExtent is 1 (unknown)." ), MappingStrings{"MIF.DMTF|Host Storage|001.4", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits", "MIF.DMTF|Storage Devices|001.5"}, Units ( "Bytes" )]
	uint64 BlockSize = 1;

 	[Description ( "The maximum number of blocks, of size BlockSize, which are available for consumption when layering StorageExtents using the BasedOn association. This property only has meaning when this StorageExtent is an Antecedent reference in a BasedOn relationship. For example, a StorageExtent could be composed of 120 blocks. However, the Extent itself may use 20 blocks for redundancy data. For DiskExtent, the value for this property is the same as NumberOfBlocks." )]
	uint64 ConsumableBlocks;

 	[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. This class is IBMTSDS_DiskExtent." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "Type of data organization used. The value is \'Unknown\'." ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Other", "Unknown", "Fixed Block", "Variable Block", "Count Key Data"}]
	uint16 DataOrganization = 1;

 	[Description ( "An address or other identifying information to uniquely name the LogicalDevice. The value for this property is set to IBMTSDS_DiskDrive.DeviceID." ), Key ( true ), MaxLen ( 64 ), Override ( "DeviceID" )]
	string DeviceID;

 	[Description ( "Same as Name." ), MappingStrings{"SPC.INCITS-T10| VPD 83, Association 0 | Identifier"}, ModelCorrespondence{"CIM_StorageExtent.NameFormat", "CIM_StorageExtent.NameNamespace"}, Override ( "ElementName" )]
	string ElementName;

 	[Description ( "The ExtentStatus property is unused, so it is set to \'Unknown\'. For status information check IBMTSDS_DiskDrive.OperationalStatus" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18..32767", "32768..65535"}, Values{"Other", "Unknown", "None/Not Applicable", "Broken", "Data Lost", "Dynamic Reconfig", "Exposed", "Fractionally Exposed", "Partially Exposed", "Protection Disabled", "Readying", "Rebuild", "Recalculate", "Spare in Use", "Verify In Progress", "In-Band Access Granted", "Imported", "Exported", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ExtentStatus[] = {1};

 	[Description ( "Health state." ), Experimental ( true ), ValueMap{"0", "5", "10", "15", "20", "25", "30", ".."}, Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"}]
	uint16 HealthState;

 	[Description ( "A unique identifier for the Extent. The value is of the form \'StorageExtent for DiskDrive <IBMTSDS_DiskDrive.DeviceID>." ), MappingStrings{"SPC.INCITS-T10| VPD 83, Association 0 | Identifier"}, ModelCorrespondence{"CIM_StorageExtent.NameFormat", "CIM_StorageExtent.NameNamespace"}, Override ( "Name" )]
	string Name;

 	[Description ( "Format of the Name property." ), ModelCorrespondence{"CIM_StorageExtent.Name", "CIM_StorageExtent.NameNamespace", "CIM_StorageExtent.OtherNameFormat"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}, Values{"Unknown", "Other", "VPD83NAA6", "VPD83NAA5", "VPD83Type2", "VPD83Type1", "VPD83Type0", "SNVM", "NodeWWN", "NAA", "EUI64", "T10VID", "OS Device Name"}]
	uint16 NameFormat = 1;

 	[Description ( "Total number of logically contiguous blocks, of size Block Size, which form this Extent. Since BlockSize for DiskExtent is set to 1, NumberOfBlocks is simply the capacity of this DiskExtent in bytes." ), MappingStrings{"MIF.DMTF|Host Storage|001.5", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageSize"}]
	uint64 NumberOfBlocks;

 	[ArrayType ( "Indexed" ), Description ( "Operational status." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "If true, \"Primordial\" indicates that the containing System does not have the ability to create or delete this operational element. This is important because StorageExtents are assembled into higher-level abstractions using the BasedOn association. Although the higher-level abstractions can be created and deleted, the most basic, (i.e. primordial), hardware-based storage entities 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. In other words, a Primordial StorageExtent exists in, but is not created by its System and conversely a non-Primordial StorageExtent is created in the context of its System. For StorageVolumes, this property will generally be false. One use of this property is to enable algorithms that aggregate StorageExtent.ConsumableSpace across all, StorageExtents but that also want to distinquish the space that underlies Primordial StoragePools. Since implementations are not required to surface all Component StorageExtents of a StoragePool, this information is not accessible in any other way.\nThe DiskDriveExtent, by definition, is primordial." )]
	boolean Primordial = true;

 	[Description ( "Boolean set to TRUE if the Storage is sequentially accessed by a MediaAccessDevice. A TapePartition is an example of a sequentially accessed StorageExtent. StorageVolumes, Disk Partitions and LogicalDisks represent randomly accessed Extents." )]
	boolean SequentialAccess = false;

 	[Description ( "The scoping System\'s CreationClassName. Set to \'IBMTSDS_StorageSystem\'" ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" )]
	string SystemName;


};

// CIM_StoragePool

	[Description ( "A StoragePool is a conglomeration of storage capacity for the purpose of assignment and allocation based on service characteristics, such as location, available space or other criteria (for example, cost per megabyte or hardware ownership). A StoragePool is managed within the scope of a particular System. StoragePools may consist of component StoragePools or StorageExtents. StorageExtents that belong to the StoragePool have a Component relationship to the StoragePool. StorageExtents/StoragePools that are elements of a pool have their available space aggregated into the pool. StoragePools, StorageVolumes and LogicalDisks may be created from StoragePools. This is indicated by the AllocatedFromStoragePool association. StoragePool is scoped to a system by the HostedStoragePool association." ), Version ( "2.10.0" )]
class CIM_StoragePool : CIM_LogicalElement {
	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: \n<OrgID>:<LocalID> \nWhere <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. If the above \'preferred\' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance\'s NameSpace. \nFor DMTF defined instances, the \'preferred\' algorithm MUST be used with the <OrgID> set to \'CIM\'." ), Key ( true )]
	string InstanceID;

 	[Description ( "LowSpaceWarningThreshold simplifies the creation of a pool specific Indication based on RemainingManagedSpace <= \n(TotalManagedSpace*LowSpaceWarningThreshold)/100. One example client for an Indication based on this property is a delta copy implementation where the pool enables continuous, variable space consumption for the delta storage. Another example client for an Indication based on this property is a provisioning manager implementing a policy for adding storage to a pool when it becomes low." ), Experimental ( true ), MaxValue ( 100 ), MinValue ( 0 ), ModelCorrespondence{"CIM_StoragePool.RemainingManagedSpace"}, Units ( "Percentage" )]
	uint16 LowSpaceWarningThreshold;

 	[Description ( "A unique name in the context of the System that identifies this pool." ), MaxLen ( 256 ), Required ( true )]
	string PoolID;

 	[Description ( "If true, \"Primordial\" indicates that this StoragePool is the base from which storage capacity is drawn and returned in the activity of storage management. Being primordial means that this StoragePool 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 StoragePools. If false, \"Primordial\" indicated that the StoragePool, a concrete Storage Pool, is subject to storage services functions. This distinction is important because higher-level StoragePools may be assembled using the Component or AllocatedFromStoragePool associations. Although the higher-level abstractions can be created and deleted, the most basic, (i.e. primordial), hardware-based StoragePools 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 ( "The remaining usable capacity after the allocation of StorageVolumes, LogicalDisks, or child Storage Pools. This property is maintained here to provide efficient access to this information. However, note that it is possible to compute RemainingManagedSpace as (TotalManagedSpace minus the sum of SpaceConsumed from all of the AllocatedFromStoragePool references from this StoragePool). Note that SpaceConsumed remains useful to determine the amount of capacity consumed by a particular allocated element." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_AllocatedFromStoragePool.SpaceConsumed"}, Required ( true ), Units ( "Bytes" )]
	uint64 RemainingManagedSpace;

 	[Description ( "The total amount of capacity usable for the allocation of StorageVolumes, LogicalDisks, or child Storage Pools. \nFor primordial Storage Pools, this capacity reflects the usable capacity of Disk Drives or LUNs, for example, to the owning storage device or application. For example, in storage array, a primordial Storage Pool\'s TotalManagedSpace does not include metadata such as the disk label area and absolute disk drive capacity lost in disk formatting. \nFor concrete Storage Pools, the same applies, but the metadata not included in TotalManagedSpace is consumed in virtualization like RAID and concatenation. Concrete Storage Pool may also be simple reserve of capacity. In such a case, no capacity may be lost in formation of the Storage Pool. \nConceptually TotalManagedSpace reflects all storage known via Component associations to underlying StorageExtents or via AllocatedFromStoragePool associations to underlying StoragePools. However, note some of these underlying storage may not be modeled by the instrumentation." ), ModelCorrespondence{"CIM_StoragePool.RemainingManagedSpace"}, Units ( "Bytes" )]
	uint64 TotalManagedSpace;


		[Description ( "This method can be used to retrieve a list of available Extents that may be used in the creation or modification of a StoragePool, StorageVolume, or LogicalDisk. The GetAvailableExtents method MUST return the Extents from the set of Component Extents of the Pool on which the method is being invoked. The returned Extents are available at the time the method returns. There is no guarantee that the same Extents will be available later. This method MUST return the Extents that are not being used as supporting capacity for any other Pools, Volumes, or LogicalDisks that have been allocated from this Pool. The Extent returned MUST be a component Extent of the Pool or subdivisions of a component Extent, the subdivisions themselves represented as Extents." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4098..32767", "32768..65535"}, Values{"Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Reserved", "Vendor Specific"}]
	uint32 GetAvailableExtents(
		[Description ( "List of references to available StorageExtents, or subclass instances." ), OUT ( true )]
		CIM_StorageExtent ref AvailableExtents[],
	 	[Description ( "The StorageSetting (Goal) for which supported extents should be retrieved as available. \nIf a NULL is passed for the Goal, the method will return all available extents, regardless of the goal. There exists a possibility of error in creating a Pool, Volume, or LogicalDisk retrieved in this manner." ), IN ( true )]
		CIM_StorageSetting ref Goal
	);
	 	[Description ( "For pools that that support a range of sizes for volume or pool creation, this method can be used to retrieve the supported range. Note that different pool implementations may support either or both the GetSupportedSizes and GetSupportedSizeRanges methods at different times, depending on Pool configuration. Also note that the advertised sizes may change after the call due to requests from other clients. If the pool currently only supports discrete sizes, then the return value will be set to 1." ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizes instead"}]
	uint32 GetSupportedSizeRange(
		[Description ( "The type of element for which supported size ranges are reported for." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported size ranges should be reported for." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "The maximum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MaximumVolumeSize,
	 	[Description ( "The minimum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MinimumVolumeSize,
	 	[Description ( "A volume/pool size must be a multiple of this value which is specified in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 VolumeSizeDivisor
	);
	 	[Description ( "For pools that support discrete sizes for volume or pool creation, this method can be used to retrieve a list of supported sizes. Note that different pool implementations may support either or both the GetSupportedSizes and GetSupportedSizeRanges methods at different times, depending on Pool configuration. Also note that the advertised sizes may change after the call due to requests from other clients. If the pool currently only supports a range of sizes, then the return value will be set to 1." ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizeRange instead"}]
	uint32 GetSupportedSizes(
		[Description ( "The type of element for which supported sizes are reported for." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported sizes should be reported for." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "List of supported sizes for a Volume/Pool creation or modification." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 Sizes
	);
};

// IBMTSDS_ExtentPool

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "The ExtentPool represents the storage available on a single DS ExtentPool. This is a concrete pool that can be created from multiple RankPools. The Ranks in a single ExtentPool may different RAID types, but must have the same Extent type. ExtentPools are not preconfigured on the storage device and must be created by the Administrator. For ESS, this class represents a VolumeSpace." ),  Version ( "2.8.1000" )]
class IBMTSDS_ExtentPool : CIM_StoragePool {
	[Description ( "A user-friendly name for the object. \nThis corresponds to the Nickname in the DS Storage Manager and DSCLI." )]
	string ElementName;

 	[Description ( "Describes the IBM-defined Extent Type. Currently multiple Extent Types for one object are not allowed, but the property is set to be an array for possible future use.For ESS, \'Count Key Data\' is assumed to be 3390.DS, does not differentiate between 3380 and 3390 and is simply considered Count Key Data for both" ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5"}, Values{"Not applicable", "Unknown", "Undefined", "Fixed Block", "Count Key Data", "3380"}]
	uint16 ExtentType[];

 	[Description ( "The InstanceID of ExtentPool will be of the form IBMTSDS:\'<StorageSystem.Name>-<ExtentPoolID>\'." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "Only valid for ESS (2105) - A two-digit hex string representing the LSS of the volumespace." ), IBMExtension ( "5.2.1" )]
	string LSS;

 	[ArrayType ( "Indexed" ), Description ( "Operational status." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "A unique name in the context of the System that identifies this pool. Same as InstanceID." ), MaxLen ( 256 ), Required ( true )]
	string PoolID;

 	[Description ( "By definition, Primordial is false" )]
	boolean Primordial = false;

 	[Description ( "The RankGroup that this ExtentPool is assigned to. Valid values are 0 and 1. This property is only valid for DS and is left null for ESS." )]
	uint16 RankGroup;

 	[Description ( "The remaining amount of raw storage (in bytes) from the TotalManagedSpace of this StoragePool. This represents the amount of space not allocated to any Volumes." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_AllocatedFromStoragePool.SpaceConsumed"}, Required ( true ), Units ( "Bytes" )]
	uint64 RemainingManagedSpace;

 	[Description ( "The total amount of raw storage (in bytes) managed by this StoragePool." ), ModelCorrespondence{"CIM_StoragePool.RemainingManagedSpace"}, Units ( "Bytes" )]
	uint64 TotalManagedSpace;


		[Description ( "This method is to be used to find out what sizes of volumes of types Block512 or 3390. The supported size ranges are:\n\nBlock512:    512 bytes to 2199023255552(512 * 2^32)bytes, in multiples of 512\n3390:        849960 bytes (1 cylinder ) to 55,689,379,200 bytes (65520 cylinders).\n             in multiples of 849960 bytes (1 cylinder)" ), ValueMap{"0", "1", "2", "0x9001", "0x9308"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizes instead", "Invalid storage id", "Goal does not match extent pool type"}]
	uint32 GetSupportedSizeRange(
		[Description ( "The type of element for which supported sizes are reported for. Only Storage Volume is supported." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported sizes should be reported for. This should be an IBMTSDS_DataTypeSetting instance representing Block512 or 3390. Default values are Block512 or 3390 depending on the type of extentpool." ), IN ( true )]
		IBMTSDS_DataTypeSetting ref Goal,
	 	[Description ( "The maximum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MaximumVolumeSize,
	 	[Description ( "The minimum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MinimumVolumeSize,
	 	[Description ( "A volume/pool size must be a multiple of this value which is specified in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 VolumeSizeDivisor
	);
	 	[Description ( "This method is to be used to find out what sizes of volumes of types Block520Protected, Block520Unprotected, or 3380. The supported sizes are:\n\nBlock520Protected and Block520Unprotected: 8589934592, 17548967936, 35165044736,\n                                           70564970496 , 141129940992 , or 282259881984 bytes\n\n3380:                                      1585223640 bytes (2226 cylinders) or 2377835460 bytes(3339 cylinders)\nBlock520Protected and Block520Unprotected are the equivalent of AS400 and AS400U on ESS." ), ValueMap{"0", "1", "2", "0x9001", "0x9308"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizeRange instead", "Invalid storage id", "Goal does not match extent pool type"}]
	uint32 GetSupportedSizes(
		[Description ( "The type of element for which supported sizes are reported for. Only Storage Volume is supported." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported sizes should be reported for. This should be an IBMTSDS_DataTypeSetting instance representing Block520Protected, Block520Unprotected, or 3380. Default values are Block520Protected or 3380 depending on the type of extentpool." ), IN ( true )]
		IBMTSDS_DataTypeSetting ref Goal,
	 	[Description ( "List of supported sizes for a Volume/Pool creation or modification." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 Sizes
	);
};

// IBMTSDS_DiskExtentToExtentPool

[ASSOCIATION ( true ),  Description ( "An IBM-specific association to go from the DiskExtents straight to the ExtentPool that uses those Disks. This allows clients to skip the nested StorageExtent structure." ), IBMExtension ( "5.2.1" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_DiskExtentToExtentPool : CIM_ConcreteDependency {
	[Description ( "The DiskExtent" ), Override ( "Antecedent" )]
	IBMTSDS_DiskExtent ref Antecedent;

 	[Description ( "The ExtentPool" ), Override ( "Dependent" )]
	IBMTSDS_ExtentPool ref Dependent;


};

// CIM_HostedStoragePool

[ASSOCIATION ( true ), Aggregation ( true ),  Composition ( true ), Description ( "SystemStoragePool is a specialization of SystemComponent association that establishes that the StoragePool is defined in the context of the System." ), Version ( "2.7.0" )]
class CIM_HostedStoragePool : CIM_SystemComponent {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	CIM_System ref GroupComponent;

 	[Description ( "The StoragePool that is a component of a System." ), Override ( "PartComponent" )]
	CIM_StoragePool ref PartComponent;


};

// IBMTSDS_StorageSystemToSPC

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "LogicalDevices may be aggregated by a System. This relationship is made explicit by the SystemDevice association." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageSystemToSPC : CIM_SystemDevice {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The LogicalDevice that is a component of a System." ), Key ( true ), Override ( "PartComponent" ), Weak ( true )]
	IBMTSDS_SCSIProtocolController ref PartComponent;


};

// CIM_ConcreteComponent

[ASSOCIATION ( true ), Aggregation ( true ),  Description ( "CIM_ConcreteComponent is a generic association used to establish \'part of\' relationships between ManagedElements. It is defined as a concrete subclass of the abstract CIM_Component class, to be used in place of many specific subclasses of Component that add no semantics, that is subclasses that do not clarify the type of composition, update cardinalities, or add or remove qualifiers. Note that when you define additional semantics for Component, this class must not be subclassed. Specific semantics continue to be defined as subclasses of the abstract CIM_Component. ConcreteComponent is limited in its use as a concrete form of a general composition. \n\nIt was deemed more prudent to create this concrete subclass than to change Component from an abstract to a concrete class. Industry usage and impact could not be anticipated." ), Version ( "2.10.0" )]
class CIM_ConcreteComponent : CIM_Component {
	[Aggregate ( true ), Description ( "The parent element in the association." ), Override ( "GroupComponent" )]
	CIM_ManagedElement ref GroupComponent;

 	[Description ( "The child element in the association." ), Override ( "PartComponent" )]
	CIM_ManagedElement ref PartComponent;


};

// IBMTSDS_RankPool

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "The RankPool represents the storage available on a single DS Rank. Currently, there is a one-to-one relationship between a Rank and the Array that it was created from. Ranks are not preconfigured on the storage device and must be created by the Administrator. For ESS, this class represents a DiskGroup." ),  Version ( "2.8.1000" )]
class IBMTSDS_RankPool : CIM_StoragePool {
	[Description ( "A user-friendly name for the object. \nThe ElementName will be of the form \'Rank <RankNumber> on <StorageSystem.Name>\'." )]
	string ElementName;

 	[Description ( "Describes the IBM-defined Extent Type. Currently multiple Extent Types for one object are not allowed, but the property is set to be an array for possible future use.For ESS, \'Count Key Data\' is assumed to be 3390.DS, does not differentiate between 3380 and 3390 and is simply considered Count Key Data for both" ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5"}, Values{"Not applicable", "Unknown", "Undefined", "Fixed Block", "Count Key Data", "3380"}]
	uint16 ExtentType[];

 	[Description ( "The InstanceID of RankPool will be of the form \'IBMTSDS:<StorageSystem.Name>-<RankID>\'." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[ArrayType ( "Indexed" ), Description ( "Operational status." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "A unique name in the context of the System that identifies this pool. Same as InstanceID." ), MaxLen ( 256 ), Required ( true )]
	string PoolID;

 	[Description ( "By definition, Primordial is false. \n" )]
	boolean Primordial = false;

 	[Description ( "Describes the IBM-defined RAID level. " ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5"}, Values{"Not applicable", "Unknown", "Undefined", "JBOD", "RAID5", "RAID10"}]
	uint16 RAIDLevel[];

 	[Description ( "The remaining amount of raw storage (in bytes) from the TotalManagedSpace of this StoragePool. This value will either be equal to TotalManagedSpace or 0." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_AllocatedFromStoragePool.SpaceConsumed"}, Required ( true ), Units ( "Bytes" )]
	uint64 RemainingManagedSpace;

 	[Description ( "The total amount of raw storage (in bytes) managed by this StoragePool." ), ModelCorrespondence{"CIM_StoragePool.RemainingManagedSpace"}, Units ( "Bytes" )]
	uint64 TotalManagedSpace;


		[Description ( "This method will return a code of 1 (Method not supported) since partial allocation of Ranks is not supported." ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizes instead"}]
	uint32 GetSupportedSizeRange(
		[Description ( "The type of element for which supported size ranges are reported for." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported size ranges should be reported for." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "The maximum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MaximumVolumeSize,
	 	[Description ( "The minimum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MinimumVolumeSize,
	 	[Description ( "A volume/pool size must be a multiple of this value which is specified in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 VolumeSizeDivisor
	);
	 	[Description ( "This method will return a code of 1 (Method not supported) since partial allocation of Ranks is not supported." ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizeRange instead"}]
	uint32 GetSupportedSizes(
		[Description ( "The type of element for which supported sizes are reported for." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported sizes should be reported for." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "List of supported sizes for a Volume/Pool creation or modification." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 Sizes
	);
};

// IBMTSDS_RankExtent

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A CompositeExtent is used to model the distribution of user data across one or more underlying StorageExtents, which may or not be protected by some redundancy mechanism. RankExtent represents the distribution of data on an Rank.Only valid for DS." ),  Version ( "2.7.0" )]
class IBMTSDS_RankExtent : CIM_CompositeExtent {
	[Description ( "Size in bytes of the block which form this Storage Extent. Since the DataType on the Rank is unknown, this is set to 1." ), MappingStrings{"MIF.DMTF|HostStorage|001.4", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits", "MIF.DMTF|StorageDevices|001.5"}, Units ( "Bytes" )]
	uint64 BlockSize;

 	[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. This value is set to \'IBMTSDS_RankExtent\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "Number of complete copies of data currently maintained.Value is 1 for RAID5 and 2 for RAID10." ), ModelCorrespondence{"CIM_StorageSetting.DataRedundancyGoal", "CIM_StorageSetting.DataRedundancyMax", "CIM_StorageSetting.DataRedundancyMin"}]
	uint16 DataRedundancy;

 	[Description ( "An address or other identifying information to uniquely name the LogicalDevice. Is of the form \'<StorageSystem.Name>-R<RankID>\'." ), Key ( true ), MaxLen ( 64 ), Override ( "DeviceID" )]
	string DeviceID;

 	[Description ( "A user-friendly name for the object." )]
	string ElementName;

 	[Description ( "Number of StorageExtents to stripe as a collective set. In SCC, this value is defined as the number of stripes to count before continuing to map into the next contiguous set of Extents, beyond the current stripe." ), MappingStrings{"MIF.DMTF|Volume Set|001.5"}]
	uint64 ExtentInterleaveDepth = 0;

 	[Description ( "Not applicable" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18..32767", "32768..65535"}, Values{"Other", "Unknown", "None/Not Applicable", "Broken", "Data Lost", "Dynamic Reconfig", "Exposed", "Fractionally Exposed", "Partially Exposed", "Protection Disabled", "Readying", "Rebuild", "Recalculate", "Spare in Use", "Verify In Progress", "In-Band Access Granted", "Imported", "Exported", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ExtentStatus[] = {2};

 	[Description ( "Number of contiguous underlying StorageExtents counted before looping back to the first underlying StorageExtent of the current stripe. It is the number of StorageExtents forming the user data stripe." ), MappingStrings{"MIF.DMTF|Volume Set|001.4"}]
	uint64 ExtentStripeLength = 1;

 	[Description ( "Health state." ), Experimental ( true ), ValueMap{"0", "5", "10", "15", "20", "25", "30", ".."}, Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"}]
	uint16 HealthState;

 	[Description ( "True indicates that the underlying StorageExtent(s) participate in a StorageRedundancyGroup." )]
	boolean IsBasedOnUnderlyingRedundancy = false;

 	[Description ( "True indicates that the data is concatenated across the various StorageExtents in the Group." )]
	boolean IsConcatenated = true;

 	[Description ( "Indicates whether or not there exists no single point of failure. This is true, since DS requires the Array to be RAID5 or RAID10." ), ModelCorrespondence{"CIM_StorageSetting.NoSinglePointOfFailure"}]
	boolean NoSinglePointOfFailure = true;

 	[MappingStrings{"MIF.DMTF|Volume Set|001.3"}, Override ( "NumberOfBlocks" )]
	uint64 NumberOfBlocks;

 	[Description ( "Number of data disks used in this Rank/Disk Group (as opposed to parity and spares)" ), IBMExtension ( "5.2.1" )]
	uint16 NumOfDataDisks;

 	[ArrayType ( "Indexed" ), Description ( "Operational status." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "How many physical packages can currently fail without data loss. Value is 1 for both RAID5 and RAID10." ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyGoal", "CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin"}]
	uint16 PackageRedundancy = 1;

 	[Description ( "By definition, Primordial is false. The DiskDriveExtents are considered to be the Primordial extents. " )]
	boolean Primordial = false;

 	[Description ( "The scoping System\'s CreationClassName. Set to \'IBMTSDS_StorageSystem\'." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_System.Name" )]
	string SystemName;


};

// IBMTSDS_RankComponent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "Association between IBMTSDS_RankExtent and IBMTSDS_RankPool." ),  Version ( "2.7.0" )]
class IBMTSDS_RankComponent : CIM_ConcreteComponent {
	[Aggregate ( true ), Description ( "The parent element in the association." ), Key ( true ), Override ( "GroupComponent" )]
	IBMTSDS_RankPool ref GroupComponent;

 	[Description ( "The child element in the association." ), Key ( true ), Override ( "PartComponent" )]
	IBMTSDS_RankExtent ref PartComponent;


};

// CIM_AllocatedFromStoragePool

[ASSOCIATION ( true ),  Description ( "AllocatedFromStoragePool is an association describing how LogicalElements are allocated from underlying StoragePools. These elements typically would be subclasses of StorageExtents or StoragePools." ), Version ( "2.10.0" )]
class CIM_AllocatedFromStoragePool : CIM_Dependency {
	[Description ( "The StoragePool." ), Override ( "Antecedent" )]
	CIM_StoragePool ref Antecedent;

 	[Description ( "The subsidiary element." ), Override ( "Dependent" )]
	CIM_LogicalElement ref Dependent;

 	[Description ( "Space consumed from this Pool, in bytes. This value MUST be maintained so that, relative to the Antecedent StoragePool, it is possible to compute TotalManagedSpace as StoragePool.RemainingManagedSpace plus the sum of SpaceConsumed from all of the AllocatedFromStoragePool references from the antecedent StoragePool." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_StoragePool.RemainingManagedSpace"}, Required ( true ), Units ( "Bytes" )]
	uint64 SpaceConsumed;

 	[Description ( "SpaceLimit is the consumption limit for the allocated storage element from the associated StoragePool. If SpaceLimt is greater than zero, the assumption is that the storage element can grow, (for instance an element representing the storage for a delta replica) \nIf SpaceLimit is greater than zero, SpaceConsumed shall not exceed the value of SpaceLimit. \nIf SpaceLimit = 0 (the default) then no limits are asserted on SpaceConsumed." ), Experimental ( true ), ModelCorrespondence{"CIM_AllocatedFromStoragePool.SpaceConsumed"}, Units ( "Bytes" )]
	uint64 SpaceLimit = 0;

 	[Description ( "If the associated storage element may dynamically consume an increasing amount of space and a space limit is enforced on the element, then a non-zero warning threshold percentage indicates when a warning indication should be generated based on SpaceConsumed >= (SpaceLimit*SpaceLimitWarningThreshold)/100." ), Experimental ( true ), MaxValue ( 100 ), MinValue ( 0 ), ModelCorrespondence{"CIM_AllocatedFromStoragePool.SpaceConsumed"}, Units ( "Percentage" )]
	uint16 SpaceLimitWarningThreshold;


};

// IBMTSDS_ArraySitePool

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "The ArraySitePool represents the storage available on a single DS ArraySite.  Even though these are predefined on the storage device, in other words they cannot be created or deleted, the ArraySitePool is not considered to be primordial, since the space in an ArraySitePool comes from the PrimordialStoragePool, which is the sum of all storage on the device.\nOnly valid for DS." ),  Version ( "2.8.1000" )]
class IBMTSDS_ArraySitePool : CIM_StoragePool {
	[Description ( "A user-friendly name for the object. \nThe ElementName will be of the form \'ArraySite <ArraySiteNumber> on <StorageSystem.Name>\'." )]
	string ElementName;

 	[Description ( "The InstanceID of ArraySitePool will be of the form \'IBMTSDS:<StorageSystem.Name>-<ArraySiteNumber>\'." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[ArrayType ( "Indexed" ), Description ( "Operational status." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "A unique name in the context of the System that identifies this pool. Same as InstanceID." ), MaxLen ( 256 ), Required ( true )]
	string PoolID;

 	[Description ( "By definition, Primordial is false." )]
	boolean Primordial = false;

 	[Description ( "The remaining amount of raw storage (in bytes) from the TotalManagedSpace of this StoragePool. This value will either be equal to TotalManagedSpace or 0." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_AllocatedFromStoragePool.SpaceConsumed"}, Required ( true ), Units ( "Bytes" )]
	uint64 RemainingManagedSpace;

 	[Description ( "The total amount of raw storage (in bytes) managed by this StoragePool." ), ModelCorrespondence{"CIM_StoragePool.RemainingManagedSpace"}, Units ( "Bytes" )]
	uint64 TotalManagedSpace;


		[Description ( "This method will return a code of 1 (Method not supported) since partial allocation of ArraySites is not supported." ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizes instead"}]
	uint32 GetSupportedSizeRange(
		[Description ( "The type of element for which supported size ranges are reported for." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported size ranges should be reported for." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "The maximum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MaximumVolumeSize,
	 	[Description ( "The minimum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MinimumVolumeSize,
	 	[Description ( "A volume/pool size must be a multiple of this value which is specified in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 VolumeSizeDivisor
	);
	 	[Description ( "This method will return a code of 1 (Method not supported) since partial allocation of ArraySites is not supported." ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizeRange instead"}]
	uint32 GetSupportedSizes(
		[Description ( "The type of element for which supported sizes are reported for." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported sizes should be reported for." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "List of supported sizes for a Volume/Pool creation or modification." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 Sizes
	);
};

// IBMTSDS_ArrayPool

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "The ArrayPool represents the storage available on a single DS Array.  Arrays are not preconfigured on the storage device and must be created by the Administrator. Only valid for DS." ),  Version ( "2.8.1000" )]
class IBMTSDS_ArrayPool : CIM_StoragePool {
	[Description ( "A user-friendly name for the object. \nThe ElementName will be of the form \'Array <ArrayNumber > on <StorageSystem.Name>\'." )]
	string ElementName;

 	[Description ( "The InstanceID of ArrayPool will be of the form \'IBMTSDS:<StorageSystem.Name>-<ArrayID>\'." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[ArrayType ( "Indexed" ), Description ( "Operational status." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "A unique name in the context of the System that identifies this pool. Same as InstanceID." ), MaxLen ( 256 ), Required ( true )]
	string PoolID;

 	[Description ( "By definition, Primordial is set to false." )]
	boolean Primordial = false;

 	[Description ( "Describes the IBM-defined RAID level. " ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5"}, Values{"Not applicable", "Unknown", "Undefined", "JBOD", "RAID5", "RAID10"}]
	uint16 RAIDLevel[];

 	[Description ( "The remaining amount of raw storage (in bytes) from the TotalManagedSpace of this StoragePool. This value will either be equal to TotalManagedSpace or 0." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_AllocatedFromStoragePool.SpaceConsumed"}, Required ( true ), Units ( "Bytes" )]
	uint64 RemainingManagedSpace;

 	[Description ( "The total amount of raw storage (in bytes) managed by this StoragePool." ), ModelCorrespondence{"CIM_StoragePool.RemainingManagedSpace"}, Units ( "Bytes" )]
	uint64 TotalManagedSpace;


		[Description ( "This method will return a code of 1 (Method not supported) since partial allocation of Arrays is not supported." ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizes instead"}]
	uint32 GetSupportedSizeRange(
		[Description ( "The type of element for which supported size ranges are reported for." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported size ranges should be reported for." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "The maximum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MaximumVolumeSize,
	 	[Description ( "The minimum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MinimumVolumeSize,
	 	[Description ( "A volume/pool size must be a multiple of this value which is specified in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 VolumeSizeDivisor
	);
	 	[Description ( "This method will return a code of 1 (Method not supported) since partial allocation of Arrays is not supported." ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizeRange instead"}]
	uint32 GetSupportedSizes(
		[Description ( "The type of element for which supported sizes are reported for." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported sizes should be reported for." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "List of supported sizes for a Volume/Pool creation or modification." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 Sizes
	);
};

// IBMTSDS_AllocatedFromArraySitePool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_ArraySitePool and IBMTSDS_ArrayPool. It is strongly recommended that this be treated as a generic AllocatedFromStoragePool association rather than a vendor or device specific association.Only valid for DS." ),  Version ( "2.8.0" )]
class IBMTSDS_AllocatedFromArraySitePool : CIM_AllocatedFromStoragePool {
	[Description ( "The ArraySitePool." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ArraySitePool ref Antecedent;

 	[Description ( "The ArrayPool." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_ArrayPool ref Dependent;

 	[Description ( "Space consumed from this Pool, in bytes. This value MUST be maintained so that, relative to the Antecedent StoragePool, it is possible to compute TotalManagedSpace as StoragePool.RemainingManagedSpace plus the sum of SpaceConsumed from all of the AllocatedFromStoragePool references from the antecedent StoragePool. This means that this property refers to raw space." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_StoragePool.RemainingManagedSpace"}, Required ( true ), Units ( "Bytes" )]
	uint64 SpaceConsumed;


};

// CIM_WBEMService

	[Abstract ( true ), Description ( "An abstract class for WBEM services such as the ObjectManager (CIM Server), Providers, protocol adapters, or other pluggable components. A type of CIM_Service that provides associated capabilities and details about the communication capabilities, namespaces, etc. for a specific WBEMService." ), Version ( "2.6.0" )]
class CIM_WBEMService : CIM_Service {
};

// CIM_ObjectManager

	[Description ( "A type of CIM_Service that defines the capabilities of the CIM Server in which this ObjectManager class resides. Details related to communicating with the ObjectManager, and the Manager\'s basic capabilities, are stored in instances of the associated CommunicationMechanism class available through the CommMechanismForManager association. It is assumed that Basic Read operations must be supported by all ObjectManager\'s in order to retrieve any additional detail." ), Version ( "2.8.0" )]
class CIM_ObjectManager : CIM_WBEMService {
	[Description ( "The description property is used as a description of the CIM Server for human interfaces. For example, \" ACME CIM Server version 2.2\"). This property is required to support the SLP discovery mechanism. In the next major release this property MAY include the required qualifier." ), Override ( "Description" )]
	string Description;

 	[Description ( "The ElmentName property is used as a name of the CIM Server for human interfaces. For example, \"ACME CIM Server\"). This property is required to support the SLP discovery mechanism. In the next major release this property MAY include the required qualifier." ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "The GatherStatisticalData property is used to control the gathering of statistical data made accessible through the CIM_CIMOMStatisticalData objects. If set to true, the data is gathered and can be accessed. If false, the CIM_CIMOMStatisticalData instance MAY exist but MUST show zero values for the counter properties." ), Write ( true )]
	boolean GatherStatisticalData = true;

 	[Description ( "The Name property is used to uniquely identify a CIM Server. The CIM Server MUST ensure that this value is globally unique. In order to ensure uniqueness, this value SHOULD be constructed in the following manner. <Vendor ID>:<Unique ID> \n<Vendor ID> MUST include a copyrighted, trademarked or otherwise unique name that is owned by the business entity or a registered ID that is assigned to the business entity that is defining the Name. (This is similar to the <Schema Name>_<Class Name> structure of Schema class names.) The purpose of <Vendor ID> is to ensure that <ID> is truly unique across multiple vendor implementations. If such a name is not used, the defining entity MUST assure that the <ID> portion of the Instance ID is unique when compared with other instance providers. For DMTF defined instances, the <Vendor ID> is \'CIM\'. \n<Unique ID> MUST include a vendor specified unique identifier. \nNote: Name is semantically the same as InstanceID. In the next major version of the CIM Schema, Name will be renamed to InstanceID and become the only key of this class." ), Override ( "Name" )]
	string Name;


};

// IBMTSDS_ObjectManager

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A type of CIM_Service that defines the capabilities of the CIM Server in which this ObjectManager class resides. Details related to communicating with the ObjectManager, and the Manager\'s basic capabilities, are stored in instances of the associated CommunicationMechanism class available through the CommMechanismForManager association. It is assumed that Basic Read operations must be supported by all ObjectManager\'s in order to retrieve any additional detail. There should be one instance of the ObjectManager per CIM Agent." ),  Version ( "2.8.0" )]
class IBMTSDS_ObjectManager : CIM_ObjectManager {
	[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. The name of this class is \'IBMTSDS_ObjectManager\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "The description property is used as a description of the CIM Server for human interfaces. For example, \" ACME CIM Server version 2.2\"). This property is required to support the SLP discovery mechanism." ), Override ( "Description" )]
	string Description = "CIMOM for the DS Open API";

 	[Description ( "The ElementName property is used as a name of the CIM Server for human interfaces. For example, \"ACME CIM Server\"). This property is required to support the SLP discovery mechanism." ), Override ( "ElementName" )]
	string ElementName = "DS Open API CIM Server";

 	[Description ( "The Name property is used to uniquely identify a CIM Server. The CIM Server MUST ensure that this value is globally unique. In order to ensure uniqueness, this value will be of the form \'IBMTSDS:<IP address of system>\'." ), Key ( true ), Override ( "Name" )]
	string Name;

 	[ArrayType ( "Indexed" ), Description ( "If you are able to get the OperationalStatus property, then the status should be OK. If the status is not OK, you should not be able to retreive the OperationalStatus property." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, Override ( "OperationalStatus" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[] = {2};

 	[Description ( "The scoping System\'s CreationClassName." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_System.Name" )]
	string SystemName;

 	[Description ( "A string representing the complete VRMF software version information - for example, \'5.2.0.1\'." ), IBMExtension ( "5.2.1" )]
	string Version;


};

// CIM_RegisteredProfile

	[Description ( "A RegisteredProfile describes a set of CIM Schema classes with required properties and/or methods, necessary to manage a real-world entity or to support a usage scenario, in an interoperable fashion. RegisteredProfiles can be defined by the DMTF or other standards organizations. Note that this class should not be confused with CIM_Profile, which collects SettingData instances, to be applied as a \'configuration profile\' for an element. \nA RegisteredProfile is a named \'standard\' for CIM-based management of a particular System, subsystem, Service or other entity, for a specified set of uses. It is a complete, standalone definition, as opposed to the subclass RegisteredSubProfile, which requires a scoping profile for context. \nThe uses for a RegisteredProfile or SubProfile MUST be specified in the document that defines the profile. Examples of Profiles are to manage various aspects of an Operating System, Storage Array, or Database. The name of the profile is defined and scoped by its authoring organization." ), Version ( "2.8.0" )]
class CIM_RegisteredProfile : CIM_ManagedElement {
	[ArrayType ( "Indexed" ), Description ( "A free-form string providing additional information related to the AdvertiseType. A description MUST be provided when the AdvertiseType is 1, \"Other\". An entry in this array corresponds to the entry in the AdvertiseTypes array at the same index. It is not expected that additional descriptions are needed if the Type is set to \"Not Advertised\" or \"SLP\". However, as the SLP template expands, or as other advertisement mechanisms are defined, support for additional descriptions may be needed. This array is defined to support this." ), ModelCorrespondence{"CIM_RegisteredProfile.AdvertiseTypes"}]
	string AdvertiseTypeDescriptions[];

 	[ArrayType ( "Indexed" ), Description ( "This property signifies the advertisement for the profile information. It is used by the advertising services of the WBEM infrastructure to determine what should be advertised, via what mechanisms. The property is an array so that the profile MAY be advertised using several mechanisms. Note: If this property is null/uninitialized, this is equivalent to specifying the value 2, \"Not Advertised\"." ), ModelCorrespondence{"CIM_RegisteredProfile.AdvertiseTypeDescriptions"}, Required ( true ), ValueMap{"1", "2", "3"}, Values{"Other", "Not Advertised", "SLP"}]
	uint16 AdvertiseTypes[];

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: \n<OrgID>:<LocalID> \nWhere <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 organizational entity and SHOULD not be re-used to identify different underlying (real-world) elements. If the above \'preferred\' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance\'s NameSpace. \nFor DMTF defined instances, the \'preferred\' algorithm MUST be used with the <OrgID> set to \'CIM\'." ), Key ( true )]
	string InstanceID;

 	[Description ( "A free-form string providing a description of the organization when 1, \"Other\", is specified for the RegisteredOrganization." ), MaxLen ( 256 ), ModelCorrespondence{"CIM_RegisteredProfile.RegisteredOrganization"}]
	string OtherRegisteredOrganization;

 	[Description ( "The name of this registered profile. Since multiple versions can exist for the same RegisteredName, the combination of RegisteredName, RegisteredOrganization, and RegisteredVersion MUST uniquely identify the registered profile within the scope of the organization." ), MaxLen ( 256 ), Required ( true )]
	string RegisteredName;

 	[Description ( "The organization that defines this profile." ), ModelCorrespondence{"CIM_RegisteredProfile.OtherRegisteredOrganization"}, Required ( true ), ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"}, Values{"Other", "DMTF", "CompTIA", "Consortium for Service Innovation", "FAST", "GGF", "INTAP", "itSMF", "NAC", "Northwest Energy Efficiency Alliance", "SNIA", "TM Forum", "The Open Group", "ANSI", "IEEE", "IETF", "INCITS", "ISO", "W3C"}]
	uint16 RegisteredOrganization;

 	[Description ( "The version of this profile. The string representing the version MUST be in the form: \nM + \".\" + N + \".\" + U \nWhere: \nM - The major version (in numeric form) describing the profile\'s creation or last modification. \nN - The minor version (in numeric form) describing the profile\'s creation or last modification. \nU - The update (e.g. errata, patch, ..., in numeric form) describing the profile\'s creation or last modification." ), Required ( true )]
	string RegisteredVersion;


};

// CIM_ElementConformsToProfile

[ASSOCIATION ( true ),  Description ( "The CIM_ElementConformsToProfile association defines the RegisteredProfiles to which the referenced ManagedElement is conformant. Note: This association may apply to any Managed Element. Typical usage will apply it to a higher level instance, such as a System, NameSpace, or Service. When applied to a higher level instance, all constituent parts MUST behave appropriately in support of the ManagedElement\'s conformance to the named RegisteredProfile." ), Version ( "2.8.0" )]
class CIM_ElementConformsToProfile {
	[Description ( "The RegisteredProfile to which the ManagedElement conforms." ), Key ( true )]
	CIM_RegisteredProfile ref ConformantStandard;

 	[Description ( "The ManagedElement that conforms to the RegisteredProfile." ), Key ( true )]
	CIM_ManagedElement ref ManagedElement;


};

// IBMTSDS_RegisteredProfile

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A RegisteredProfile describes a set of CIM Schema classes with required properties and/or methods, necessary to manage a real-world entity or to support a usage scenario, in an interoperable fashion. RegisteredProfiles can be defined by the DMTF or other standards organizations. Note that this class should not be confused with CIM_Profile, which collects SettingData instances, to be applied as a \'configuration profile\' for an element. \nA RegisteredProfile is a named \'standard\' for CIM-based management of a particular System, subsystem, Service or other entity, for a specified set of uses. It is a complete, standalone definition, as opposed to the subclass RegisteredSubProfile, which requires a scoping profile for context. \nThe uses for a RegisteredProfile or SubProfile MUST be specified in the document that defines the profile. Examples of Profiles are to manage various aspects of an Operating System, Storage Array, or Database. The name of the profile is defined and scoped by its authoring organization.\nThe supported profiles for the CIM Agent for the DS Open API are Server and Array." ),  Version ( "2.8.0" )]
class IBMTSDS_RegisteredProfile : CIM_RegisteredProfile {
	[ArrayType ( "Indexed" ), Description ( "This property signifies the advertisement for the profile information. It is used by the advertising services of the WBEM infrastructure to determine what should be advertised, via what mechanisms. The property is an array so that the profile MAY be advertised using several mechanisms. Note: If this property is null/uninitialized, this is equivalent to specifying the value 2, \"Not Advertised\"." ), ModelCorrespondence{"CIM_RegisteredProfile.AdvertiseTypeDescriptions"}, Override ( "AdvertiseTypes" ), Required ( true ), ValueMap{"1", "2", "3"}, Values{"Other", "Not Advertised", "SLP"}]
	uint16 AdvertiseTypes[] = {3};

 	[Description ( "The InstanceID will be of the form \'IBMTSDS:<RegisteredName>_<RegisteredVersion>\'." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The name of this registered profile. Since multiple versions can exist for the same RegisteredName, the combination of RegisteredName, RegisteredOrganization, and RegisteredVersion MUST uniquely identify the registered profile within the scope of the organization." ), MaxLen ( 256 ), Override ( "RegisteredName" ), Required ( true )]
	string RegisteredName;

 	[Description ( "The organization that defines this profile." ), ModelCorrespondence{"CIM_RegisteredProfile.OtherRegisteredOrganization"}, Override ( "RegisteredOrganization" ), Required ( true ), ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"}, Values{"Other", "DMTF", "CompTIA", "Consortium for Service Innovation", "FAST", "GGF", "INTAP", "itSMF", "NAC", "Northwest Energy Efficiency Alliance", "SNIA", "TM Forum", "The Open Group", "ANSI", "IEEE", "IETF", "INCITS", "ISO", "W3C"}]
	uint16 RegisteredOrganization = 11;

 	[Description ( "The version of this profile. All profiles in IBM CIM Agent for the DS Open API 5.2 are version 1.1.0." ), Override ( "RegisteredVersion" ), Required ( true )]
	string RegisteredVersion = "1.1.0";


};

// IBMTSDS_StorageSystemConformsToProfile

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),   Version ( "2.8.0" )]
class IBMTSDS_StorageSystemConformsToProfile : CIM_ElementConformsToProfile {
	[Description ( "The RegisteredProfile to which the StorageSystem conforms." ), Key ( true ), Override ( "ConformantStandard" )]
	IBMTSDS_RegisteredProfile ref ConformantStandard;

 	[Description ( "The StorageSystem that conforms to the RegisteredProfile." ), Key ( true ), Override ( "ManagedElement" )]
	IBMTSDS_StorageSystem ref ManagedElement;


};

// CIM_StorageConfigurationService

	[Description ( "This service allows the active management of a Storage Server. It allows jobs to be started for the creation, modification and deletion of storage objects (StoragePools, StorageVolumes and LogicalDisks)." ), Version ( "2.10.0" )]
class CIM_StorageConfigurationService : CIM_Service {
		[Description ( "Create (or start a job to create) a StorageSynchronized mirror relationship between two storage elements. The target element may be a local or a remote storage element. A remote mirror pair may be scoped by a peer-to-peer connection modeled as a NetworkPipe between peers. \n\nIf Job Completed with No Error (0) is returned, the function completed successfully and a ConcreteJob instance is not created. \n\nIf Method Parameters Checked - Job Started (0x1000) is returned, a ConcreteJob is started, a reference to which is returned in the Job output parameter. \n\nA return value of Not Supported (1) indicates the method is not supported. \n\nAll other values indicate some type of error condition." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x1000", "0x1001..0x7FFF", "0x8000..0xFFFF"}, Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Vendor Specific"}]
	uint32 AttachOrModifyReplica(
		[Description ( "CopyType describes the type of Synchronized relationship that will be created. Values are: Async: Create and maintain an asynchronous copy of the source. Sync: Create and maintain a synchronized copy of the source. UnSyncAssoc: Create an unsynchronized copy and maintain an association to the source element. \nUnSyncUnAssoc: Create an unassociated copy of the source element. \nUnSyncAssoc and UnSyncUnAssoc are not supported for remote mirror replicas." ), IN ( true ), Required ( true ), ValueMap{"2", "3", "4", "5", "6..4095", "0x1000..0xFFFF"}, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
		uint16 CopyType,
	 	[Description ( "The StorageSetting properties to be created or modified for the target element." ), EmbeddedInstance ( "CIM_SettingData" ), IN ( true )]
		string Goal,
	 	[Description ( "Reference to the job (may be null if the task completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "The NetworkPipe element that scopes the remote mirror pair. If the value is null, remote mirrors do not require a pre-established connection." ), IN ( true )]
		CIM_NetworkPipe ref ReplicationPipe,
	 	[Description ( "The source storage element which may be a StorageVolume, StorageExtent, LogicalFile, FileSystem, CommonDatabase, or any other storage object. For this reason, the type is made very generic." ), IN ( true ), Required ( true )]
		CIM_ManagedElement ref SourceElement,
	 	[Description ( "Reference to the target storage element (i.e., the replica). The target storage element which may be a StorageVolume, StorageExtent, LogicalFile, FileSystem, CommonDatabase, or any other storage object. For this reason, the type is made very generic." ), IN ( true ), Required ( true )]
		CIM_ManagedElement ref TargetElement
	);
	 	[Description ( "Create (or start a job to create) a StorageSynchronized relationship between two existing storage objects. Note that using the input parameter, CopyType, this function can be used to to create an ongoing association between the source and replica. If 0 is returned, the function completed successfully and no ConcreteJob instance is created. If 0x1000 is returned, a ConcreteJob is started, a reference to which is returned in the Job output parameter. A return value of 1 indicates the method is not supported. All other values indicate some type of error condition." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x1000", "0x1001..0x7FFF", "0x8000..0xFFFF"}, Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Vendor Specific"}]
	uint32 AttachReplica(
		[Description ( "CopyType describes the type of Synchronized relationship that will be created. Values are: \nAsync: Create and maintain an asynchronous copy of the source. \nSync: Create and maintain a synchronized copy of the source. \nUnSyncAssoc: Create an unsynchronized copy and maintain an association to the source. \nUnSyncUnAssoc: Create unassociated copy of the source element." ), IN ( true ), ValueMap{"2", "3", "4", "5", "..", "0x8000..0xFFFF"}, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
		uint16 CopyType,
	 	[Description ( "Reference to the job (may be null if the task completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "The source storage object which may be a StorageVolume or other storage object." ), IN ( true ), Required ( true )]
		CIM_ManagedElement ref SourceElement,
	 	[Description ( "Reference to the target storage element (i.e., the replica)." ), IN ( true )]
		CIM_ManagedElement ref TargetElement
	);
	 	[Description ( "Start a job to create (or modify) a specified storage element from specified input StorageExtents. The created or modified storage element can be a StorageExtent, StorageVolume, LogicalDisk, or StoragePool. An input list of InElements must be specified. The GetAvailableExtents method can be used to get a list of valid extents that can be used to achieve a desired goal. Validity of the extents is determined by the implementation. As an input parameter, Size specifies the desired size of the element. As an output parameter, it specifies the size achieved. Space is taken from the input InElements. The desired Settings for the element are specified by the Goal parameter. If the size of Extents passed is less than the size requested, then the capacity is drawn from the extents in the order, left to right, that the Extents were specified. The partial consumption of an Extent is represented by an Extent for the capacity used and an Extent for the capacity not used. If the Size is NULL, then a configuration using all Extents passed will be attempted. If the requested size cannot be created, no action will be taken, and the Return Value will be 4097/0x1001. Also, the output value of Size is set to the nearest possible size. If 0 is returned, the function completed successfully and no ConcreteJob instance was required. If 4096/0x1000 is returned, a ConcreteJob will be started to create the element. The Job\'s reference will be returned in the output parameter Job." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098..32767", "32768..65535"}, Values{"Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Size Not Supported", "Method Reserved", "Vendor Specific"}]
	uint32 CreateOrModifyElementFromElements(
		[Description ( "A end user relevant name for the element being created. If NULL, then a system-supplied default name can be used. The value will be stored in the \'ElementName\' property for the created element. If not NULL, this parameter will supply a new name when modifying an existing element." ), IN ( true )]
		string ElementName,
	 	[Description ( "Enumeration indicating the type of element being created or modified. If the input parameter TheElement is specified when the operation is a \'modify\', this type value must match the type of that instance. The actual CIM class of the created TheElement can be vendor-specific, but it must be a derived class of the appropriate CIM class -- i.e., CIM_StorageVolume, CIM_StorageExtent, CIM_LogicalDisk, or CIM_StoragePool." ), IN ( true ), Required ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "..", "32768..65535"}, Values{"Unknown", "Reserved", "Storage Volume", "Storage Extent", "Storage Pool", "Logical Disk", "DMTF Reserved", "Vendor Specific"}]
		uint16 ElementType,
	 	[Description ( "The requirements for the element to maintain. If set to a null value, the default configuration associated with the Service will be used. This parameter should be a reference to a Setting, SettingData, or Profile appropriate to the element being created. If not NULL, this parameter will supply a new Goal when modifying an existing element." ), IN ( true ), Required ( true )]
		CIM_ManagedElement ref Goal,
	 	[Description ( "Array of references to storage element instances that are used to create or modify TheElement." ), IN ( true ), Required ( true )]
		CIM_StorageExtent ref InElements[],
	 	[Description ( "Reference to the job (may be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "As an input parameter Size specifies the desired size. If not NULL, this parameter will supply a new size when modifying an existing element. As an output parameter Size specifies the size achieved." ), IN ( true ), OUT ( true ), Units ( "Bytes" )]
		uint64 Size,
	 	[Description ( "As an input parameter: if null, creates a new element. If not null, then the method modifies the specified element. As an output parameter, it is a reference to the resulting element." ), IN ( true ), OUT ( true )]
		CIM_LogicalElement ref TheElement
	);
	 	[Description ( "Start a job to create (or modify) a specified element (for example a StorageVolume or StorageExtent) from a StoragePool. One of the parameters for this method is Size. As an input parameter, Size specifies the desired size of the element. As an output parameter, it specifies the size achieved. Space is taken from the input StoragePool. The desired settings for the element are specified by the Goal parameter. If the requested size cannot be created, no action will be taken, and the Return Value will be 4097/0x1001. Also, the output value of Size is set to the nearest possible size. If 0 is returned, the function completed successfully and no ConcreteJob instance was required. If 4096/0x1000 is returned, a ConcreteJob will be started to create the element. The Job\'s reference will be returned in the output parameter Job." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098..32767", "32768..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Size Not Supported", "Method Reserved", "Vendor Specific"}]
	uint32 CreateOrModifyElementFromStoragePool(
		[Description ( "A end user relevant name for the element being created. If NULL, then a system supplied default name can be used. The value will be stored in the \'ElementName\' property for the created element. If not NULL, this parameter will supply a new name when modifying an existing element." ), IN ( true )]
		string ElementName,
	 	[Description ( "Enumeration indicating the type of element being created or modified. If the input parameter TheElement is specified when the operation is a \'modify\', this type value must match the type of that instance." ), IN ( true ), ValueMap{"0", "1", "2", "3", "4", "..", "32768..65535"}, Values{"Unknown", "Reserved", "StorageVolume", "StorageExtent", "LogicalDisk", "DMTF Reserved", "Vendor Specific"}]
		uint16 ElementType,
	 	[Description ( "The requirements for the element to maintain. If set to a null value, the default configuration from the source pool will be used. This parameter should be a reference to a Setting or Profile appropriate to the element being created. If not NULL, this parameter will supply a new Goal when modifying an existing element." ), IN ( true )]
		CIM_ManagedElement ref Goal,
	 	[Description ( "The Pool from which to create the element. This parameter must be set to null if the input parameter TheElement is specified (in the case of a \'modify\' operation)." ), IN ( true )]
		CIM_StoragePool ref InPool,
	 	[Description ( "Reference to the job (may be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "As an input parameter Size specifies the desired size. If not NULL, this parameter will supply a new size when modifying an existing element. As an output parameter Size specifies the size achieved." ), IN ( true ), OUT ( true ), Units ( "Bytes" )]
		uint64 Size,
	 	[Description ( "As an input parameter: if null, creates a new element. If not null, then the method modifies the specified element. As an output parameter, it is a reference to the resulting element." ), IN ( true ), OUT ( true )]
		CIM_LogicalElement ref TheElement
	);
	 	[Description ( "This method establishes a peer-to-peer connection identified by a NetworkPipe element and two ProtocolEndpoint elements created by the method provider. The NetworkPipe is associated to a special peer-to-peer Network element. The provider will verify that two systems are capable of a peer relationship. If endpoints are assigned to the pipe, the same number of source and target endpoints must be supplied by the client to form a set of endpoint pairs. If ReplicationPipe is not supplied as an input parameter, a new pipe is created. If a pipe is supplied, a new set of endpoints is assigned to the existing pipe. \n\nIf Success (0) is returned, the function completed successfully. \n\nA return value of Not Supported (1) indicates the method is not supported. \n\nA return value of Busy (0x1000) indicates the method is not supported. \n\nAll other values indicate some type of error condition." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x1000", "0x1001..0x7FFF", "0x8000..0xFFFF"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Busy", "Method Reserved", "Vendor Specific"}]
	uint32 CreateOrModifyReplicationPipe(
		[Description ( "The setting properties to be maintained for the peer-to-peer connection." ), EmbeddedInstance ( "CIM_SettingData" ), IN ( true )]
		string Goal,
	 	[Description ( "A user-friendly name for the element created." ), IN ( true )]
		string PipeElementName,
	 	[Description ( "Reference to the created or modified NetworkPipe." ), IN ( true ), OUT ( true )]
		CIM_NetworkPipe ref ReplicationPipe,
	 	[Description ( "References to source system endpoints/ports assigned to the pipe. If a new pipe is created, this is the initial set of endpoints assigned. If an existing pipe is modified, this set replaces the previous set. The list must be null if a provider does not allow the client to manage port assignment." ), IN ( true )]
		CIM_ProtocolEndpoint ref SourceEndpoint[],
	 	[Description ( "One of the two peer systems participating in the established peer-to-peer connection. If the provider supports uni-directional connections, this must identify the system hosting replica source elements." ), IN ( true ), Required ( true )]
		CIM_ComputerSystem ref SourceSystem,
	 	[Description ( "References to target system endpoints/ports assigned to the pipe. If a new pipe is created, this is the initial set of endpoints assigned. If an existing pipe is modified, this set replaces the previous set. The list must be null if a provider does not allow the client to manage port assignment." ), IN ( true )]
		CIM_ProtocolEndpoint ref TargetEndpoint[],
	 	[Description ( "One of the two peer systems participating in the established peer-to-peer connection. If the provider supports uni-directional connections, this must identify the system hosting replica target elements." ), IN ( true ), Required ( true )]
		CIM_ComputerSystem ref TargetSystem
	);
	 	[Description ( "Starts a job to create (or modify) a StoragePool. The StoragePool will be (or must be) scoped to the same System as this Service. One of the parameters for this method is Size. As an input parameter, Size specifies the desired size of the pool. As an output parameter, it specifies the size achieved. Space is taken from either or both of the specified input StoragePools and StorageExtents (InPools and InExtents). The capability requirements that the Pool must support are defined using the Goal parameter. If the requested pool size cannot be created, no action will be taken, the Return Value will be 4097/0x1001, and the output value of Size will be set to the nearest possible size. If 0 is returned, then the task completed successfully and the use of ConcreteJob was not required. If the task will take some time to complete, a ConcreteJob will be created and its reference returned in the output parameter Job." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098..32767", "32768..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Size Not Supported", "Method Reserved", "Vendor Specific"}]
	uint32 CreateOrModifyStoragePool(
		[Description ( "A end user relevant name for the pool being created. If NULL, then a system supplied default name can be used. The value will be stored in the \'ElementName\' property for the created pool. If not NULL, this parameter will supply a new name when modifying an existing pool." ), IN ( true )]
		string ElementName,
	 	[Description ( "Reference to an instance of StorageSetting that defines the desired capabilities of the StoragePool. If set to a null value, the default configuration from the source pool will be used. If not NULL, this parameter will supply a new Goal setting when modifying an existing pool." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "Array of strings containing representations of references to CIM_StorageExtent instances, that are used to create the Pool or modify the source extents." ), IN ( true )]
		string InExtents,
	 	[Description ( "Array of strings containing representations of references to CIM_StoragePool instances, that are used to create the Pool or modify the source pools." ), IN ( true )]
		string InPools,
	 	[Description ( "Reference to the job (may be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "As an input parameter: if null, creates a new StoragePool. If not null, modifies the referenced Pool. When returned, it is a reference to the resulting StoragePool." ), IN ( true ), OUT ( true )]
		CIM_StoragePool ref Pool,
	 	[Description ( "As an input parameter this specifies the desired pool size in bytes. As an output parameter this specifies the size achieved." ), IN ( true ), OUT ( true ), Units ( "Bytes" )]
		uint64 Size
	);
	 	[Description ( "Start a job to create a new storage object which is a replica of the specified source storage object. (SourceElement). Note that using the input paramter, CopyType, this function can be used to instantiate the replica, and to create an ongoing association between the source and replica. If 0 is returned, the function completed successfully and no ConcreteJob instance is created. If 4096/0x1000 is returned, a ConcreteJob is started, a reference to which is returned in the Job output parameter." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097..32767", "32768..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Vendor Specific"}]
	uint32 CreateReplica(
		[Description ( "CopyType describes the type of copy that will be made. Values are: \nAsync: Create and maintain an asynchronous copy of the source. \nSync: Create and maintain a synchronized copy of the source. \nUnSyncAssoc: Create an unsynchronized copy and maintain an association to the source. \nUnSyncUnAssoc: Create unassociated copy of the source element." ), IN ( true ), ValueMap{"2", "3", "4", "5", "..", "32768..65535"}, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
		uint16 CopyType,
	 	[Description ( "A end user relevant name for the element being created. If NULL, then a system supplied default name can be used. The value will be stored in the \'ElementName\' property for the created element." ), IN ( true )]
		string ElementName,
	 	[Description ( "Reference to the job (may be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "The source storage object which may be a StorageVolume or storage object." ), IN ( true ), Required ( true )]
		CIM_LogicalElement ref SourceElement,
	 	[Description ( "Reference to the created target storage element (i.e., the replica)." ), IN ( false ), OUT ( true )]
		CIM_LogicalElement ref TargetElement,
	 	[Description ( "The underlying storage for the target element (the replica) will be drawn from TargetPool if specified, otherwise the allocation is implementation specific." ), IN ( true )]
		CIM_StoragePool ref TargetPool,
	 	[Description ( "The definition for the StorageSetting to be maintained by the target storage object (the replica)." ), IN ( true )]
		CIM_StorageSetting ref TargetSettingGoal
	);
	 	[Description ( "Create (or start a job to create) a replication buffer that buffers asynchronous write operations for remote mirror pairs. The buffer is an instance of CIM_Memory with an AssociatedMemory association to a hosting system or to a replication network pipe. The buffer element may be created based on a StorageExtent, in a pool or in a manner opaque to a client. If 0 is returned, the function completed successfully and no ConcreteJob instance is created. If 0x1000 is returned, a ConcreteJob is started, a reference to which is returned in the Job output parameter. A return value of 1 indicates the method is not supported. All other values indicate some type of error condition. \n\nIf Job Completed with No Error (0) is returned, the function completed successfully and a ConcreteJob instance is not created. \n\nIf Method Parameters Checked - Job Started (0x1000) is returned, a ConcreteJob is started, a reference to which is returned in the Job output parameter. \n\nA return value of Not Supported (1) indicates the method is not supported. \n\nAll other values indicate some type of error condition." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x1000", "0x1001..0x7FFF", "0x8000..0xFFFF"}, Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Vendor Specific"}]
	uint32 CreateReplicationBuffer(
		[Description ( "The hosting system or replication pipe that will be antecedent to the created buffer." ), IN ( true ), Required ( true )]
		CIM_ManagedElement ref Host,
	 	[Description ( "Reference to the job (may be null if the task completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "Reference to the created replica buffer element." ), OUT ( true )]
		CIM_Memory ref ReplicaBuffer,
	 	[Description ( "Reference to a component extent for the buffer element." ), IN ( true )]
		CIM_StorageExtent ref TargetElement,
	 	[Description ( "Reference to a container pool for the buffer element." ), IN ( true )]
		CIM_StoragePool ref TargetPool
	);
	 	[Description ( "Start a job to delete a StoragePool. The freed space is returned source StoragePools (indicated by AllocatedFrom StoragePool) or back to underlying storage extents. If 0 is returned, the function completed successfully, and no ConcreteJob was required. If 4096/0x1000 is returned, a ConcreteJob will be started to delete the StoragePool. A reference to the Job is returned in the Job parameter." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097..32767", "32768..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Vendor Specific"}]
	uint32 DeleteStoragePool(
		[Description ( "Reference to the job (may be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "Reference to the pool to delete." ), IN ( true )]
		CIM_StoragePool ref Pool
	);
	 	[Description ( "Modify (or start a job to modify) the synchronization association between two storage objects. If 0 is returned, the function completed successfully and no ConcreteJob instance was created. If 0x1000 is returned, a ConcreteJob was started and a reference to this Job is returned in the Job output parameter. A return value of 1 indicates the method is not supported. All other values indicate some type of error condition." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x1000", "0x1001..0x7FFF", "0x8000..0xFFFF"}, Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Vendor Specific"}]
	uint32 ModifySynchronization(
		[Description ( "Reference to the job (may be null if the task completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "Operation describes the type of modification to be made to the replica. Values are: \nDetach: \'Forget\' the synchronization between two storage objects. Start to treat the objects as independent. \nFracture: Suspend the synchronization between two storage objects using Sync or Async replication. \nThe association and (typically) changes are remembered to allow a fast resynchronization. This may be used during a backup cycle to allow one of the objects to be copied while the other remains in production. \nResync Replica: Re-establish the synchronization of a Sync or Async replication. This will negate the action of a previous Fracture operation. Recreate a Point In Time image for an UnSyncAssoc replication. \nRestore from Replica: Renew the contents of the original storage object from a replica. \nPrepare: Get the link ready for a Resync operation to take place. Some implementations will require this operation to be invoked to keep the Resync operation as fast as possible. May start the copy engine. \nUnprepare: Clear a prepared state if a Prepare is not to be followed by a Resync operation. \nQuiesce: Some applications require notification so that they can ready the link for an operation. For example flush any cached data or buffered changes. The copy engine is stopped for UnSyncAssoc replications. \nUnquiesce: Take the link from the quiesced state (without executing the intended operation. \nStart Copy: initiate a full background copy of the source to the UnSyncAssoc replica. Replica enters Frozen state when copy operation is completed. \nStop Copy: stop the background copy previously started. Reset To Sync: Change the CopyType of the association to Sync (e.g., from the Async CopyType). \nReset To Async: Change the CopyType of the association to Async (e.g., from the Sync CopyType)." ), IN ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "..", "0x8000..0xFFFF"}, Values{"DMTF Reserved", "DMTF Reserved", "Detach", "Fracture", "Resync Replica", "Restore from Replica", "Prepare", "Unprepare", "Quiesce", "Unquiesce", "Reset To Sync", "Reset To Async", "Start Copy", "Stop Copy", "DMTF Reserved", "Vendor Specific"}]
		uint16 Operation,
	 	[Description ( "The referenced to the StorageSynchronized association describing the storage source/replica relationship." ), IN ( true )]
		CIM_StorageSynchronized ref Synchronization
	);
	 	[Description ( "Start a job to delete an element previously created from a StoragePool. The freed space is returned to the source StoragePool. If 0 is returned, the function completed successfully and no ConcreteJob was required. If 4096/0x1000 is returned, a ConcreteJob will be started to delete the element. A reference to the Job is returned in the Job parameter." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097..32767", "32768..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Vendor Specific"}]
	uint32 ReturnToStoragePool(
		[Description ( "Reference to the job (may be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "Reference to the element to return to the StoragePool." ), IN ( true )]
		CIM_LogicalElement ref TheElement
	);
	 	[Description ( "This method requests that the system rescan SCSI devices for changes in their configuration. If called on a general-purpose host, the changes are reflected in the list of devices available to applications (for example, the UNIX \'device tree\'. This method may also be used on a storage appliance to force rescanning of attached SCSI devices. \n\nThis operation can be disruptive; optional parameters allow the caller to limit the scan to a single or set of SCSI device elements. All parameters are optional; if parameters other Job are passed in as null, a full scan is invoked." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098", "4099", "4100", "..", "32768..65535"}, Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Invalid connection type", "Invalid Initiator", "No matching target found", "No matching LUs found", "Prohibited by name binding configuration", "DMTF Reserved", "Vendor Specific"}]
	uint32 ScsiScan(
		[Description ( "The type of connection, constrains the scan to initiator ports of this type. Only used if the Initiators parameter is null." ), ModelCorrespondence{"CIM_SCSIProtocolEndpoint.ConnectionType"}, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9"}, Values{"Other", "Fibre Channel", "Parallel SCSI", "SSA", "IEEE 1394", "RDMA", "iSCSI", "SAS", "ADT"}]
		uint16 ConnectionType,
	 	[Description ( "A list of references to initiators. Scanning will be limited to SCSI targets attached to these initiators. If this parameter is null and connection is specified, all initiators of that connection type are scanned. If this parameter and ConnectionType are null, all targets on all system initiators are probed." )]
		CIM_SCSIProtocolEndpoint ref Initiators[],
	 	[Description ( "Reference to the job (may be null if job completed)." ), IN ( true ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "A list of SCSI logical unit numbers representing logical units hosted on the targets specified in the Targets argument." )]
		string LogicalUnits,
	 	[Description ( "The connection type, if the ConnectionType parameter is \"Other\"." )]
		string OtherConnectionType,
	 	[Description ( "A list of names or numbers for targets. These should be formatted to match the appropriate connection type, For example, PortWWNs would be specified for Fibre Channel targets." )]
		string Targets
	);
};

// IBMTSDS_StorageConfigurationService

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This service allows the active management of a Storage Server. It allows jobs to be started for the creation, modification and deletion of storage objects (StoragePools, StorageVolumes and LogicalDisks)." ),  Version ( "2.8.1000" )]
class IBMTSDS_StorageConfigurationService : CIM_StorageConfigurationService {
	[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. The name of this class is \'IBMTSDS_StorageConfigurationService\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "Same as Name\'." ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "The Name property uniquely identifies the Service and provides an indication of the functionality that is managed. Of the form \'StorageConfigurationService for <StorageSystem.Name>\'" ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[Description ( "The scoping System\'s CreationClassName. Set to IBMTSDS_StorageSystem." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_System.Name" )]
	string SystemName;


		[Description ( "Create a StorageSynchronized relationship between two existing storage objects. Note that using the input parameter, CopyType, this function can be used to to create an ongoing association between the source and replica." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x1000", "0x1001..0x7FFF", "0x8004", "0x900A", "0x9017", "0x930C", "0x930D", "0xB000..0xFFFF"}, Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Copy operation failed because the volume is still initializing", "Invalid VolumeID", "Invalid CopyType specified", "Source Volume and Target Volume must belong to same system", "Source Volume must be located on scope system", "Vendor Specific - inherited error codes from AttachReplicas method"}]
	uint32 AttachReplica(
		[Description ( "CopyType describes the type of Synchronized relationship that will be created. Supported values are: \nUnSyncAssoc: Create an unsynchronized copy and maintain an association to the source. (Persistent FlashCopy)\nUnSyncUnAssoc: Create unassociated copy of the source element. (Non-Persistent FlashCopy)" ), IN ( true ), Required ( true ), ValueMap{"2", "3", "4", "5", "..", "0x8000..0xFFFF"}, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
		uint16 CopyType,
	 	[Description ( "The source storage object, must be an instance of IBMTSDS_Volume." ), IN ( true ), Required ( true )]
		CIM_StorageVolume ref SourceElement,
	 	[Description ( "Reference to the target storage element (i.e., the replica), must be an instance of IBMTSDS_Volume." ), IN ( true ), Required ( true )]
		CIM_StorageVolume ref TargetElement
	);
	 	[Description ( "Create StorageSynchronized relationships between existing pairs of storage objects. Note that using the input parameter, CopyType, this function can be used to to create an ongoing association between the source and replica. If the copy type is UnsyncAssoc, the Change Recording will be enabled by default. For more details, check Options of AttachReplicas." ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x1000", "0x1001", "0x1002..0x7FFF", "0x8000", "0x8001", "0x900A", "0x9017", "0x9018", "0x9019", "0x930B", "0x930C", "0x930D", "0xB000..0xFFFF"}, Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "CIM_INVALIDLOGICALUNITID", "Method Reserved", "Internal provider error", "PARTIAL_SUCCESS", "Invalid VolumeID", "Invalid CopyType specified", "At least one Source and one Target must be specified", "Invalid Option found", "Same number of Sources a Targets must be specified", "Source Volume and Target Volume must belong to same system", "Source Volume must be located on scope system", "Device return codes - see ReturnCodes.txt"}]
	uint32 AttachReplicas(
		[Description ( "CopyType describes the type of Synchronized relationship that will be created. Valid values are: \nUnSyncAssoc: Create an unsynchronized copy and maintain an association to the source. (Persistent FlashCopy)\nUnSyncUnAssoc: Create unassociated copy of the source element. (Non-Persistent FlashCopy)" ), IBMExtension ( "5.2.0.650" ), IN ( true ), Required ( true ), ValueMap{"2", "3", "4", "5", "..", "0x8000..0xFFFF"}, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
		uint16 CopyType,
	 	[Description ( "Options describes the ESS/DS-specific options for creating StorageSynchronized association. All Replicas attached in one method call will be attached using the same options.The following values are supported :        AcceleratedDestage     Select this option to cause a FlashCopy source volume track, which is                                being modified and is in a FlashCopy relationship, to be destaged from                                cache sooner than it would be if normal cache algorithms were applied.                                This feature minimizes the number of modified tracks that are resident                                in cache so that a new instance of FlashCopy does not go through the time                                consuming process of staging the source track and destaging it to the target                                volume before it indicates that the FlashCopy relationship is complete.         AllowPPRCPrimary       Selecting this options allows the flashcopy to establish when the flashcopy                                target is also a PPRC primary         DoNotPermitIfTargetOnline   Select this option if you do not want to establish a FlashCopy                                     relationship if the target is online to the S/390 or zSeries host         InhibitTargetWrites    Select this option to insure that writes are inhibited on the target volume until                                an incremental FlashCopy operation is complete. This ensures data consistency on                                the target volume.         NoBackgroundCopy       Use this option when you don\'t want a background copy to occur after the                                FlashCopy pair has been established. This background copy will physically                                copy all data from the source to the target.        NoRecordChanges        Select this option to deactivate change recording on the volume pair participating                                in a FlashCopy relationship. An increment of a FlashCopy relationship will fail                                if the original relationship does not have change recording enabled.                               If InhibitTargetWrites is set, change recording cannot be performed on target volume.                               Change Recording applies only to Persistent FlashCopy." ), IBMExtension ( "5.2.0.650" ), IN ( true ), ValueMap{"0", "1", "2", "4", "5", "6"}, Values{"AcceleratedDestage", "AllowPPRCPrimary", "DoNotPermitIfTargetOnline", "InhibitTargetWrites", "NoBackgroundCopy", "NoRecordChanges"}]
		uint16 Options,
	 	[Description ( "Array of returned code status of attached replicas. See ReturnCodes.txt for a complete list of return codes." ), IBMExtension ( "5.2.0.650" ), IN ( false ), OUT ( true )]
		uint32 ReturnCodes,
	 	[Description ( "The source storage objects, must be instances of IBMTSDS_Volume." ), IBMExtension ( "5.2.0.650" ), IN ( true ), Required ( true )]
		CIM_StorageVolume ref SourceElements[],
	 	[Description ( "References to the target storage elements (i.e., the replica), must be an instances of IBMTSDS_Volume. Will be matched with source at the corresponding array position.  i.e. the first TargetElement will be matched with the first SourceElement." ), IBMExtension ( "5.2.0.650" ), IN ( true ), Required ( true )]
		CIM_StorageVolume ref TargetElements[]
	);
	 	[Description ( "SCreate (or modify) a Volume from an ExtentPool. One of the parameters for this method is Size. As an input parameter, Size specifies the desired size of the element. As an output parameter, it specifies the size achieved. Space is taken from the input StoragePool. The desired settings for the element are specified by the Goal parameter. If the requested size cannot be created, no action will be taken, and the Return Value will be 4097/0x1001. Also, the output value of Size is set to the nearest possible size. If 0 is returned, the function completed successfully. Asynchronous Jobs are not supported." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098..32767", "32768..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Size Not Supported", "Method Reserved", "Vendor Specific - The return codes are inherited from CreateOrModifyElementsFromStoragePool method"}]
	uint32 CreateOrModifyElementFromStoragePool(
		[Description ( "An end user relevant name for the element being created. The value will be stored in the \'ElementName\' property for the created pool. If not NULL, this parameter will supply a new name when modifying an existing pool.The maximum length is 16 characters for DS and 8 for ESS." ), IN ( true )]
		string ElementName,
	 	[Description ( "Enumeration indicating the type of element being created or modified. If the input parameter TheElement is specified when the operation is a \'modify\', this type value must match the type of that instance. Only creation and modification of StorageVolume is supported. ElementType modification is not supported." ), IN ( true ), ValueMap{"0", "1", "2", "3", "4", "..", "32768..65535"}, Values{"Unknown", "Reserved", "StorageVolume", "StorageExtent", "LogicalDisk", "DMTF Reserved", "Vendor Specific"}]
		uint16 ElementType,
	 	[Description ( "The requirements for the element to maintain. This should be a reference to IBMTSDS_DataTypeSetting. If set to a null value, the default configuration from the source pool will be used, Block512 for Fixed Block pool and 3390 for CKD pool. For ESS, since pools are either 3380 or 3390, the default Goal will be taken from the pool. Goal modification is not supported. Supported DataTypeSettings for a particular pool can be obtained by following the StorageSettingsAssociatedToCapabilities assocation from the ExtentPool to the DataTypeSettings." ), IN ( true )]
		IBMTSDS_DataTypeSetting ref Goal,
	 	[Description ( "The Pool from which to create the element. This must be an instance of IBMTSDS_ExtentPool." ), IN ( true )]
		CIM_StoragePool ref InPool,
	 	[Description ( "Not supported." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "As an input parameter Size specifies the desired size. If not NULL, this parameter will supply a new size when modifying an existing element. As an output parameter Size specifies the size achieved. NULL size is not supported. Size modification is not supported. If the requested size cannot be created, the Size as an output parameter will contain the nearest size that can be created." ), IN ( true ), OUT ( true ), Units ( "Bytes" )]
		uint64 Size,
	 	[Description ( "As an input parameter: if null, creates a new StorageVolume. If not null, then the method modifies the specified StorageVolume. As an output parameter, it is a reference to the resulting StorageVolume." ), IN ( true ), OUT ( true )]
		CIM_StorageVolume ref TheElement
	);
	 	[Description ( "Create (or modify) StorageVolumes from an ExtentPool. One of the parameters for this method is Size. As an input parameter, Size specifies the desired size of the StorageVolume. As an output parameter, it specifies the size achieved. Space is taken from the input StoragePool. The desired settings for the element are specified by the Goal parameter. If the requested size cannot be created, no action will be taken, and the Return Value will be 4097/0x1001. Also, the output value of Size is set to the nearest possible size. If 0 is returned, the function completed successfully. The created volumes will all have the same size. Asynchronous Jobs are not supported." ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098..32767", "32768", "32769", "32770", "36864", "36874", "36875", "36879", "36882", "36883", "36884", "36885", "36886", "37639", "37640", "37641", "37891", "37893", "38147", "38148", "38149..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Size Not Supported", "Method Reserved", "Internal provider error", "PARTIAL_SUCCESS", "Invalid string format", "Invalid Element Name", "Invalid VolumeID", "Invalid InPools parameter", "Invalid InPools parameter", "Modification of DataTypeSettings for Volume is not supported ", "Invalid quantity.", "InPool is invalid", "Modification of Volume Size is not possible", "Modification of LssNumber is not supported", "The ESSID of the machine is not matching with the one\'s passed in", "Data type and extent type do not match", "Mismatch error", "Nonexistent Volume", "Nonexistent Extent Pool", "Not enough disk space available", "No more LUNs for this LSS/LCU", "Device return codes - see ReturnCodes.txt"}]
	uint32 CreateOrModifyElementsFromStoragePool(
		[Description ( "An end user relevant name for the elements being created. The value will be stored in the \'ElementName\' property for the created volume. If not NULL,this parameter willsupply a new name when modifying an existing pool.\nIf not NULL, must have the same length as the quantity to be created or modified.The maximum length is 16 characters for DS and 8 for ESS." ), IBMExtension ( "5.2.0.650" ), IN ( true )]
		string ElementNames,
	 	[Description ( "Enumeration indicating the type of element being created or modified. If the input parameter TheElement is specified when the operation is a \'modify\', this type value must match the type of that instance. Only creation and modification of StorageVolume is supported. ElementType modification is not supported." ), IBMExtension ( "5.2.0.650" ), IN ( true ), ValueMap{"0", "1", "2", "3", "4", "..", "32768..65535"}, Values{"Unknown", "Reserved", "StorageVolume", "StorageExtent", "LogicalDisk", "DMTF Reserved", "Vendor Specific"}]
		uint16 ElementType,
	 	[Description ( "The requirements for the element to maintain. This should be a reference to IBMTSDS_DataTypeSetting. If set to a null value, the default configuration from the source pool will be used, Block512 for Fixed Block pool and 3390 for CKD pool. For ESS, since pools are either 3380 or 3390, the default Goal will be taken from the pool. Goal modification is not supported. Supported DataTypeSettings for a particular pool can be obtained by following the StorageSettingsAssociatedToCapabilities assocation from the ExtentPool to the DataTypeSettings." ), IBMExtension ( "5.2.0.650" ), IN ( true )]
		IBMTSDS_DataTypeSetting ref Goal,
	 	[Description ( "The Pool from which to create the element. This must be an instance of IBMTSDS_ExtentPool.\nModification is not supported." ), IBMExtension ( "5.2.0.650" ), IN ( true )]
		CIM_StoragePool ref InPool,
	 	[Description ( "Not supported." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "LssNumber specifies the LSS on which this volume will be created.If this parameter is missing the first available lss (if any) is used. LssNumber is a hex value from 00 to FF without the \'0x\'.If the rankGroup property of the ExtentPool is 0 then the  LssNumber must be even, if it is 1 then the LssNumber must be odd.If an LSS has a CKD volume, then all volumes on the LSS must be CKD.If an LSS has a FB volume, then all volumes on the LSS must be FB.The first hex digit is the LSS group number. If an LSS group has a CKD LSS, then all LSS\'s in that LSS group must be CKD. Same applies for FB. Each call to this method only supports creation of volumes within one LSS.\nModification is not supported." ), IBMExtension ( "5.2.0.650" ), IN ( true )]
		string LssNumber,
	 	[Description ( "As input, the number of StorageVolumes to be created. This parameter must be NULL when modifying StorageVolumes. As output, the number of volumes created if successful. Or if not sucessful due to too many volumes and not enough capacity on the ExtentPool, the number of volumes that can be created." ), IBMExtension ( "5.2.0.650" ), IN ( true ), OUT ( true )]
		uint16 Quantity,
	 	[Description ( "Array of returned code status of created volumes. See ReturnCodes.txt for a complete list of return codes." ), IBMExtension ( "5.2.0.650" ), IN ( false ), OUT ( true )]
		uint32 ReturnCodes,
	 	[Description ( "As an input parameter Size specifies the desired size. If not NULL, this parameter will supply a new size when modifying an existing element. As an output parameter Size specifies the size achieved. NULL size is not supported.  If the requested size cannotbe created, the Size as an outputparameter will contain  the nearest size that can be created. Size modification is not supported." ), IBMExtension ( "5.2.0.650" ), IN ( true ), OUT ( true ), Units ( "Bytes" )]
		uint64 Size,
	 	[Description ( "As an input parameter: if null, creates new StorageVolumes. If not null, then the method modifies the specified StorageVolume. As an output parameter, it is a reference to the resulting StorageVolumes." ), IBMExtension ( "5.2.0.650" ), IN ( true ), OUT ( true )]
		CIM_StorageVolume ref TheElements[]
	);
	 	[Description ( "Starts a job to create (or modify) a StoragePool. The StoragePool will be (or must be) scoped to the same System as this Service. The capability requirements that the Pool must support are defined using the Goal parameter. If 0 is returned, then the task completed successfully and the use of ConcreteJob was not required. This method is used to create ArrayPools, RankPools, and ExtentPools, and modification of ExtentPools, depending on the input paramters. Creation or modification of PrimordialStoragePool and ArraySitePool is not supported." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098..32767", "32768", "32769", "32770", "36864", "36875", "36876", "36877", "36878", "36879", "36880", "37639", "37640..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Size Not Supported", "Method Reserved", "Internal provider error", "PARTIAL_SUCCESS", "Invalid string format", "Invalid Element Name", "Invalid InPools parameter", "Invalid Size parameter", "Invalid Goal parameter", "At least one parameter must be passed to continue the operation", "Invalid InPools parameter", "inExtents parameter is not supported", "The ESSID of the machine is not matching with the one\'s passed in", "Device return codes - see ReturnCodes.txt"}]
	uint32 CreateOrModifyStoragePool(
		[Description ( "The user can only define an ElementName for ExtentPool creation and modification. ElementName is not definable for ArrayPool or RankPool." ), IN ( true )]
		string ElementName,
	 	[Description ( "Reference to an instance of StorageSetting that defines the desired capabilities of the StoragePool.\nFor ArrayPool creation for DS, this must be an instance of IBMTSDS_RAIDSetting.\nFor RankPool and ExtentPool creation for DS, this must be an instnace of IBMTSDS_ExtentTypeSetting.\nOnly ExtentPool creation is allowed on ESS, and for that case this must be an instnace of IBMTSDS_RAIDVSFormatSetting.The StorageSetting to be passed into this paramter can be obtained by following the StorageSettingsAssociatedToCapabilities association from StoragePoolCapabilities to StorageSettings.\nIf a Goal is not passed in, the default setting for RankPool for DS is RAID5, the ExtentPool for DS will take on the characteristics of the RankPool that is passed into the InPools parameter, and the ExtentPool for ESS will be RAID5 and FB.Modification of Goal is not supported." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "Array of strings containing representations of references to CIM_StorageExtent instances, that are used to create the Pool or modify the source extents.\nNot supported." ), IN ( true )]
		string InExtents,
	 	[Description ( "Array of strings containing representations of references to CIM_StoragePool instances, that are used to create the Pool or modify the source pools. The InPools references must be only one type of Pool. In other words, only ArraySitePools, ArrayPools, or RankPools, and not a combination.\nIf an ArraySitePool is passed in, an ArrayPool will be created. The DS6000 supports one or two ArraySites when creating an Array. The DS8000 only supports one ArraySite for Array creation.\nIf an ArrayPool is passed in, a RankPool will be created. Currently the DS systems only support creation of a Rank from a single Array.\n If a RankPool is passed in, an ExtentPool will be created. An ExtentPool can be created from multiple RankPools, even if they have different RAID types, although this configuration is not suggested.\n Modification of InPools is only supported for ExtentPools, meaning the Pool input must be an ExtentPool and the InPools input must be an array of RankPools to assign to the ExtentPool.\nAn ExtentPool cannot be passed in as a parameter." ), IN ( true )]
		string InPools,
	 	[Description ( "Not supported." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "As an input parameter: if null, creates a new StoragePool. If not null, modifies the referenced Pool. When returned, it is a reference to the resulting StoragePool. Only modification of ElementName and InPools of ExtentPool is supported." ), IN ( true ), OUT ( true )]
		CIM_StoragePool ref Pool,
	 	[Description ( "Not supported as in input parameter, since the size created is directly obtained from the InPools input. As an output parameter this specifies the size achieved." ), IN ( true ), OUT ( true ), Units ( "Bytes" )]
		uint64 Size
	);
	 	[Description ( "Create a new storage object which is a replica of the specified source storage object. (SourceElement). Note that using the input paramter, CopyType, this function can be used to instantiate the replica, and to create an ongoing association between the source and replica." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4097", "4098..32767", "36874", "36887", "37645", "37646..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "CIM_INVALIDLOGICALUNITID", "Method Reserved", "Invalid VolumeID", "Invalid CopyType specified", "Source Volume must be located on scope system", "Vendor Specific - inherits return codes from CreateOrModifyElementFromStoragePool and AttachReplica"}]
	uint32 CreateReplica(
		[Description ( "CopyType describes the type of copy that will be made. Supported values are: \nUnSyncAssoc: Create an unsynchronized copy and maintain an association to the source. (Persistent FlashCopy)\nUnSyncUnAssoc: Create unassociated copy of the source element (Non-Persistent FlashCopy)." ), IN ( true ), Required ( true ), ValueMap{"2", "3", "4", "5", "..", "32768..65535"}, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
		uint16 CopyType,
	 	[Description ( "A end user relevant name for the element being created. If NULL, then a system supplied default name can be used. The value will be stored in the \'ElementName\' property for the created element." ), IN ( true )]
		string ElementName,
	 	[Description ( "The source storage object - must be an instance of IBMTSDS_Volume." ), IN ( true ), Required ( true )]
		CIM_StorageVolume ref SourceElement,
	 	[Description ( "Reference to the created target storage element (i.e., the replica)." ), IN ( false ), OUT ( true )]
		CIM_StorageVolume ref TargetElement,
	 	[Description ( "The underlying storage for the target element (the replica) will be drawn from TargetPool. Must be an instance of IBMTSDS_ExtentPool." ), IN ( true ), Required ( true )]
		CIM_StoragePool ref TargetPool,
	 	[Description ( "The definition for the StorageSetting to be maintained by the target storage object (the replica). Must be an instance of IBMTSDS_DatatTypeSetting." ), IN ( true )]
		IBMTSDS_DataTypeSetting ref TargetSettingGoal
	);
	 	[Description ( "Delete a StoragePool. The freed space is returned to source StoragePools (indicated by AllocatedFrom StoragePool) or back to underlying storage extents. If 0 is returned, the function completed successfully. the user must delete all dependent objects for deleting a Pool. For example, delete all Volumes on an ExtentPool before deleting the ExtentPool, and deleting the ExtentPool before deleting the RankPool that it was created from. Asynchronous jobs are not supported. PrimordialStoragePools and ArraySitePools cannot be deleted." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097..32767", "32768", "32769", "32770", "36875", "37639", "37640..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Internal provider error", "PARTIAL_SUCCESS", "Invalid string format", "Invalid InPools parameter", "The ESSID of the machine is not matching with the one\'s passed in.", "Device return codes - see ReturnCodes.txt"}]
	uint32 DeleteStoragePool(
		[Description ( "Not supported." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "Reference to the pool to delete." ), IN ( true )]
		CIM_StoragePool ref Pool
	);
	 	[Description ( "Modify (or start a job to modify) the synchronization association between two storage objects. If 0 is returned, the function completed successfully and no ConcreteJob instance was created. If 0x1000 is returned, a ConcreteJob was started and a reference to this Job is returned in the Job output parameter. A return value of 1 indicates the method is not supported. All other values indicate some type of error condition." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x1000", "0x1001..0x7FFF", "0x900A", "0x9023", "0x901A", "0x930C", "0x930D", "0xB000..0xFFFF"}, Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Invalid VolumeID", "Synchronization passed in is invalid", "Invalid Operation specified", "Source Volume and Target Volume must belong to same system", "Source Volume must be located on scope system", "Vendor Specific - inherits error code from ModifySynchronizations method"}]
	uint32 ModifySynchronization(
		[Description ( "Operation describes the type of modification to be made to the replica. Supported values are: \nDetach: \'Forget\' the synchronization between two storage objects. Start to treat the objects as independent. The inverse of AttachReplica.\nResync Replica: Re-establish the synchronization of a replica. This will negate the action of a previous The UnSyncAssoc relationship must have been created with the RecordChanges option.Not supported for UnSyncUnAssoc, since the relationship will no longer exist immediately after the initial copy is complete.\nRestore from Replica: Renew the contents of the original storage object from a replica. Only supported for UnSyncAssoc.\n" ), IN ( true ), Required ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "..", "0x8000..0xFFFF"}, Values{"DMTF Reserved", "DMTF Reserved", "Detach", "Fracture", "Resync Replica", "Restore from Replica", "Prepare", "Unprepare", "Quiesce", "Unquiesce", "Reset To Sync", "Reset To Async", "DMTF Reserved", "Vendor Specific"}]
		uint16 Operation,
	 	[Description ( "The referenced to the StorageSynchronized association describing the storage source/replica relationship." ), IN ( true ), Required ( true )]
		IBMTSDS_StorageSynchronized ref Synchronization
	);
	 	[Description ( "Modify (or start a job to modify) the synchronization association between two storage objects." ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x1000", "0x1001", "0x1002..0x7FFF", "0x8000", "0x900A", "0x9023", "0x9019", "0x901A", "0x901B", "0x930C", "0x930D", "0xB000..0xFFFF"}, Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "CIM_INVALIDLOGICALUNITID", "Method Reserved", "Internal provider error", "Invalid VolumeID", "Synchronization passed in is invalid", "Invalid Option found", "Invalid Operation specified", "At least one Synchronization must be specified", "Source Volume and Target Volume must belong to same system", "Source Volume must be located on scope system", "Device return codes - see ReturnCodes.txt"}]
	uint32 ModifySynchronizations(
		[Description ( "See ModifySynchronization" ), IBMExtension ( "5.2.0.650" ), IN ( true ), Required ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "..", "0x8000..0xFFFF"}, Values{"DMTF Reserved", "DMTF Reserved", "Detach", "Fracture", "Resync Replica", "Restore from Replica", "Prepare", "Unprepare", "Quiesce", "Unquiesce", "Reset To Sync", "Reset To Async", "DMTF Reserved", "Vendor Specific"}]
		uint16 Operation,
	 	[Description ( "The following options are supported:    For options 0-2 and 4-6 see description in AttachReplicas.    For Detaching UnSyncAssoc or UnSyncUnAssoc:        Commit                 This option is used to withdraw the previous consistency and commit                                the new data to the FlashCopy target                                Revertible state will be reset, ChangeRecording will be toggled(if active),                               SourceWriteInhibit will be reset. If relation is not in a Revertible state                               the command is terminated.        InitiateBackground     Use this option to copy all data on the source volume to the the target                                volume for each FlashCopy pair. This option is useful if you have                                established a FlashCopy relationship without a background copy and later                                need to create a permanent physical copy of the data for backup or disaster                                recovery purposes. All FlashCopy relationships are withdrawn once the                                copies are complete. This option works only for UnPersistent FlashCopy.        ResetTargetWriteInhibit Use this option to remove the inhibit write to target option from the                                 FlashCopy relationship.                                 This will not cause the relation to be withdrawn.        Revert                 This option is used to withdraw new data and revert to the previous consistency                               This will not cause the relation to be withdrawn and the revertible state will be reset.                               If the relation is not in a revertible state, then the command is terminated.        TargetIssue            Use this option on the target volume when you want to remove its I-am-a-copy icon.        Valid combinations of options for detaching UnSync:             none             targetIssue              initiateBackground              commit              revert              resetTargetWrite              resetTargetWrite| initiateBackground     For Resync Replica UnSyncAssoc or UnSyncUnAssoc:        InhibitSourceWrites    This option is used to establish a FlashCopy that does not allow source I/O                                Only works if Revertible option is set        Revertible             This option is used to establish a revertible FlashCopy. Before you can use this                                option, a flash copy pair must already be established with the persistent and                                change recording enabled. Then a second flash copy has to be performed on the                                same volumes with the revertible option set.                               Other condition to set this option are: NoBackgroundCopy, InhibitWritesToTarget,                               InhibitWritesToSource, Do NOT AllowPPRCPrimary        All valid options for AttachReplicas are also valid for Resync Replica for UnSyncAssoc and UnSyncUnAssoc    For Restore from Replica, UnSyncAssoc only:        FastReverseRestore     Select this option to reverse the FlashCopy relationship and copy the modified                                tracks from the target volume to the source volume. The user will be to execute                                the Reverse Restore even though Background Copy may not have completed. By                                acknowledging that Background Copy has not completed, the users should be aware                                that they don\'t know what data they have on the Target device.                                ChangeRecording must be enabled on the original source, the originat Target must be write inhibited" ), IBMExtension ( "5.2.0.650" ), IN ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "30", "31", "32", "33", "34"}, Values{"AcceleratedDestage", "AllowPPRCPrimary", "DoNotPermitIfTargetOnline", "InhibitSourceWrites", "InhibitTargetWrites", "NoBackgroundCopy", "NoRecordChanges", "Revertible", "FastReverseRestore", "Commit", "InitiateBackground", "ResetTargetWriteInhibit", "Revert", "TargetIssue"}]
		uint16 Options,
	 	[Description ( "Array of returned code status of modifySynchronizations replicas. See ReturnCodes.txt for a complete list of return codes." ), IBMExtension ( "5.2.0.650" ), IN ( false ), OUT ( true )]
		uint32 ReturnCodes,
	 	[Description ( "The referenced to the StorageSynchronized association describing the storage source/replica relationship." ), IBMExtension ( "5.2.0.650" ), IN ( true ), Required ( true )]
		IBMTSDS_StorageSynchronized ref Synchronizations[]
	);
	 	[Description ( "Start a job to delete multiple StorageVolumes previously created from a single StoragePool. The freed space is returned to the source StoragePool. If 0 is returned, the function completed successfully. Deletion of StorageExtents is not supported." ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097..32767", "32768", "32769", "36874", "37642", "37643..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Internal provider error", "PARTIAL_SUCCESS", "Invalid VolumeID", "Storage Configuration SystemName and  Element SystemName should be equal", "Device return codes - see ReturnCodes.txt"}]
	uint32 ReturnElementsToStoragePool(
		[Description ( "Not supported." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "Array of returned code status of deleted volumes. See ReturnCodes.txt for a complete list of return codes." ), IBMExtension ( "5.2.0.650" ), IN ( false ), OUT ( true )]
		uint32 ReturnCodes,
	 	[Description ( "Reference to the element to return to the StoragePool." ), IBMExtension ( "5.2.0.650" ), IN ( true )]
		CIM_StorageVolume ref TheElements[]
	);
	 	[Description ( "Delete a StorageVolume previously created from a StoragePool. The freed space is returned to the source StoragePool. If 0 is returned, the function completed successfully. Deletion of StorageExtents is not supported." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097..32767", "32768..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Method Reserved", "Vendor Specific - The return codes are inherited from ReturnElementsToStoragePool method"}]
	uint32 ReturnToStoragePool(
		[Description ( "Not supported." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "Reference to the element to return to the StoragePool." ), IN ( true )]
		CIM_StorageVolume ref TheElement
	);
};

// CIM_Indication

	[Abstract ( true ), Description ( "CIM_Indication is the abstract root class for all notifications about changes in schema, objects and their data, and about events detected by providers and instrumentation. Subclasses represent specific types of notifications. \n\nTo receive an Indication, a consumer (or subscriber) must create an instance of CIM_IndicationFilter describing the criteria of the notification, an instance of CIM_ListenerDestination describing the delivery of the notification, and an instance of CIM_IndicationSubscription associating the Filter and Handler." ), INDICATION ( true ), Version ( "2.7.0" )]
class CIM_Indication {
	[Description ( "A list of IndicationIdentifiers whose notifications are correlated with (related to) this one." ), MappingStrings{"Recommendation.ITU|X733.Correlated notifications"}]
	string CorrelatedIndications[];

 	[Description ( "An identifier for the Indication. This property is similar to a key value in that it can be used for identification, when correlating Indications (see the CorrelatedIndications array). Its value SHOULD be unique as long as Alert correlations are reported, but MAY be reused or left NULL if no future Indications will reference it in their CorrelatedIndications array." ), MappingStrings{"Recommendation.ITU|X733.Notification identifier"}]
	string IndicationIdentifier;

 	[Description ( "The time and date of creation of the Indication. The property may be set to NULL if the entity creating the Indication is not capable of determining this information. Note that IndicationTime may be the same for two Indications that are generated in rapid succession." )]
	datetime IndicationTime;

 	[Description ( "Holds the value of the user defined severity value when \'PerceivedSeverity\' is 1 (\"Other\")." ), ModelCorrespondence{"CIM_AlertIndication.PerceivedSeverity"}]
	string OtherSeverity;

 	[Description ( "An enumerated value that describes the severity of the Indication from the notifier\'s point of view: \n1 - Other, by CIM convention, is used to indicate that the Severity\'s value can be found in the OtherSeverity property. \n3 - Degraded/Warning should be used when its appropriate to let the user decide if action is needed. \n4 - Minor should be used to indicate action is needed, but the situation is not serious at this time. \n5 - Major should be used to indicate action is needed NOW. \n6 - Critical should be used to indicate action is needed NOW and the scope is broad (perhaps an imminent outage to a critical resource will result). \n7 - Fatal/NonRecoverable should be used to indicate an error occurred, but it\'s too late to take remedial action. \n2 and 0 - Information and Unknown (respectively) follow common usage. Literally, the Indication is purely informational or its severity is simply unknown." ), MappingStrings{"Recommendation.ITU|X733.Perceived severity"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "Other", "Information", "Degraded/Warning", "Minor", "Major", "Critical", "Fatal/NonRecoverable"}]
	uint16 PerceivedSeverity;


};

// CIM_InstIndication

	[Abstract ( true ), Description ( "CIM_InstIndication is an abstract superclass describing changes to instances. Subclasses represent specific types of change notifications, such as instance creation, deletion and modification." ), INDICATION ( true ), Version ( "2.8.1000" )]
class CIM_InstIndication : CIM_Indication {
	[Description ( "A copy of the instance that changed to generate the Indication. SourceInstance contains the current values of the properties selected by the Indication Filter\'s Query. In the case of CIM_InstDeletion, the property values are copied before the instance is deleted." ), EmbeddedObject ( true ), Required ( true )]
	string SourceInstance;

 	[Description ( "The host name or IP address of the SourceInstance." ), ModelCorrespondence{"CIM_InstIndication.SourceInstance"}]
	string SourceInstanceHost;

 	[Description ( "The Model Path of the SourceInstance. The following format MUST be used to encode the Model Path: \n<NamespacePath>:<ClassName>.<Prop1>=\"<Value1>\", \n<Prop2>=\"<Value2>\", ..." ), ModelCorrespondence{"CIM_InstIndication.SourceInstance"}]
	string SourceInstanceModelPath;


};

// CIM_InstCreation

	[Abstract ( true ), Description ( "CIM_InstCreation notifies when a new instance is created." ), INDICATION ( true ), Version ( "2.6.0" )]
class CIM_InstCreation : CIM_InstIndication {
};

// IBMTSDS_InstCreation

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "IBMTSDS_InstCreation notifies when a new instance is created." ), INDICATION ( true ),  Version ( "2.6.0" )]
class IBMTSDS_InstCreation : CIM_InstCreation {
	[Description ( "An identifier for the Indication. This property is similar to a key value in that it can be used for identification, when correlating Indications (see the CorrelatedIndications array). Its value SHOULD be unique as long as Alert correlations are reported, but MAY be reused or left NULL if no future Indications will reference it in their CorrelatedIndications array. Will be of the form \'<Object> <Identifier> Created <IndicationTime>\'.For example, \'Volume <ESSID>-100a Created 19980525133015.0000000-300\'. The time will be omitted if it is unknown" )]
	string IndicationIdentifier;

 	[Description ( "The time and date of creation of the Indication. The property may be set to NULL if the entity creating the Indication is not capable of determining this information. Note that IndicationTime may be the same for two Indications that are generated in rapid succession." )]
	datetime IndicationTime;

 	[Description ( "A copy of the instance that changed to generate the Indication. SourceInstance contains the current values of the properties selected by the Indication Filter\'s Query. In the case of CIM_InstDeletion, the property values are copied before the instance is deleted." ), EmbeddedObject ( true ), Required ( true )]
	string SourceInstance;

 	[Description ( "The Model Path of the SourceInstance. The following format MUST be used to encode the Model Path: \n<NamespacePath>:<ClassName>.<Prop1>=\"<Value1>\", \n<Prop2>=\"<Value2>\", ..." ), ModelCorrespondence{"CIM_InstIndication.SourceInstance"}]
	string SourceInstanceModelPath;


};

// IBMTSDS_PrimordialStoragePool

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "The PrimordialStoragePool represents the total amount of storage on the device. On the DS, this represents the sum of all ArraySites on the device. On the ESS, this represents the sum of all the disk groups on the device" ),  Version ( "2.8.1000" )]
class IBMTSDS_PrimordialStoragePool : CIM_StoragePool {
	[Description ( "A user-friendly name for the object. \nThe ElementName will be of the form \'PrimordialStoragePool on <StorageSystem.Name>\'." )]
	string ElementName;

 	[Description ( "The InstanceID of IBMTSDS_PrimordialStoragePool will be of the form \'IBMTSDS:<StorageSystem.Name>\', since each StorageSystem will only have one PrimordialStoragePool." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[ArrayType ( "Indexed" ), Description ( "Operational status." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "A unique name in the context of the System that identifies this pool. Same as InstanceID." ), MaxLen ( 256 ), Required ( true )]
	string PoolID;

 	[Description ( "By definition, Primordial is true." )]
	boolean Primordial = true;

 	[Description ( "The remaining amount of raw storage (in bytes) from the TotalManagedSpace of this StoragePool. The value of this property will always be 0 because by definition the ArraySitePools are predefined on the storage device and occupy all of the TotalManagedSpace of the PrimordialStoragePool." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_AllocatedFromStoragePool.SpaceConsumed"}, Required ( true ), Units ( "Bytes" )]
	uint64 RemainingManagedSpace = 0;

 	[Description ( "The total amount of raw storage (in bytes) managed by this StoragePool. This includes all of the bytes consumed to create the storage surfaced by this StoragePool, including all of the overhead bytes that are not reflected in the size of the logical storage allocated from this StoragePool. \n" ), ModelCorrespondence{"CIM_StoragePool.RemainingManagedSpace"}, Units ( "Bytes" )]
	uint64 TotalManagedSpace;


		[Description ( "This method will return a code of 1 (Method not supported) since nothing can be created from the PrimordialStoragePool." ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizes instead"}]
	uint32 GetSupportedSizeRange(
		[Description ( "The type of element for which supported size ranges are reported for." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported size ranges should be reported for." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "The maximum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MaximumVolumeSize,
	 	[Description ( "The minimum size for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MinimumVolumeSize,
	 	[Description ( "A volume/pool size must be a multiple of this value which is specified in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 VolumeSizeDivisor
	);
	 	[Description ( "This method will return a code of 1 (Method not supported) since nothing can be created from the PrimordialStoragePool." ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedSizeRange instead"}]
	uint32 GetSupportedSizes(
		[Description ( "The type of element for which supported sizes are reported for." ), IN ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
		uint16 ElementType,
	 	[Description ( "The StorageSetting for which supported sizes should be reported for." ), IN ( true )]
		CIM_StorageSetting ref Goal,
	 	[Description ( "List of supported sizes for a Volume/Pool creation or modification." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 Sizes
	);
};

// IBMTSDS_PrimordialToExtentPool

[ASSOCIATION ( true ),  Description ( "An IBM-specific association to go from the Primordial StoragePool straight to the ExtentPool, which is where volumes can be created from. This allows clients to skip the nested StoragePool structure." ), IBMExtension ( "5.2.1" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_PrimordialToExtentPool : CIM_ConcreteDependency {
	[Description ( "The PrimordialStoragePool" ), Override ( "Antecedent" )]
	IBMTSDS_PrimordialStoragePool ref Antecedent;

 	[Description ( "The ExtentPool" ), Override ( "Dependent" )]
	IBMTSDS_ExtentPool ref Dependent;


};

// CIM_AuthorizedTarget

[ASSOCIATION ( true ),  Description ( "CIM_AuthorizedTarget is an association used to tie an Identity\'s or Role\'s AuthorizedPrivileges to specific target resources." ), Version ( "2.8.0" )]
class CIM_AuthorizedTarget {
	[Description ( "The AuthorizedPrivilege affecting the target resource." ), Key ( true )]
	CIM_AuthorizedPrivilege ref Privilege;

 	[Description ( "The target set of resources to which the AuthorizedPrivilege applies." ), Key ( true )]
	CIM_ManagedElement ref TargetElement;


};

// CIM_HostedService

[ASSOCIATION ( true ),  Description ( "CIM_HostedService is an association between a Service and the System on which the functionality is located. The cardinality of this association is one-to-many. A System can host many Services. Services are weak with respect to their hosting System. Heuristic: A Service is hosted on the System where the LogicalDevices or SoftwareFeatures that implement the Service are located. The model does not represent Services hosted across multiple systems. The model is as an ApplicationSystem that acts as an aggregation point for Services that are each located on a single host." ), Version ( "2.10.0" )]
class CIM_HostedService : CIM_HostedDependency {
	[Description ( "The hosting System." ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	CIM_System ref Antecedent;

 	[Description ( "The Service hosted on the System." ), Override ( "Dependent" ), Weak ( true )]
	CIM_Service ref Dependent;


};

// IBMTSDS_HostedStorageConfigurationService

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CIM_HostedService is an association between a Service and the System on which the functionality resides. The cardinality of this association is 1-to-many. A System may host many Services. Services are weak with respect to their hosting System. Heuristic: A Service is hosted on the System where the LogicalDevices or SoftwareFeatures that implement the Service are located. The model does not represent Services hosted across multiple systems. This is modeled as an ApplicationSystem that acts as an aggregation point for Services, that are each located on a single host." ),  Version ( "2.8.0" )]
class IBMTSDS_HostedStorageConfigurationService : CIM_HostedService {
	[Description ( "The hosting System." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_StorageSystem ref Antecedent;

 	[Description ( "The Service hosted on the System." ), Key ( true ), Override ( "Dependent" ), Weak ( true )]
	IBMTSDS_StorageConfigurationService ref Dependent;


};

// IBMTSDS_ObjectManagerConformsToProfile

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "The IBMTSDS_ElementConformsToProfile association defines the RegisteredProfiles to which the referenced ObjectManager is conformant." ),  Version ( "2.8.0" )]
class IBMTSDS_ObjectManagerConformsToProfile : CIM_ElementConformsToProfile {
	[Description ( "The RegisteredProfile to which the ManagedElement conforms." ), Key ( true ), Override ( "ConformantStandard" )]
	IBMTSDS_RegisteredProfile ref ConformantStandard;

 	[Description ( "The ObjectManager that conforms to the RegisteredProfile." ), Key ( true ), Override ( "ManagedElement" )]
	IBMTSDS_ObjectManager ref ManagedElement;


};

// CIM_Credential

	[Abstract ( true ), Description ( "Subclasses of CIM_Credential define materials, information or other data which are used to establish identity. Generally, there may be some shared information, or credential material which is used to identify and authenticate an entity in the process of gaining access to, or permission to use, resources. Such credential material may be used to authenticate an entity\'s identity initially, as done by a CIM_AuthenticationService, and additionally on an ongoing basis (for example, during the course of a connection or other security association), as proof that each received message or communication came from a valid \'user\' of that credential material." ), Version ( "2.8.0" )]
class CIM_Credential : CIM_ManagedElement {
	[Description ( "The date and time when the credential expires (and is not appropriate for use for authentication/ authorization). If this information is not applicable, Use a value of \'99991231235959.999999+999\', (1 microsecond before midnight, December 31, 9999 CE, at coordinated universal time + 999 minutes). \nOn CreateInstance, if this property is unspecified, or set to NULL, then a value of \'99991231235959.999999+999\' is assumed. Note that this property does not define how the expiration is set - but that there IS an expiration. The property may be set to either a specific date/time or an interval (calculated from the Issued datetime). For example, for Certificate Authority-signed public key, the expiration is determined by the CA. Another example is a voice mail password that expires 60 days after it is set/issued." )]
	datetime Expires;

 	[Description ( "The date and time when the credential was issued. Use a value of all \'00000101000000.000000+000\', (midnight, January 1, 1 BCE at coordinated universal time +0 minutes), if this information is not applicable. On CreateInstance, if this property is unspecified, or set to NULL, then current time is assumed." )]
	datetime Issued;


};

// CIM_SharedSecret

	[Description ( "CIM_SharedSecret is a secret (such as a password or the response to a challenge question) that is shared between a principal and a particular SharedSecret security service. Secrets may be in the form of a password used for initial authentication, or as with a session key, used as part of a message to verify the originator of the message. It is important to note that SharedSecret is not just a password, but rather is the password used with a particular security service." ), Version ( "2.8.0" )]
class CIM_SharedSecret : CIM_Credential {
	[Description ( "The transformation algorithm, if any, used to protect passwords before use in the protocol. For instance, Kerberos doesn\'t store passwords as the shared secret, but rather, a hash of the password." )]
	string Algorithm;

 	[Description ( "The protocol with which the SharedSecret is used." )]
	string Protocol;

 	[Description ( "RemoteID is the name by which the principal is known at the remote secret key authentication service." ), Key ( true ), MaxLen ( 256 )]
	string RemoteID;

 	[Description ( "The secret known by the principal." )]
	string Secret;

 	[Description ( "The scoping Service\'s CCN." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_SharedSecretService.CreationClassName" )]
	string ServiceCreationClassName;

 	[Description ( "The scoping Service\'s Name." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_SharedSecretService.Name" )]
	string ServiceName;

 	[Description ( "The scoping System\'s CCN." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_SharedSecretService.SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_SharedSecretService.SystemName" )]
	string SystemName;


};

// CIM_LogicalPort

	[Description ( "The abstraction of a port or connection point of a Device. This object should be instantiated when the Port has independent management characteristics from the Device that includes it. Examples are a Fibre Channel Port and a USB Port." ), Version ( "2.10.0" )]
class CIM_LogicalPort : CIM_LogicalDevice {
	[Description ( "The maximum bandwidth of the Port in Bits per Second." ), Units ( "Bits per Second" )]
	uint64 MaxSpeed;

 	[Description ( "Describes the type of module, when PortType is set to 1 (\"Other\")." ), ModelCorrespondence{"CIM_LogicalPort.PortType"}]
	string OtherPortType;

 	[Description ( "PortType is defined to force consistent naming of the \'type\' property in subclasses and to guarantee unique enum values for all instances of NetworkPort. When set to 1 (\"Other\"), related property OtherPortType contains a string description of the type of port. A range of values, DMTF_Reserved, has been defined that allows subclasses to override and define their specific types of ports." ), ModelCorrespondence{"CIM_NetworkPort.OtherNetworkPortType"}, ValueMap{"0", "1", "2", "3..15999", "16000..65535"}, Values{"Unknown", "Other", "Not Applicable", "DMTF Reserved", "Vendor Reserved"}]
	uint16 PortType;

 	[Description ( "The requested bandwidth of the Port in Bits per Second. The actual bandwidth is reported in LogicalPort.Speed." ), ModelCorrespondence{"CIM_LogicalPort.Speed"}, Units ( "Bits per Second" ), Write ( true )]
	uint64 RequestedSpeed;

 	[Description ( "The bandwidth of the Port in Bits per Second." ), Units ( "Bits per Second" )]
	uint64 Speed;

 	[Description ( "In some circumstances, a LogicalPort might be identifiable as a front end or back end port. An example of this situation would be a storage array that might have back end ports to communicate with disk drives and front end ports to communicate with hosts. If there is no restriction on the use of the port, then the value should be set to \'not restricted\'." ), ValueMap{"0", "2", "3", "4"}, Values{"Unknown", "Front-end only", "Back-end only", "Not restricted"}]
	uint16 UsageRestriction;


};

// CIM_NetworkPort

	[Description ( "NetworkPort is the logical representation of network communications hardware such as a physical connector and the setup or operation of the network chips, at the lowest layers of a network stack." ), Version ( "2.10.0" )]
class CIM_NetworkPort : CIM_LogicalPort {
	[Description ( "The active or negotiated maximum transmission unit (MTU) that can be supported." ), Units ( "Bytes" )]
	uint64 ActiveMaximumTransmissionUnit;

 	[Description ( "A Boolean that indicates whether the NetworkPort is capable of automatically determining the speed or other communications characteristics of the attached network media." )]
	boolean AutoSense;

 	[Description ( "Boolean that indicates that the port is operating in full duplex mode." )]
	boolean FullDuplex;

 	[Description ( "An enumeration of the types of links. When set to 1 (\"Other\"), the related property OtherLinkTechnology contains a string description of the type of link." ), ModelCorrespondence{"CIM_NetworkPort.OtherLinkTechnology"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}, Values{"Unknown", "Other", "Ethernet", "IB", "FC", "FDDI", "ATM", "Token Ring", "Frame Relay", "Infrared", "BlueTooth", "Wireless LAN"}]
	uint16 LinkTechnology;

 	[Description ( "An array of strings that indicates the network addresses for the port." ), MappingStrings{"MIF.DMTF|Network Adapter 802 Port|001.3"}, MaxLen ( 64 )]
	string NetworkAddresses[];

 	[Description ( "A string value that describes LinkTechnology when it is set to 1, \"Other\"." ), ModelCorrespondence{"CIM_NetworkPort.LinkTechnology"}]
	string OtherLinkTechnology;

 	[Deprecated{"CIM_NetworkPort.OtherPortType"}, Description ( "Note: The use of this property is deprecated in lieu of CIM_LogicalPort.PortType. \nDeprecated description: The type of module, when PortType is set to 1 (\"Other\".)" ), ModelCorrespondence{"CIM_LogicalPort.PortType"}]
	string OtherNetworkPortType;

 	[Description ( "PermanentAddress defines the network address that is hardcoded into a port. This \'hardcoded\' address can be changed using a firmware upgrade or a software configuration. When this change is made, the field should be updated at the same time. PermanentAddress should be left blank if no \'hardcoded\' address exists for the NetworkAdapter." ), MappingStrings{"MIF.DMTF|Network Adapter 802 Port|001.2"}, MaxLen ( 64 )]
	string PermanentAddress;

 	[Description ( "NetworkPorts are often numbered relative to either a logical module or a network element." )]
	uint16 PortNumber;

 	[Description ( "The current bandwidth of the Port in Bits per Second. For ports that vary in bandwidth or for those where no accurate estimation can be made, this property should contain the nominal bandwidth." ), MappingStrings{"MIB.IETF|MIB-II.ifSpeed", "MIF.DMTF|Network Adapter 802 Port|001.5"}, Override ( "Speed" ), Units ( "Bits per Second" )]
	uint64 Speed;

 	[Description ( "The maximum transmission unit (MTU) that can be supported." ), Units ( "Bytes" )]
	uint64 SupportedMaximumTransmissionUnit;


};

// CIM_FCPort

	[Description ( "Capabilities and management of a Fibre Channel Port Device." ), Version ( "2.10.0" )]
class CIM_FCPort : CIM_NetworkPort {
	[Description ( "An array of integers that indicates the Classes of Service that are active. The Active COS is indicated in ActiveCOS." ), ModelCorrespondence{"CIM_FCPort.SupportedCOS"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "1", "2", "3", "4", "5", "6", "F"}]
	uint16 ActiveCOS[];

 	[Description ( "An array of integers that indicates the Fibre Channel FC-4 protocols currently running. A list of all supported protocols is indicated in the SupportedFC4Types property." ), ModelCorrespondence{"CIM_FCPort.SupportedFC4Types"}, ValueMap{"0", "1", "4", "5", "8", "9", "17", "18", "19", "21", "22", "23", "25", "26", "27", "28", "32", "34", "36", "64", "80", "81", "82", "88", "96", "255"}, Values{"Unknown", "Other", "ISO/IEC 8802 - 2 LLC", "IP over FC", "SCSI - FCP", "SCSI - GPP", "IPI - 3 Master", "IPI - 3 Slave", "IPI - 3 Peer", "CP IPI - 3 Master", "CP IPI - 3 Slave", "CP IPI - 3 Peer", "SBCCS Channel", "SBCCS Control Unit", "FC-SB-2 Channel", "FC-SB-2 Control Unit", "Fibre Channel Services (FC-GS, FC-GS-2, FC-GS-3)", "FC-SW", "FC - SNMP", "HIPPI - FP", "BBL Control", "BBL FDDI Encapsulated LAN PDU", "BBL 802.3 Encapsulated LAN PDU", "FC - VI", "FC - AV", "Vendor Unique"}]
	uint16 ActiveFC4Types[];

 	[Description ( "The specific mode currently enabled for the Port. If the port is logged in, this will be the negotiated port type, otherwise the configured port type will be reported. \nThe values: \"N\" = Node Port, \"NL\" = Node Port supporting FC arbitrated loop, \"NX\" = Port may negotiate to become either a node port (N) or a node port supporting FC arbitrated loop (NL), \"E\" = Expansion Port connecting fabric elements (for example, FC switches), \"F\" = Fabric (element) Port, \"FL\" = Fabric (element) Port supporting FC arbitrated loop, \"FX\" = Port may negotiate to become a fabric port (F), or a fabric port supporting FC arbitrated loop (FL). \"B\" = Bridge port, and \"G\" = Port may negotiate to become either an expansion port (E), or a fabric port (F), \"GL\" = Port may negotiate to become an expansion port (E), a fabric port (F), or a fabric port supporting FC arbitrated loop (FL). \nPortTypes are defined in the ANSI X3 standards. When set to 1 (\"Other\"), the related property OtherPortType contains a string description of the type of port." ), Override ( "PortType" ), ValueMap{"0", "1", "10", "11", "12", "13", "14", "15", "16", "17", "18", "16000..65535"}, Values{"Unknown", "Other", "N", "NL", "F/NL", "Nx", "E", "F", "FL", "B", "G", "Vendor Reserved"}]
	uint16 PortType;

 	[Description ( "An array of integers that indicates the Fibre Channel Classes of Service that are supported. The active COS are indicated in ActiveCOS." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "1", "2", "3", "4", "5", "6", "F"}]
	uint16 SupportedCOS[];

 	[Description ( "An array of integers that indicates the Fibre Channel FC-4 protocols supported. The protocols that are active and running are indicated in the ActiveFC4Types property." ), ValueMap{"0", "1", "4", "5", "8", "9", "17", "18", "19", "21", "22", "23", "25", "26", "27", "28", "32", "34", "36", "64", "80", "81", "82", "88", "96", "255"}, Values{"Unknown", "Other", "ISO/IEC 8802 - 2 LLC", "IP over FC", "SCSI - FCP", "SCSI - GPP", "IPI - 3 Master", "IPI - 3 Slave", "IPI - 3 Peer", "CP IPI - 3 Master", "CP IPI - 3 Slave", "CP IPI - 3 Peer", "SBCCS Channel", "SBCCS Control Unit", "FC-SB-2 Channel", "FC-SB-2 Control Unit", "Fibre Channel Services (FC-GS, FC-GS-2, FC-GS-3)", "FC-SW", "FC - SNMP", "HIPPI - FP", "BBL Control", "BBL FDDI Encapsulated LAN PDU", "BBL 802.3 Encapsulated LAN PDU", "FC - VI", "FC - AV", "Vendor Unique"}]
	uint16 SupportedFC4Types[];


};

// IBMTSDS_FCPort

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "Capabilities and management of a Fibre Channel Port Device." ),  Version ( "2.7.1" )]
class IBMTSDS_FCPort : CIM_FCPort {
	[Description ( "The name of this class. Set to \'IBMTSDS_FCPort\'" ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "The DeviceID is four digit hex number with the following encoding for DS:\nBits 15 : Port Type - 0 for I/O port, 1 for network port\nBits 14 - 13: Reserved\nBits 12- 8:  Enclosure\nBits 7 - 4:  Adapter\nBits 3 - 0: Port For ESS, the DeviceID matches the Port number in ESSCLI." ), Key ( true ), MaxLen ( 64 ), Override ( "DeviceID" )]
	string DeviceID;

 	[Description ( "Health state." ), Experimental ( true ), ValueMap{"0", "5", "10", "15", "20", "25", "30", ".."}, Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"}]
	uint16 HealthState;

 	[Description ( "An enumeration of the types of links. When set to 1 (\"Other\"), the related property OtherLinkTechnology contains a string description of the link\'s type." ), ModelCorrespondence{"CIM_NetworkPort.OtherLinkTechnology"}, Override ( "LinkTechnology" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}, Values{"Unknown", "Other", "Ethernet", "IB", "FC", "FDDI", "ATM", "Token Ring", "Frame Relay", "Infrared", "BlueTooth", "Wireless LAN"}]
	uint16 LinkTechnology = 4;

 	[Description ( "The physical location of the port. This string matches the Loc property of the esscli command list port and the dscli command lshba -l" ), IBMExtension ( "5.2.1" )]
	string Location;

 	[ArrayType ( "Indexed" ), Description ( "The possible status of the FCPort for DS are OK, Error, Dormant Starting, Stopping, and Stopped. The possible status for ESS are OK, Error, In Service, and Unknown." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, Override ( "OperationalStatus" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "The PermanentAddress is the WWPN of this FCPort." ), MappingStrings{"MIF.DMTF|Network Adapter 802 Port|001.2"}, MaxLen ( 64 ), Override ( "PermanentAddress" )]
	string PermanentAddress;

 	[Description ( "The current bandwidth of the Port in Bits per Second. For ports that vary in bandwidth or for those where no accurate estimation can be made, this property should contain the nominal bandwidth." ), MappingStrings{"MIB.IETF|MIB-II.ifSpeed", "MIF.DMTF|Network Adapter 802 Port|001.5"}, Override ( "Speed" ), Units ( "Bits per Second" )]
	uint64 Speed;

 	[Description ( "The scoping System\'s CreationClassName. Set to \'IBMTSDS_StorageSystem\'" ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_System.Name" )]
	string SystemName;

 	[Description ( "In some circumstances, a LogicalPort might be identifiable as a front end or back end port. An example of this situation would be a storage array that might have back end ports to communicate with disk drives and front end ports to communicate with hosts. If there is no restriction on the use of the port, then the value should be set to \'not restricted\'." ), ValueMap{"0", "2", "3", "4"}, Values{"Unknown", "Front-end only", "Back-end only", "Not restricted"}]
	uint16 UsageRestriction = 2;


};

// CIM_InstModification

	[Description ( "CIM_InstModification notifies when an instance is modified." ), INDICATION ( true ), Version ( "2.10.0" )]
class CIM_InstModification : CIM_InstIndication {
	[Description ( "A copy of the \'previous\' instance whose change generated the Indication. PreviousInstance contains \'older\' values of an instance\'s properties (as compared to SourceInstance), selected by the IndicationFilter\'s Query." ), EmbeddedObject ( true )]
	string PreviousInstance;


};

// CIM_StorageReplicationCapabilities

	[Description ( "This subclass defines the replication capabilities of a StorageConfigurationService. Multiple instances of StorageReplicationCapabilities may be associated with a StorageConfigurationService using ElementCapabilities. A provider should create one instance for each supported SynchronizationType." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_StorageReplicationCapabilities : CIM_Capabilities {
	[Description ( "Remote replication provides StorageConfigurationService instances for source systems and target systems. A client determines that extrinsic methods of the service should be invoked to one instance or the other based on the value of this property. If the primary instance is unavailable, the provider may indicate an alternate instance. Values: \nNone: no alternate exists. Source: invoke to source element service instance. Target: invoke to target element service instance. Proxy: find and invoke alternate proxy service instance." ), ValueMap{"2", "3", "4", "5", "..", "0x8000.."}, Values{"None", "Source", "Target", "Proxy", "DMTF Reserved", "Vendor Specific"}]
	uint16 AlternateReplicationServicePointAccess;

 	[Description ( "True indicates peer-to-peer connections are bi-directional. False indicates connections are uni-directional." )]
	boolean BidirectionalConnectionsSupported;

 	[Description ( "DeltaReplicaPool indicates that a specialized pool is required as a container for delta replica elements. Values: Any: delta replicas can be created in any pool. Exclusive: one specialized, exclusive pool must be created for each source element that has associated delta replicas. Shared: one specialized, shared pool must be created to be shared by all source elements with associated delta replicas." ), ValueMap{"2", "3", "4", "..", "0x8000.."}, Values{"Any", "Exclusive", "Shared", "DMTF Reserved", "Vendor Specific"}]
	uint16 DeltaReplicaPoolAccess;

 	[Description ( "Lists the replica synchronization states in which the provider allows host access to replicas. Accessibility does not guarantee replica contents are valid or consistent." ), ModelCorrespondence{"CIM_StorageSynchronized.SyncState"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "..", "0x8000.."}, Values{"Initialized", "Prepare In Progress", "Prepared", "Resync In Progress", "Synchronized", "Fracture In Progress", "Quiesce In Progress", "Quiesced", "Restore In Progress", "Idle", "Broken", "Fractured", "Frozen", "Copy In Progress", "DMTF Reserved", "Vendor Specific"}]
	uint16 HostAccessibleState[];

 	[Description ( "True indicates all delta replicas associated with the same source element can be incrementally dependent. Only the oldest replica in the set may be deleted or resynced." )]
	boolean IncrementalDeltasSupported;

 	[Description ( "InitialReplicationState specifies which initial ReplicationState is supported by a particular provider. Values are: \nInitialized: The replication relationship is known and unsynchronized, but time required to synchronize may be long. \nPrepared: The replication relationship is known and unsynchronized and the time required to synchronize will be short. \nSynchronized: The replicas are synchronized. Idle: an UnSyncAssoc replica is ready to manage." ), ModelCorrespondence{"CIM_StorageConfigurationService.AttachReplica", "CIM_StorageConfigurationService.AttachOrModifyReplica", "CIM_StorageConfigurationService.CreateReplica"}, ValueMap{"2", "3", "4", "5", "..", "0x8000..0xFFFF"}, Values{"Initialized", "Prepared", "Synchronized", "Idle", "DMTF Reserved", "Vendor Specific"}]
	uint16 InitialReplicationState;

 	[Description ( "Start or do not start background copy when replica is created." ), ModelCorrespondence{"CIM_StorageSetting.InitialSynchronization"}, ValueMap{"0", "1", "2", "..", "0x8000.."}, Values{"Not Managed", "Start", "Do Not Start", "DMTF Reserved", "Vendor Specific"}]
	uint16 InitialSynchronizationDefault;

 	[Description ( "True indicates local mirror can be snapshot source." )]
	boolean LocalMirrorSnapshotSupported;

 	[Description ( "Warning threshold for generating an indication for RemainingManagedSpace. Value of zero means no warning generated. Triggered when RemainingManagedSpace <= (TotalManagedSpace*LowSpaceWarningThreshold)/100." ), MaxValue ( 100 ), MinValue ( 0 ), ModelCorrespondence{"CIM_StoragePool.LowSpaceWarningThreshold"}, Units ( "Percentage" )]
	uint8 LowSpaceWarningThresholdDefault;

 	[Description ( "Maximum number of peer-to-peer connections to which a port may be assigned." )]
	uint16 MaximumConnectionsPerPort;

 	[Description ( "Maximum local mirror replication depth allowed by this instance of StorageConfigurationService. Value 1 indicates multi-level replication not supported." )]
	uint16 MaximumLocalReplicationDepth = 1;

 	[Description ( "Maximum number of peer connections supported by this instance of StorageConfigurationService." )]
	uint16 MaximumPeerConnections;

 	[Description ( "Maximum number of port pairs assigned to a peer-to-peer connection." )]
	uint16 MaximumPortsPerConnection;

 	[Description ( "Maximum remote mirror replication depth allowed by this instance of StorageConfigurationService. Value N means that remote replicas can span N linked peer-to-peer connections. Value 1 indicates multi-level replication not supported." )]
	uint16 MaximumRemoteReplicationDepth = 1;

 	[Description ( "Maximum number of replicas that can be associated with one source element." )]
	uint16 MaximumReplicasPerSource;

 	[Description ( "Peer connection protocol is a private, vendor-specific protocol for replication data transport. A client verifies that two peers support the same protocol before establishing a peer-to-peer connection." )]
	string PeerConnectionProtocol;

 	[Description ( "True indicates replicas can persist during power off or system reset. False indicates replicas lost during these events." )]
	boolean PersistentReplicasSupported;

 	[Description ( "Remote replication buffer elements are instances of CIM_Memory. A buffer element may be created from a component extent with a BasedOn association or in a storage pool with an AllocatedFromStoragePool association. The provider can also make the size and element type opaque to a client. Values: \nNot specified: client allows provider to determine size and container element type. \nInExtent: buffer must be created from passed component extent. \nInPool: buffer must be created in passed pool." ), ValueMap{"0", "2", "3", "..", "0x8000.."}, Values{"Not specified", "InExtent", "InPool", "DMTF Reserved", "Vendor Specific"}]
	uint16 RemoteBufferElementType;

 	[Description ( "Array provider may require multiple buffer elements per array instance as indicated by this property. Values: \nArray: one buffer element for the entire array. \nComponentCS: one buffer element per ComputerSystem element in a clustered array. \nPipe: one or two buffer elements per replication pipe." ), ValueMap{"2", "3", "4", "..", "0x8000.."}, Values{"Array", "ComponentCS", "Pipe", "DMTF Reserved", "Vendor Specific"}]
	uint16 RemoteBufferHost;

 	[Description ( "This property allows the provider to indicate the required location for remote buffer elements. Values: \nSource: buffer needed only on platforms hosting source elements. \nTarget: buffer needed only on platforms hosting target elements. \nBoth: buffers needed for both source and target platforms." ), ValueMap{"2", "3", "4", "..", "0x8000.."}, Values{"Source", "Target", "Both", "DMTF Reserved", "Vendor Specific"}]
	uint16 RemoteBufferLocation;

 	[Description ( "Peer may require a write buffer for remote replica elements with async I/O buffering. Typically used to increase remote mirror replication engine performance while maintaining high availability. Values: \nRequired: must have buffer if any Async remote replicas are created. \nOptional: may have buffer if any Async remote replicas are created." ), ValueMap{"0", "2", "3", "..", "0x8000.."}, Values{"Not Supported", "Required", "Optional", "DMTF Reserved", "Vendor Specific"}]
	uint16 RemoteBufferSupported;

 	[Description ( "True indicates remote mirror can be snapshot source." )]
	boolean RemoteMirrorSnapshotSupported;

 	[Description ( "Remote replication provides StorageConfigurationService instances for source systems and target systems. A client determines that extrinsic methods of the service should be invoked to one instance or the other based on the value of this property. Values: \nNot Specified: invoke a method to either system instance. Source: invoke to source element service instance. Target: invoke to target element service instance. Proxy: find and invoke to proxy service instance." ), ValueMap{"2", "3", "4", "5", "..", "0x8000.."}, Values{"Not Specified", "Source", "Target", "Proxy", "DMTF Reserved", "Vendor Specific"}]
	uint16 RemoteReplicationServicePointAccess;

 	[Description ( "Indicates host access restrictions for replicas with these capabilities. Values: \n2 = not accessible. \n3 = no restrictions. Any host may access. \n4 = only accessible by associated source element hosts. \n5 = not accessible by source element hosts. Other hosts OK." ), ValueMap{"2", "3", "4", "5", ".."}, Values{"Not Accessible", "No Restrictions", "Source Hosts Only", "Source Hosts Excluded", "DMTF Reserved"}]
	uint16 ReplicaHostAccessibility;

 	[Description ( "ReplicationPriority allows the priority of background Replication I/O to be managed relative to host I/O. Default applies to initial or deferred background Replication operations. Value can be modified while in Replication-in-progress state. Values: Low: Replication engine I/O lower priority than host I/O. \nSame: Replication engine I/O has the same priority as host I/O. \nHigh: Replication engine I/O has higher priority than host I/O." ), ModelCorrespondence{"CIM_StorageSetting.ReplicationPriority"}, ValueMap{"0", "1", "2", "3", "..", "0x8000.."}, Values{"Not Managed", "Low", "Same", "High", "DMTF Reserved", "Vendor Specific"}]
	uint16 ReplicationPriorityDefault;

 	[Description ( "True indicates space limits on allocation from StoragePools may be enforced." ), ModelCorrespondence{"CIM_AllocatedFromStoragePool.SpaceLimit"}]
	boolean SpaceLimitSupported;

 	[Description ( "Warning threshold for instance modification indication for SpaceConsumed by a replica element. Value of zero means no warning generated. Triggered when SpaceConsumed >= (SpaceLimit*SpaceLimitWarningThreshold)/100." ), MaxValue ( 100 ), MinValue ( 0 ), ModelCorrespondence{"CIM_AllocatedFromStoragePool.SpaceLimitWarningThreshold"}, Units ( "Percentage" )]
	uint8 SpaceLimitWarningThresholdDefault;

 	[Description ( "True indicates space reserved for replicas can be from a specialized pool." )]
	boolean SpaceReservationSupported;

 	[Description ( "Enumeration indicating what operations will be executed as asynchronous jobs. If an operation is included in both this and SupportedSynchronousActions then the underlying implementation is indicating that it may or may not create a job." ), ModelCorrespondence{"CIM_StorageReplicationCapabilities.SupportedSynchronousActions"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", ".."}, Values{"Local Replica Creation", "Remote Replica Creation", "Local Replica Modification", "Remote Replica Modification", "Local Replica Attachment", "Remote Replica Attachment", "Buffer Creation", "DMTF Reserved"}]
	uint16 SupportedAsynchronousActions[];

 	[Description ( "Enumeration indicating which ModifySynchronization operations are supported by this instance of StorageReplicationCapabilities." ), ModelCorrespondence{"CIM_StorageConfigurationService.ModifySynchronization"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "..", "0x8000..0xFFFF"}, Values{"Detach", "Fracture", "Resync", "Restore", "Prepare", "Unprepare", "Quiesce", "Unquiesce", "Reset To Sync", "Reset To Async", "Start Copy", "Stop Copy", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedModifyOperations[];

 	[Description ( "Enumeration indicating which specialized storage element types are supported by this instance of StorageReplicationCapabilities. Specialized types are indicated by the value of the IntendedUsage in StorageSetting." ), ModelCorrespondence{"CIM_StorageSetting.IntendedUsage"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "..", "0x8000..0xFFFF"}, Values{"Delta Pool", "Delta Pool Component", "Remote Mirror", "Local Mirror", "Full Snapshot", "Delta Snapshot", "Replication Buffer", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedSpecializedElements[];

 	[Description ( "SupportedSynchronizationType describes the type of Synchronization that is characterized by this instance of StorageReplicationCapabilities. Values are: \nAsync: create a mirror that is nearly always synchronized. \nSync: create a mirror that is always synchronized. \nUnSyncAssocFull: create a full size snapshot (Point In Time image). \nUnSyncAssocDelta: create a delta snapshot (Point In Time image). \nUnSyncUnAssoc: create a full size, independent replica." ), ValueMap{"2", "3", "4", "5", "6", "..", "32768..65535"}, Values{"Async", "Sync", "UnSyncAssoc-Full", "UnSyncAssoc-Delta", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedSynchronizationType;

 	[Description ( "Enumeration indicating what operations will be executed without the creation of a job. If an operation is included in both this and SupportedAsynchronousActions then the underlying instrumentation is indicating that it may or may not create a job." ), ModelCorrespondence{"CIM_StorageReplicationCapabilities.SupportedAsynchronousActions"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", ".."}, Values{"Local Replica Creation", "Remote Replica Creation", "Local Replica Modification", "Remote Replica Modification", "Local Replica Attachment", "Remote Replica Attachment", "Buffer Creation", "NetworkPipe Creation", "DMTF Reserved"}]
	uint16 SupportedSynchronousActions[];

 	[Description ( "Indicate if an async remote replica pair is allowed to use a write buffer for asynchronous write buffering. \n- Not Managed: use or not of the buffer is up to the implementation. \n- Use Buffer: use of a buffer is required. \n- Do Not Use Buffer: a buffer shall not be used." ), ModelCorrespondence{"CIM_StorageSetting.UseReplicationBuffer"}, ValueMap{"0", "1", "2", "..", "0x8000.."}, Values{"Not Managed", "Use Buffer", "Do Not Use Buffer", "DMTF Reserved", "Vendor Specific"}]
	uint16 UseReplicationBufferDefault;


};

// IBMTSDS_StorageReplicationCapabilities

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This subclass defines the replication capabilities of a StorageConfigurationService. Multiple instances of StorageReplicationCapabilities may be associated with a StorageConfigurationService using ElementCapabilities. A provider should create one instance for each supported SynchronizationType." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_StorageReplicationCapabilities : CIM_StorageReplicationCapabilities {
	[Description ( "Lists the replica synchronization states in which the provider allows host access to replicas. Accessibility does not guarantee replica contents are valid or consistent." ), ModelCorrespondence{"CIM_StorageSynchronized.SyncState"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "..", "0x8000.."}, Values{"Initialized", "Prepare In Progress", "Prepared", "Resync In Progress", "Synchronized", "Fracture In Progress", "Quiesce In Progress", "Quiesced", "Restore In Progress", "Idle", "Broken", "Fractured", "Frozen", "Copy In Progress", "DMTF Reserved", "Vendor Specific"}]
	uint16 HostAccessibleState[] = {2, 5, 6, 10, 11, 12, 13, 15};

 	[Description ( "InitialReplicationState specifies which initial ReplicationState is supported by a particular provider. Values are: \nInitialized: The replication relationship is known and unsynchronized, but time required to synchronize may be long. \nPrepared: The replication relationship is known and unsynchronized and the time required to synchronize will be short. \nSynchronized: The replicas are synchronized. Idle: an UnSyncAssoc replica is ready to manage." ), ModelCorrespondence{"CIM_StorageConfigurationService.AttachReplica", "CIM_StorageConfigurationService.AttachOrModifyReplica", "CIM_StorageConfigurationService.CreateReplica"}, ValueMap{"2", "3", "4", "5", "..", "0x8000..0xFFFF"}, Values{"Initialized", "Prepared", "Synchronized", "Idle", "DMTF Reserved", "Vendor Specific"}]
	uint16 InitialReplicationState = 3;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. According to SMI-S 1.1, there must be an instance of this class for each CopyType supported, so the InstanceID will be \'IBMTSDS:<CopyType>\' where CopyType is UnSyncAssoc-Full, UnSyncAssoc-Delta, and UnSyncUnAssoc." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "Maximum local mirror replication depth allowed by this instance of StorageConfigurationService. Value 1 indicates multi-level replication not supported." )]
	uint16 MaximumLocalReplicationDepth = 1;

 	[Description ( "Maximum number of replicas that can be associated with one source element." )]
	uint16 MaximumReplicasPerSource = 12;

 	[Description ( "True indicates replicas can persist during power off or system reset. False indicates replicas lost during these events." )]
	boolean PersistentReplicasSupported = true;

 	[Description ( "Indicates host access restrictions for replicas with these capabilities. Values: \n2 = not accessible. \n3 = no restrictions. Any host may access. \n4 = only accessible by associated source element hosts. \n5 = not accessible by source element hosts. Other hosts OK." ), ValueMap{"2", "3", "4", "5", ".."}, Values{"Not Accessible", "No Restrictions", "Source Hosts Only", "Source Hosts Excluded", "DMTF Reserved"}]
	uint16 ReplicaHostAccessibility = 3;

 	[Description ( "Enumeration indicating what operations will be executed as asynchronous jobs. If an operation is included in both this and SupportedSynchronousActions then the underlying implementation is indicating that it may or may not create a job." ), ModelCorrespondence{"CIM_StorageReplicationCapabilities.SupportedSynchronousActions"}, Override ( "SupportedAsynchronousActions" ), ValueMap{"2", "3", "4", "5", "6", "7", "8", ".."}, Values{"Local Replica Creation", "Remote Replica Creation", "Local Replica Modification", "Remote Replica Modification", "Local Replica Attachment", "Remote Replica Attachment", "Buffer Creation", "DMTF Reserved"}]
	uint16 SupportedAsynchronousActions[];

 	[Description ( "Enumeration indicating which ModifySynchronization operations are supported by this instance of StorageReplicationCapabilities." ), ModelCorrespondence{"CIM_StorageConfigurationService.ModifySynchronization"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "..", "0x8000..0xFFFF"}, Values{"Detach", "Fracture", "Resync", "Restore", "Prepare", "Unprepare", "Quiesce", "Unquiesce", "Reset To Sync", "Reset To Async", "Start Copy", "Stop Copy", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedModifyOperations[] = {2, 4, 5};

 	[Description ( "Enumeration indicating which specialized storage element types are supported by this instance of StorageReplicationCapabilities. Specialized types are indicated by the value of the IntendedUsage in StorageSetting." ), ModelCorrespondence{"CIM_StorageSetting.IntendedUsage"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "..", "0x8000..0xFFFF"}, Values{"Delta Pool", "Delta Pool Component", "Remote Mirror", "Local Mirror", "Full Snapshot", "Delta Snapshot", "Replication Buffer", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedSpecializedElements[] = {6, 7};

 	[Description ( "SupportedSynchronizationType describes the type of Synchronization that is characterized by this instance of StorageReplicationCapabilities. Values are: \nAsync: create a mirror that is nearly always synchronized. \nSync: create a mirror that is always synchronized. \nUnSyncAssocFull: create a full size snapshot (Point In Time image). \nUnSyncAssocDelta: create a delta snapshot (Point In Time image). \nUnSyncUnAssoc: create a full size, independent replica. Currently only UnSyncAssoc-Full, UnSyncAssoc-Delta, and UnSyncUnAssoc are supported." ), Override ( "SupportedSynchronizationType" ), ValueMap{"2", "3", "4", "5", "6", "..", "32768..65535"}, Values{"Async", "Sync", "UnSyncAssoc-Full", "UnSyncAssoc-Delta", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedSynchronizationType;

 	[Description ( "Enumeration indicating what operations will be executed without the creation of a job. If an operation is included in both this and SupportedAsynchronousActions then the underlying instrumentation is indicating that it may or may not create a job." ), ModelCorrespondence{"CIM_StorageReplicationCapabilities.SupportedAsynchronousActions"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", ".."}, Values{"Local Replica Creation", "Remote Replica Creation", "Local Replica Modification", "Remote Replica Modification", "Local Replica Attachment", "Remote Replica Attachment", "Buffer Creation", "NetworkPipe Creation", "DMTF Reserved"}]
	uint16 SupportedSynchronousActions[] = {2, 4, 6};


};

// CIM_ElementSettingData

[ASSOCIATION ( true ),  Description ( "ElementSettingData represents the association between ManagedElements and applicable setting data. This association also describes whether this is a default or current setting." ), Version ( "2.10.0" )]
class CIM_ElementSettingData {
	[Description ( "An enumerated integer that indicates that the referenced setting is currently being used in the operation of the element or that this information is unknown." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Is Current", "Is Not Current"}]
	uint16 IsCurrent;

 	[Description ( "An enumerated integer that indicates that the referenced setting is a default setting for the element or that this information is unknown." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Is Default", "Is Not Default"}]
	uint16 IsDefault;

 	[Description ( "An enumerated integer indicating whether or not the referenced setting is the next setting to be applied. For example, the application could take place on a re-initialization, reset, reconfiguration request. This could be a permanent setting, or a setting used only one time, as indicated by the flag. If it is a permanent setting then the setting is applied every time the managed element reinitializes, until this flag is manually reset. However, if it is single use, then the flag is automatically cleared after the settings are applied. Also note that if this flag is specified (i.e. set to value other than \"Unknown\"), then this takes precedence over any SettingData that may have been specified as Default. For example: If the managed element is a computer system, and the value of this flag is \"Is Next\", then the setting will be effective next time the system resets. And, unless this flag is changed, it will persist for subsequent system resets. However, if this flag is set to \"Is Next For Single Use\", then this setting will only be used once and the flag would be reset after that to \"Is Not Next\". So, in the above example, if the system reboots in a quick succession, the setting will not be used at the second reboot." ), ValueMap{"0", "1", "2", "3"}, Values{"Unknown", "Is Next", "Is Not Next", "Is Next For Single Use"}]
	uint16 IsNext;

 	[Description ( "The managed element." ), Key ( true )]
	CIM_ManagedElement ref ManagedElement;

 	[Description ( "The SettingData object that is associated with the element." ), Key ( true )]
	CIM_SettingData ref SettingData;


};

// CIM_StorageVolume

	[Description ( "A StorageVolume is a StorageExtent that is published for use outside of the scoping System. For SCSI storage target devices, StorageVolumes are used to represent target Block devices, (peripheral device type codes 0h (i.e, direct-access), 4h (i.e., write-once), 5h (i.e., CD/DVD), 7h (i.e., optical memory), and Eh (i.e., simplified direct-access).); \nStream devices, (peripheral device type codes 1h (i.e., \nsequential-access) and 3h (i.e., processor).). \nIn these case, StorageVolume.Name will be derived from SCSI volume as documented in StorageExtent.Nameformat and NameNamespace Descriptions. \n\nThe \'Exported\' value from StorageExtent.ExtentStatus[] MUST be in all instances of StorageVolume to maintain the semantic of \'published\' described above." ), Version ( "2.8.1000" )]
class CIM_StorageVolume : CIM_StorageExtent {
	[Description ( "A unique identifier for the Volume." ), MappingStrings{"ANSI|T10|SCSI SPC-3|8.6"}, ModelCorrespondence{"CIM_StorageVolume.NameFormat"}, Override ( "Name" )]
	string Name;

 	[Description ( "A subset of StorageExtent name formats apply to StorageVolumes." ), Override ( "NameFormat" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}, Values{"Unknown", "Other", "VPD83NAA6", "VPD83NAA5", "VPD83Type2", "VPD83Type1", "VPD83Type0", "SNVM", "NodeWWN", "NAA", "EUI64", "T10VID"}]
	uint16 NameFormat;

 	[Description ( "A subset of StorageExtent name spaces apply to StorageVolume." ), Override ( "NameNamespace" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "Other", "VPD83Type3", "VPD83Type2", "VPD83Type1", "VPD80", "NodeWWN", "SNVM"}]
	uint16 NameNamespace;


};

// IBMTSDS_Volume

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A Volume is a StorageExtent that is published for use outside of the scoping System. For SCSI storage target devices, Volumes are used to represent target Block devices, (peripheral device type codes 0h (i.e, direct-access), 4h (i.e., write-once), 5h (i.e., CD/DVD), 7h (i.e., optical memory), and Eh (i.e., simplified direct-access).); " ),  Version ( "2.8.1000" )]
class IBMTSDS_Volume : CIM_StorageVolume {
	[Description ( "For Fixed Block volumes, BlockSize is 512. Even if the format is Block520, the actual data is stored in blocks of 512 bytes. For CKD volumes, BlockSize is bytes/cylinder, which is 712140 for 3380 volumes and 849960 for 3390 volumes." ), MappingStrings{"MIF.DMTF|Host Storage|001.4", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits", "MIF.DMTF|Storage Devices|001.5"}, Override ( "BlockSize" ), Units ( "Bytes" )]
	uint64 BlockSize;

 	[Description ( "The maximum number of blocks, of size BlockSize, which are available for consumption when layering StorageExtents using the BasedOn association. All blocks on a Volume are usable, so this is set to NumberOfBlocks." )]
	uint64 ConsumableBlocks;

 	[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. This value is set to \'IBMTSDS_Volume\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "Type of data organization used. The valid values are Fixed Block and Count Key Data." ), Override ( "DataOrganization" ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Other", "Unknown", "Fixed Block", "Variable Block", "Count Key Data"}]
	uint16 DataOrganization;

 	[Description ( "Number of complete copies of data currently maintained. Since the allocation of a Volume on each Rank is not exposed, the DataRedundancy will be set to 1" ), ModelCorrespondence{"CIM_StorageSetting.DataRedundancyGoal", "CIM_StorageSetting.DataRedundancyMax", "CIM_StorageSetting.DataRedundancyMin"}, Override ( "DataRedundancy" )]
	uint16 DataRedundancy = 1;

 	[Description ( "Current value for Delta reservation. This is a percentage that specifies the amount of space that should be reserved in a replica for caching changes. Set to 100." ), MaxValue ( 100 ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageSetting.DeltaReservationGoal", "CIM_StorageSetting.DeltaReservationMax", "CIM_StorageSetting.DeltaReservationMin"}, Override ( "DeltaReservation" ), Units ( "Percentage" )]
	uint8 DeltaReservation = 100;

 	[Description ( "An address or other identifying information to uniquely name the LogicalDevice. Is of the form \'<StorageSystem.Name>-<DeviceID>\'." ), Key ( true ), MaxLen ( 64 ), Override ( "DeviceID" )]
	string DeviceID;

 	[Description ( "A user-friendly name for the object. \nFor DS, machines the Nickname in the Storage Manager. For ESS, machines the Volume label.The maximum length is 16 characters for DS and 8 for ESS." ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "ExtentStatus is \'Data Lost\' when the StorageVolume has had an indeterminate data loss. ExtentStatus is Broken when the Volume is not online and fully accessible. ExtentStatus is \'In-Band Access Granted\' when a FULL path to a host is defined (i.e. the volume has an association to a ProtocolController which has an assocation to an AuthorizedPriviledge which has an association to StorageHardwareID). Otherwise the ExtentStatus is \'None/Not Applicable\'. It is possible for a volume to be \'Broken\' and \'In-Band Access Granted\' simultaneously." ), Override ( "ExtentStatus" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18..32767", "32768..65535"}, Values{"Other", "Unknown", "None/Not Applicable", "Broken", "Data Lost", "Dynamic Reconfig", "Exposed", "Fractionally Exposed", "Partially Exposed", "Protection Disabled", "Readying", "Rebuild", "Recalculate", "Spare in Use", "Verify In Progress", "In-Band Access Granted", "Imported", "Exported", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ExtentStatus[];

 	[Description ( "Health state." ), Experimental ( true ), ValueMap{"0", "5", "10", "15", "20", "25", "30", ".."}, Values{"Unknown", "OK", "Degraded/Warning", "Minor failure", "Major failure", "Critical failure", "Non-recoverable error", "DMTF Reserved"}]
	uint16 HealthState;

 	[Description ( "True indicates that the underlying StorageExtent(s) participate in a StorageRedundancyGroup. This is false because the Extent Composition Subprofile is not supported." ), Override ( "IsBasedOnUnderlyingRedundancy" )]
	boolean IsBasedOnUnderlyingRedundancy = false;

 	[Description ( "A two-digit hex string representing the LSS of the volume." ), IBMExtension ( "5.2.1" )]
	string LSS;

 	[Description ( "A unique identifier for the Volume. Same as DeviceID." ), MappingStrings{"ANSI|T10|SCSI SPC-3|8.6"}, ModelCorrespondence{"CIM_StorageVolume.NameFormat"}, Override ( "Name" )]
	string Name;

 	[Description ( "A subset of StorageExtent name formats apply to StorageVolumes." ), Override ( "NameFormat" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}, Values{"Unknown", "Other", "VPD83NAA6", "VPD83NAA5", "VPD83Type2", "VPD83Type1", "VPD83Type0", "SNVM", "NodeWWN", "NAA", "EUI64", "T10VID"}]
	uint16 NameFormat = 1;

 	[Description ( "Indicates whether or not there exists no single point of failure. This is true because RAID0 is not supported, and there must be two StorageProcessorSystem\'s in each DS storage device." ), ModelCorrespondence{"CIM_StorageSetting.NoSinglePointOfFailure"}, Override ( "NoSinglePointOfFailure" )]
	boolean NoSinglePointOfFailure = true;

 	[Description ( "Total number of logically contiguous blocks, of size Block Size, which form this Volume. The total size of the Volume can be calculated by multiplying BlockSize by NumberOfBlocks. For CKD volumes, this is the number of cylinders." ), MappingStrings{"MIF.DMTF|Host Storage|001.5", "MIB.IETF|HOST-RESOURCES-MIB.hrStorageSize"}, Override ( "NumberOfBlocks" )]
	uint64 NumberOfBlocks;

 	[ArrayType ( "Indexed" ), Description ( "The only two valid Status are OK and Error." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, Override ( "OperationalStatus" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[];

 	[Description ( "Number of complete copies of data currently maintained. Since the allocation of a Volume on each Rank is not exposed, the PackageRedundancy will be set to 1" ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyGoal", "CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin"}, Override ( "PackageRedundancy" )]
	uint16 PackageRedundancy = 1;

 	[Description ( "The scoping System\'s CreationClassName." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" )]
	string SystemName;


};

// IBMTSDS_VolumeSettingData

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "ElementSettingData represents the association between ManagedElements and applicable setting data. This association also describes whether this is a default or current setting." ),  Version ( "2.8.1000" )]
class IBMTSDS_VolumeSettingData : CIM_ElementSettingData {
	[Description ( "An enumerated integer indicating that the referenced setting is currently being used in the operation of the element, or that this information is unknown." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Is Current", "Is Not Current"}]
	uint16 IsCurrent = 1;

 	[Description ( "An enumerated integer indicating that the referenced setting is a default setting for the element, or that this information is unknown. The default for ExtentPools with ExtentType FB is Block512. The default for ExtentPools with ExtentType CKD is 3380." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Is Default", "Is Not Default"}]
	uint16 IsDefault;

 	[Description ( "The managed element." ), Key ( true ), Override ( "ManagedElement" )]
	IBMTSDS_Volume ref ManagedElement;

 	[Description ( "The SettingData object associated with the element." ), Key ( true ), Override ( "SettingData" )]
	IBMTSDS_DataTypeSetting ref SettingData;


};

// CIM_BlockStatisticsManifest

	[Description ( "Instances of this class define a list of supported or desired properties of BlockStatisticalData instances. In the case where a BlockStatisticsManifest instance is a member of a BlockStatisticsManifestCollection used in a BlockStatisticsService.GetStatisticsCollection request, for each of the boolean \"include\" properties set to true in that BlockStatisticsManifest, the corresponding BlockStatisticalData property will be included, if available, in the statistics returned for BlockStatisticalData instances whose ElementType matches the ElementType of the BlockStatisticsManifest." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_BlockStatisticsManifest : CIM_ManagedElement {
	[Description ( "Determines the type of elements that this BlockStatisticsManifest can be applied to (e.g. during a GetStatisticsCollection request). This is used when the same set of statistical metrics is calculated for several types of devices. In this way, a single BlockStatisticsManifest instance can be used to filter all the StatsiticalData instances that contain metrics for the same type of element in a StatisticsCollection. If used, a subclass should override this property to specify the element types supported by that class, preferably through ValueMap and Values qualifiers to allow clients to programmatically retrieve those supported types." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ElementType"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000.."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Vendor Specific"}]
	uint16 ElementType;

 	[Description ( "Whether to include in a filter for a metered element the cumulative elapsed idle time for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.IdleTimeCounter"}]
	boolean IncludeIdleTimeCounter = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative elapsed I/O time (number of Clock Tick Intervals) for all I/Os for that element as defined in \'Total I/Os\'." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.IOTimeCounter"}]
	boolean IncludeIOTimeCounter = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative count of data read in Kbytes for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.KBytesRead"}]
	boolean IncludeKBytesRead = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative count of data transferred in Kbytes for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.KBytesTransferred"}]
	boolean IncludeKBytesTransferred = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative count of data written in Kbytes for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.KBytesWritten"}]
	boolean IncludeKBytesWritten = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative count of all maintenance operations for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.MaintOp"}]
	boolean IncludeMaintOp = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative elapsed maintenance time for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.MaintTimeCounter"}]
	boolean IncludeMaintTimeCounter = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative count of all read cache hits (Reads from Cache) for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ReadHitIOs"}]
	boolean IncludeReadHitIOs = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative elapsed time for all Read I/Os read from cache for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ReadHitIOTimeCounter"}]
	boolean IncludeReadHitIOTimeCounter = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative count of all reads for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ReadIOs"}]
	boolean IncludeReadIOs = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative elapsed time for all cumulative Read I/Os for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ReadIOTimeCounter"}]
	boolean IncludeReadIOTimeCounter = false;

 	[Description ( "Indicates whether or not the Statistics property of StatisticsService.GetStatisticsCollection method will include the time at time when statistics for this BlockStatisticsManifest were first captured." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.StartStatisticTime"}]
	boolean IncludeStartStatisticTime = false;

 	[Description ( "Indicates whether or not the Statistics property of StatisticsService.GetStatisticsCollection method will include the time when statistics for this BlockStatisticsManifest were last captured." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.StatisticTime"}]
	boolean IncludeStatisticTime = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative count of I/Os for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.StatisticTime"}]
	boolean IncludeTotalIOs = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative count of Write Cache Hits (Writes that went directly to Cache) for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.WriteHitIOs"}]
	boolean IncludeWriteHitIOs = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative elapsed time for all Write I/Os written to cache for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.WriteHitIOTimeCounter"}]
	boolean IncludeWriteHitIOTimeCounter = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative count of all writes for tat element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.WriteIOs"}]
	boolean IncludeWriteIOs = false;

 	[Description ( "Whether to include in a filter for a metered element the cumulative elapsed time for all Write I/Os for that element." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.WriteIOTimeCounter"}]
	boolean IncludeWriteIOTimeCounter = false;

 	[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> \nWhere <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 assure that the resulting InstanceID is not reused across any InstanceIDs produced by this or other providers for the NameSpace of this instance. \nFor DMTF-defined instances, the \"preferred\" algorithm must be used with the <OrgID> set to CIM." ), Key ( true )]
	string InstanceID;


};

// IBMTSDS_FCPortManifest

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "Instances of this class define a list of supported or desired properties of IBMTSDS_FCPortStatistics instances. In the case where a  instance is a member of a BlockStatisticsManifestCollection used in a BlockStatisticsService.GetStatisticsCollection request, for each of the boolean \"include\" properties set to true in that BlockStatisticsManifest, the corresponding FCPortStatistics property will be included, if available, in the statistics returned for BlockStatisticalData instances whose ElementType matches the ElementType of the BlockStatisticsManifest. By default, all booleans are set to true." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_FCPortManifest : CIM_BlockStatisticsManifest {
	[Description ( "Since CIM/WBEM do not require that the order of properties in a mof file be preserved, this vendor-extension property lets clients know what order the properties will be returned in the GetStatisticsCollection method so that the order does not need to be hard-coded. SMI-S defines the order to beInstanceID, ElementType, StatisticTime, followed by the order in which the Include*** properties are defined above. The strings will be the name of the property in IBMTSDS_FCPortStatistics (without \"Include\")." ), IBMExtension ( "5.2.1" ), ModelCorrespondence{"CIM_BlockStatisticsService.GetStatisticsCollection(Statistics)"}]
	string BulkFormat[];

 	[Description ( "The ElementName will be set to InstanceID without the \'IBMTSDS:\'" ), MaxLen ( 64 ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Determines the type of elements that this BlockStatisticsManifest can be applied to (e.g. during a GetStatisticsCollection request). This is used when the same set of statistical metrics is calculated for several types of devices. In this way, a single BlockStatisticsManifest instance can be used to filter all the StatsiticalData instances that contain metrics for the same type of element in a StatisticsCollection. If used, a subclass should override this property to specify the element types supported by that class, preferably through ValueMap and Values qualifiers to allow clients to programmatically retrieve those supported types." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ElementType"}, Override ( "ElementType" ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000.."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Vendor Specific"}]
	uint16 ElementType = 6;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeAbbreviatedID = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeECKDAccumulatedReadTime = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeECKDAccumulatedWriteTime = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeECKDBytesRead = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeECKDBytesWritten = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeECKDReadOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeECKDWriteOperations = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeMaxCount = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeMaxKB = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeMaxMS = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePPRCBytesReceived = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePPRCBytesSend = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePPRCReceivedOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePPRCReceivedTimeAccumulated = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePPRCSendOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePPRCSendTimeAccumulated = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSCSIBytesRead = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSCSIBytesWritten = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSCSIReadOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSCSIReadTimeAccumulated = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSCSIWriteOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSCSIWriteTimeOnChannel = true;

 	[Override ( "IncludeStatisticTime" )]
	boolean IncludeStatisticTime = true;

 	[Override ( "IncludeTotalIOs" )]
	boolean IncludeTotalIOs = true;

 	[Description ( "Currently only the default FCPortManifest is supported. The InstanceID will be \'IBMTSDS:FCPortManifest-Default\'" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;


};

// CIM_Memory

	[Description ( "Capabilities and management of Memory-related LogicalDevices." ), Version ( "2.8.0" )]
class CIM_Memory : CIM_StorageExtent {
	[Deprecated{"CIM_MemoryError.AdditionalErrorData"}, Description ( "An array of octets holding additional error information. An example is ECC Syndrome or the return of the check bits if a CRC-based ErrorMethodology is used. In the latter case, if a single bit error is recognized and the CRC algorithm is known, it is possible to determine the exact bit that failed. This type of data (ECC Syndrome, Check Bit or Parity Bit data, or other vendor supplied information) is included in this field. If the ErrorInfo property is equal to 3, \"OK\", then AdditionalErrorData has no meaning." ), MappingStrings{"MIF.DMTF|Memory Device|005.18", "MIF.DMTF|Physical Memory Array|001.13"}, OctetString ( true )]
	uint8 AdditionalErrorData[64];

 	[Deprecated{"CIM_MemoryError.CorrectableError"}, Description ( "Boolean indicating that the most recent error was correctable. If the ErrorInfo property is equal to 3, \"OK\", then this property has no meaning." ), MappingStrings{"MIF.DMTF|Physical Memory Array|001.8"}]
	boolean CorrectableError;

 	[Description ( "The ending address, referenced by an application or operating system and mapped by a memory controller, for this Memory object. The ending address is specified in KBytes." ), MappingStrings{"MIF.DMTF|Memory Array Mapped Addresses|001.4", "MIF.DMTF|Memory Device Mapped Addresses|001.5"}, Units ( "KiloBytes" )]
	uint64 EndingAddress;

 	[Deprecated{"CIM_MemoryError.ErrorAccess"}, Description ( "An integer enumeration indicating the memory access operation that caused the last error. The type of error is described by the ErrorInfo property. If the ErrorInfo property is equal to 3, \"OK\", then this property has no meaning." ), MappingStrings{"MIF.DMTF|Physical Memory Array|001.10"}, ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "Unknown", "Read", "Write", "Partial Write"}]
	uint16 ErrorAccess;

 	[Deprecated{"CIM_MemoryError.StartingAddress"}, Description ( "Specifies the address of the last memory error. The type of error is described by the ErrorInfo property. If the ErrorInfo property is equal to 3, \"OK\", then this property has no meaning." ), MappingStrings{"MIF.DMTF|Memory Device|005.19", "MIF.DMTF|Physical Memory Array|001.14"}]
	uint64 ErrorAddress;

 	[ArrayType ( "Indexed" ), Deprecated{"CIM_MemoryError.ErrorData"}, Description ( "Data captured during the last erroneous mebmory access. The data occupies the first n octets of the array necessary to hold the number of bits specified by the ErrorTransferSize property. If ErrorTransferSize is 0, then this property has no meaning." ), MappingStrings{"MIF.DMTF|Physical Memory Array|001.12"}, OctetString ( true )]
	uint8 ErrorData[64];

 	[Deprecated{"CIM_MemoryError.ErrorDataOrder"}, Description ( "The ordering for data stored in the ErrorData property. \"Least Significant Byte First\" (value=1) or \"Most Significant Byte First\" (2) can be specified. If ErrorTransferSize is 0, then this property has no meaning." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Least Significant Byte First", "Most Significant Byte First"}]
	uint16 ErrorDataOrder;

 	[Deprecated{"CIM_MemoryError.ErrorInfo"}, Description ( "An integer enumeration describing the type of error that occurred most recently. For example, single (value=6) or double bit errors (7) can be specified using this property. The values, 12-14, are undefined in the CIM Schema since in DMI, they mix the semantics of the type of error and whether it was correctable or not. The latter is indicated in the property, CorrectableError." ), MappingStrings{"MIF.DMTF|Memory Device|005.12", "MIF.DMTF|Physical Memory Array|001.8"}, ModelCorrespondence{"CIM_Memory.OtherErrorDescription"}, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14"}, Values{"Other", "Unknown", "OK", "Bad Read", "Parity Error", "Single-Bit Error", "Double-Bit Error", "Multi-Bit Error", "Nibble Error", "Checksum Error", "CRC Error", "Undefined", "Undefined", "Undefined"}]
	uint16 ErrorInfo;

 	[Description ( "ErrorMethodology for Memory is a string property that indicates whether parity or CRC algorithms, ECC or other mechanisms are used. Details on the algorithm can also be supplied." ), MappingStrings{"MIF.DMTF|Physical Memory Array|001.7"}, Override ( "ErrorMethodology" )]
	string ErrorMethodology;

 	[Deprecated{"CIM_MemoryError.ErrorResolution"}, Description ( "Specifies the range, in bytes, to which the last error can be resolved. For example, if error addresses are resolved to bit 11 (ie, on a typical page basis), then errors can be resolved to 4K boundaries and this property is set to 4000. If the ErrorInfo property is equal to 3, \"OK\", then this property has no meaning." ), MappingStrings{"MIF.DMTF|Memory Device|005.21", "MIF.DMTF|Physical Memory Array|001.15"}, Units ( "Bytes" )]
	uint64 ErrorResolution;

 	[Deprecated{"CIM_MemoryError.ErrorTime"}, Description ( "The time that the last memory error occurred. The type of error is described by the ErrorInfo property. If the Error Info property is equal to 3, \"OK\", then this property has no meaning." )]
	datetime ErrorTime;

 	[Deprecated{"CIM_MemoryError.ErrorTransferSize"}, Description ( "The size of the data transfer in bits that caused the last error. 0 indicates no error. If the ErrorInfo property is equal to 3, \"OK\", then this property should be set to 0." ), MappingStrings{"MIF.DMTF|Physical Memory Array|001.11"}, Units ( "Bits" )]
	uint32 ErrorTransferSize;

 	[Deprecated{"CIM_MemoryError.OtherErrorDescription"}, Description ( "Free form string providing more information if the Error Type property is set to 1, \"Other\". If not set to 1, this string has no meaning." ), ModelCorrespondence{"CIM_Memory.ErrorInfo"}]
	string OtherErrorDescription;

 	[Description ( "The beginning address, referenced by an application or operating system and mapped by a memory controller, for this Memory object. The starting address is specified in KBytes." ), MappingStrings{"MIF.DMTF|Memory Array Mapped Addresses|001.3", "MIF.DMTF|Memory Device Mapped Addresses|001.4"}, Units ( "KiloBytes" )]
	uint64 StartingAddress;

 	[Deprecated{"CIM_MemoryError.SystemLevelAddress"}, Description ( "Boolean indicating whether the address information in the property, ErrorAddress, is a system-level address (TRUE) or a physical address (FALSE). If the ErrorInfo property is equal to 3, \"OK\", then this property has no meaning." )]
	boolean SystemLevelAddress;

 	[Description ( "Volatile is a property that indicates whether this memory is volatile or not." )]
	boolean Volatile;


};

// IBMTSDS_DeviceConfiguration

	[Description ( "This class represents a storage device that the CIM Agent is configured to. This class only represents a list of entries, it does not represent any sort of live connectivity to the device." ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_DeviceConfiguration : CIM_SettingData {
	[Description ( "DeviceType specifies the type of Device. ESS Config refers to a server that hosts ESSCLI and ESS Specialist." ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2"}, Values{"DS6000/8000", "ESS Config", "ESS Copy Services Server"}]
	uint16 DeviceType;

 	[Description ( "Will be of the form \'DeviceConfiguration for device at <IP of HMC/SMC/ESS>\'." ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "Of the form \'IBMTSDS:<IP of HMC/SMC/ESS>-<device type>\'where device type is DS, ESS or ESSCS" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The primary IP address of the Storage Device." ), IBMExtension ( "5.2.0.650" )]
	string IPAddress;

 	[Description ( "The secondary IP address of the Storage Device." ), IBMExtension ( "5.2.0.650" )]
	string IPAddress2;

 	[Description ( "The User Name of the primary IP address of the Storage Device." ), IBMExtension ( "5.2.0.650" )]
	string UserName;


};

// IBMTSDS_DeviceSettingData

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This is the association between a StorageSystem and its DeviceConfiguration. If communication to the storage device is unsuccessful, an instance of this association will not be returned." ),  Version ( "2.10.0" )]
class IBMTSDS_DeviceSettingData : CIM_ElementSettingData {
	[Description ( "An enumerated integer that indicates that the referenced setting is currently being used in the operation of the element or that this information is unknown." ), Override ( "IsCurrent" ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Is Current", "Is Not Current"}]
	uint16 IsCurrent = 1;

 	[Description ( "An enumerated integer that indicates that the referenced setting is a default setting for the element or that this information is unknown." ), Override ( "IsDefault" ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Is Default", "Is Not Default"}]
	uint16 IsDefault = 1;

 	[Description ( "The managed element." ), Key ( true ), Override ( "ManagedElement" )]
	IBMTSDS_StorageSystem ref ManagedElement;

 	[Description ( "The SettingData object that is associated with the element." ), Key ( true ), Override ( "SettingData" )]
	IBMTSDS_DeviceConfiguration ref SettingData;


};

// CIM_BlockStatisticsManifestCollection

	[Description ( "The BlockStatisticsManifestCollection class aggregates, via MemberOfCollection, a set of BlockStatisticsManifests. This collection is associated via AssociatedBlockStatisticsManifestCollection to exactly one StatisticsCollection. The BlockStatisticsManifestCollection is used to filter the retrieval of statistics. For example, a BlockStatisticsManifestCollection is specified as part of the StatisticsService.GetStatisticsCollection method to filter the statistics returned by that method." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_BlockStatisticsManifestCollection : CIM_SystemSpecificCollection {
	[Description ( "A user-friendly name for the BlockStatisticsManifestCollection. It can be set through the ElementName parameter of the StatisticsService.CreateManifestCollection method." ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "Denotes whether or not this BlockStatisticsManifestCollection is a provider defined default BlockStatisticsManifestCollection." ), Required ( true )]
	boolean IsDefault;


};

// CIM_Identity

	[Description ( "An instance of an Identity represents a ManagedElement that acts as a security principal within the scope in which it is defined and authenticated. (Note that the Identity\'s scope is specified using the association, CIM_IdentityContext.) ManagedElements with Identities can be OrganizationalEntities, Services, Systems, etc. The ManagedElement \'behind\' an Identity is described using the AssignedIdentity association. \n\nWithin a given security context, an Identity may be imparted a level of trust, usually based on its credentials. A trust level is defined using the CIM_SecuritySensitivity class, and associated with Identity using CIM_ElementSecuritySensitivity. Whether an Identity is currently authenticated is evaluated by checking the CurrentlyAuthenticated boolean property. This property is set and cleared by the security infrastructure, and should only be readable within the management infrastructure. The conditions which must be met/authenticated in order for an Identity\'s CurrentlyAuthenticated Boolean to be TRUE are defined using a subclass of PolicyCondition - AuthenticationCondition. The inheritance tree for AuthenticationCondition is defined in the CIM Policy Model. \n\nSubclasses of Identity may include specific information related to a given AuthenticationService or authority (such as a security token or computer hardware port/communication details) that more specifically determine the authenticity of the Identity. An instance of Identity may be persisted even though it is not CurrentlyAuthenticated, in order to maintain static relationships to Roles, associations to accounting information, and policy data defining authentication requirements. Note however, when an Identity is not authenticated (CurrentlyAuthenticated = FALSE), then Privileges or rights SHOULD NOT be authorized. The lifetime, validity, and propagation of the Identity is dependent on a security infrastructure\'s policies." ), Version ( "2.8.0" )]
class CIM_Identity : CIM_ManagedElement {
	[Description ( "Boolean indicating whether this Identity has been authenticated, and is currently known within the scope of an AuthenticationService or authority. By default, authenticity SHOULD NOT be assumed. This property is set and cleared by the security infrastructure, and should only be readable within the management infrastructure. Note that its value, alone, may not be sufficient to determine authentication/ authorization, in that properties of an Identity subclass (such as a security token or computer hardware port/ communication details) may be required by the security infrastructure." )]
	boolean CurrentlyAuthenticated = false;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: \n<OrgID>:<LocalID> \nWhere <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. If the above \'preferred\' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance\'s NameSpace. \nFor DMTF defined instances, the \'preferred\' algorithm MUST be used with the <OrgID> set to \'CIM\'." ), Key ( true )]
	string InstanceID;


};

// CIM_StorageHardwareID

	[Description ( "CIM_StorageHardwareID is a hardware ID that serves as an authorization subject. Example are host controller IDs that serve as authorization subjects in disk array LUN Masking." ), Version ( "2.8.1000" )]
class CIM_StorageHardwareID : CIM_Identity {
	[Description ( "The type of the ID property. iSCSI IDs may use one of three iSCSI formats - iqn, eui, or naa. This three letter format is the name prefix; so a single iSCSI type is provided here, the prefix can be used to further refine the format." ), ModelCorrespondence{"CIM_StorageHardwareID.StorageID"}, Required ( true ), ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "PortWWN", "NodeWWN", "Hostname", "iSCSI Name"}]
	uint16 IDType;

 	[Description ( "The ID type when IDType is \"Other\"." )]
	string OtherIDType;

 	[Description ( "The hardware worldwide unique ID." ), MaxLen ( 256 ), ModelCorrespondence{"CIM_StorageHardwareID.IDType"}, Required ( true )]
	string StorageID;


};

// IBMTSDS_StorageHardwareID

	[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_StorageHardwareID : CIM_StorageHardwareID {
	[ArrayType ( "Indexed" ), Description ( "Profile defines the platform and/or operatingSystem type associated with the host. This is a vendor extensionassociated with the host." ), IBMExtension ( "5.2.0" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "32768", "32769", "32770", "32771", "32772", "32773", "32774", "32775", "32776", "32777", "32778", "32779", "32780", "32781", "32782", "32783", "32784"}, Values{"Unknown", "Other", "Standard", "Solaris", "HPUX", "OpenVMS", "Tru64", "Netware", "Sequent", "AIX", "DGUX", "Dynix", "Irix", "Cisco iSCSI Storage Router", "Linux", "Microsoft Windows", "OS400", "TRESPASS", "HI-UX", "AMD - Linux RHEL", "AMD - Linux Suse", "Apple - OSX", "Fujitsu - Solaris", "Intel - Linux Desktop", "Intel - Linux Red Flag", "Intel - Linux Suse", "IBM SAN Volume Controller", "IBM SAN File System AIX", "IBM SAN File System Linux", "VMWare", "Intel - Windows 2000", "IBM iSeries - iLinux", "IBM pSeries - pLinux", "IBM zSeries - zLinux", "Solaris 2.5.1", "Sun MPXIO"}]
	uint16 ClientType;

 	[Description ( "A user-friendly name for the object." ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "The type of the ID property. All instances of IBMTSDS_StorageHardwareID\'s are wwpn\'s." ), ModelCorrespondence{"CIM_StorageHardwareID.StorageID"}, Override ( "IDType" ), Required ( true ), ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "PortWWN", "NodeWWN", "Hostname", "iSCSI Name"}]
	uint16 IDType = 2;

 	[Description ( "Opaque and unique identifier. This is a hexadigit stringof the form IBMTSDS:<SystemName>-<WWPN>-<ID> where ID is a vendor-specific ID that is unique for each host for each storage system. " ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The worldwide unique ID. This is the PortWWN which is a hexadigit string " ), Override ( "StorageID" )]
	string StorageID;


};

// IBMTSDS_SHWIDToSPC

[ASSOCIATION ( true ),  Description ( "An IBM-specific association to allow clients to skip the Privilege when walking the Masking and Mapping associations." ), IBMExtension ( "5.2.1" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_SHWIDToSPC : CIM_ConcreteDependency {
	[Description ( "The StorageHardwareID" ), Override ( "Antecedent" )]
	IBMTSDS_StorageHardwareID ref Antecedent;

 	[Description ( "The SCSIProtocolController" ), Override ( "Dependent" )]
	IBMTSDS_SCSIProtocolController ref Dependent;


};

// CIM_StatisticalData

	[Abstract ( true ), Description ( "CIM_StatisticalData is a root class for any arbitrary collection of statistical data and/or metrics applicable to one or more ManagedElements. These statistics MUST represent the most recent observations and MUST NOT be provided if irrelevant or stale. Note that this class uses a simplified naming/identity algorithm as compared to CIM_StatisticalInformation." ), Version ( "2.8.0" )]
class CIM_StatisticalData : CIM_ManagedElement {
	[Description ( "The user friendly name for this instance of StatisticalData. In addition, the user friendly name can be used as a index property for a search of query. (Note: Name does not have to be unique within a namespace.)" ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: \n<OrgID>:<LocalID> \nWhere <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. If the above \'preferred\' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance\'s NameSpace. \nFor DMTF defined instances, the \'preferred\' algorithm MUST be used with the <OrgID> set to \'CIM\'." ), Key ( true )]
	string InstanceID;

 	[Description ( "Some statistics are sampled at consistent time intervals. This property provides the sample interval so that client applications can determine the minimum time that new statistics should be pulled. If the statistics are not sampled at consistent time intervals, this property must be set to a zero time interval." )]
	datetime SampleInterval;

 	[Description ( "The time, relative to managed element where the statistic was collected, when the first measurement was taken. If the statistic is reset, the StartStatisticTime is the time when the reset was performed." )]
	datetime StartStatisticTime;

 	[Description ( "The time the most recent measurement was taken, relative to the managed element where the statistic was collected." )]
	datetime StatisticTime;


		[Description ( "Method to reset one or more of the instance\'s statistics. The method takes one parameter as input - an array of strings indicating which statistics to reset. If all the statistics in the instance should be reset, the first element of the array MUST be set to \"All\" or \"ALL\". If one or more individual statistics should be reset, the corresponding property names are entered into the elements of the array. \nThe method returns 0 if successful, 1 if not supported, and any other value if an error occurred. A method is specified so that the StatisticalInformation\'s provider/ instrumentation, which calculates the statistics, can reset its internal processing, counters, etc. \nIn 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 ResetSelectedStats(
		[Description ( "Array of strings indicating which statistics to reset." ), IN ( true )]
		string SelectedStatistics
	);
};

// CIM_BlockStorageStatisticalData

	[Description ( "A subclass of StatisticalData which identifies individual statistics for an element of a block storage system. This class defines the metrics that MAY be kept for managed elements of the system." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_BlockStorageStatisticalData : CIM_StatisticalData {
	[Description ( "Defines the role that the element played for which this statistics record was collected. If the metered element is a system or a component of a system associated to a RegisteredProfile, then that profile may provide a more specialized definition and additional usage information for this property. \nGenerally, the ElementTypes defined here have the following meaning in the context of this class: 2, \"Computer System\": Cumulative statistics for the storage system. In the case of a complex system with multiple component Computer Systems, these are the statistics for the top-level aggregate Computer System. 3, \"Front-end Computer System\": Statistics for a component computer system that communicate with systems that initiate IO requests. 4, \"Peer Computer System\": Statistics for a component computer system that communicates with peer storage systems e.g. to provide remote mirroring of a volume. 5, \"Back-end Computer System\": Statistics for a component computer system that communicates with back-end storage. 6, \"Front-end Port\": Statistics for a port that communicates with systems that initiate IO requests. 7, \"Back-end Port\": Statistics for a port that initiates IO requests to storage devices. 8, \"Volume\": Statistics for an exposable storage extent, such as a StorageVolume or LogicalDisk. 9, \"Extent\": Statistics for an intermediate storage extent, i.e. an extent that is neither a volume or a disk. 10, \"Disk Drive: Statistics for a StorageExtent that is associated to a DiskDrive through the MediaPresent association. 11, \"Arbitrary LUs\": Statistics that derive from access to Logical Units that are NOT StorageVolumes (e.g., controller commands). 12, \"Remote Replica Group\": Statistics for control IOs between an array and a remote mirror across a Network. Note that statistics for the actual movement of data to the remote mirror are attributed to the targeted StorageVolume (or LogicalDisk). Note that a particular element could be associated to multiple BlockStorageStatisticalData instances if it had multiple roles. For example, a storage array could contain redundant component computer systems that communicate both with hosts on the front end and disks on the back end. Such a device could have one BlockStorageStatisticalData instance where ElementType=3 and another instance where ElementType=5." ), Required ( true ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000.."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Vendor Specific"}]
	uint16 ElementType;

 	[Counter ( true ), Description ( "The cumulative elapsed idle time using ClockTickInterval units (Cumulative Number of Time Units for all idle time in the array)." )]
	uint64 IdleTimeCounter;

 	[Counter ( true ), Description ( "The cumulative elapsed I/O time (number of Clock Tick Intervals) for all I/Os as defined in \'Total I/Os\'. I/O response time is added to this counter at the completion of each measured I/O using ClockTickInterval units. This value can be divided by number of IOs to obtain an average response time." )]
	uint64 IOTimeCounter;

 	[Counter ( true ), Description ( "The cumulative count of data read in Kbytes (1024bytes = 1KByte)." ), Units ( "KiloBytes" )]
	uint64 KBytesRead;

 	[Counter ( true ), Description ( "The cumulative count of data transferred in Kbytes (1024bytes = 1KByte)." ), Units ( "KiloBytes" )]
	uint64 KBytesTransferred;

 	[Counter ( true ), Description ( "The cumulative count of data written in Kbytes (1024bytes = 1KByte)." ), Units ( "KiloBytes" )]
	uint64 KBytesWritten;

 	[Counter ( true ), Description ( "The cumulative count of all disk maintenance operations (SCSI commands such as: Verify, skip-mask, XOR read, XOR write-read, etc).This is needed to understand the load on the disks that may interfere with normal read and write operations." )]
	uint64 MaintOp;

 	[Counter ( true ), Description ( "The cumulative elapsed disk mainenance time. Maintainance response time is added to this counter at the completion of each measured maintenance operation using ClockTickInterval units." )]
	uint64 MaintTimeCounter;

 	[Counter ( true ), Description ( "The cumulative count of all read cache hits (Reads from Cache)." )]
	uint64 ReadHitIOs;

 	[Counter ( true ), Description ( "The cumulative elapsed time for all Read I/Os read from cache for all cumulative Read I/Os." )]
	uint64 ReadHitIOTimeCounter;

 	[Counter ( true ), Description ( "The cumulative count of all reads." )]
	uint64 ReadIOs;

 	[Counter ( true ), Description ( "The cumulative elapsed time for all Read I/Os for all cumulative Read I/Os." )]
	uint64 ReadIOTimeCounter;

 	[Counter ( true ), Description ( "The cumulative count of I/Os for the object." )]
	uint64 TotalIOs;

 	[Counter ( true ), Description ( "The cumulative count of Write Cache Hits (Writes that went directly to Cache)." )]
	uint64 WriteHitIOs;

 	[Counter ( true ), Description ( "The cumulative elapsed time using ClockTickInterval units for all Write I/Os written to cache for all cumulative Write I/Os." )]
	uint64 WriteHitIOTimeCounter;

 	[Counter ( true ), Description ( "The cumulative count of all writes." )]
	uint64 WriteIOs;

 	[Counter ( true ), Description ( "The cumulative elapsed time for all Write I/Os for all cumulative Writes." )]
	uint64 WriteIOTimeCounter;


};

// IBMTSDS_VolumeStatistics

	[Description ( "Statistical Data for a Volume" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_VolumeStatistics : CIM_BlockStorageStatisticalData {
	[Description ( "The abbreviated ID for the Volume. This ID is NOT globally unique. For example, if the InstanceID of an instance of VolumeStatistics was IBMTSDS:IBM.2107-13ABCDE-100a, then the AbbreviatedID would just be 100a." ), IBMExtension ( "5.2.1" )]
	string AbbreviatedID;

 	[Description ( "On ESS/DS, this property returns accumulated time for all readoperations. " ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 AccumulatedReadTime;

 	[Description ( "On ESS/DS, this property returns accumulated time for all writeoperations. " ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 AccumulatedWriteTime;

 	[Description ( "On DS,  this property returns the bypass cache I/O requests" ), IBMExtension ( "5.2.0.650" )]
	uint64 BypassCacheRequests;

 	[Description ( "On DS, this property returns bytes read" ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 BytesRead;

 	[Description ( "On DS, this property returns bytes written" ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 BytesWritten;

 	[Description ( "On ESS/DS, this property returns count of transfer operationsfrom Cache to DASD. " ), IBMExtension ( "5.2.0.650" )]
	uint64 CacheDASDTransfers;

 	[Description ( "On DS, this property returns a count of Cache Fast Write I/Orequest hits" ), IBMExtension ( "5.2.0.650" )]
	uint64 CacheFastWriteHits;

 	[Description ( "On DS, this property returns a count search/read of CacheFast Write I/O requests hits. " ), IBMExtension ( "5.2.0.650" )]
	uint64 CacheFastWriteReadHits;

 	[Description ( "On ESS/DS, this property returns a count search/read of Cache Fast WriteI/O requests." ), IBMExtension ( "5.2.0.650" )]
	uint64 CacheFastWriteReadRequests;

 	[Description ( "On ESS/DS, this property returns a count of Cache Fast Write I/Orequests" ), IBMExtension ( "5.2.0.650" )]
	uint64 CacheFastWriteRequests;

 	[Description ( "On ESS/DS, this property returns a count of operations delayedbecause of cache space constraints. " ), IBMExtension ( "5.2.0.650" )]
	uint64 CacheSpaceDelay;

 	[Description ( "On ESS/DS, this property returns a count of Contaminating writesfor a ConcurrentCopy or eXtended Remote Copy volume" ), IBMExtension ( "5.2.0.650" )]
	uint64 ContaminatingWrites;

 	[Description ( "On ESS/DS, this property returns a count of DASD to Cache Transferoperations" ), IBMExtension ( "5.2.0.650" )]
	uint64 DASDCacheTransfers;

 	[Description ( "On ESS/DS, this property returns DASD Fast Write I/Orequest hits" ), IBMExtension ( "5.2.0.650" )]
	uint64 DFWHits;

 	[Description ( "On ESS/DS, this property returns DASD Fast Write sequential I/Orequest hits" ), IBMExtension ( "5.2.0.650" )]
	uint64 DFWSequentialHits;

 	[Description ( "The short textual description of the volume statistic. Of the form \'Volume statistics for <InstanceID>\'." ), MaxLen ( 64 ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Defines the role that the element played for which this statistics record was collected. The Volume is logical unit that is the target of data IOsfor storing and retreiving data." ), Override ( "ElementType" ), Required ( true ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000", "0x8001", ".."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Rank", "ExtentPool", "Vendor Specific"}]
	uint16 ElementType = 8;

 	[Description ( "On DS, Returns InstanceID of the ExtentPool that the Volume is created from." ), IBMExtension ( "5.2.0.650" )]
	string ExtentPoolInstanceID;

 	[Description ( "On DS, Inhibit Cache Loading I/O requests that operate with DASD " ), IBMExtension ( "5.2.0.650" )]
	uint64 InhibitCacheLoadingRequests;

 	[Description ( "The unique id of the volume statistic. Of the form IBMTSDS:<Volume.DeviceID>" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "On ESS/DS, this property returns a count of irregular track accesses" ), IBMExtension ( "5.2.0.650" )]
	uint64 IrregularTrackAccesses;

 	[Description ( "On ESS/DS, this property returns a count irregular track access hits" ), IBMExtension ( "5.2.0.650" )]
	uint64 IrregularTrackHits;

 	[Description ( "On DS, returns milliseconds of LowerInterface I/O Activity for theindicated volume" ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 LowerInterfaceActivity;

 	[Description ( "A two digit hex string representing the LSS of the volume." ), IBMExtension ( "5.2.1" )]
	string LSS;

 	[Description ( "The maximum value of the IBM extension properties that are in units of counts. This cannot be declared statically in the mof qualifiers because the value could theoretically vary from device to device. This maximum value is valid for SequentialReadRequests, NormalDFWOperations, NormalReadHits, NormalReadRequests, SequentialAccessDFWOperations, SequentialWriteRequests, NormalWriteRequests, DASDCacheTransfers, CacheDASDTransfers, SequentialDASDCacheTransfers, SequentialReadHits, DFWHits, DFWSequentialHits, NVSSpaceDelayingDFW, RecordCacheMisses, RecordModeReads, NVSSpaceAllocations, SideFileTrackReads, ContaminatingWrites, PPRCTracks, CacheSpaceDelay, CacheFastWriteHits, CacheFastWriteReadHits, CacheFastWriteRequests, CacheFastWriteReadRequests, QuickWritePromotes, IrregularTrackAccesses, IrregularTrackHits, BypassCacheRequests, InhibitCacheLoadingRequests, LowerInterfaceActivity, PhysicalStorageReadOperations, and PhysicalStorageWriteOperations." ), IBMExtension ( "5.2.1" )]
	uint64 MaxCount;

 	[Description ( "The maximum value of the IBM extension properties that are in units of KiloBytes. This cannot be declared statically in the mof qualifiers because the value could theoretically vary from device to device. This maximum value is valid for BytesRead, BytesWritten, PhysicalStorageBytesRead, and PhysicalStorageBytesWritten. " ), IBMExtension ( "5.2.1" ), Units ( "KiloBytes" )]
	uint64 MaxKB;

 	[Description ( "The maximum value of the IBM extension properties that are in units of Milliseconds. This cannot be declared statically in the mof qualifiers because the value could theoretically vary from device to device. This maximum value is valid for AccumulatedReadTime, AccumulatedWriteTime, PhysicalStorageReadTime, and PhysicalStorageWriteTime." ), IBMExtension ( "5.2.1" ), Units ( "Milliseconds" )]
	uint64 MaxMS;

 	[Description ( "On ESS/DS, this property returns normal \'DASD Fast Write\' writeoperation count. " ), IBMExtension ( "5.2.0.650" )]
	uint64 NormalDFWOperations;

 	[Description ( "On ESS/DS, this property returns a count of search/read normalI/O request hits. " ), IBMExtension ( "5.2.0.650" )]
	uint64 NormalReadHits;

 	[Description ( "On ESS/DS, this property returns a count of search/read normalI/O requests. " ), IBMExtension ( "5.2.0.650" )]
	uint64 NormalReadRequests;

 	[Description ( "On ESS/DS, this property returns count of write normalI/O requests. " ), IBMExtension ( "5.2.0.650" )]
	uint64 NormalWriteRequests;

 	[Description ( "On ESS/DS, this property returns the size of the NVS Space Allocations" ), IBMExtension ( "5.2.0.650" )]
	uint64 NVSSpaceAllocations;

 	[Description ( "On ESS/DS, this property returns a count of DASD fast write delayedbecause of non-volatile storage space constraints. " ), IBMExtension ( "5.2.0.650" )]
	uint64 NVSSpaceDelayingDFW;

 	[Description ( "On DS, number of physical bytes read." ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 PhysicalStorageBytesRead;

 	[Description ( "On DS, number of physical bytes written." ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 PhysicalStorageBytesWritten;

 	[Description ( "On DS, number of physical read operations." ), IBMExtension ( "5.2.0.650" )]
	uint64 PhysicalStorageReadOperations;

 	[Description ( "On DS, physical storage read response time." ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 PhysicalStorageReadTime;

 	[Description ( "On DS, number of physical write operations." ), IBMExtension ( "5.2.0.650" )]
	uint64 PhysicalStorageWriteOperations;

 	[Description ( "On DS, physical storage write response time." ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 PhysicalStorageWriteTime;

 	[Description ( "On ESS/DS, this property returns a count of tracks or portionof tracks transferred to the secondary device of a PPRC pair. " ), IBMExtension ( "5.2.0.650" )]
	uint64 PPRCTracks;

 	[Description ( "On ESS/DS, returns a count of Quick Write Promotes" ), IBMExtension ( "5.2.0.650" )]
	uint64 QuickWritePromotes;

 	[Description ( "On ESS/DS, this property returns a count of recordcache read misses" ), IBMExtension ( "5.2.0.650" )]
	uint64 RecordCacheMisses;

 	[Description ( "On ESS/DS, this property returns the count of RecordMode readoperations" ), IBMExtension ( "5.2.0.650" )]
	uint64 RecordModeReads;

 	[Description ( "On ESS/DS, this property returns sequential access \'DASD Fast Write\'write operation count. " ), IBMExtension ( "5.2.0.650" )]
	uint64 SequentialAccessDFWOperations;

 	[Description ( "On ESS/DS, this property returns count of sequential DASD to CacheTransfer operations" ), IBMExtension ( "5.2.0.650" )]
	uint64 SequentialDASDCacheTransfers;

 	[Description ( "On ESS/DS, this property returns count of search/read sequentialI/O request hits" ), IBMExtension ( "5.2.0.650" )]
	uint64 SequentialReadHits;

 	[Description ( "On ESS/DS, this property returns count of search/read sequentialI/O requests. " ), IBMExtension ( "5.2.0.650" )]
	uint64 SequentialReadRequests;

 	[Description ( "On ESS/DS, this property returns count of write sequential I/Orequests. " ), IBMExtension ( "5.2.0.650" )]
	uint64 SequentialWriteRequests;

 	[Description ( "On ESS/DS, this property returns a count of tracks read from theConcurrentCopy or eXtended Remote Copy SideFile. " ), IBMExtension ( "5.2.0.650" )]
	uint64 SideFileTrackReads;

 	[Description ( "Timestamp of the values for this instance of statistics." ), Override ( "StatisticTime" )]
	datetime StatisticTime;

 	[Counter ( true ), Description ( "The cumulative count of I/Os for the object. (NormalReadRequests + NormalWriteRequests + SequentialReadRequests + SequentialWriteRequests)The rate at which this counter rolls over cannot be determined, because each of the individual properties being added can roll at different rates. If you need to know the exact point at which which the counters roll, use the specific IBM extension properties and MaxCount." ), Override ( "TotalIOs" )]
	uint64 TotalIOs;


};

// IBMTSDS_ExtentPoolStatistics

	[Description ( "Statistical Data for an ExtentPool. Only supported for DS" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_ExtentPoolStatistics : CIM_BlockStorageStatisticalData {
	[Description ( "The abbreviated ID for the ExtentPool. This ID is NOT globally unique. For example, if the InstanceID of an instance of RankStatistics was IBMTSDS:IBM.2107-13ABCDE-P0, then the AbbreviatedID would just be P0." ), IBMExtension ( "5.2.1" )]
	string AbbreviatedID;

 	[Description ( "The count of extents that were sources of a dynamic extent relocation" ), IBMExtension ( "5.2.0.650" )]
	uint64 DynamicRelocationSourceCount;

 	[Description ( "The count of extents that were targets of a dynamic extent relocation" ), IBMExtension ( "5.2.0.650" )]
	uint64 DynamicRelocationTargetCount;

 	[Description ( "The short textual description of the extentpool statistic. Of the form \'ExtentPool Statistics for <InstanceID>\'" ), MaxLen ( 64 ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Defines the role that the element played for which this statistics record was collected. The ExtentPool is a type of StoragePool" ), Override ( "ElementType" ), Required ( true ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000", "0x8001", ".."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Rank", "ExtentPool", "Vendor Specific"}]
	uint16 ElementType = 32769;

 	[Description ( "The unique id of the extentpool statistic. Of the form \'IBMTSDS:<ExtentPool.InstanceID>\'" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The maximum value of the IBM extension properties that are in units of counts. This cannot be declared statically in the mof qualifiers because the value could theoretically vary from device to device. This maximum value is valid for DynamicRelocationSourceCount, DynamicRelocationTargetCount, RealAllocatedExtentCount, RealExtentCount, RealExtentConversionCount, RealExtentPoolCapacity, VirtualExtentCapacity, VirtualExtentConversionCount, and VirtualExtentCount" ), IBMExtension ( "5.2.1" )]
	uint64 MaxCount;

 	[Description ( "The count of real allocated Extents in this extent pool" ), IBMExtension ( "5.2.0.650" )]
	uint64 RealAllocatedExtentCount;

 	[Description ( "The count of real extent conversions" ), IBMExtension ( "5.2.0.650" )]
	uint64 RealExtentConversionCount;

 	[Description ( "The count of real Extents in this extent pool" ), IBMExtension ( "5.2.0.650" )]
	uint64 RealExtentCount;

 	[Description ( "The real Extent pool capacity in Gigabytes" ), IBMExtension ( "5.2.0.650" )]
	uint64 RealExtentPoolCapacity;

 	[Description ( "Timestamp of the values" ), Override ( "StatisticTime" )]
	datetime StatisticTime;

 	[Counter ( true ), Description ( "IO\'s not reported for ExtentPools." ), Override ( "TotalIOs" )]
	uint64 TotalIOs = 0;

 	[Description ( "The virtual extent pool capacity in GB" ), IBMExtension ( "5.2.0.650" )]
	uint64 VirtualExtentCapacity;

 	[Description ( "The count of virtual extent conversions" ), IBMExtension ( "5.2.0.650" )]
	uint64 VirtualExtentConversionCount;

 	[Description ( "The count of all virtual extents in this extent pool" ), IBMExtension ( "5.2.0.650" )]
	uint64 VirtualExtentCount;


};

// CIM_HostedAccessPoint

[ASSOCIATION ( true ),  Description ( "CIM_HostedAccessPoint is an association between a Service AccessPoint and the System on which it is provided. The cardinality of this association is one-to-many and is weak with respect to the System. Each System can host many ServiceAccessPoints. Heuristic: If the implementation of the ServiceAccessPoint is modeled, it must be implemented by a Device or SoftwareFeature that is part of the System that is hosting the ServiceAccessPoint." ), Version ( "2.10.0" )]
class CIM_HostedAccessPoint : CIM_HostedDependency {
	[Description ( "The hosting System." ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	CIM_System ref Antecedent;

 	[Description ( "The SAPs that are hosted on this System." ), Override ( "Dependent" ), Weak ( true )]
	CIM_ServiceAccessPoint ref Dependent;


};

// CIM_RemoteServiceAccessPoint

	[Description ( "RemoteServiceAccessPoint describes access or addressing information or a combination of this information for a remote connection that is known to a local network element. This information is scoped or contained by the local network element, because this is the context in which the connection is remote. \nThe relevance of the remote access point and information on its use are described by subclassing RemoteServiceAccessPoint or by associating to it." ), Version ( "2.10.0" )]
class CIM_RemoteServiceAccessPoint : CIM_ServiceAccessPoint {
	[Description ( "Access or addressing information or a combination of this information for a remote connection. This information can be a host name, network address, or similar information." ), ModelCorrespondence{"CIM_RemoteServiceAccessPoint.InfoFormat"}]
	string AccessInfo;

 	[Description ( "An enumerated integer that describes the format and interpretation of the AccessInfo property." ), ModelCorrespondence{"CIM_RemoteServiceAccessPoint.OtherInfoFormatDescription"}, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "100", "101", "102", "103", "104", "200", "201", "202", "203", "204", "205", "..", "32768..65535"}, Values{"Other", "Host Name", "IPv4 Address", "IPv6 Address", "IPX Address", "DECnet Address", "SNA Address", "Autonomous System Number", "MPLS Label", "IPv4 Subnet Address", "IPv6 Subnet Address", "IPv4 Address Range", "IPv6 Address Range", "Dial String", "Ethernet Address", "Token Ring Address", "ATM Address", "Frame Relay Address", "URL", "FQDN", "User FQDN", "DER ASN1 DN", "DER ASN1 GN", "Key ID", "DMTF Reserved", "Vendor Reserved"}]
	uint16 InfoFormat;

 	[Description ( "Describes the format when the property InfoFormat is set to 1 (Other)." ), ModelCorrespondence{"CIM_RemoteServiceAccessPoint.InfoFormat"}]
	string OtherInfoFormatDescription;


};

// IBMTSDS_RemoteServiceAccessPoint

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "RemoteServiceAccessPoint describes the remote access information for the Storage Manager (DS) or Specialist (ESS) interfaces. If multiple DS storage images are managed by a single Storage Manager, there will only be once instance of RemoteServiceAccessPoint and it will be associated to multiple instances of StorageSystem." ),  Version ( "2.10.0" )]
class IBMTSDS_RemoteServiceAccessPoint : CIM_RemoteServiceAccessPoint {
	[Description ( "Access or addressing information or a combination of this information for a remote connection. This is the URL to access the DS Storage Manager or ESS Specialist interfaces.For ESS, if both controllers are entered in the Device Configuration, there will be two instances of RemoteServiceAccessPoint, one for each controller, since Specialist can be launched by pointing at each controller.For DS, if both HTTP and HTTPS are enabled for the Storage Manager, there will be two instances of RemoteServiceAccessPoint, one for each protocol. By default, both protocols will be assumed to be available. The HTTP port is assumed to be 8451.  The HTTPS port is assumed to be 8452. These defaults can be changed in cimom.properties with the properties DS_StorageManager_HTTPEnabled, DS_StorageManager_HTTPSEnabled, DS_StorageManager_HTTPPort, and DS_StorageManager_HTTPSPort. Different values for different DS systems on the same CIM Agent is not supported." ), ModelCorrespondence{"CIM_RemoteServiceAccessPoint.InfoFormat"}, Override ( "AccessInfo" )]
	string AccessInfo;

 	[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. Set to \'IBMTSDS_RemoteServiceAccessPoint\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "A user-friendly name for the object. This property allows each instance to define a user-friendly name IN ADDITION TO its key properties/identity data, and description information. \n" ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "An enumerated integer that describes the format and interpretation of the AccessInfo property." ), Override ( "InfoFormat" ), ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "100", "101", "102", "103", "104", "200", "201", "202", "203", "204", "205", "..", "32768..65535"}, Values{"Other", "Host Name", "IPv4 Address", "IPv6 Address", "IPX Address", "DECnet Address", "SNA Address", "Autonomous System Number", "MPLS Label", "IPv4 Subnet Address", "IPv6 Subnet Address", "IPv4 Address Range", "IPv6 Address Range", "Dial String", "Ethernet Address", "Token Ring Address", "ATM Address", "Frame Relay Address", "URL", "FQDN", "User FQDN", "DER ASN1 DN", "DER ASN1 GN", "Key ID", "DMTF Reserved", "Vendor Reserved"}]
	uint16 InfoFormat = 200;

 	[Description ( "The Name property uniquely identifies the ServiceAccessPoint and provides an indication of the functionality that is managed." ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[Description ( "The CreationClassName of the scoping System. Set to \'IBMTSDS_StorageSystem\'" ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The Name of the scoping System. Set to IBMTSDS_StorageSystem.Name" ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" )]
	string SystemName;


};

// IBMTSDS_HostedRemoteServiceAccessPoint

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "IBMTSDS_HostedRemoteServiceAccessPoint represents the association between a StorageSystem and the RemoteServiceAccessPoint used to access the native GUI of the StorageSystem. If multiple DS storage images are managed by a single Storage Manager, there will only be once instance of RemoteServiceAccessPoint and it will be associated to multiple instances of StorageSystem." ),  Version ( "2.10.0" )]
class IBMTSDS_HostedRemoteServiceAccessPoint : CIM_HostedAccessPoint {
	[Description ( "The StorageSystem." ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_StorageSystem ref Antecedent;

 	[Description ( "The RemoteServiceAccessPoint." ), Override ( "Dependent" ), Weak ( true )]
	IBMTSDS_RemoteServiceAccessPoint ref Dependent;


};

// CIM_ControllerConfigurationService

	[Description ( "The ControllerConfigurationService provides methods that allow a client to manipulate LUN Masking in a storage system." ), Version ( "2.10.0" )]
class CIM_ControllerConfigurationService : CIM_Service {
		[Description ( "This method associates a LogicalDevice subclass (specifically a StorageVolume or MediaAccessDevice subclass) to the referenced ProtocolController. The association is persisted as an instance of ProtocolControllerForUnit. The management instrumentation provider must verify that the logical unit numbers (defined using the DeviceNumber input parameter) are unique for the ProtocolController. When the Protocol Controller is actively masking a device (i.e. is part of an AuthorizedTarget association), the provider should update the access configuration in the underlying hardware as appropriate." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098", "4099", "4100", "4101..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Invalid LogicalDevice Instance", "Device Number Conflict", "DeviceNumber Parameter Must Be Provided", "Hardware Implementation Requires Null DeviceNumber", "Busy", "Method Reserved", "Vendor Specific"}]
	uint32 AttachDevice(
		[Description ( "The LogicalDevice instance to attach." ), IN ( true )]
		CIM_LogicalDevice ref Device,
	 	[Description ( "The number assigned to ProtocolControllerForUnit.DeviceNumber (if supported by the hardware). Hardware support is indicated by ProtocolControllerMaskingCapabilities.ClientSelectableDeviceNumbers). If the hardware does not support setting the number, but the DeviceNumber has not been established in an existing ProtocolControllerForDevice subclass, then this parameter\'s value will be used. If the DeviceNumber has been established, then the current number will be reused." ), IN ( true ), ModelCorrespondence{"CIM_ProtocolControllerForUnit.DeviceNumber"}, OUT ( true )]
		string DeviceNumber,
	 	[Description ( "The ProtocolController instance." ), IN ( true )]
		CIM_ProtocolController ref ProtocolController
	);
	 	[Description ( "This method creates an appropriate subclass of ProtocolController. In addition to its role of controlling downstream devices, a ProtocolControl is used to provide a central management point for access control with respect to those devices. Certain storage system implementations across multiple vendors require permissions to be established atomically with the creation of a ProtocolController. This method provides this capability via the Privilege and Identity properties. By supplying appropriate information in those properties, this method will assure that appropriate AuthorizedTarget and AuthorizedSubject associations, (as defined in the User and Security Model), are instantiated to restrict access to the logical devices \'behind\' it. \nIf multiple target ports are specified in the Ports input parameter, all expose the same view (i.e., have the same unit numbers and permissions). This method does not create the port instances, but does create ProtocolControllerForPort associations between the specified ports and the new ProtocolController. The new ProtocolController is defined to be weak to the same System as the ControllerConfigurationService." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098", "4099..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "ID Parameter Missing or Not Unique", "Hardware Implementation Requires Null Ports Parameter", "Busy", "Method Reserved", "Vendor Specific"}]
	uint32 CreateProtocolControllerWithPorts(
		[Description ( "The string to be used in the ElementName of the new ProtocolController." ), IN ( true ), ModelCorrespondence{"CIM_ProtocolController.ElementName"}]
		string ElementName,
	 	[Description ( "Reference to a CIM_ManagedElement (or subclass) instance. This ManagedElement MUST be either a CIM_Identity, or a CIM_Collection (or subclass, eg. SystemSpecificCollection, Role, or Group) that has CIM_Identities as MemberOfCollection. If ProtocolControllerMaskingCapabilities.ProtocolControllerSupportsCollection is false, the reference MUST be to a CIM_Identity (or subclass). If present, it has a 1:1 correspondence with the Privilege property. If present, this method will atomically create the new ProtocolController instance and instantiate a missing AuthorizedSubject association between the Privilege/Identity pair; and instantiate an AuthorizedTarget association between the AuthorizedPrivilege and the new ProtocolController. \nNote: if ProtocolControllerRequiresAuthorizedIdentity is true, then at least the Identity/Privilege pair MUST be specified." ), IN ( true ), ModelCorrespondence{"CIM_ControllerConfigurationService.CreateProtocolControllerWithPorts.Privilege"}]
		CIM_ManagedElement ref Identity,
	 	[Description ( "Array of strings containing representations of references to instances of CIM_LogicalPort (or subclass) instances. This is the list of target ports that are associated to the ProtocolController. ProtocolControllerForPort associations are created by the instrumentation associating the new ProtocolController to these ports. If this parameter is null, then all ports in the storage system (this Service\'s \'scoping\' System and all its ComponentCS Systems) are attached to the new ProtocolController." ), IN ( true )]
		string Ports,
	 	[Description ( "Reference to a CIM_Privilege (or subclass) instance to be used as a template. If supplied, it has a 1:1 correspondence with the Identity parameter and this method will atomically create the new ProtocolController instance and related AuthorizedPrivilege, AuthorizedTarget and AuthorizedSubject instances. \nNote: if ProtocolControllerRequiresAuthorizedIdentity is true, then the Identity/Privilege pair MUST be specified. If false, then the Identity/Privilege pair MUST NOT be specified." ), IN ( true ), ModelCorrespondence{"CIM_ControllerConfigurationService.CreateProtocolControllerWithPorts.Identity"}]
		CIM_Privilege ref Privilege,
	 	[Description ( "The protocol type for the new ProtocolController." ), IN ( true ), ModelCorrespondence{"CIM_SCSIProtocolController"}, ValueMap{"0", "1", "2"}, Values{"Unknown", "Other", "SCSI"}]
		uint16 Protocol,
	 	[Description ( "A reference to the new ProtocolController that is created." ), IN ( false ), OUT ( true )]
		CIM_ProtocolController ref ProtocolController
	);
	 	[Description ( "The method deletes an instance of ProtocolController and all associations in which this ProtocolController is referenced." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "LogicalDevices Associated to Other ProtocolControllers Not Deleted", "Busy", "Method Reserved", "Vendor Specific"}]
	uint32 DeleteProtocolController(
		[Description ( "If true, the management instrumentation provider will also delete \'child\' ProtocolControllers (i.e., those defined as Dependent references in instances of AssociatedProtocolController where this ProtocolController is the Antecedent reference). Also, all direct associations involving the \'child\' ProtocolControllers will be removed." ), IN ( true )]
		boolean DeleteChildrenProtocolControllers,
	 	[Description ( "If true, the management instrumentation provider will also delete LogicalDevice instances associated via ProtocolControllerForUnit, to this ProtocolController and its children. (Note that \'child\' controllers will only be affected if the DeleteChildrenProtocolControllers input parameter is TRUE). LogicalDevice instances are only deleted if there are NO remaining ProtocolControllerForUnit associations, to other ProtocolControllers." ), IN ( true )]
		boolean DeleteUnits,
	 	[Description ( "The ProtocolController to be deleted." ), IN ( true )]
		CIM_ProtocolController ref ProtocolController
	);
	 	[Description ( "This method removes the ProtocolControllerForDevice association subclass between the ProtocolController and a LogicalDevice, such as a StorageVolume or a MediaAccessDevice. When the ProtocolController is actively masking a device (i.e. is part of an AuthorizedTarget association, the management instrumentation provider should update the hardware access configuration when DetachDevice is called." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "LogicalDevice Instance not Associated with Controller", "Busy", "Method Reserved", "Vendor Specific"}]
	uint32 DetachDevice(
		[Description ( "The LogicalDevice instance to detach." ), IN ( true )]
		CIM_LogicalDevice ref Device,
	 	[Description ( "The ProtocolController instance." ), IN ( true )]
		CIM_ProtocolController ref ProtocolController
	);
	 	[Description ( "Expose a list of SCSI logical units (such as RAID volumes or tape drives) through a \'default view\' SCSIProtocolController (SPC) through a list of target ports. The \'default view\' SPC exposes logical units to all initiators. This SPC is identified by an association to a StorageHardwareID with Name property set to the empty string. \n\nThe parameters for this method are: Job - null if no job created, otherwise this is a reference to the job. LUNames - the list of names of the logical units to use. TargetPortIDs - the names of the target ports to use. DeviceNumbers - the device numbers (LUNs) to use. DeviceAccesses - permissions for the logical units. ProtocolControllers - SPCs involved in this operation. \n\nThere are two modes of operation, create and modify. If a NULL value is passed in for the SPC, then the instrumentation will attempt to create a new default view. If PortsPerView is \'All Ports share the same view\', then there is at most one default view SPC. If PortsPerView is not \'All Ports share the same view\', then there MAY be multiple default view SPCs as long as different ports are associated with each. If an SPC is passed in, then the instrumentation adds the new paths to the existing SPC. The instrumentation MAY return an error if honoring this request would violate SCSI semantics. \n\nFor creating a default view SPC, the parameters that MUST be specified are dependent upon the SPCAllows* properties in CIM_ProtocolControllerMaskingCapabilities. If SPCAllowsNoLUs is false, the caller MUST specify a list of LUNames. If it is true, the caller MAY specify a list of LUNames or MAY pass in null. If SPCAllowsNoTargets is false, the caller MUST specify a list of TargetPortIDs. If it is true, the caller MAY specify a list of TargetPortIDs or MAY pass in null. If LUNames is not null, the caller MUST specify DeviceAccesses for each logical unit. If the instrumentation\'s CIM_ProtocolControllerMaskingCapabilities ClientSelectableDeviceNumbers property is TRUE then the client MAY provide a list of device numbers (LUNs) to use for the paths to be created. If is false, the client MUST pass in NULL for this parameter. \n\nThe LUNames, DeviceNumbers, and DeviceAccesses parameters are mutually indexed arrays - any element in DeviceNumbers or DeviceAccesses will set a property relative to the LogicalDevice instance named in the corresponding element of LUNames. LUNames and DeviceAccesses MUST have the same number of elements. DeviceNumbers MUST be null (asking the instrumentation to assign numbers) or have the same number of elements as LUNames. If these conditions are not met, the instrumentation MUST return a \'Invalid Parameter\' status or a CIM_Error. \n\nFor modifying an SPC, there are two specific use cases identified. The instrumentation MUST support one and the other is required depending on a how a property is set. Other permutations are allowed, but are vendor-specific. The required use case is - Add LUs to a default view. Add LUs to a default view requires that the LUNames parameter not be null and that the TargetPortIDs parameters be null. DeviceNumbers MAY be null if ClientSelectableDeviceNumbers is false. DeviceAccess MUST be specified. Add target port IDs to a default view is only valid if PortsPerView is set to \'Multiple Ports per View\'. It requires that the LUNames, DeviceNumbers, and DeviceAccesses MUST also be null \n\nThe relevant rules of SCSI semantics are: \n- an SPC MAY NOT be exposed through a particular host/target port pair that is in use by another SPC. (In other words, an SPC and its associated logical units and ports together correspond to the logical unit inventory provided by SCSI REPORT LUNS and INQUIRY commands) \n- each LogicalDevice associated to an SPC MUST have a unique ProtocolControllerForUnit DeviceNumber (logical unit number) \nThe instrumentation MUST report an error if the client request would violate one of these rules. \n\nIf the instrumentation provides PrivilegeManagementService, the results of setting DeviceAccesses MUST be synchronized with PrivilegeManagementService as described in the ProtocolControllerForUnit DeviceAccess description." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098", "4099", "4100", "4101", "4102..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Method Parameters Checked - Job Started", "Invalid logical unit ID", "Invalid target port ID", "Invalid permission", "Requested logical unit number in use", "Maximum Map Count Exceeded", "Method Reserved", "Vendor Specific"}]
	uint32 ExposeDefaultLUs(
		[ArrayType ( "Indexed" ), Description ( "A list of permissions to assign to the corresponding logical unit in the LUNames parameter. This specifies the permission to assign within the context of the elements specified in the other parameters. Setting this to \'No Access\' assigns the DeviceNumber for all initiators, but does not grant read or write access. If the LUNames parameter is not null then this parameter MUST be specified." ), IN ( true ), ModelCorrespondence{"CIM_ProtocolControllerForUnit.DeviceAccessCIM_ControllerConfigurationService.ExposePaths.DeviceNumbers", "CIM_ControllerConfigurationService.ExposePaths.LUNames"}, ValueMap{"0", "2", "3", "4", "5..15999", "16000.."}, Values{"Unknown", "Read Write", "Read-Only", "No Access", "DMTF Reserved", "Vendor Reserved"}]
		uint16 DeviceAccesses,
	 	[ArrayType ( "Indexed" ), Description ( "A list of logical unit numbers to assign to the corresponding logical unit in the LUNames parameter. (within the context of the elements specified in the other parameters). If the LUNames parameter is null, then this parameter MUST be null. Otherwise, if this parameter is null, all LU numbers are assigned by the hardware or instrumentation." ), IN ( true ), ModelCorrespondence{"CIM_ProtocolControllerForUnit.DeviceNumberCIM_ControllerConfigurationService.ExposePaths.LUNames", "CIM_ControllerConfigurationService.ExposePaths.DeviceAccesses"}]
		string DeviceNumbers,
	 	[Description ( "Reference to the job if \'Method Parameters Checked - Job Started\' is returned (MAY be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[ArrayType ( "Indexed" ), Description ( "An array of IDs of logical unit instances. The LU instances MUST already exist. The members of this array MUST match the Name property of LogicalDevice instances that represent SCSI logical units. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_LogicalDevice.Name", "CIM_ControllerConfigurationService.ExposePaths.DeviceNumbers", "CIM_ControllerConfigurationService.ExposePaths.DeviceAccesses"}, Required ( true )]
		string LUNames,
	 	[Description ( "An array of references to SCSIProtocolControllers (SPCs). On input, this can be null, or contain exactly one element; there MAY be multiple references on output. If null on input, the instrumentation will create one or more new SPC instances. If an SPC is specified, the instrumentation will attempt to add associations to one or more existing SPCs. If the first array element is a valid SPC reference and SCSI semantics can be preserved, the instrumentation MUST attach associations to the specified SPC. If multiple elements are non-null on input, the instrumentation MUST report an invalid parameter. On output, this is an array of references to SPCs created or modified as the result of processing the request." ), IN ( true ), OUT ( true )]
		CIM_SCSIProtocolController ref ProtocolControllers[],
	 	[Description ( "IDs of target ports. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_SCSIProtocolEndpoint.Name"}]
		string TargetPortIDs
	);
	 	[Description ( "Expose a list of SCSI logical units (such as RAID volumes or tape drives) to a list of initiators through a list of target ports, through one or more SCSIProtocolControllers (SPCs). \n\nThe parameters for this method are: Job - null if no job created, otherwise this is a reference to the job. LUNames - the list of names of the logical units to use. InitiatorPortIDs - the names of the initiator ports to use. TargetPortIDs - the names of the target ports to use. DeviceNumbers - the device numbers (LUNs) to use. DeviceAccesses - permissions for the logical units. ProtocolControllers - SPCs involved in this operation. \n\nThere are two modes of operation, create and modify. If a NULL value is passed in for the SPC, then the instrumentation will create at least one SPC that satisfies the request. Depending upon the instrumentation capabilities, more than one SPC MAY be created. (e.g. if CIM_ProtocolControllerMaskingCapabilities.OneHardwareIDPerView is true and more than one initiatorID was passed in, then one SPC per initiatorID will be created). If an SPC is passed in, then the instrumentation attempts to add the new paths to the existing SPC. Depending upon the instrumentation capabilities, this MAY result in the creation of additional SPCs. The instrumentation MAY return an error if honoring this request would violate SCSI semantics. \n\nFor creating an SPC, the parameters that MUST be specified are dependent upon the SPCAllows* properties in CIM_ProtocolControllerMaskingCapabilities. If SPCAllowsNoLUs is false, the caller MUST specify a list of LUNames. If it is true, the caller MAY specify a list of LUNames or MAY pass in null. If SPCAllowsNoTargets is false and PortsPerView is not \'All Ports share the same view\' the caller MUST specify a list of TargetPortIDs. If it is true, the caller MAY specify a list of TargetPortIDs or MAY pass in null. If SPCAllowsNoInitiators is false, the caller MUST specify a list of InitiatorPortIDs. If it is true, the caller MAY specify a list of InitiatorPortIDs or MAY pass in null. If LUNames is not null, the caller MUST specify DeviceAccesses for each logical unit. If the instrumentation\'s CIM_ProtocolControllerMaskingCapabilities ClientSelectableDeviceNumbers property is TRUE then the client MAY provide a list of device numbers (LUNs) to use for the paths to be created. If is false, the client MUST pass in NULL for this parameter. \n\nThe LUNames, DeviceNumbers, and DeviceAccesses parameters are mutually indexed arrays - any element in DeviceNumbers or DeviceAccesses will set a property relative to the LogicalDevice instance named in the corresponding element of LUNames. LUNames and DeviceAccesses MUST have the same number of elements. DeviceNumbers MUST be null (asking the instrumentation to assign numbers) or have the same number of elements as LUNames. If these conditions are not met, the instrumentation MUST return a \'Invalid Parameter\' status or a CIM_Error. \n\nFor modifying an SPC, there are three specific use cases identified. The instrumentation MUST support these use cases. Other permutations are allowed, but are vendor-specific. The use cases are: Add LUs to a view, Add initiator IDs to a view, and Add target port IDs to a view. Add LUs to a view requires that the LUNames parameter not be null and that the InitiatorIDs and TargetPortIDs parameters be null. DeviceNumbers MAY be null if ClientSelectableDeviceNumbers is false. DeviceAccesses MUST be specified. Add initiator IDs to a view requires that the LUNames parameter be null, that the InitiatorIDs not be null, and that the TargetPortIDs parameters be null. DeviceNumbers and DeviceAccesses MUST be null. Add target port IDs to a view requires that the LUNames and InitiatorPortIDs parameters be null and is only possible is PortsPerView is \'Multiple Ports Per View\'. DeviceNumbers and DeviceAccesses MUST also be null \n\nThe relevant rules of SCSI semantics are: \n- an SPC MAY NOT be exposed through a particular host/target port pair that is in use by another SPC. (In other words, an SPC and its associated logical units and ports together correspond to the logical unit inventory provided by SCSI REPORT LUNS and INQUIRY commands) \n- each LogicalDevice associated to an SPC MUST have a unique ProtocolControllerForUnit DeviceNumber (logical unit number) \nThe instrumentation MUST report an error if the client request would violate one of these rules. \n\nIf the instrumentation provides PrivilegeManagementService, the results of setting DeviceAccesses MUST be synchronized with PrivilegeManagementService as described in the ProtocolControllerForUnit DeviceAccess description." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Method Parameters Checked - Job Started", "Invalid logical unit ID", "Invalid initiator port ID", "Invalid target port ID", "Invalid permission", "Target/initiator combination already exposed", "Requested logical unit number in use", "Maximum Map Count Exceeded", "Method Reserved", "Vendor Specific"}]
	uint32 ExposePaths(
		[ArrayType ( "Indexed" ), Description ( "A list of permissions to assign to the corresponding logical unit in the LUNames parameter. This specifies the permission to assign within the context of the elements specified in the other parameters. Setting this to \'No Access\' assigns the DeviceNumber for the associated initiators, but does not grant read or write access. If the LUNames parameter is not null then this parameter MUST be specified." ), IN ( true ), ModelCorrespondence{"CIM_ProtocolControllerForUnit.DeviceAccessCIM_ControllerConfigurationService.ExposePaths.DeviceNumbers", "CIM_ControllerConfigurationService.ExposePaths.LUNames"}, ValueMap{"0", "2", "3", "4", "5..15999", "16000.."}, Values{"Unknown", "Read Write", "Read-Only", "No Access", "DMTF Reserved", "Vendor Reserved"}]
		uint16 DeviceAccesses,
	 	[ArrayType ( "Indexed" ), Description ( "A list of logical unit numbers to assign to the corresponding logical unit in the LUNames parameter. (within the context of the elements specified in the other parameters). If the LUNames parameter is null, then this parameter MUST be null. Otherwise, if this parameter is null, all LU numbers are assigned by the hardware or instrumentation." ), IN ( true ), ModelCorrespondence{"CIM_ProtocolControllerForUnit.DeviceNumberCIM_ControllerConfigurationService.ExposePaths.LUNames", "CIM_ControllerConfigurationService.ExposePaths.DeviceAccesses"}]
		string DeviceNumbers,
	 	[Description ( "IDs of initiator ports. If existing StorageHardwareID instances exist, they MUST be used. If no StorageHardwareID instance matches, then one is implicitly created. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_StorageHardwareID.StorageID"}]
		string InitiatorPortIDs,
	 	[Description ( "Reference to the job if \'Method Parameters Checked - Job Started\' is returned (MAY be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[ArrayType ( "Indexed" ), Description ( "An array of IDs of logical unit instances. The LU instances MUST already exist. The members of this array MUST match the Name property of LogicalDevice instances that represent SCSI logical units. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_LogicalDevice.Name", "CIM_ControllerConfigurationService.ExposePaths.DeviceNumbers", "CIM_ControllerConfigurationService.ExposePaths.DeviceAccesses"}, Required ( true )]
		string LUNames,
	 	[Description ( "An array of references to SCSIProtocolControllers (SPCs). On input, this can be null, or contain exactly one element; there MAY be multiple references on output. If null on input, the instrumentation will create one or more new SPC instances. If an SPC is specified, the instrumentation will attempt to add associations to one or more existing SPCs. If the first array element is a valid SPC reference and SCSI semantics can be preserved, the instrumentation MUST attach associations to the specified SPC. If multiple elements are non-null on input, the instrumentation MUST report an invalid parameter. On output, this is an array of references to SPCs created or modified as the result of processing the request." ), IN ( true ), OUT ( true )]
		CIM_SCSIProtocolController ref ProtocolControllers[],
	 	[Description ( "IDs of target ports. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_SCSIProtocolEndpoint.Name"}]
		string TargetPortIDs
	);
	 	[Description ( "Hide a list of SCSI logical units (such as RAID volumes or tape drives) through a list of target ports on a default view SCSIProtocolController (SPC). \n\nThe parameters for this method are: Job - null if no job created, otherwise this is a reference to the job. LUNames - the list of names of the logical units to use. TargetPortIDs - the names of the target ports to use. ProtocolControllers - SPCs involved in this operation. \n\nWhen hiding logical units, there are two specific use cases identified. The instrumentation MUST support the Remove LUs case and MUST support the remove target port IDs if PortsPerView is set to \'Multiple Ports per View\'. Other permutations are allowed, but are vendor-specific. The use cases are: Remove LUs from a default view and Remove target port IDs from a default view. Remove LUs from a default view requires that the LUNames parameter not be null and that the TargetPortIDs parameter be null. Remove target port IDs from a default view is required if PortsPerView is Multiple Ports per view. It requires that the LUNames parameter be null. \n\nIf both LUNames and TargetIDs parameters are non-null and CIM_ProtocolControllerMaskingCapabilities.MaximumMapCount is 0, then the instrumentation MUST create new SPCs and change associations as necessary to meet the client request and maintain the relevant rules of SCSI in the ExposeDefaultLUs description. If both LUNames and TargetIDs parameters are non-null and CIM_ProtocolControllerMaskingCapabilities.MaximumMapCount is greater than 0, then any client request that cannot be honored by changing associations to the specified SPC will receive a \'Maximum Map Count Error\' response. \nThe disposition of the SPC when the last logical unit or target port ID is removed depends upon the CIM_ProtocolControllerMaskingCapabilites SPCAllowsNo* properties. If SPCAllowsNoLUs is false, then the SPC is automatically deleted when the last logical unit is removed. If SPCAllowsNoTargets is false, then the SPC is automatically deleted when the last target port ID is removed. In all other cases, the SPC MUST be explicitly deleted via the DeleteInstance intrinsic function." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098", "4099", "4100..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Method Parameters Checked - Job Started", "Invalid logical unit ID", "Invalid target port ID", "Maximum Map Count Error", "Method Reserved", "Vendor Specific"}]
	uint32 HideDefaultLUs(
		[Description ( "Reference to the job if \'Method Parameters Checked - Job Started\' is returned (MAY be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "A list of IDs of logical units. Each LU instance MUST already exist. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_LogicalDevice.Name"}, Required ( true )]
		string LUNames,
	 	[Description ( "An array of references to SCSIProtocolControllers (SPCs). On input, this MUST contain exactly one element; there MAY be multiple references on output. The instrumentation will attempt to remove associations (LUNames or TargetPortIDs) from this SPC. Depending upon the specific implementation, the instrumentation MAY need to create new SPCs with a subset of the remaining associations. On output, this is an array of references to SPCs created or modified as the result of processing the request." ), IN ( true ), OUT ( true )]
		CIM_SCSIProtocolController ref ProtocolControllers[],
	 	[Description ( "IDs of target ports. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_SCSIProtocolEndpoint.Name"}]
		string TargetPortIDs
	);
	 	[Description ( "Hide a list of SCSI logical units (such as a RAID volume or tape drive) from a list of initiators and/or target ports on a SCSIProtocolController (SPC). \n\nThe parameters for this method are: Job - null if no job created, otherwise this is a reference to the job. LUNames - the list of names of the logical units to use. InitiatorPortIDs - the names of the initiator ports to use. TargetPortIDs - the names of the target ports to use. ProtocolControllers - SPCs involved in this operation. \n\nWhen hiding logical units, there are three specific use cases identified. The instrumentation MUST support these use cases. Other permutations are allowed, but are vendor-specific. The use cases are: Remove LUs from a view, Remove initiator IDs from a view, and Remove target port IDs from a view. Remove LUs from a view requires that the LUNames parameter not be null and that the InitiatorIDs and TargetPortIDs parameters be null. Remove initiator IDs from a view requires that the LUNames parameter be null, that the InitiatorIDs not be null, and that the TargetPortIDs parameters be null. Remove target port IDs from a view requires that the LUNames and InitiatorPortIDs parameters be null. \n\nThe disposition of the SPC when the last logical unit, initiator ID, or target port ID is removed depends upon the CIM_ProtocolControllerMaskingCapabilites SPCAllowsNo* properties. If SPCAllowsNoLUs is false, then the SPC is automatically deleted when the last logical unit is removed. If SPCAllowsNoTargets is false, then the SPC is automatically deleted when the last target port ID is removed. If SPCAllowsNoInitiators is false, then the SPC is automatically deleted when the last initiator port ID is removed. In all other cases, the SPC MUST be explicitly deleted via the DeleteInstance intrinsic function." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098", "4099", "4100", "4101..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Method Parameters Checked - Job Started", "Invalid logical unit ID", "Invalid initiator port ID", "Invalid target port ID", "Target/initiator combination not exposed", "Method Reserved", "Vendor Specific"}]
	uint32 HidePaths(
		[Description ( "IDs of initiator ports. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_StorageHardwareID.StorageID"}]
		string InitiatorPortIDs,
	 	[Description ( "Reference to the job if \'Method Parameters Checked - Job Started\' is returned (MAY be null if job completed)." ), IN ( false ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "A list of IDs of logical units. Each LU instance MUST already exist. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_LogicalDevice.Name"}, Required ( true )]
		string LUNames,
	 	[Description ( "An array of references to SCSIProtocolControllers (SPCs). On input, this MUST contain exactly one element; there MAY be multiple references on output. The instrumentation will attempt to remove associations (LUNames, InitiatorPortIDs, or TargetPortIDs) from this SPC. Depending upon the specific implementation, the instrumentation MAY need to create new SPCs with a subset of the remaining associations. On output, this is an array of references to SPCs created or modified as the result of processing the request." ), IN ( true ), OUT ( true )]
		CIM_SCSIProtocolController ref ProtocolControllers[],
	 	[Description ( "IDs of target ports. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_SCSIProtocolEndpoint.Name"}]
		string TargetPortIDs
	);
};

// IBMTSDS_ControllerConfigurationService

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "The ControllerConfigurationService provides methods that allow a client to manipulate LUN Masking in a storage system." ),  Version ( "2.8.0" )]
class IBMTSDS_ControllerConfigurationService : CIM_ControllerConfigurationService {
	[Description ( "The name of the concrete subclass." ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "Unique identifier for the Service. The format should bethat of a hexadigit string." ), Override ( "Name" )]
	string Name;

 	[Description ( "The scoping System CreationClassName." ), Override ( "SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping system name." ), Override ( "SystemName" )]
	string SystemName;


		[Description ( "ExposePaths performs the mapping and makingoperation in a single method call. It exposes a list ofSCSI logical units to a list of initiators through a listof target ports, through one or more SCSIProtocolControllers(SPCs)." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098", "4099", "4100", "4104..32767", "0x9009", "0x9300", "0x9301", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Method Parameters Checked - Job Started", "Invalid logical unit ID", "Invalid initiator port ID", "Invalid target port ID", "Invalid permission", "Method Reserved", "Invalid ProtocolController", "LUNames does not match DeviceAccess", "LUNames or TargetPortID must be specified", "Device Error Codes - see ReturnCodes.txt"}]
	uint32 ExposePaths(
		[ArrayType ( "Indexed" ), Description ( "A list of permissions to assign to the corresponding logical unitin the LUNames parameter. This specifies the permission to assignwithin the context of the elements specified in the other parameters.Setting this to \"No Access\" assigns the DeviceNumber for the associated initiators, but does not grant read or write access. If the LUNames parameter shall be specified. All access is given by default" ), IN ( true ), ModelCorrespondence{"IBMTSDS_ProtocolControllerForUnit.DeviceAccess"}, ValueMap{"0", "2", "3", "4", "5..15999", "16000.."}, Values{"Unknown", "Read Write", "Read-Only", "No Access", "DMTF Reserved", "Vendor Reserved"}]
		uint16 DeviceAccesses,
	 	[Description ( "A list of logical unit numbers to assign to the correspondinglogical unit in the LUNames parameter. IF the LUNames parameteris null, then this parameter shall be null. Otherwise, if thisparameter is null, all LU members are assigned by the hardware.This shall be formatted as unseparated uppercase hexadecimal digits,with no leading \"Ox\". This is not supported" ), IN ( true )]
		string DeviceNumbers,
	 	[Description ( "IDs of initiator ports. If existing StorageHardwareID instancesexist, they shall be used. If no StorageHardwareID instance matches, then one is implicitly created. If a StorageHardwareID is created as a side effect, the default operating system is AIX. If you need to define a different operating system for the StorageHardwareID, you must use CreateStorageHardwareID." ), IN ( true ), ModelCorrespondence{"IBMTSDS_StorageHardwareID.StorageID"}]
		string InitiatorPortIDs,
	 	[Description ( "Reference to the job. This may be null ifno job is started. This property is not supported." ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[ArrayType ( "Indexed" ), Description ( "an array of IDs of logical unit instances. The LU instancesneed to already exist. The members of this array shall matchthe Name property of LogicalDevice instances that representSCSI logical units." ), IN ( true ), ModelCorrespondence{"IBMTSDS_Volume.Name"}]
		string LUNames,
	 	[Description ( "An array of references to SCSIProtocolControllers (SPCs). On input,this can be null, or contain exactly one element; if null on input,the instrumentation will create one or more new SPC instances.  On output, this will be either null (if a job was created) or the set of SPCs affected (those created or modified). If a job was started,references to the SPCs affected will be found by following the   AffectedJobElement association from the job." ), IN ( true ), OUT ( true )]
		CIM_SCSIProtocolController ref ProtocolControllers[],
	 	[Description ( "IDs of target ports." ), IN ( true ), ModelCorrespondence{"IBMTSDS_SCSIProtocolEndpoint.Name"}]
		string TargetPortIDs
	);
	 	[Description ( "HidePaths is the inverse of ExposePaths. It hides a list ofSCSI logical units (such as RAID volumes) from a list ofinitiators through a list of target ports, through one ormore SCSIProtocolControllers (SPCs). The instrumentationshall support three use cases which are: Remove LUs from aview, Remove initiator IDs from a view, and Remove targetport IDs from a view. Remove LUs from a view requires thatthe LUNames parameter not be null and that the InitiatorIDsand TargetPortIDs parameters be null." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104..32767", "32768", "36872", "36873", "37638", "37639..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Method Parameters Checked - Job Started", "Invalid logical unit ID", "Invalid initiator port ID", "Invalid target port ID", "Invalid permission", "Target/initiator combination already exposed", "Requested logical unit number in use", "Maximum Map Count Exceeded", "Method Reserved", "Internal provider error", "Invalid InitiatorPortID", "Invalid ProtocolController", "InitiatorPortID does not match protocol controller", "Device Error Codes - see ReturnCodes.txt"}]
	uint32 HidePaths(
		[Description ( "If this is non-null, it must match the DeviceID of the SCSIProtocolController. Since SCSIProtocolControllers cannot exist without a StorageHardwareID associated to it, specifying an InitiatorPortID will delete the ProtocolController and remove all all assocations with Volumes and SCSIProtocolEndpoints" ), IN ( true ), ModelCorrespondence{"IBMTSDS_StorageHardwareID.StorageID"}]
		string InitiatorPortIDs,
	 	[Description ( "Reference to the job (may be null if no job started) This is not supported" ), OUT ( true )]
		CIM_ConcreteJob ref Job,
	 	[Description ( "An array of IDs of logical unit instances to hide. The LU instances need toalready exist." ), IN ( true ), ModelCorrespondence{"IBMTSDS_Volume.Name"}]
		string LUNames,
	 	[Description ( "An array of references to SCSIProtocolControllers (SPCs). On input, this MUST contain exactly one element; there MAY be multiple references on output. The instrumentation will attempt to remove associations (LUNames, InitiatorPortIDs, or TargetPortIDs) from this SPC. On output, this is an array of references to SPCs created or modified as the result of processing the request." ), IN ( true ), OUT ( true )]
		CIM_SCSIProtocolController ref ProtocolControllers[],
	 	[Description ( "IDs of target ports to hide." ), IN ( true ), ModelCorrespondence{"IBMTSDS_SCSIProtocolEndpoint.Name"}]
		string TargetPortIDs
	);
};

// IBMTSDS_HostedControllerConfigurationService

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_HostedControllerConfigurationService : CIM_HostedService {
	[Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_StorageSystem ref Antecedent;

 	[Key ( true ), Override ( "Dependent" )]
	IBMTSDS_ControllerConfigurationService ref Dependent;


};

// CIM_ServiceAccessBySAP

[ASSOCIATION ( true ),  Description ( "CIM_ServiceAccessBySAP is an association that identifies the access points for a Service. For example, a printer might be accessed by NetWare, MacIntosh or Windows ServiceAccessPoints, which might all be hosted on different Systems." ), Version ( "2.10.0" )]
class CIM_ServiceAccessBySAP : CIM_Dependency {
	[Description ( "The Service." ), Override ( "Antecedent" )]
	CIM_Service ref Antecedent;

 	[Description ( "An Access Point for a Service. Access points are dependent in this relationship because they have no function without a corresponding Service." ), Override ( "Dependent" )]
	CIM_ServiceAccessPoint ref Dependent;


};

// CIM_SettingAssociatedToCapabilities

[ASSOCIATION ( true ),  Description ( "This association defines settings that can be used to create or modify elements. Unlike ElementSettingData, these settings are not used to express the characteristics of existing managed elements. \nTypically, the capabilities associated with this class define the characteristics of a service in creating or modifying elements that are dependent on the service directly or indirectly. A CIM Client may use this association to find SettingData instances that can be used to create or modify these dependent elements." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_SettingAssociatedToCapabilities : CIM_Dependency {
	[Description ( "The Capabilities." ), Override ( "Antecedent" )]
	CIM_Capabilities ref Antecedent;

 	[Description ( "If an element whose characteristics are described by the associated Capabilities instance has a dependent element created or modified without specifying an associated SettingData instance, then the default SettingData will be used in that operation." ), Required ( true )]
	boolean DefaultSetting = false;

 	[Description ( "The Setting." ), Override ( "Dependent" )]
	CIM_SettingData ref Dependent;


};

// CIM_StorageCapabilities

	[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." ), Version ( "2.10.0" )]
class CIM_StorageCapabilities : CIM_Capabilities {
	[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 ( "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 ( "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." ), MaxValue ( 100 ), MinValue ( 0 ), ModelCorrespondence{"CIM_StorageCapabilities.DeltaReservationMax", "CIM_StorageCapabilities.DeltaReservationMin"}, Units ( "Percentage" )]
	uint16 DeltaReservationDefault;

 	[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." ), MaxValue ( 100 ), MinValue ( 0 ), ModelCorrespondence{"CIM_StorageCapabilities.DeltaReservationMin", "CIM_StorageCapabilities.DeltaReservationDefault"}, Units ( "Percentage" )]
	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." ), MaxValue ( 100 ), MinValue ( 0 ), ModelCorrespondence{"CIM_StorageCapabilities.DeltaReservationMax", "CIM_StorageCapabilities.DeltaReservationDefault"}, Units ( "Percentage" )]
	uint16 DeltaReservationMin;

 	[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 ( "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\'. \nA NULL value for ExtentStripeLengthDefault indicates that the system does not support configuration of storage by specifying Stripe Length. \nIf 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. \nIf 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." ), Experimental ( true ), MinValue ( 1 )]
	uint16 ExtentStripeLengthDefault;

 	[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 ( "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 ( "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 ( "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." ), Experimental ( true ), 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. \nIf 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. \nIf 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." ), Experimental ( true ), MinValue ( 1 ), Units ( "Bytes" )]
	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(
		[Description ( "Reference to the created StorageSetting instance." ), IN ( false ), OUT ( true )]
		CIM_StorageSetting ref NewSetting,
	 	[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. \nIf 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\nThis method maybe deprecated in lieu of intrinsics once limitations in the CIM Operations are addressed." ), IN ( true ), ValueMap{"2", "3"}, Values{"Default", "Goal"}]
		uint16 SettingType
	);
	 	[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(
		[ArrayType ( "Indexed" ), Description ( "List of supported Parity for a Volume/Pool creation or modification." ), IN ( false ), OUT ( true ), ValueMap{"2", "3"}, Values{"Non-Rotated Parity", "Rotated Parity"}]
		uint16 ParityLayout
	);
	 	[Description ( "For systems that support a range of UserDataStripeDepths for volume or pool creation, this method can be used to retrieve the supported range. Note that different implementations may support either the GetSupportedStripeDepths or the GetSupportedStripeDepthRange method. If the system only supports discrete values, then the return value will be set to 2." ), Experimental ( true ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedStripeDepths instead"}]
	uint32 GetSupportedStripeDepthRange(
		[Description ( "The maximum UserDataStripeDepth for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MaximumStripeDepth,
	 	[Description ( "The minimum UserDataStripeDepth for a volume/pool in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 MinimumStripeDepth,
	 	[Description ( "A volume/pool UserDataStripeDepth must be a multiple of this value which is specified in bytes." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 StripeDepthDivisor
	);
	 	[Description ( "For systems that support discrete UserDataStripeDepths for volume or pool creation, this method can be used to retrieve a list of supported values. Note that different implementations may support either the GetSupportedStripeDepths or the GetSupportedStripeDepthRange method. If the system only supports a range of sizes, then the return value will be set to 2." ), Experimental ( true ), ValueMap{"0", "1", "2"}, Values{"Method completed OK", "Method not supported", "Use GetSupportedStripeDepthRange instead"}]
	uint32 GetSupportedStripeDepths(
		[ArrayType ( "Indexed" ), Description ( "List of supported UserDataStripeDepths for a Volume/Pool creation or modification." ), IN ( false ), OUT ( true ), Units ( "Bytes" )]
		uint64 StripeDepths
	);
	 	[Description ( "For systems that support a range of ExtentStripeLengths for volume or pool creation, this method can be used to retrieve the supported range. Note that different implementations may support either the GetSupportedExtentLengths or the GetSupportedExtentLengthRange method. Also note that the advertised sizes may change after the call due to requests from other clients. If the system only supports discrete values, then the return value will be set to 3." ), Experimental ( true ), ValueMap{"0", "1", "2", "3"}, Values{"Method completed OK", "Method not supported", "Choices not available for this Capability", "Use GetSupportedStripeLengths instead"}]
	uint32 GetSupportedStripeLengthRange(
		[Description ( "The maximum ExtentStripeLength for a volume/pool in bytes." ), IN ( false ), OUT ( true )]
		uint16 MaximumStripeLength,
	 	[Description ( "The minimum ExtentStripeDepth for a volume/pool in bytes." ), IN ( false ), OUT ( true )]
		uint16 MinimumStripeLength,
	 	[Description ( "A volume/pool ExtentStripeLength must be a multiple of this value which is specified in bytes." ), IN ( false ), OUT ( true )]
		uint32 StripeLengthDivisor
	);
	 	[Description ( "For systems that support discrete ExtentStripeLengths for volume or pool creation, this method can be used to retrieve a list of supported values. Note that different implementations may support either the GetSupportedStripeLengths or the GetSupportedStripeLengthRange method. Also note that the advertised sizes may change after the call due to requests from other clients. If the system only supports a range of sizes, then the return value will be set to 3." ), Experimental ( true ), ValueMap{"0", "1", "2", "3"}, Values{"Method completed OK", "Method not supported", "Choices not available for this Capability", "Use GetSupportedStripeLengthRange instead"}]
	uint32 GetSupportedStripeLengths(
		[ArrayType ( "Indexed" ), Description ( "List of supported ExtentStripeLengths for a Volume/Pool creation or modification." ), IN ( false ), OUT ( true )]
		uint16 StripeLengths
	);
};

// CIM_StorageSettingsAssociatedToCapabilities

[ASSOCIATION ( true ),  Description ( "This association define StorageSettings that reflect the capabilities of the associated StorageCapabilities. The associated StorageSetting may not define the operational characteristics (through settings properties) of any storage element. Certain StorageSetting instances can be defined as \"Fixed = Not Changeable\" by using the \"ChangeableType\" attribute. \"Fixed\" settings have this special association. This association should be defined between \"Fixed - Not Changeable\" instances of StorageSetting with the StorageCapabilities instances that are associated with the StoragePools which support the storage characteristics described by the StorageSetting instance. \nFixed settings may be associated to many StorageCapabilities." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_StorageSettingsAssociatedToCapabilities : CIM_SettingAssociatedToCapabilities {
	[Description ( "The StorageCapabilities." ), Override ( "Antecedent" )]
	CIM_StorageCapabilities ref Antecedent;

 	[Description ( "The fixed and predefined StorageSetting." ), Override ( "Dependent" )]
	CIM_StorageSetting ref Dependent;


};

// IBMTSDS_ArraySitePoolCapabilities

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This Capabilities class describes the ArraySitePool. ArraySites have no redundancies associated, so the Capabilities of all ArraySitePools will be the same.\n Only valid for DS." ),  Version ( "2.8.1000" )]
class IBMTSDS_ArraySitePoolCapabilities : CIM_StorageCapabilities {
	[Description ( "DataRedundancyDefault describes the default number of complete copies of data that can be maintained. This is set to DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyMin"}, Override ( "DataRedundancyDefault" )]
	uint16 DataRedundancyDefault = 1;

 	[Description ( "DataRedundancyMax describes the maximum number of complete copies of data that can be maintained. JBOD is 1." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMin", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMax" )]
	uint16 DataRedundancyMax = 1;

 	[Description ( "DataRedundancyMin describes the minimum number of complete copies of data that can be maintained. JBOD is 1." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMin" )]
	uint16 DataRedundancyMin = 1;

 	[Description ( "The user friendly name for this instance of Capabilities. In addition, the user friendly name can be used as a index property for a search of query. This will be of the form \'Capablities for ArraySite <ArraySitePool Name>\'." ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Enumeration indicating the type of element to which this StorageCapabilities applies." ), Override ( "ElementType" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "Reserved", "Any Type", "StorageVolume", "StorageExtent", "StoragePool", "StorageConfigurationService", "LogicalDisk"}]
	uint16 ElementType = 5;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. This will be the same as ArraySitePool.InstanceID." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[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"}, Override ( "NoSinglePointOfFailure" )]
	boolean NoSinglePointOfFailure = true;

 	[Description ( "Indicates the default value for the NoSinglePointOfFailure property." ), ModelCorrespondence{"CIM_StorageCapabilities.NoSinglePointOfFailure"}, Override ( "NoSinglePointOfFailureDefault" )]
	boolean NoSinglePointOfFailureDefault = true;

 	[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. This is set to PackageRedundancyMin." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyMax"}, Override ( "PackageRedundancyDefault" )]
	uint16 PackageRedundancyDefault = 0;

 	[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. For JBOD, this is 0." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMax" )]
	uint16 PackageRedundancyMax = 0;

 	[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. For JBOD, this is 0." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMax", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMin" )]
	uint16 PackageRedundancyMin = 0;

 	[Description ( "The types of elements that can be created from this pool." ), Experimental ( true ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
	uint16 SupportedElementTypes[] = {2};


};

// IBMTSDS_RAIDSetting

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This class of StorageSetting is used to describe RAID. Two instances of this class exist statically for each StorageManagementSystem, representing the two valid RAID Levels: RAID5 and RAID10." ),  Version ( "2.8.1000" )]
class IBMTSDS_RAIDSetting : CIM_StorageSetting {
	[Description ( "Enumeration indicating the type of setting. \"Fixed - Not Changeable\" settings are primordial. These setting are defined at the implementor of the class. \"Changeable - Transient\" is the type of setting produced by the \"CreateSetting\" method. A client can subsequently request that the implementation persist the generated and potentially modified setting indefinately. Only a \"Changeable - Transient\" setting SHALL be converted to a \"Changeable = Persistent\" setting; the setting SHALL NOT be changed back." ), Experimental ( true ), Override ( "ChangeableType" ), ValueMap{"0", "1", "2"}, Values{"Fixed - Not Changeable", "Changeable - Transient", "Changeable - Persistent"}]
	uint16 ChangeableType = 0;

 	[Description ( "DataRedundancyGoal describes the desired number of complete copies of data that can be maintained. This is set to DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyMin"}, Override ( "DataRedundancyGoal" )]
	uint16 DataRedundancyGoal;

 	[Description ( "DataRedundancyMax describes the maximum number of complete copies of data that can be maintained. The max supported redundancy of RAID5 is 1 and of RAID10 is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMin", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMax" )]
	uint16 DataRedundancyMax;

 	[Description ( "DataRedundancyMin describes the minimum number of complete copies of data that can be maintained. The minimum of RAID5 is 1 and of RAID10 is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMin" )]
	uint16 DataRedundancyMin;

 	[Description ( "The user friendly name for this instance of SettingData. In addition, the user friendly name can be used as a index property for a search of query. Will be of the form StorageSetting for <RAID level>." ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. Will be of the form IBMTSDS:<RAID level>, where RAID level is RAID5 or RAID10." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[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"}, Override ( "NoSinglePointOfFailure" )]
	boolean NoSinglePointOfFailure = true;

 	[Description ( "Indicates the default value for the NoSinglePointOfFailure property." ), ModelCorrespondence{"CIM_StorageCapabilities.NoSinglePointOfFailure"}]
	boolean NoSinglePointOfFailureDefault = true;

 	[Description ( "PackageRedundancyGoal describes the desired number of redundant packages to 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 (max and min) for redundancy are defined using the properties, PackageRedundancyMax and PackageRedundancyMin. Set to Min, 1." ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin"}, Override ( "PackageRedundancyGoal" ), Write ( true )]
	uint16 PackageRedundancyGoal = 1;

 	[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. The max for RAID5 is 2 and for RAID10 is 3." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMax" )]
	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. The minimum for RAID5 and RAID10 is 1." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMax", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMin" )]
	uint16 PackageRedundancyMin = 1;

 	[Description ( "Describes the IBM-defined RAID level. " ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5"}, Values{"Not applicable", "Unknown", "Undefined", "JBOD", "RAID5", "RAID10"}]
	uint16 RAIDLevel[];


};

// IBMTSDS_RAIDSettingToArraySitePoolCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This association define StorageSettings that reflect the capabilities of the associated StorageCapabilities. The associated RAID setting can be passed into CreateOrModifyStoragePool as the Goal when the ArraySitePool is passed in as InPools. Only valid for DS." ), Experimental ( true ),  Version ( "2.8.1000" )]
class IBMTSDS_RAIDSettingToArraySitePoolCapabilities : CIM_StorageSettingsAssociatedToCapabilities {
	[Description ( "The ArraySitePoolCapabilities." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ArraySitePoolCapabilities ref Antecedent;

 	[Description ( "The default association associates the setting that will be used to create or modify a Storage Element if a no setting is passed as a Goal. The default is RAID5." ), Required ( true )]
	boolean DefaultSetting;

 	[Description ( "The RAIDSetting." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_RAIDSetting ref Dependent;


};

// IBMTSDS_HostedArraySitePool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "SystemStoragePool is a specialization of SystemComponent association that establishes that the StoragePool is defined in the context of the System." ),  Version ( "2.7.0" )]
class IBMTSDS_HostedArraySitePool : CIM_HostedStoragePool {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The StoragePool that is a component of a System." ), Key ( true ), Override ( "PartComponent" )]
	IBMTSDS_ArraySitePool ref PartComponent;


};

// CIM_SoftwareIdentity

	[Description ( "SoftwareIdentity represents software, viewed as an asset and/or individually identifiable entity (similar to Physical Element). It does NOT indicate whether the software is installed, executing, etc. (The latter is the role of the SoftwareFeature/ SoftwareElement classes and the Application Model.) Since software may be acquired, SoftwareIdentity can be associated with a Product using the ProductSoftwareComponent relationship. \nNote that the Application Model manages the deployment and installation of software via the classes, SoftwareFeatures and SoftwareElements. The deployment/installation concepts are related to the asset/identity one. In fact, a SoftwareIdentity may correspond to a Product, or to one or more SoftwareFeatures or SoftwareElements - depending on the granularity of these classes and the deployment model. The correspondence of Software Identity to Product, SoftwareFeature or SoftwareElement is indicated using the ConcreteIdentity association. Note that there may not be sufficient detail or instrumentation to instantiate ConcreteIdentity. And, if the association is instantiated, some duplication of information may result. For example, the Vendor described in the instances of Product and SoftwareIdentity MAY be the same. However, this is not necessarily true, and it is why vendor and similar information are duplicated in this class. \nNote that ConcreteIdentity can also be used to describe the relationship of the software to any LogicalFiles that result from installing it. As above, there may not be sufficient detail or instrumentation to instantiate this association." ), Version ( "2.10.0" )]
class CIM_SoftwareIdentity : CIM_LogicalElement {
	[Description ( "The build number of the software." )]
	uint16 BuildNumber;

 	[ArrayType ( "Indexed" ), Description ( "An array of free-form strings providing more detailed explanations for any of the entries in the Classifications array. Note that each entry is related to one in the Classifications array located at the same index." ), ModelCorrespondence{"CIM_SoftwareIdentity.Classifications"}]
	string ClassificationDescriptions[];

 	[ArrayType ( "Indexed" ), Description ( "An array of enumerated integers that classify this software. For example, the software MAY be instrumentation (value=5) or firmware and diagnostic software (10 and 7). The use of value 6, Firmware/BIOS, is being deprecated. Instead, either the value 10 (Firmware) and/or 11 (BIOS/FCode) SHOULD be used." ), ModelCorrespondence{"CIM_SoftwareIdentity.ClassificationDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000..0xFFFF"}, Values{"Unknown", "Other", "Driver", "Configuration Software", "Application Software", "Instrumentation", "Firmware/BIOS", "Diagnostic Software", "Operating System", "Middleware", "Firmware", "BIOS/FCode", "Support/Service Pack", "DMTF Reserved", "Vendor Reserved"}]
	uint16 Classifications[];

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: \n<OrgID>:<LocalID> \nWhere <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. If the above \'preferred\' algorithm is not used, the defining entity MUST assure that the resultant InstanceID is not re-used across any InstanceIDs produced by this or other providers for this instance\'s NameSpace. \nFor DMTF defined instances, the \'preferred\' algorithm MUST be used with the <OrgID> set to \'CIM\'." ), Key ( true )]
	string InstanceID;

 	[Description ( "The language editions supported by the software. The language codes defined in ISO 639 should be used." )]
	string Languages[];

 	[Description ( "The major number component of the software\'s version information - for example, \'12\' from version 12.1(3)T. This property is defined as a numeric value to allow the determination of \'newer\' vs. \'older\' releases. A \'newer\' major release is indicated by a larger numeric value." )]
	uint16 MajorVersion;

 	[Description ( "Manufacturer of this software." )]
	string Manufacturer;

 	[Description ( "The minor number component of the software\'s version information - for example, \'1\' from version 12.1(3)T. This property is defined as a numeric value to allow the determination of \'newer\' vs. \'older\' releases. A \'newer\' minor release is indicated by a larger numeric value." )]
	uint16 MinorVersion;

 	[Description ( "The date the software was released." )]
	datetime ReleaseDate;

 	[Description ( "The revision or maintenance release component of the software\'s version information - for example, \'3\' from version 12.1(3)T. This property is defined as a numeric value to allow the determination of \'newer\' vs. \'older\' releases. A \'newer\' revision is indicated by a larger numeric value." )]
	uint16 RevisionNumber;

 	[Description ( "A manufacturer-allocated number used to identify the software." )]
	string SerialNumber;

 	[Description ( "Specifies the target operating systems of the software. Due to the extreme variability in operating systems, this property is defined as a string array." )]
	string TargetOperatingSystems[];

 	[Description ( "An application specific invariant identifier that will be consistent between versions of a SoftwareIdentity. It will also be consistent across more major changes to the Software Identity naming structure. The purpose of the property is to allow available, uninstalled Software Identities to be matched against an installed Software Identity by a client for version management, or to locate a SoftwareInstallationService that can install the SoftwareIdentity." ), Experimental ( true ), ModelCorrespondence{"CIM_SoftwareInstallationServiceCapabilities.SupportedTargetTypes"}]
	string TargetType;

 	[Description ( "A string representing the complete software version information - for example, \'12.1(3)T\'. This string and the numeric major/minor/revision/build properties are complementary. Since vastly different representations and semantics exist for versions, it is not assumed that one representation is sufficient to permit a client to perform computations (i.e., the values are numeric) and a user to recognize the software\'s version (i.e., the values are understandable and readable). Hence, both numeric and string representations of version are provided." )]
	string VersionString;


};

// IBMTSDS_ExtentTypeSetting

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This class of StorageSetting is used to describe Extent Type. Two instances of this class exist statically for each StorageManagementSystem, representing the two valid Extent Types: FB and CKD. Since this is independent of the underlying redundancy, the DataRedundancy and PackageRedundancy properties have no meaning. They are set to the minimum and maximum supported levels for the underlying Pools." ),  Version ( "2.8.1000" )]
class IBMTSDS_ExtentTypeSetting : CIM_StorageSetting {
	[Description ( "Enumeration indicating the type of setting. \"Fixed - Not Changeable\" settings are primordial. These setting are defined at the implementor of the class. \"Changeable - Transient\" is the type of setting produced by the \"CreateSetting\" method. A client can subsequently request that the implementation persist the generated and potentially modified setting indefinately. Only a \"Changeable - Transient\" setting SHALL be converted to a \"Changeable = Persistent\" setting; the setting SHALL NOT be changed back." ), Experimental ( true ), Override ( "ChangeableType" ), ValueMap{"0", "1", "2"}, Values{"Fixed - Not Changeable", "Changeable - Transient", "Changeable - Persistent"}]
	uint16 ChangeableType = 0;

 	[Description ( "DataRedundancyGoal describes the desired number of complete copies of data that can be maintained. This is set to DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyMin"}, Override ( "DataRedundancyGoal" )]
	uint16 DataRedundancyGoal = 1;

 	[Description ( "DataRedundancyMax describes the maximum number of complete copies of data that can be maintained. The max supported redundancy is RAID10 which is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMin", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMax" )]
	uint16 DataRedundancyMax = 2;

 	[Description ( "DataRedundancyMin describes the minimum number of complete copies of data that can be maintained. The minimum is 1." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMin" )]
	uint16 DataRedundancyMin = 1;

 	[Description ( "The user friendly name for this instance of SettingData. In addition, the user friendly name can be used as a index property for a search of query. Will be of the form StorageSetting for ExtentType <ExtentType>." ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Describes the IBM-defined Extent Type. Currently multiple Extent Types for one object are not allowed, but the property is set to be an array for possible future use." ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Not applicable", "Unknown", "Undefined", "Fixed Block", "Count Key Data"}]
	uint16 ExtentType[];

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. Will be of the form IBMTSDS:ExtentType_<ExtentType>, where ExtentType is FB or CKD." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[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"}, Override ( "NoSinglePointOfFailure" )]
	boolean NoSinglePointOfFailure = true;

 	[Description ( "Indicates the default value for the NoSinglePointOfFailure property." ), ModelCorrespondence{"CIM_StorageCapabilities.NoSinglePointOfFailure"}]
	boolean NoSinglePointOfFailureDefault = true;

 	[Description ( "PackageRedundancyGoal describes the desired number of redundant packages to 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 (max and min) for redundancy are defined using the properties, PackageRedundancyMax and PackageRedundancyMin. Set to Min, 1." ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin"}, Override ( "PackageRedundancyGoal" ), Write ( true )]
	uint16 PackageRedundancyGoal = 1;

 	[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. The max is from RAID10, which is 3." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMax" )]
	uint16 PackageRedundancyMax = 3;

 	[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. The minimum is from RAID5, which is 1." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMax", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMin" )]
	uint16 PackageRedundancyMin = 1;


};

// CIM_MemberOfCollection

[ASSOCIATION ( true ), Aggregation ( true ),  Description ( "CIM_MemberOfCollection is an aggregation used to establish membership of ManagedElements in a Collection." ), Version ( "2.6.0" )]
class CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The Collection that aggregates members." ), Key ( true )]
	CIM_Collection ref Collection;

 	[Description ( "The aggregated member of the Collection." ), Key ( true )]
	CIM_ManagedElement ref Member;


};

// IBMTSDS_BlockStatisticsManifestCollection

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "The class aggregates, via MemberOfCollection association, a set of BlockStatisticsManifests instances. This collection is associated via AssociatedBlockStatisticsManifestCollection to exactly one PerformanceStatisticsCollection. The BlockStatisticsManifestCollection is used to filter the retrieval of statistics. For example, a BlockStatisticsManifestCollection is specified as part of the StatisticsService.GetStatisticsCollection method to filter the statistics returned by that method." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_BlockStatisticsManifestCollection : CIM_BlockStatisticsManifestCollection {
	[Description ( "A user-friendly name for the BlockStatisticsManifestCollection. Currently only the default ManifestCollection is supported. It will have the ElementName \'Default Manifest Collection\'" ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "Currently only the default ManifestCollection is supported. The InstanceID will be \'IBMTSDS:ManifestCollection-Default\'" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "Denotes whether or not this BlockStatisticsManifestCollection is a provider defined default BlockStatisticsManifestCollection. Currently only the provider defined default ManifestCollection is supported." ), Override ( "IsDefault" ), Required ( true )]
	boolean IsDefault = true;


};

// IBMTSDS_ExtentPoolManifest

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "Instances of this class define a list of supported properties of IBMTSDS_ExtentPoolStatistics instances. In the case where a IBMTSDS_ExtentPoolManifest instance is a member of a IBMTSDS_BlockStatisticsManifestCollection used in a IBMTSDS_PerformanceStatisticsService.GetStatisticsCollection request, for each of the boolean \"include\" properties set to true in  Manifest class, the corresponding ExtentPoolStatistics property will be included, if available, in the statistics returned for IBMTSDS_ExtentPoolStatistics instances. By default, all booleans are set to true." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_ExtentPoolManifest : CIM_BlockStatisticsManifest {
	[Description ( "Since CIM/WBEM do not require that the order of properties in a mof file be preserved, this vendor-extension property lets clients know what order the properties will be returned in the GetStatisticsCollection method so that the order does not need to be hard-coded. SMI-S defines the order to beInstanceID, ElementType, StatisticTime, followed by the order in which the Include*** properties are defined above. The strings will be the name of the property in IBMTSDS_ExtentPoolStatistics (without \"Include\")." ), IBMExtension ( "5.2.1" ), ModelCorrespondence{"CIM_BlockStatisticsService.GetStatisticsCollection(Statistics)"}]
	string BulkFormat[];

 	[Description ( "The ElementName will be set to InstanceID without the \'IBMTSDS:\'" ), MaxLen ( 64 ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Defines the role that the element played for which this statistics record was collected. The ExtentPool is a type of StoragePool" ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ElementType"}, Override ( "ElementType" ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000", "0x8001", ".."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Rank", "ExtentPool", "Vendor Specific"}]
	uint16 ElementType = 32769;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeAbbreviatedID = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeDynamicRelocationSourceCount = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeDynamicRelocationTargetCount = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeMaxCount = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeRealAllocatedExtentCount = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeRealExtentConversionCount = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeRealExtentCount = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeRealExtentPoolCapacity = true;

 	[Override ( "IncludeStatisticTime" )]
	boolean IncludeStatisticTime = true;

 	[Override ( "IncludeTotalIOs" )]
	boolean IncludeTotalIOs = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeVirtualExtentCapacity = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeVirtualExtentConversionCount = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeVirtualExtentCount = true;

 	[Description ( "Currently only the default ExtentPoolManifest is supported. The InstanceID will be \'IBMTSDS:ExtentPoolManifest-Default\'" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;


};

// IBMTSDS_ExtentPoolManifestMemberOfCollection

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "CIM_MemberOfCollection is an aggregation used to establish membership of ManagedElements in a Collection." ),  Version ( "2.10.0" )]
class IBMTSDS_ExtentPoolManifestMemberOfCollection : CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The Collection that aggregates members." ), Key ( true ), Override ( "Collection" )]
	IBMTSDS_BlockStatisticsManifestCollection ref Collection;

 	[Description ( "The aggregated member of the Collection." ), Key ( true ), Override ( "Member" )]
	IBMTSDS_ExtentPoolManifest ref Member;


};

// CIM_Namespace

	[Description ( "Namespace provides a domain (in other words, a container), in which the instances [of a class] are guaranteed to be unique per the KEY qualifier definitions. It is named relative to the CIM_ObjectManager implementation that provides such a domain." ), Version ( "2.8.0" )]
class CIM_Namespace : CIM_ManagedElement {
	[Deprecated{"CIM_Namespace.ClassType"}, Description ( "Enumeration indicating the organization/schema of the Namespace\'s objects. For example, they may be instances of classes of a specific CIM version." ), ModelCorrespondence{"CIM_Namespace.DescriptionOfClassInfo"}, Required ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "200", "201", "202"}, Values{"Unknown", "Other", "CIM 1.0", "CIM 2.0", "CIM 2.1", "CIM 2.2", "CIM 2.3", "CIM 2.4", "CIM 2.5", "CIM 2.6", "CIM 2.7", "CIM 2.8", "DMI Recast", "SNMP Recast", "CMIP Recast"}, Write ( true )]
	uint16 ClassInfo;

 	[Description ( "Enumeration indicating the schema of the Namespace\'s objects. For example, they may be instances of classes of a specific CIM version or a mapping from another standard, such as SNMP. If \'Other\' is selected, the DescriptionOfClassType property MUST be populated." ), ModelCorrespondence{"CIM_Namespace.DescriptionOfClassType", "CIM_Namespace.ClassTypeVersion"}, ValueMap{"0", "1", "2", "200", "201", "202"}, Values{"Unknown", "Other", "CIM", "DMI Recast", "SNMP Recast", "CMIP Recast"}, Write ( true )]
	uint16 ClassType;

 	[Description ( "The version of the objects in this namespace. The string representing the version MUST be in the form: \nM + \".\" + N + \".\" + U \nWhere: \nM - The major version (in numeric form) \nN - The minor version (in numeric form) \nU - The update (e.g. errata, patch, ..., in numeric form)" ), ModelCorrespondence{"CIM_Namespace.DescriptionOfClassType", "CIM_Namespace.ClassType"}, Write ( true )]
	string ClassTypeVersion;

 	[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." ), Key ( true ), MaxLen ( 256 )]
	string CreationClassName;

 	[Deprecated{"CIM_Namespace.DescriptionOfClassType"}, Description ( "A string providing more detail (beyond the general classification in ClassInfo) for the object hierarchy of the Namespace." ), ModelCorrespondence{"CIM_Namespace.ClassInfo"}, Write ( true )]
	string DescriptionOfClassInfo;

 	[Description ( "A string providing more detail (beyond the general classification in ClassInfo) for the object hierarchy of the Namespace." ), ModelCorrespondence{"CIM_Namespace.ClassType", "CIM_Namespace.ClassTypeVersion"}, Write ( true )]
	string DescriptionOfClassType;

 	[Description ( "A string to uniquely identify the Namespace within the ObjectManager." ), Key ( true ), MaxLen ( 256 )]
	string Name;

 	[Description ( "The scoping ObjectManager\'s CreationClassName." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_ObjectManager.CreationClassName" )]
	string ObjectManagerCreationClassName;

 	[Description ( "The scoping ObjectManager\'s Name." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_ObjectManager.Name" )]
	string ObjectManagerName;

 	[Description ( "The scoping System\'s CreationClassName." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_ObjectManager.SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_ObjectManager.SystemName" )]
	string SystemName;


};

// CIM_BlockStatisticsCapabilities

	[Description ( "A specialization of the StatisticsCapabilities class that describes the capabilities of a BlockStatisticsService, which provides statistical data for instances of BlockStatisticalData." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_BlockStatisticsCapabilities : CIM_StatisticsCapabilities {
	[Description ( "The asychronous mechanisms supported for retrieving statistics." ), Override ( "AsynchronousMethodsSupported" ), ValueMap{"2", "3", "..", "0x8000.."}, Values{"GetStatisticsCollection", "Indications", "DMTF Reserved", "Vendor Specific"}]
	uint16 AsynchronousMethodsSupported[];

 	[Description ( "An internal clocking interval for all timers in the subsystem, measured in microseconds (Unit of measure in the timers, measured in microseconds). Time counters are monotanically increasing counters that contain \'ticks\'. Each tick represents one ClockTickInterval. If ClockTickInterval contained a value of 32 then each time counter tick would represent 32 microseconds." ), Units ( "MicroSeconds" )]
	uint64 ClockTickInterval;

 	[Description ( "The list of element types for which statistical data is available. The values of this array correspond to the values defined for the ElementType property of the BlockStatisticalData class." ), Override ( "ElementTypesSupported" ), Required ( true ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000.."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Vendor Specific"}]
	uint16 ElementTypesSupported[];

 	[Description ( "The synchronous mechanisms supported for retrieving statistics and defining and modifying filters for statistics retrieval." ), Override ( "SynchronousMethodsSupported" ), ValueMap{"2", "3", "4", "5", "6", "7", "..", "0x8000.."}, Values{"Execute Query", "Query Collection", "GetStatisticsCollection", "Manifest Creation", "Manifest Modification", "Manifest Removal", "DMTF Reserved", "Vendor Specific"}]
	uint16 SynchronousMethodsSupported[];


};

// CIM_Synchronized

[ASSOCIATION ( true ),  Description ( "Indicates that two ManagedElements were aligned or made to be equivalent at the specified point in time. If the Boolean property SyncMaintained is true, then synchronization of the Elements is preserved. Both like and unlike objects can be synchronized. For example, two WatchDog timers can be aligned, or the contents of a LogicalFile can be synchronized with the contents of a StorageExtent." ), Version ( "2.10.0" )]
class CIM_Synchronized {
	[Description ( "SyncedElement represents another ManagedElement that is synchronized with the entity referenced as SystemElement." ), Key ( true )]
	CIM_ManagedElement ref SyncedElement;

 	[Description ( "Boolean indicating whether synchronization is maintained." )]
	boolean SyncMaintained;

 	[Description ( "SystemElement represents one ManagedElement that is synchronized with the entity referenced as SyncedElement." ), Key ( true )]
	CIM_ManagedElement ref SystemElement;

 	[Description ( "The point in time that the Elements were synchronized." )]
	datetime WhenSynced;


};

// CIM_StorageSynchronized

[ASSOCIATION ( true ),  Description ( "Indicates that two Storage objects were replicated at the specified point in time. If the CopyType property is set to \'Sync\' (=3), then synchronization of the Storage objects is preserved." ), Version ( "2.9.1000" )]
class CIM_StorageSynchronized : CIM_Synchronized {
	[Description ( "CopyPriority allows the priority of background copy engine I/O to be managed relative to host I/O operations during a sequential background copy operation. \nValues are: Low: copy engine I/O lower priority than host I/O. Same: copy engine I/O has the same priority as host I/O. High: copy engine I/O has higher priority than host I/O." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "..", "0x8000.."}, Values{"Not Managed", "Low", "Same", "High", "DMTF Reserved", "Vendor Specific"}]
	uint16 CopyPriority;

 	[Description ( "CopyType describes the Replication Policy. Values are: \nAsync: create and maintain an asynchronous copy of the source. \nSync: create and maintain a synchronized copy of the source. \nUnSyncAssoc: create an unsynchronized copy and maintain an association to the source. \nUnSyncUnAssoc: create an unsynchronized copy with a temporary association that is deleted upon completion of the copy operation." ), ValueMap{"2", "3", "4", "5", "..", "0x8000.."}, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
	uint16 CopyType;

 	[Description ( "ReplicaType provides information on how the Replica is being maintained. Values are: \nFull Copy: This indicates that a full copy of the source object is (or will be) generated . \nBefore Delta: This indicates that the source object will be maintained as a delta data from the replica. \nAfter Delta: This indicates that the replica will be maintained as delta data from the source object. \nLog: This indicates that the replica object is being maintained as a log of changes to the source. \nNot Specified: The method of maintaining the copy is not specified." ), ValueMap{"0", "2", "3", "4", "5", "..", "0x8000.."}, Values{"Not Specified", "Full Copy", "Before Delta", "After Delta", "Log", "DMTF Reserved", "Vendor Specific"}]
	uint16 ReplicaType;

 	[Description ( "SyncedElement represents the Storage that is the target of the replication." ), Override ( "SyncedElement" )]
	CIM_ManagedElement ref SyncedElement;

 	[Description ( "SyncState describes the state of the association with respect to Replication activity. Values are: \nInitialized: The link to enable replication is established. \nand source/replica elements are associated, but the Copy engine has not started. \nPrepareInProgress: Preparation for Replication is in progress and the Copy engine has started. \nPrepared: All necessary preparation has completed. \nResyncInProgress: Synchronization or Resynchronization is in progress. \nThis may be the initial \'copy\' or subsequent changes being copied. \nSynchronized: An Async or Sync replication is currently synchronized. When this value is set, SyncMaintained will be true. \nFractureInProgress: An operation to fracture an Async or Sync replication is in progress. \nFractured: An Async or Sync replication is fractured. \nQuiesceInProgress: A quiesce operation is in progress. \nQuiesced: The replication has been quiesced and is ready for a change. \nRestoreInProgress: An operation is in progress to copy the Synced object to the System object. \nIdle: The \'normal\' state for an UnSyncAssoc replica. \nFrozen: All blocks copied from source to an UnSyncAssoc replica and the copy engine is stopped. \nCopyInProgress: A deferred background copy operation is in progress to copy the source to the replica target for an UnSyncAssoc association. \nBroken: The relationship is non-functional due to errors in the source, the target, the path between the two or space constraints." ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "..", "0x8000.."}, Values{"Initialized", "PrepareInProgress", "Prepared", "ResyncInProgress", "Synchronized", "Fracture In Progress", "QuiesceInProgress", "Quiesced", "Restore In Progresss", "Idle", "Broken", "Fractured", "Frozen", "Copy In Progress", "DMTF Reserved", "Vendor Specific"}]
	uint16 SyncState;

 	[Description ( "SystemElement represents the Storage that is the source of the replication." ), Override ( "SystemElement" )]
	CIM_ManagedElement ref SystemElement;


};

// CIM_MediaPresent

[ASSOCIATION ( true ),  Description ( "Where a StorageExtent must be accessed through a MediaAccess Device, this relationship is described by the MediaPresent association." ), MappingStrings{"MIF.DMTF|Storage Devices|001.8"}, Version ( "2.6.0" )]
class CIM_MediaPresent : CIM_Dependency {
	[Description ( "The MediaAccessDevice." ), Override ( "Antecedent" )]
	CIM_MediaAccessDevice ref Antecedent;

 	[Description ( "The StorageExtent accessed using the MediaAccessDevice." ), Override ( "Dependent" )]
	CIM_StorageExtent ref Dependent;

 	[Description ( "Boolean indicating that the accessed StorageExtent is fixed in the MediaAccessDevice and can not be ejected." )]
	boolean FixedMedia;


};

// IBMTSDS_DiskDrivePresent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This class represents the association between DiskDrive and DiskDriveExtent." ), MappingStrings{"MIF.DMTF|Storage Devices|001.8"},  Version ( "2.6.0" )]
class IBMTSDS_DiskDrivePresent : CIM_MediaPresent {
	[Description ( "The DiskDrive." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_DiskDrive ref Antecedent;

 	[Description ( "The DiskDriveExtent accessed using the DiskDrive." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_DiskExtent ref Dependent;

 	[Description ( "Boolean indicating that the accessed StorageExtent is fixed in the MediaAccessDevice and can not be ejected. This is true because the storage on a disk is inherently tied to the disk itself." )]
	boolean FixedMedia = true;


};

// CIM_ReferencedProfile

[ASSOCIATION ( true ),  Description ( "A profile that is referenced by another RegisteredProfile." ), Version ( "2.8.0" )]
class CIM_ReferencedProfile : CIM_Dependency {
	[Description ( "The RegisteredProfile that is referenced by the Dependent Profile." ), Override ( "Antecedent" )]
	CIM_RegisteredProfile ref Antecedent;

 	[Description ( "A RegisteredProfile that references other profiles." ), Override ( "Dependent" )]
	CIM_RegisteredProfile ref Dependent;


};

// CIM_RegisteredSubProfile

	[Abstract ( true ), Description ( "A RegisteredSubProfile subclasses RegisteredProfile to indicate that a scoping profile is required to provide context. The latter is specified by the mandatory association, SubProfileRequiresProfile." ), Version ( "2.8.0" )]
class CIM_RegisteredSubProfile : CIM_RegisteredProfile {
};

// CIM_SubProfileRequiresProfile

[ASSOCIATION ( true ),  Description ( "A subprofile requires another RegisteredProfile for context. This association mandates the scoping relationship between a subprofile and its scoping profile." ), Version ( "2.8.0" )]
class CIM_SubProfileRequiresProfile : CIM_ReferencedProfile {
	[Description ( "The RegisteredProfile that is referenced/required by the subprofile." ), Min ( 1 ), Override ( "Antecedent" )]
	CIM_RegisteredProfile ref Antecedent;

 	[Description ( "A RegisteredSubProfile that requires a scoping profile, for context." ), Override ( "Dependent" )]
	CIM_RegisteredSubProfile ref Dependent;


};

// CIM_StatisticsCollection

	[Description ( "A subclass of SystemSpecificCollection which collects together statistics for a system. This class forms an \'anchor point\' from which all the statistics kept for the system can be found (via the MemberOfCollection associations)." ), Experimental ( true ), Version ( "2.8.1000" )]
class CIM_StatisticsCollection : CIM_SystemSpecificCollection {
	[Description ( "This property provides the minimum sampling interval for the associated statistics so that client applications can determine the minimum interval that the StatisticsCollection should be sampled. If the statistics are sampled at different cycles, this property MUST be set to a zero time interval." )]
	datetime SampleInterval;

 	[Description ( "The time that the statistics collection was last sampled. Note that this property MAY be used to trigger an indication for \'push\' delivery of statistics samples." )]
	datetime TimeLastSampled;


};

// IBMTSDS_PerformanceStatisticsCollection

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A subclass of SystemSpecificCollection which collects together statistics for a system. This class forms an \'anchor point\' from which all the statistics kept for the system can be found (via the MemberOfCollection associations)." ), Experimental ( true ),  Version ( "2.8.1000" )]
class IBMTSDS_PerformanceStatisticsCollection : CIM_StatisticsCollection {
	[Description ( "A user-friendly name for the object. Of the form \'PerformanceStatisticsCollection for <StorageSystem.Name>\'" ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. Of the form \'IBMTSDS:<StorageSystem.Name>\'" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "This property provides the minimum sampling interval for the associated statistics so that client applications can determine the minimum interval that the StatisticsCollection should be sampled. If the statistics are sampled at different cycles, this property MUST be set to a zero time interval." ), Override ( "SampleInterval" )]
	datetime SampleInterval;

 	[Description ( "The time that the statistics collection was last sampled. Note that this property MAY be used to trigger an indication for \'push\' delivery of statistics samples." ), Override ( "TimeLastSampled" )]
	datetime TimeLastSampled;


};

// IBMTSDS_HostedPerformanceStatisticsCollection

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "HostedCollection defines a SystemSpecificCollection in the context of a scoping System. It represents a Collection that has meaning only in the context of a System, a Collection whose elements are restricted by the definition of the System, or both of these types of Collections." ),  Version ( "2.10.0" )]
class IBMTSDS_HostedPerformanceStatisticsCollection : CIM_HostedCollection {
	[Description ( "The scoping system." ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_StorageSystem ref Antecedent;

 	[Description ( "The collection defined in the context of a system." ), Override ( "Dependent" )]
	IBMTSDS_PerformanceStatisticsCollection ref Dependent;


};

// IBMTSDS_HostedRankPool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "SystemStoragePool is a specialization of SystemComponent association that establishes that the StoragePool is defined in the context of the System." ),  Version ( "2.7.0" )]
class IBMTSDS_HostedRankPool : CIM_HostedStoragePool {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The StoragePool that is a component of a System." ), Key ( true ), Override ( "PartComponent" )]
	IBMTSDS_RankPool ref PartComponent;


};

// IBMTSDS_StorageSystemToVolume

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "LogicalDevices may be aggregated by a System. This relationship is made explicit by the SystemDevice association." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageSystemToVolume : CIM_SystemDevice {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The LogicalDevice that is a component of a System." ), Key ( true ), Override ( "PartComponent" ), Weak ( true )]
	IBMTSDS_Volume ref PartComponent;


};

// IBMTSDS_StorageSystemToDiskDrive

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "This class represents the association between StorageSystem and DiskDrive." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageSystemToDiskDrive : CIM_SystemDevice {
	[Aggregate ( true ), Description ( "The StorageSystem." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The DiskDrive." ), Key ( true ), Override ( "PartComponent" ), Weak ( true )]
	IBMTSDS_DiskDrive ref PartComponent;


};

// CIM_Policy

	[Abstract ( true ), Description ( "An abstract class defining the common properties of the policy managed elements derived from CIM_Policy. The subclasses are used to create rules and groups of rules that work together to form a coherent set of policies within an administrative domain or set of domains." ), Version ( "2.6.0" )]
class CIM_Policy : CIM_ManagedElement {
	[Description ( "A user-friendly name of this policy-related object." )]
	string CommonName;

 	[Description ( "An array of keywords for characterizing / categorizing policy objects. Keywords are of one of two types: \n- Keywords defined in this and other MOFs, or in DMTF white papers. These keywords provide a vendor- independent, installation-independent way of characterizing policy objects. \n- Installation-dependent keywords for characterizing policy objects. Examples include \'Engineering\', \'Billing\', and \'Review in December 2000\'. \nThis MOF defines the following keywords: \'UNKNOWN\', \'CONFIGURATION\', \'USAGE\', \'SECURITY\', \'SERVICE\', \'MOTIVATIONAL\', \'INSTALLATION\', and \'EVENT\'. These concepts are self-explanatory and are further discussed in the SLA/Policy White Paper. One additional keyword is defined: \'POLICY\'. The role of this keyword is to identify policy-related instances that may not be otherwise identifiable, in some implementations. The keyword \'POLICY\' is NOT mutually exclusive of the other keywords specified above." )]
	string PolicyKeywords[];


};

// CIM_PolicySet

	[Abstract ( true ), Description ( "PolicySet is an abstract class that represents a set of policies that form a coherent set. The set of contained policies has a common decision strategy and a common set of policy roles (defined via the PolicySetInRole Collection association). Subclasses include PolicyGroup and PolicyRule." ), Version ( "2.8.0" )]
class CIM_PolicySet : CIM_Policy {
	[Description ( "Indicates whether this PolicySet is administratively enabled, administratively disabled, or enabled for debug. The \"EnabledForDebug\" property value is deprecated and, when it or any value not understood by the receiver is specified, the receiving enforcement point treats the PolicySet as \"Disabled\". To determine if a PolicySet is \"Enabled\", the containment hierarchy specified by the PolicySetComponent aggregation is examined and the Enabled property values of the hierarchy are ANDed together. Thus, for example, everything aggregated by a PolicyGroup may be disabled by setting the Enabled property in the PolicyGroup instance to \"Disabled\" without changing the Enabled property values of any of the aggregated instances. The default value is 1 (\"Enabled\")." ), ValueMap{"1", "2", "3"}, Values{"Enabled", "Disabled", "Enabled For Debug"}]
	uint16 Enabled = 1;

 	[Description ( "PolicyDecisionStrategy defines the evaluation method used for policies contained in the PolicySet. There are two values currently defined: \n- \'First Matching\' (1) executes the actions of the first rule whose conditions evaluate to TRUE. The concept of \'first\' is determined by examining the priority of the rule within the policy set (i.e., by examining the property, PolicySetComponent.Priority). Note that this ordering property MUST be maintained when processing the PolicyDecisionStrategy. \n- \'All\' (2) executes the actions of ALL rules whose conditions evaluate to TRUE, in the set. As noted above, the order of processing of the rules is defined by the property, PolicySetComponent.Priority (and within a rule, the ordering of the actions is defined by the property, PolicyActionStructure.ActionOrder). Note that when this strategy is defined, processing MUST be completed of ALL rules whose conditions evaluate to TRUE, regardless of errors in the execution of the rule actions." ), ValueMap{"1", "2"}, Values{"First Matching", "All"}]
	uint16 PolicyDecisionStrategy;

 	[Deprecated{"CIM_PolicySetInRoleCollection"}, Description ( "The PolicyRoles property represents the roles associated with a PolicySet. All contained PolicySet instances inherit the values of the PolicyRoles of the aggregating PolicySet but the values are not copied. A contained PolicySet instance may, however, add additional PolicyRoles to those it inherits from its aggregating PolicySet(s). Each value in PolicyRoles multi-valued property represents a role for which the PolicySet applies, i.e., the PolicySet should be used by any enforcement point that assumes any of the listed PolicyRoles values. \n\nAlthough not officially designated as \'role combinations\', multiple roles may be specified using the form: \n<RoleName>[&&<RoleName>]* \nwhere the individual role names appear in alphabetical order (according to the collating sequence for UCS-2). Implementations may treat PolicyRoles values that are specified as \'role combinations\' as simple strings. \n\nThis property is deprecated in lieu of the use of an association, CIM_PolicySetInRoleCollection. The latter is a more explicit and less error-prone approach to modeling that a PolicySet has one or more PolicyRoles." )]
	string PolicyRoles[];


};

// CIM_ServiceAvailableToElement

[ASSOCIATION ( true ),  Description ( "CIM_ServiceAvailableToElement conveys the semantics of a Service that is available for the use of a ManagedElement. An example of an available Service is that a Processor and an enclosure (a PhysicalElement) can use AlertOnLAN Services to signal an incomplete or erroneous boot. In reality, AlertOnLAN is simply a HostedService on a computer system that is generally available for use and is not a dependency of the processor or enclosure. To describe that the use of this service might be restricted or have limited availability or applicability, the CIM_ServiceAvailableToElement association would be instantiated between the Service and specific CIM_Processors and CIM_Chassis." ), Version ( "2.10.0" )]
class CIM_ServiceAvailableToElement {
	[Description ( "The Service that is available." ), Key ( true )]
	CIM_Service ref ServiceProvided;

 	[Description ( "The ManagedElement that can use the Service." ), Key ( true )]
	CIM_ManagedElement ref UserOfService;


};

// IBMTSDS_HostedExtentPool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "SystemStoragePool is a specialization of SystemComponent association that establishes that the StoragePool is defined in the context of the System." ),  Version ( "2.7.0" )]
class IBMTSDS_HostedExtentPool : CIM_HostedStoragePool {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The StoragePool that is a component of a System." ), Key ( true ), Override ( "PartComponent" )]
	IBMTSDS_ExtentPool ref PartComponent;


};

// IBMTSDS_PerformanceStatisticsCapabilities

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A specialization of the StatisticsCapabilities class that describes the capabilities of a BlockStatisticsService, which provides statistical data for instances of BlockStatisticalData." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_PerformanceStatisticsCapabilities : CIM_BlockStatisticsCapabilities {
	[Description ( "An internal clocking interval for all timers in the subsystem, measured in microseconds (Unit of measure in the timers, measured in microseconds). Time counters are monotanically increasing counters that contain \'ticks\'. Each tick represents one ClockTickInterval. If ClockTickInterval contained a value of 32 then each time counter tick would represent 32 microseconds." ), Override ( "ClockTickInterval" ), Units ( "MicroSeconds" )]
	uint64 ClockTickInterval = 1000;

 	[Description ( "The user friendly name for this instance of Capabilities. Of the form \'PerformanceStatisticsCapabilities for <StorageSystem.Name>\'" ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "The list of element types for which statistical data is available. The values of this array correspond to the values defined for the ElementType property of the BlockStatisticalData class." ), Override ( "ElementTypesSupported" ), Required ( true ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000", "0x8001", ".."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Rank", "ExtentPool", "Vendor Specific"}]
	uint16 ElementTypesSupported[] = {6, 8, 32768, 32769};

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. Of the form \'IBMTSDS:<StorageSystem.Name>\'" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The synchronous mechanisms supported for retrieving statistics and defining and modifying filters for statistics retrieval." ), Override ( "SynchronousMethodsSupported" ), ValueMap{"2", "3", "4", "5", "6", "7", "..", "0x8000.."}, Values{"Execute Query", "Query Collection", "GetStatisticsCollection", "Manifest Creation", "Manifest Modification", "Manifest Removal", "DMTF Reserved", "Vendor Specific"}]
	uint16 SynchronousMethodsSupported[] = {2, 3, 4};


};

// CIM_ProtocolControllerMaskingCapabilities

	[Description ( "A subclass of Capabilities that defines the Masking-related capabilities of a ProtocolController." ), Version ( "2.10.0" )]
class CIM_ProtocolControllerMaskingCapabilities : CIM_Capabilities {
	[Description ( "Set to true if this storage system supports the AttachDevice method." )]
	boolean AttachDeviceSupported;

 	[Description ( "Set to true if this storage system allows the client to specify the DeviceNumber parameter when calling ControllerConfigurationService.AttachDevice() or specify the DeviceNumbers parameter when calling ControllerConfigurationService.ExposePaths(). Set to false if the implementation does not allow unit numbers to vary for a ProtocolController. However, if set to false and a Device is not the Dependent of a ProtocolControllerForUnit association, the client MUST provide a DeviceNumber parameter in ControllerConfigurationService.AttachDevice or ControllerConfigurationService.ExposePaths. If set to false and the Device is already the Dependent of a ProtocolControllerForUnit association, then the client can omit the DeviceNumber parameter (or supply the same value) in subsequent ControllerConfigurationService.AttachDevice calls." )]
	boolean ClientSelectableDeviceNumbers = true;

 	[Description ( "Set to true if this storage system supports the CreateProtocolControllerWithPorts method." ), Experimental ( true )]
	boolean CreateProtocolControllerSupported;

 	[Description ( "Set to true if this storage system supports the ExposePaths and HidePaths methods." ), Experimental ( true )]
	boolean ExposePathsSupported;

 	[Description ( "The maximum number of ProtocolCOntrollerForUnit associations that can be associated with a single LogicalDevice (for example, StorageVolume). Zero indicates there is no limit." ), Experimental ( true )]
	uint16 MaximumMapCount = 0;

 	[Description ( "Set to true if this storage system limits configurations to a single subject hardware ID per view. Otherwise, multiple hardware ID types can be used. The default is FALSE, that multiple ID types MAY be used in a single view." )]
	boolean OneHardwareIDPerView = false;

 	[ArrayType ( "Indexed" ), Description ( "An array of strings describing types for valid StorageHardwareID.IDType. Used when the ValidHardwareIdTypes includes 1 (\"Other\")." )]
	string OtherValidHardwareIDTypes[];

 	[Description ( "An integer enumeration indicating the way that ports per view (ProtocolController) are handled by the underlying storage system." ), ValueMap{"2", "3", "4"}, Values{"One Port per View", "Multiple Ports per View", "All Ports share the same View"}]
	uint16 PortsPerView = 2;

 	[Description ( "Set to true if this storage system allows a client to create a Privilege instance with PrivilegeGranted set to FALSE." )]
	boolean PrivilegeDeniedSupported = false;

 	[Description ( "If true, this property indicates that a Privilege/Identity pair MUST be specified when CreateProtocolControllerWithPorts() is called. If false, then the Privilege/Identity pair in CreateProtocolControllerWithPorts() MUST NOT be set." )]
	boolean ProtocolControllerRequiresAuthorizedIdentity = false;

 	[Description ( "If true, this property indicates that the Identity parameter of CreateProtocolConntrollerWithPorts() MUST contain a reference to a CIM_Collection (or subclass) or to a CIM_Identity (or subclass). If ExposePathsSupported is true, this property indicates the storage system supports SystemSpecificCollections of StorageHardwareIDs." )]
	boolean ProtocolControllerSupportsCollections = false;

 	[Description ( "Set to true if the instumentation allows a client to create a configuration where an SPC has no StorageHardwareIDs associated via CIM_AuthorizedTarget/CIM_AuthorizedPrivilege/CIM_AuthorizedSubject." ), Experimental ( true )]
	boolean SPCAllowsNoInitiators = false;

 	[Description ( "Set to true if the instumentation allows a client to create a configuration where an SPC has no LogicalDevices associated via CIM_ProtocolControllerForUnit associations." ), Experimental ( true )]
	boolean SPCAllowsNoLUs = false;

 	[Description ( "Set to true if the instumentation allows a client to create a configuration where an SPC has no target SCSIProtocolEndpoints associated via CIM_SAPAvailableForELement associations." ), Experimental ( true )]
	boolean SPCAllowsNoTargets = false;

 	[Description ( "Set to true if it the instrumentation supports \'default view\' SPCs that exposes logical units to all initiators (so called \'promiscuous LUNs\'. Default view SPCs MUST have be associated to a CIM_StorageHardwareID instance with Name set to the null string. A target port MUST NOT be associated with more a single default view SPC. If PortsPerView is \'All Ports share the same View\', then at most one default view SPC MAY be associated with the target system. If SPCAllowsNoLUs is true, the instrumentation MAY instantiate a static default view instance or let the client create one as needed using ExposePaths. For other values of PortsPerView, all default view SPC MUST share the same null-Name CIM_StorageHardwareID instance." ), Experimental ( true ), ModelCorrespondence{"CIM_ProtocolControllerMaskingCapabilities.PortsPerView"}]
	boolean SPCSupportsDefaultViews = true;

 	[Description ( "When set to false, different ProtocolContollers attached to a LogicalPort can expose the same unit numbers. If true, then this storage system requires unique unit numbers across all the ProtocolControllers connected to a LogicalPort." )]
	boolean UniqueUnitNumbersPerPort = false;

 	[ArrayType ( "Indexed" ), Description ( "A list of the valid values for StrorageHardwareID.IDType. iSCSI IDs MAY use one of three iSCSI formats - iqn, eui, or naa. This three letter format is the name prefix; so a single iSCSI type is provided here, the prefix can be used to further refine the format." ), ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "Port WWN", "Node WWN", "Host Name", "iSCSI Name"}]
	uint16 ValidHardwareIdTypes[];


};

// IBMTSDS_DeviceMaskingCapabilities

	[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_DeviceMaskingCapabilities : CIM_ProtocolControllerMaskingCapabilities {
	[Description ( "Set to true if this storage system allows the client to specify the DeviceNumber parameter when calling ControllerConfigurationService.AttachDevice() and ControllerConfigurationService.AttachDevice() and Set to false if the implementation does not allow unit numbers to vary for a ProtocolController.  However, if set to false and a Device is not the Dependent of a ProtocolControllerForUnit association, the client must provide a DeviceNumber parameter in ControllerConfigurationService.AttachDevice.  If set to false and the Device is already the Dependent of a ProtocolControllerForUnit association, then the client can omit the DeviceNumber parameter (or supply the same value) in subsequent ControllerConfigurationService.AttachDevice calls." )]
	boolean ClientSelectableDeviceNumbers = false;

 	[Description ( "Set to false.CreateProtocolControllerWithPorts method is not supported." ), Experimental ( true ), Override ( "CreateProtocolControllerSupported" )]
	boolean CreateProtocolControllerSupported = false;

 	[Description ( "Indicates if this storage system supports the CreateProtocolControllerWithPorts method." )]
	boolean CreateProtocolControllerWithPorts = false;

 	[Description ( "The user friendly name for this instance of Capabilities.  In addition, the user friendly name can be used as a index property for a search of query.  (Note: Name does not have to be unique within a namespace.The ElementName must be of the format of a hexadecimal string)" ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Set to true if this storage system supports the ExposePathsand HidePaths methods." ), Experimental ( true )]
	boolean ExposePathsSupported = true;

 	[Description ( "There is one instance of DeviceMaskingCapabilities perStorageSystemthe value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: IBMTSDS:<StorageSystem.Name> " ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The maximum number of ProtocolControllerForUnit associationsthat can be associated with a single LogicalDevice (for example,StorageVolume). Zero indicates there is no limit." ), Experimental ( true )]
	uint16 MaximumMapCount = 0;

 	[Description ( "Set to true if this storage system limits configurations to a single subject hardware ID per view.  Otherwise, multiple hardware ID types can be used.  The default is FALSE, that multiple ID types may be used in a single view." )]
	boolean OneHardwareIDPerView = true;

 	[Description ( "An integer enumeration indicating the way that ports per view (ProtocolController) are handled by the underlying storage system." ), ValueMap{"2", "3", "4"}, Values{"One Port per View", "Multiple Ports per View", "All Ports share the same View"}]
	uint16 PortsPerView = 3;

 	[Description ( "Set to true if this storage system allows a client to create a Privilege instance with PrivilegeGranted set to FALSE." )]
	boolean PrivilegeDeniedSupported = false;

 	[Description ( "Set to true if a client can create an SPC with no StorageHardwareIDs(hosts)" ), Experimental ( true )]
	boolean SPCAllowsNoInitiators = false;

 	[Description ( "Set to true if a client can create an SPC with no LogicalDevices(volumes)" ), Experimental ( true )]
	boolean SPCAllowsNoLUs = true;

 	[Description ( "Set to true if a client can create an SPC with no target SCSIProtocolEndpoints" ), Experimental ( true )]
	boolean SPCAllowsNoTargets = true;

 	[Description ( "Set to true if it the instrumentation supportsdefaultview\'SPCsthatexposeslogicalunitstoallinitiators\'" ), Experimental ( true )]
	boolean SPCSupportsDefaultViews = false;

 	[Description ( "When set to false, different ProtocolContollers attached to a LogicalPort can expose the same unit numbers.  If true, then this storage system requires unique unit numbers across all the ProtocolControllers connected to a LogicalPort." )]
	boolean UniqueUnitNumbersPerPort = false;

 	[ArrayType ( "Indexed" ), Description ( "A list of the valid values for StrorageHardwareID.IDType.We only support Port WWN" ), ValueMap{"1", "2", "3", "4"}, Values{"Other", "Port WWN", "Node WWN", "Host Name"}]
	uint16 ValidHardwareIdTypes[] = {2};


};

// IBMTSDS_ArrayPoolCapabilities

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This Capabilities class describes the ArrayPool. RankPools created from ArrayPools must take the same RAID level as the ArrayPool.Only valid for DS." ),  Version ( "2.8.1000" )]
class IBMTSDS_ArrayPoolCapabilities : CIM_StorageCapabilities {
	[Description ( "DataRedundancyDefault describes the default number of complete copies of data that can be maintained. This is set to DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyMin"}, Override ( "DataRedundancyDefault" )]
	uint16 DataRedundancyDefault;

 	[Description ( "DataRedundancyMax describes the maximum number of complete copies of data that can be maintained. RAID5 is 1, RAID10 is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMin", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMax" )]
	uint16 DataRedundancyMax;

 	[Description ( "DataRedundancyMin describes the minimum number of complete copies of data that can be maintained. RAID5 is 1, RAID10 is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMin" )]
	uint16 DataRedundancyMin;

 	[Description ( "The user friendly name for this instance of Capabilities. In addition, the user friendly name can be used as a index property for a search of query. This will be of the form \'Capablities for Array <ArrayPool Name>\'." ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Enumeration indicating the type of element to which this StorageCapabilities applies." ), Override ( "ElementType" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "Reserved", "Any Type", "StorageVolume", "StorageExtent", "StoragePool", "StorageConfigurationService", "LogicalDisk"}]
	uint16 ElementType = 5;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. This will be the same as ArrayPool.InstanceID." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[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"}, Override ( "NoSinglePointOfFailure" )]
	boolean NoSinglePointOfFailure = true;

 	[Description ( "Indicates the default value for the NoSinglePointOfFailure property." ), ModelCorrespondence{"CIM_StorageCapabilities.NoSinglePointOfFailure"}, Override ( "NoSinglePointOfFailureDefault" )]
	boolean NoSinglePointOfFailureDefault = true;

 	[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. This is set to PackageRedundancyMin." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyMax"}, Override ( "PackageRedundancyDefault" )]
	uint16 PackageRedundancyDefault = 1;

 	[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. For RAID5 and RAID10 this is 2." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMax" )]
	uint16 PackageRedundancyMax = 2;

 	[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. For RAID5 and RAID10 this is 1." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMax", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMin" )]
	uint16 PackageRedundancyMin = 1;

 	[Description ( "The types of elements that can be created from this pool." ), IBMExtension ( "5.2.0.650" ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
	uint16 SupportedElementTypes[] = {2};


};

// CIM_ElementStatisticalData

[ASSOCIATION ( true ),  Description ( "CIM_ElementStatisticalData is an association that relates a ManagedElement to its StatisticalData. Note that the cardinality of the ManagedElement reference is Min(1), Max(1). This cardinality mandates the instantiation of the ElementStatisticalData association for the referenced instance of CIM_StatisticalData. ElementStatisticalData describes the existence requirements and context for the CIM_StatisticalData, relative to a specific ManagedElement." ), Version ( "2.7.0" )]
class CIM_ElementStatisticalData {
	[Description ( "The ManagedElement for which statistical or metric data is defined." ), Key ( true ), Max ( 1 ), Min ( 1 )]
	CIM_ManagedElement ref ManagedElement;

 	[Description ( "The statistic information/object." ), Key ( true )]
	CIM_StatisticalData ref Stats;


};

// IBMTSDS_VolumeStatisticalData

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CIM_ElementStatisticalData is an association that relates a IBMTSDS_Volume to its IBMTSDS_VolumeStatistics." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_VolumeStatisticalData : CIM_ElementStatisticalData {
	[Description ( "The volume." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_Volume ref ManagedElement;

 	[Description ( "The VolumeStatistics." ), Key ( true ), Override ( "Stats" )]
	IBMTSDS_VolumeStatistics ref Stats;


};

// CIM_AuthenticationService

	[Abstract ( true ), Description ( "CIM_AuthenticationService verifies users\' identities through some means. These services are decomposed into a subclass that provides credentials to users and a subclass that provides for the verification of the validity of a credential and, perhaps, the appropriateness of its use for access to target resources. The persistent state information used from one such verification to another is maintained in an instance of Identity class." ), Version ( "2.8.0" )]
class CIM_AuthenticationService : CIM_SecurityService {
};

// CIM_StorageHardwareIDManagementService

	[Description ( "StorageHardwareIDManagementService provides methods for manipulating instances of StorageHardwareIDs and manipulating the trust of these IDs in the underlying storage system." ), Version ( "2.8.1000" )]
class CIM_StorageHardwareIDManagementService : CIM_AuthenticationService {
		[Description ( "Create MemberOfCollection instances between the specified Collection and the StorageHardwareIDs. This method allows the client to make a request of a specific Service instance to create the associations. When these capabilities are standardized in CIM/WBEM, this method can be deprecated and intrinsic methods used." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000", "0x1001", "0x1002", "0x1003..0x7FFF", "0x8000.."}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Invalid LogicalDevice instance", "Implementation does not support device collections", "Input devices cannot be used in this collection", "Method Reserved", "Vendor Specific"}]
	uint32 AddHardwareIDsToCollection(
		[Description ( "The Collection which groups the StorageHardwareIDs." ), IN ( true )]
		CIM_SystemSpecificCollection ref Collection,
	 	[Description ( "Array of strings containing representations of references to StorageHardwareID instances that will become members of the collection." ), IN ( true )]
		string HardwareIDs
	);
	 	[Description ( "This method creates a CIM_GatewayPathID and the association CIM_ConcreteDependency between this service and the new GatewayPathID." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000", "0x1001", "0x1003", "0x1004", "0x1005..0x7FFF", "0x8000.."}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "ID already created", "Hardware implementation does not support specified IDType", "GatewayPathID already created", "Hardware implementation does not support specified GatewayIDType", "Method Reserved", "Vendor Specific"}]
	uint32 CreateGatewayPathID(
		[Description ( "The ElementName of the new StorageHardwareID instance." ), IN ( true )]
		string ElementName,
	 	[Description ( "GatewayID is the value used by the SecurityService to represent identity of a Gateway element." ), IN ( true )]
		string GatewayID,
	 	[Description ( "The type of the GatewayID property. iSCSI IDs may use one of three iSCSI formats - iqn, eui, or naa. This three letter format is the name prefix; so a single iSCSI type is provided here, the prefix can be used to further refine the format." ), IN ( true ), ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "PortWWN", "NodeWWN", "Hostname", "iSCSI Name"}]
		uint16 GatewayIDType,
	 	[Description ( "The type of the StorageID property. iSCSI IDs may use one of three iSCSI formats - iqn, eui, or naa. This three letter format is the name prefix; so a single iSCSI type is provided here, the prefix can be used to further refine the format." ), IN ( true ), ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "PortWWN", "NodeWWN", "Hostname", "iSCSI Name"}]
		uint16 IDType,
	 	[Description ( "REF to the new GatewayPathID instance." ), IN ( false ), OUT ( true )]
		CIM_GatewayPathID ref NewGatewayPathID,
	 	[Description ( "The type of the storage ID, when GatewayIDType is \"Other\"." ), IN ( true )]
		string OtherGatewayIDType,
	 	[Description ( "The type of the storage ID, when IDType is \"Other\"." ), IN ( true )]
		string OtherIDType,
	 	[Description ( "StorageID is the value used by the SecurityService to represent Identity - in this case, a hardware worldwide unique name." ), IN ( true )]
		string StorageID
	);
	 	[Description ( "Create a group of StorageHardwareIDs as a new instance of SystemSpecificCollection. This is useful to define a set of authorized subjects that can access volumes in a disk array. This method allows the client to make a request of a specific Service instance to create the collection and provide the appropriate class name. When these capabilities are standardized in CIM/WBEM, this method can be deprecated and intrinsic methods used. In addition to creating the collection, this method causes the creation of the HostedCollection association (to this service\'s scoping system) and MemberOfCollection association to members of the IDs parameter." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000", "0x1001", "0x1002", "0x1003..0x7FFF", "0x8000.."}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Invalid HardwareID instance", "Implementation does not support hardware ID collections", "Input hardware IDs cannot be used in same collection", "Method Reserved", "Vendor Specific"}]
	uint32 CreateHardwareIDCollection(
		[Description ( "The new instance of SystemSpecificCollection that is created." ), IN ( false ), OUT ( true )]
		CIM_SystemSpecificCollection ref Collection,
	 	[Description ( "The ElementName to be assigned to the created collection." ), IN ( true )]
		string ElementName,
	 	[Description ( "Array of strings containing representations of references to StorageHardwareID instances that will become members of the new collection." ), IN ( true )]
		string HardwareIDs
	);
	 	[Description ( "This method creates a CIM_StorageHardwareID, it creates the association CIM_ConcreteDependency between this service and the new CIM_StorageHardwareID." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000", "0x1001", "0x1003..0x7FFF", "0x8000.."}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "ID already created", "Hardware implementation does not support specified IDType", "Method Reserved", "Vendor Specific"}]
	uint32 CreateStorageHardwareID(
		[Description ( "The ElementName of the new StorageHardwareID instance." ), IN ( true )]
		string ElementName,
	 	[Description ( "REF to the new StorageHardwareID instance." ), IN ( false ), OUT ( true )]
		CIM_StorageHardwareID ref HardwareID,
	 	[Description ( "The type of the StorageID property. iSCSI IDs may use one of three iSCSI formats - iqn, eui, or naa. This three letter format is the name prefix; so a single iSCSI type is provided here, the prefix can be used to further refine the format." ), IN ( true ), ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "PortWWN", "NodeWWN", "Hostname", "iSCSI Name"}]
		uint16 IDType,
	 	[Description ( "The type of the storage ID, when IDType is \"Other\"." ), IN ( true )]
		string OtherIDType,
	 	[Description ( "REF to the StorageClientSettingData containing the OSType appropriate for this initiator. If left NULL, the instrumentation assumes a standard OSType - i.e., that no OS-specific behavior for this initiator is defined." ), IN ( true )]
		CIM_StorageClientSettingData ref Setting,
	 	[Description ( "StorageID is the value used by the SecurityService to represent Identity - in this case, a hardware worldwide unique name." ), IN ( true )]
		string StorageID
	);
	 	[Description ( "This method deletes a named CIM_StorageHardwareID, and also tears down the associations that are no longer needed, including CIM_ConcreteDependency and CIM_AuthorizedSubject." ), ValueMap{"0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000", "0x1001..0x7FFF", "0x8000.."}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Specified instance not found", "Method Reserved", "Vendor Specific"}]
	uint32 DeleteStorageHardwareID(
		[Description ( "The storage hardware ID to be deleted." ), IN ( true )]
		CIM_StorageHardwareID ref HardwareID
	);
};

// IBMTSDS_StorageHardwareIDManagementService

	[Description ( "StorageHardwareIDManagementService provides methodsfor creating and deleting StorageHardwareIDs." ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_StorageHardwareIDManagementService : CIM_StorageHardwareIDManagementService {
	[Description ( "CreationClassName indicates the name of the class or the subclass that is 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." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "The Name property uniquely identifies the Service and provides an indication of the functionality that is managed. This functionality is described in more detail in the Description property of the object." ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[Description ( "The CreationClassName of the scoping System." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The Name of the scoping System." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_System.Name" )]
	string SystemName;


		[Description ( "This method creates a CIM_StorageHardwareID, it creates the association CIM_ConcreteDependency between this service and the new CIM_StorageHardwareID." ), Override ( "CreateStorageHardwareID" ), ValueMap{"0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000", "0x1001", "0x1003..0x7FFF", "0x8000", "0x8001", "0x8002", "0x9000", "0x9001", "0x9003", "0x9004", "0xB000...0xCFFF"}, Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "ID already created", "Hardware implementation does not support specified IDType", "Method Reserved", "Internal provider error", "PARTIAL_SUCCESS", "Invalid string format", "Invalid ElementName", "Invalid StorageID", "Invalid OtherIDType", "Invalid Setting", "Device Error Codes - see ReturnCodes.txt"}]
	uint32 CreateStorageHardwareID(
		[Description ( "The ElementName(hostname) of the new StorageHardwareID instance.The total number of characters can not be greater than 32" ), IN ( true )]
		string ElementName,
	 	[Description ( "REF to the new StorageHardwareID instance." ), IN ( false ), OUT ( true )]
		CIM_StorageHardwareID ref HardwareID,
	 	[Description ( "The type of the StorageID property.Currently only PortWWN is supported" ), IN ( true ), Required ( true ), ValueMap{"1", "2", "3", "4"}, Values{"Other", "PortWWN", "NodeWWN", "Hostname"}]
		uint16 IDType,
	 	[Description ( "The type of the storage ID, when IDType is \"Other\".This is not supported" ), IN ( true )]
		string OtherIDType,
	 	[Description ( "REF to the StorageClientSettingData containing the OSType appropriate for this initiator.  If left NULL, the OSType will be IBMTSDS:AIXis Windows." ), IN ( true )]
		CIM_StorageClientSettingData ref Setting,
	 	[Description ( "StorageID is the WWPN value used by the SecurityService to represent identity - in this case, a hardware worldwide unique name." ), IN ( true ), Required ( true )]
		string StorageID
	);
	 	[Description ( "This method deletes a named CIM_StorageHardwareID, and also tears down the no longer needed associations and aggregations, including CIM_ConcreteDependency and CIM_AuthorizedSubject." ), Override ( "DeleteStorageHardwareID" ), ValueMap{"0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000", "0x1001..0x7FFF", "0x8000", "0x8001", "0x8002", "0x9005", "0xB000...0xCFFF"}, Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Specified instance not found", "Method Reserved", "Internal provider error", "PARTIAL_SUCCESS", "Invalid string format", "Invalid HardwareID", "Device Error Codes - see ReturnCodes.txt"}]
	uint32 DeleteStorageHardwareID(
		[Description ( "The storage hardware ID to be deleted." ), IN ( true ), Required ( true )]
		CIM_StorageHardwareID ref HardwareID
	);
};

// IBMTSDS_HostedStorageHardwareIDManagementService

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_HostedStorageHardwareIDManagementService : CIM_HostedService {
	[Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_StorageSystem ref Antecedent;

 	[Key ( true ), Override ( "Dependent" )]
	IBMTSDS_StorageHardwareIDManagementService ref Dependent;


};

// IBMTSDS_ArraySiteComponent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "Association between IBMTSDS_ArraySiteExtent and IBMTSDS_ArraySitePool.Only valid for DS." ),  Version ( "2.7.0" )]
class IBMTSDS_ArraySiteComponent : CIM_ConcreteComponent {
	[Aggregate ( true ), Description ( "The parent element in the association." ), Key ( true ), Override ( "GroupComponent" )]
	IBMTSDS_ArraySitePool ref GroupComponent;

 	[Description ( "The child element in the association." ), Key ( true ), Override ( "PartComponent" )]
	IBMTSDS_ArraySiteExtent ref PartComponent;


};

// CIM_ComponentCS

[ASSOCIATION ( true ), Aggregation ( true ),  Composition ( true ), Description ( "A ComputerSystem can aggregate another ComputerSystem. This association can be used to model MPP Systems with workstation frontends, an I2O subsystem embedded in a Unitary ComputerSystem, or a System that splits functionality between two processors, potentially running different Operating Systems. For example, if a CISC Processor and its associated OperatingSystem, are used for user interface and file support, and a RISC Processor and its OS are used for complex mathematical operations, this could be modeled as two ComputerSystems where one aggregates the other. In some cases, this could be modeled as a Cluster. The difference is the focus of the relationship. ComponentCS represents that unique and distinct ComputerSystems are aggregated by a higher level CS object. However, each of the component CSs are still distinguishable entities and are only viewed as such. Alternately, with a Cluster, the ComputerSystems that participate in it are inconsequential, when viewed through the \'Cluster System\'. \n\nWhen instantiating or subclassing the ComponentCS relationship, care should be taken that the component ComputerSystem meets the definitional requirements of a ComputerSystem - ie, a functional whole that provides compute capabilities and aggregates System Devices, an OperatingSystem, etc." ), Version ( "2.7.0" )]
class CIM_ComponentCS : CIM_SystemComponent {
	[Aggregate ( true ), Description ( "The ComputerSystem that contains and/or aggregates other Systems." ), Override ( "GroupComponent" )]
	CIM_ComputerSystem ref GroupComponent;

 	[Description ( "The contained (Sub)ComputerSystem." ), Override ( "PartComponent" )]
	CIM_ComputerSystem ref PartComponent;


};

// IBMTSDS_StorageLPARSystem

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "IBMTSDS_StorageLPARSystem represents an LPAR on the DS system." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageLPARSystem : CIM_ComputerSystem {
	[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. This class is IBMTSDS_LPARSystem.\nThe DS6000 does not support LPARs. For the DS6000, this class represents the analogous computer image running on the kona cards." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "A user-friendly name for the object. This will be of the form \'LPAR <0 or 1> on <IBMTSDS_StorageFacilitySystem.Name>\'." ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "The inherited Name serves as key of a System instance in an enterprise environment. The name will be of the form <IBMTSDS_StorageSystem.Name>-<LPAR number>." ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[Description ( "The name format does not follow an industry standard." ), Override ( "NameFormat" ), ValueMap{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN", "NAA"}]
	string NameFormat = "Other";

 	[ArrayType ( "Indexed" ), Description ( "No OperationalStatus information is available for the LPAR." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, Override ( "OperationalStatus" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[] = {0};


};

// IBMTSDS_ComponentOfStorageSystem

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "This association class represents the relationship between an LPAR and Storage Facility Image, so for each SFI there should be two instances of this association class." ),  Version ( "2.7.0" )]
class IBMTSDS_ComponentOfStorageSystem : CIM_ComponentCS {
	[Aggregate ( true ), Description ( "The Storage Facility." ), Key ( true ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The LPAR." ), Key ( true ), Override ( "PartComponent" )]
	IBMTSDS_StorageLPARSystem ref PartComponent;


};

// CIM_StorageClientSettingData

	[Description ( "This class models host environment factors that influence the behavior of Storage Systems. For example, a disk array has different SCSI responses for clients (initiators) configured as AIX verses HPUX. Instances of this setting class can be associated via ElementSettingData to a storage system\'s LogicalPort, ProtocolController, or Volume instances when these elements have host awareness. These associations are created by the management instrumentation provider to reflect the current configuration. A client deletes/creates these associations to request changes in element host-awareness. This settings class can also be associated with StorageHardwareID instances when that HW ID is configured with host information. An instance of this setting may include several ClientType values if the storage system treats them identically. The storage system exposes all supported setting instances to a WBEM Enumerate request; the client uses the returned settings to determine which types are available." ), Version ( "2.8.0" )]
class CIM_StorageClientSettingData : CIM_SettingData {
	[ArrayType ( "Indexed" ), Description ( "This enumeration defines operating system, version, driver, and other host environment factors that influence the behavior exposed by storage systems. Values in this array are combined with data from the OtherClientTypeDescriptions property to provide complete information on the host environment." ), ModelCorrespondence{"CIM_StorageClientSettingData.OtherClientTypeDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19..32767", "32768..65535"}, Values{"Unknown", "Other", "Standard", "Solaris", "HPUX", "OpenVMS", "Tru64", "Netware", "Sequent", "AIX", "DGUX", "Dynix", "Irix", "Cisco iSCSI Storage Router", "Linux", "Microsoft Windows", "OS400", "TRESPASS", "HI-UX", "DMTF Reserved", "Vendor Specific"}]
	uint16 ClientTypes[];

 	[ArrayType ( "Indexed" ), Description ( "When the the corresponding array entry in ClientTypes[] is \"Other\", this entry provides a string describing the manufacturer and OS/Environment. When the corresponding ClientTypes[] entry is not \"Other\", this entry allows variations or qualifications of ClientTypes - for example, different versions of Solaris." ), ModelCorrespondence{"CIM_StorageClientSettingData.ClientTypes"}]
	string OtherClientTypeDescriptions[];


};

// IBMTSDS_StorageClientSettingData

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This class models host environment factors that influence the behavior of Storage Systems.  For example, a disk array has different SCSI responses for clients (initiators) configured as AIX verses HPUX.  Instances of this setting class can be associated via ElementSettingData to a storage system\'s LogicalPort, ProtocolController, or Volume instances when these elements have host awareness.  These associations are created by the management instrumentation provider to reflect the current configuration.  A client deletes/creates these associations to request changes in element host-awareness.  This settings class can also be associated with StorageHardwareID instances when that HW ID is configured with host information.  An instance of this setting may include several ClientType values if the storage system treats them identically.  The storage system exposes all supported setting instances to a WBEM Enumerate request; the client uses the returned settings to determine which types are available." ),  Version ( "2.10.0" )]
class IBMTSDS_StorageClientSettingData : CIM_StorageClientSettingData {
	[ArrayType ( "Indexed" ), Description ( "This enumeration defines operating system, version, driver, and other host environment factors that influence the behavior exposed by storage systems. " ), ModelCorrespondence{"CIM_StorageClientSettingData.OtherClientTypeDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "32768", "32769", "32770", "32771", "32772", "32773", "32774", "32775", "32776", "32777", "32778", "32779", "32780", "32781", "32782", "32783", "32784"}, Values{"Unknown", "Other", "Standard", "Solaris", "HPUX", "OpenVMS", "Tru64", "Netware", "Sequent", "AIX", "DGUX", "Dynix", "Irix", "Cisco iSCSI Storage Router", "Linux", "Microsoft Windows", "OS400", "TRESPASS", "HI-UX", "AMD - Linux RHEL", "AMD - Linux Suse", "Apple - OSX", "Fujitsu - Solaris", "Intel - Linux Desktop", "Intel - Linux Red Flag", "Intel - Linux Suse", "IBM SAN Volume Controller", "IBM SAN File System AIX", "IBM SAN File System Linux", "VMWare", "Intel - Windows 2000", "IBM iSeries - iLinux", "IBM pSeries - pLinux", "IBM zSeries - zLinux", "Solaris 2.5.1", "Sun MPXIO"}]
	uint16 ClientTypes[];

 	[Description ( "The user friendly name for this instance of SettingData. In addition, the user friendly name can be used as a index property for a search of query. This property represents the specific OS type. (Note:  Name does not have to be unique within a namespace.)" ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. Will be of the formIBMTSDS:<ClientType> \n" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;


};

// IBMTSDS_VolumeGroupService

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "The ControllerConfigurationService provides methods that allow a client to manipulate LUN Masking in a storage system." ), IBMExtension ( "5.2.1" ),  Version ( "2.8.0" )]
class IBMTSDS_VolumeGroupService : CIM_Service {
	[Description ( "The name of the concrete subclass." ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "Unique identifier for the Service. The format should match the ESSID." ), Override ( "Name" )]
	string Name;

 	[Description ( "The scoping System CreationClassName." ), Override ( "SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping system name." ), Override ( "SystemName" )]
	string SystemName;


		[Description ( "Add volumes to a volume group" ), IBMExtension ( "5.2.1" ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "32768", "36874", "36903", "37639..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Internal provider error", "Invalid VolumeID", "Invalid VolumeGroup", "Device Error Codes - see ReturnCodes.txt"}]
	uint32 AddVolumesToVolumeGroup(
		[Description ( "The instance of VolumeGroup to add the volumes to." ), IN ( true )]
		IBMTSDS_VolumeGroup ref VolumeGroup,
	 	[Description ( "Reference of Volumes to put in the VolumeGroup.On output, the full list of Volumes in the VolumeGroup." ), IN ( true ), OUT ( true )]
		IBMTSDS_Volume ref VolumeIDs[]
	);
	 	[Description ( "Create a VolumeGroup" ), IBMExtension ( "5.2.1" ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "32768", "32769", "36902", "36904", "37639..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Internal provider error", "Partial Success", "Invalid VolumeGroupType", "Invalid HostType", "Device Error Codes - see ReturnCodes.txt"}]
	uint32 CreateVolumeGroup(
		[Description ( "The ElementName to be assigned to the created collection." ), IN ( true )]
		string ElementName,
	 	[Description ( "REF to the StorageClientSettingData containing the Operation System of the host that this VolumeGroup will be mapped to.  This parameter is not necessary if the user passes in a value for VolumeGroupType. If the user passes in both VolumeGroupType and HostType and they are not compatible, an error will be returned." ), IN ( true )]
		IBMTSDS_StorageClientSettingData ref HostType,
	 	[Description ( "The new instance of VolumeGroup that is created." ), IN ( false ), OUT ( true )]
		IBMTSDS_VolumeGroup ref VolumeGroup,
	 	[Description ( "Describes the IBM-defined VolumeGroup Type." ), IBMExtension ( "5.2.0.650" ), IN ( true ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Unknown", "SCSIMap256", "SCSIMask", "SCSI520Map256", "SCSI520Mask"}]
		uint16 VolumeGroupType,
	 	[Description ( "Reference of Volumes to put in the VolumeGroup." ), IN ( true )]
		IBMTSDS_Volume ref VolumeIDs[]
	);
	 	[Description ( "Delete a VolumeGroup" ), IBMExtension ( "5.2.1" ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "32768", "36903", "37639..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Internal provider error", "Invalid VolumeGroup", "Device Error Codes - see ReturnCodes.txt"}]
	uint32 DeleteVolumeGroup(
		[Description ( "The VolumeGroup to be deleted." ), IN ( true )]
		IBMTSDS_VolumeGroup ref VolumeGroup
	);
	 	[Description ( "This method has the same behaviour as ExposePaths, but the signature accepts an instance of IBMTSDS_VolumeGroup instead of an array of LUNames. Clients should use either Expose/HidePaths or Expose/HidePathsWithVolumeGroups and not both, as it may result in unwanted side-effects." ), IBMExtension ( "5.2.1" ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "4096", "0x9027", "4098", "4099", "4100", "0x9009", "0x9029", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Method Parameters Checked - Job Started", "Invalid VolumeGroup", "Invalid initiator port ID", "Invalid target port ID", "Invalid permission", "Invalid ProtocolController", "VolumeGroupID or TargetPortID must be specified", "Device Error Codes - see ReturnCodes.txt"}]
	uint32 ExposePathsWithVolumeGroups(
		[Description ( "IDs of initiator ports. If existing StorageHardwareID instancesexist, they shall be used. User can create SPC without assigning itto a SHWID. If assigning to an existing SHWID, make sure that SHWIDis not already associated with a Privilege or SPC" ), IBMExtension ( "5.2.1" ), IN ( true ), ModelCorrespondence{"IBMTSDS_StorageHardwareID.StorageID"}]
		string InitiatorPortIDs,
	 	[Description ( "An array of references to SCSIProtocolControllers (SPCs). On input, this can be null, or contain exactly one element; there MAY be multiple references on output. If null on input, the instrumentation will create one or more new SPC instances. If an SPC is specified, the instrumentation will attempt to add associations to one or more existing SPCs. If the first array element is a valid SPC reference and SCSI semantics can be preserved, the instrumentation MUST attach associations to the specified SPC. If multiple elements are non-null on input, the instrumentation MUST report an invalid parameter. On output, this is an array of references to SPCs created or modified as the result of processing the request." ), IBMExtension ( "5.2.1" ), IN ( true ), OUT ( true )]
		CIM_SCSIProtocolController ref ProtocolControllers[],
	 	[Description ( "IDs of target ports. See the method description for conditions where this MAY be null." ), IBMExtension ( "5.2.1" ), IN ( true ), ModelCorrespondence{"CIM_SCSIProtocolEndpoint.Name"}]
		string TargetPortIDs,
	 	[Description ( "The VolumeGroup to map to the SCSIProtocolController. A SCSIProtocolController can only have one VolumeGroup mapped to it." ), IBMExtension ( "5.2.1" ), IN ( true )]
		IBMTSDS_VolumeGroup ref VolumeGroup
	);
	 	[Description ( "This method has the same behaviour as HidePaths, but the signature accepts an instance of IBMTSDS_VolumeGroup instead of an array of LUNames. Clients should use either Expose/HidePaths or Expose/HidePathsWithVolumeGroups and not both, as it may result in unwanted side-effects." ), IBMExtension ( "5.2.1" ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "0x9027", "4098", "4099", "32768", "36873", "37638", "37639..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Invalid VolumeGroup", "Invalid initiator port ID", "Invalid target port ID", "Internal provider error", "Invalid ProtocolController", "InitiatorPortID does not match protocol controller", "Device Error Codes - see ReturnCodes.txt"}]
	uint32 HidePathsWithVolumeGroups(
		[Description ( "If this is non-null, it must match the DeviceID of the SCSIProtocolController. Since SCSIProtocolControllers cannot exist without a StorageHardwareID associated to it, specifying an InitiatorPortID will delete the ProtocolController and remove all all assocations with Volumes and SCSIProtocolEndpoints" ), IN ( true ), ModelCorrespondence{"IBMTSDS_StorageHardwareID.StorageID"}]
		string InitiatorPortIDs,
	 	[Description ( "An array of references to SCSIProtocolControllers (SPCs). On input, this MUST contain exactly one element; there MAY be multiple references on output. The instrumentation will attempt to remove associations (LUNames, InitiatorPortIDs, or TargetPortIDs) from this SPC. Depending upon the specific implementation, the instrumentation MAY need to create new SPCs with a subset of the remaining associations. On output, this is an array of references to SPCs created or modified as the result of processing the request." ), IN ( true ), OUT ( true )]
		CIM_SCSIProtocolController ref ProtocolControllers[],
	 	[Description ( "IDs of target ports. See the method description for conditions where this MAY be null." ), IN ( true ), ModelCorrespondence{"CIM_SCSIProtocolEndpoint.Name"}]
		string TargetPortIDs,
	 	[Description ( "The VolumeGroup to unmap from the SCSIProtocolController. A SCSIProtocolController can only have one VolumeGroup mapped to it." ), IBMExtension ( "5.2.1" ), IN ( true )]
		IBMTSDS_VolumeGroup ref VolumeGroup
	);
	 	[Description ( "Remove volumes from volume group" ), IBMExtension ( "5.2.1" ), ValueMap{"0", "1", "2", "3", "4", "5", "6..4095", "32768", "36874", "36903", "37639..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Internal provider error", "Invalid VolumeID", "Invalid VolumeGroup", "Device Error Codes - see ReturnCodes.txt"}]
	uint32 RemoveVolumesFromVolumeGroup(
		[Description ( "The instance of VolumeGroup to remove the volumes from." ), IN ( true )]
		IBMTSDS_VolumeGroup ref VolumeGroup,
	 	[Description ( "Reference of Volumes to remove from the VolumeGroup.On output, the full list of Volumes in the VolumeGroup." ), IN ( true ), OUT ( true )]
		IBMTSDS_Volume ref VolumeIDs[]
	);
};

// IBMTSDS_HostedVolumeGroupService

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CIM_HostedService is an association between a Service and the System on which the functionality resides. The cardinality of this association is 1-to-many. A System may host many Services. Services are weak with respect to their hosting System. Heuristic: A Service is hosted on the System where the LogicalDevices or SoftwareFeatures that implement the Service are located. The model does not represent Services hosted across multiple systems. This is modeled as an ApplicationSystem that acts as an aggregation point for Services, that are each located on a single host." ), IBMExtension ( "5.2.1" ),  Version ( "2.8.0" )]
class IBMTSDS_HostedVolumeGroupService : CIM_HostedService {
	[Description ( "The hosting System." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_StorageSystem ref Antecedent;

 	[Description ( "The Service hosted on the System." ), Key ( true ), Override ( "Dependent" ), Weak ( true )]
	IBMTSDS_VolumeGroupService ref Dependent;


};

// CIM_NamespaceInManager

[ASSOCIATION ( true ),  Description ( "NamespaceInManager is an association describing the Namespaces hosted by a CIM ObjectManager." ), Version ( "2.7.0" )]
class CIM_NamespaceInManager : CIM_HostedDependency {
	[Description ( "The ObjectManager containing a Namespace." ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	CIM_ObjectManager ref Antecedent;

 	[Description ( "The Namespace in an ObjectManager." ), Override ( "Dependent" ), Weak ( true )]
	CIM_Namespace ref Dependent;


};

// CIM_PolicyRule

	[Description ( "The central class used for representing the \'If Condition then Action\' semantics of a policy rule. A PolicyRule condition, in the most general sense, is represented as either an ORed set of ANDed conditions (Disjunctive Normal Form, or DNF) or an ANDed set of ORed conditions (Conjunctive Normal Form, or CNF). Individual conditions may either be negated (NOT C) or unnegated (C). The actions specified by a PolicyRule are to be performed if and only if the PolicyRule condition (whether it is represented in DNF or CNF) evaluates to TRUE. \n\nThe conditions and actions associated with a PolicyRule are modeled, respectively, with subclasses of PolicyCondition and PolicyAction. These condition and action objects are tied to instances of PolicyRule by the PolicyConditionInPolicyRule and PolicyActionInPolicyRule aggregations. \n\nA PolicyRule may also be associated with one or more policy time periods, indicating the schedule according to which the policy rule is active and inactive. In this case it is the PolicySetValidityPeriod aggregation that provides this linkage. \n\nThe PolicyRule class uses the property ConditionListType, to indicate whether the conditions for the rule are in DNF (disjunctive normal form), CNF (conjunctive normal form) or, in the case of a rule with no conditions, as an UnconditionalRule. The PolicyConditionInPolicyRule aggregation contains two additional properties to complete the representation of the Rule\'s conditional expression. The first of these properties is an integer to partition the referenced PolicyConditions into one or more groups, and the second is a Boolean to indicate whether a referenced Condition is negated. An example shows how ConditionListType and these two additional properties provide a unique representation of a set of PolicyConditions in either DNF or CNF. \n\nSuppose we have a PolicyRule that aggregates five PolicyConditions C1 through C5, with the following values in the properties of the five PolicyConditionInPolicyRule associations: \nC1: GroupNumber = 1, ConditionNegated = FALSE \nC2: GroupNumber = 1, ConditionNegated = TRUE \nC3: GroupNumber = 1, ConditionNegated = FALSE \nC4: GroupNumber = 2, ConditionNegated = FALSE \nC5: GroupNumber = 2, ConditionNegated = FALSE \n\nIf ConditionListType = DNF, then the overall condition for the PolicyRule is: \n(C1 AND (NOT C2) AND C3) OR (C4 AND C5) \n\nOn the other hand, if ConditionListType = CNF, then the overall condition for the PolicyRule is: \n(C1 OR (NOT C2) OR C3) AND (C4 OR C5) \n\nIn both cases, there is an unambiguous specification of the overall condition that is tested to determine whether to perform the PolicyActions associated with the PolicyRule. \n\nPolicyRule instances may also be used to aggregate other PolicyRules and/or PolicyGroups. When used in this way to implement nested rules, the conditions of the aggregating rule apply to the subordinate rules as well. However, any side effects of condition evaluation or the execution of actions MUST NOT affect the result of the evaluation of other conditions evaluated by the rule engine in the same evaluation pass. That is, an implementation of a rule engine MAY evaluate all conditions in any order before applying the priority and determining which actions are to be executed." ), Version ( "2.7.0" )]
class CIM_PolicyRule : CIM_PolicySet {
	[Description ( "Indicates whether the list of PolicyConditions associated with this PolicyRule is in disjunctive normal form (DNF), conjunctive normal form (CNF), or has no conditions (i.e., is an UnconditionalRule) and is automatically evaluated to \"True.\" The default value is 1 (\"DNF\")." ), ValueMap{"0", "1", "2"}, Values{"Unconditional Rule", "DNF", "CNF"}]
	uint16 ConditionListType = 1;

 	[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." ), Key ( true ), MaxLen ( 256 )]
	string CreationClassName;

 	[Description ( "ExecutionStrategy defines the strategy to be used in executing the sequenced actions aggregated by this PolicyRule. There are three execution strategies: \n\nDo Until Success - execute actions according to predefined order, until successful execution of a single action. \nDo All - execute ALL actions which are part of the modeled set, according to their predefined order. Continue doing this, even if one or more of the actions fails. \nDo Until Failure - execute actions according to predefined order, until the first failure in execution of an action instance." ), ValueMap{"1", "2", "3"}, Values{"Do Until Success", "Do All", "Do Until Failure"}]
	uint16 ExecutionStrategy;

 	[Deprecated{"No Value"}, Description ( "A flag indicating that the evaluation of the Policy Conditions and execution of PolicyActions (if the Conditions evaluate to TRUE) is required. The evaluation of a PolicyRule MUST be attempted if the Mandatory property value is TRUE. If the Mandatory property is FALSE, then the evaluation of the Rule is \'best effort\' and MAY be ignored." )]
	boolean Mandatory;

 	[Description ( "A user-friendly name of this PolicyRule." ), Key ( true ), MaxLen ( 256 )]
	string PolicyRuleName;

 	[Deprecated{"CIM_PolicySetComponent.Priority"}, Description ( "PolicyRule.Priority is deprecated and replaced by providing the priority for a rule (and a group) in the context of the aggregating PolicySet instead of the priority being used for all aggregating PolicySet instances. Thus, the assignment of priority values is much simpler. \n\nA non-negative integer for prioritizing this Policy Rule relative to other Rules. A larger value indicates a higher priority. The default value is 0." )]
	uint16 Priority = 0;

 	[Description ( "A free-form string that can be used to provide guidelines on how this PolicyRule should be used." )]
	string RuleUsage;

 	[Description ( "This property gives a policy administrator a way of specifying how the ordering of the PolicyActions associated with this PolicyRule is to be interpreted. Three values are supported: \no mandatory(1): Do the actions in the indicated order, or don\'t do them at all. \no recommended(2): Do the actions in the indicated order if you can, but if you can\'t do them in this order, do them in another order if you can. \no dontCare(3): Do them -- I don\'t care about the order. \nThe default value is 3 (\"DontCare\")." ), ValueMap{"1", "2", "3"}, Values{"Mandatory", "Recommended", "Dont Care"}]
	uint16 SequencedActions = 3;

 	[Description ( "The scoping System\'s CreationClassName." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Propagated ( "CIM_System.Name" )]
	string SystemName;


};

// CIM_PrivilegePropagationRule

	[Abstract ( true ), Description ( "A class representing a company\'s and/or administrator\'s rules with respect to propagating Privileges across Subjects (i.e., delegation) or Targets. The Subjects/ Targets are identified within the PolicyConditions and PolicyActions, and/or using the association, PolicySetAppliesToElement. An example of a Privilege PropagationRule is the propagation of privileges granted to access a directory that then applies to all the files within the directory." ), Experimental ( true ), Version ( "2.8.1000" )]
class CIM_PrivilegePropagationRule : CIM_PolicyRule {
};

// CIM_ProtocolControllerForDevice

[ASSOCIATION ( true ), Abstract ( true ),  Description ( "This association indicates a subclass of LogicalDevice (for example a Storage Volume) is connected through a specific ProtocolController. In many situations (for example storage LUN masking), there may be many of these associations used to relate to different objects. Therefore subclasses have been defined to optimize enumeration of the associations." ), Version ( "2.8.1000" )]
class CIM_ProtocolControllerForDevice : CIM_Dependency {
	[Description ( "This property describes the priority given to accesses of the device through this Controller. The highest priority path will have the lowest value for this parameter." )]
	uint16 AccessPriority;

 	[Description ( "The AccessState property describes the accessibility of the LogicalDevice through the ProtocolController. \nUnknown (0) indicates the instrumentation does not know whether access is or is not functioning. \nActive (2) indicates normal access. \nInactive (3) indicates the instrumentation knows this path is not active, and one of the other values (below) does not apply. \nReplication in Progress (4) indicates that the path is temporarily inactive due to a replication activity. \nMapping Inconsistency (5) indicates the instrumentation has detected that this path is inactive due to an inconsistency in the DeviceNumber/DeviceAccess configuration." ), ValueMap{"0", "2", "3", "4", "5"}, Values{"Unknown", "Active", "Inactive", "Replication In Progress", "Mapping Inconsistency"}]
	uint16 AccessState;

 	[Description ( "The ProtocolController." ), Override ( "Antecedent" )]
	CIM_ProtocolController ref Antecedent;

 	[Description ( "The controlled Device." ), Override ( "Dependent" )]
	CIM_LogicalDevice ref Dependent;

 	[Description ( "Address of the associated Device in the context of the Antecedent Controller." )]
	string DeviceNumber;


};

// CIM_ProtocolControllerForPort

[ASSOCIATION ( true ),  Description ( "This association is used to define a relationship between a ProtocolController and a LogicalPort. This subclass is provided so that an enumeration of related controllers and ports can be performed without retrieving any other controllers or connected units." ), Version ( "2.8.0" )]
class CIM_ProtocolControllerForPort : CIM_ProtocolControllerForDevice {
	[Description ( "The ProtocolController." ), Override ( "Antecedent" )]
	CIM_ProtocolController ref Antecedent;

 	[Description ( "The LogicalPort \'behind\' the ProtocolController." ), Override ( "Dependent" )]
	CIM_LogicalPort ref Dependent;


};

// CIM_ProtocolControllerForUnit

[ASSOCIATION ( true ),  Description ( "This association is used to define a relationship between a ProtocolController and an exposed Logical Unit (for example a Storage Volume or a MediaAccessDevice such as a tape drive). An example of the use of this association is SCSI, where it link the target controller and Logical Units. This subclass is provided so that an enumeration of related controllers and units can be performed without retrieving any connected ports or other controllers." ), Version ( "2.8.0" )]
class CIM_ProtocolControllerForUnit : CIM_ProtocolControllerForDevice {
	[Description ( "The ProtocolController." ), Override ( "Antecedent" )]
	CIM_ProtocolController ref Antecedent;

 	[Description ( "The logical unit (eg StorageVolume) \'behind\' the ProtocolController." ), Override ( "Dependent" )]
	CIM_LogicalDevice ref Dependent;

 	[Description ( "The access rights granted to the referenced logical unit as exposed through referenced ProtocolController. The \'No Access\' value is used in implementations where the DeviceNumber is reserved, but no access is granted. \nIf the instrumentation exposes PrivilegeManagementService, this property MUST be synchronized with the Activities property of any Privilege instances associated with StorageHardwareIDs associated to the referenced ProtocolController and the referenced LogicalDevice. In particular, when this property is \'Read Write\', Privilege.Activities MUST include entries for \'Read\' and \'Write\'. When this property is \'Read-Only\', Privilege.Activities MUST include an entry for \'Read\'. The corresponding entries for Privilege.ActivityQualifiers MUST be \'CDB=*\' and the corresponding entries for Privilege.QualifierFormat MUST be \'SCSI Command\'." ), Experimental ( true ), ValueMap{"0", "2", "3", "4", "5..15999", "16000.."}, Values{"Unknown", "Read Write", "Read-Only", "No Access", "DMTF Reserved", "Vendor Reserved"}]
	uint16 DeviceAccess;


};

// CIM_AssociatedBlockStatisticsManifestCollection

[ASSOCIATION ( true ),  Description ( "Instances of this class associate a BlockStatisticsManifestCollection to the StatisticsCollection to which is is applied. The ManifestCollection contains the Manifests that are used to filter requests for the retrieval of statistics." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_AssociatedBlockStatisticsManifestCollection {
	[Description ( "The collection of Manifests applied to the StatisticsCollection." ), Key ( true )]
	CIM_BlockStatisticsManifestCollection ref ManifestCollection;

 	[Description ( "The collection of statistics filtered by the BlockStatisticsManifestCollection." ), Key ( true ), Max ( 1 ), Min ( 1 )]
	CIM_StatisticsCollection ref Statistics;


};

// IBMTSDS_AssociatedBlockStatisticsManifestCollection

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Instances of this class associate a BlockStatisticsManifestCollection to the StatisticsCollection to which is is applied. The ManifestCollection contains the Manifests that are used to filter requests for the retrieval of statistics." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_AssociatedBlockStatisticsManifestCollection : CIM_AssociatedBlockStatisticsManifestCollection {
	[Description ( "The collection of Manifests applied to the StatisticsCollection." ), Key ( true ), Override ( "ManifestCollection" )]
	IBMTSDS_BlockStatisticsManifestCollection ref ManifestCollection;

 	[Description ( "The collection of statistics filtered by the BlockStatisticsManifestCollection." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "Statistics" )]
	IBMTSDS_PerformanceStatisticsCollection ref Statistics;


};

// IBMTSDS_PerformanceStatisticsServiceToCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "IBMTSDS_ElementCapabilities represents the association between ManagedElements and their Capabilities. Note that the cardinality of the ManagedElement reference is Min(1), Max(1). This cardinality mandates the instantiation of the ElementCapabilities association for the referenced instance of Capabilities. ElementCapabilities describes the existence requirements and context for the referenced instance of ManagedElement. Specifically, the ManagedElement MUST exist and provides the context for the Capabilities." ),  Version ( "2.7.0" )]
class IBMTSDS_PerformanceStatisticsServiceToCapabilities : CIM_ElementCapabilities {
	[Description ( "The Capabilities object associated with the element." ), Key ( true ), Override ( "Capabilities" )]
	IBMTSDS_PerformanceStatisticsCapabilities ref Capabilities;

 	[Description ( "The managed element." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_PerformanceStatisticsService ref ManagedElement;


};

// CIM_PhysicalFrame

	[Description ( "PhysicalFrame is a superclass of Rack, Chassis and other frame enclosures, as they are defined in extension classes. Properties like visible or audible alarm, and data related to security breaches are in this superclass." ), Version ( "2.7.0" )]
class CIM_PhysicalFrame : CIM_PhysicalPackage {
	[Description ( "Boolean indicating whether the Frame is equipped with an audible alarm." )]
	boolean AudibleAlarm;

 	[Description ( "BreachDescription is a free-form string providing more information if the SecurityBreach property indicates that a breach or some other security-related event occurred." ), ModelCorrespondence{"CIM_PhysicalFrame.SecurityBreach"}]
	string BreachDescription;

 	[Description ( "CableManagementStrategy is a free-form string that contains information on how the various cables are connected and bundled for the Frame. With many networking, storage-related and power cables, cable management can be a complex and challenging endeavor. This string property contains information to aid in assembly and service of the Frame." )]
	string CableManagementStrategy;

 	[Description ( "Boolean indicating that the Frame is currently locked." )]
	boolean IsLocked;

 	[Description ( "Boolean indicating whether the Frame is protected with a lock." )]
	boolean LockPresent;

 	[Description ( "SecurityBreach is an enumerated, integer-valued property indicating whether a physical breach of the Frame was attempted but unsuccessful (value=4) or attempted and successful (5). Also, the values, \"Unknown\", \"Other\" or \"No Breach\", can be specified." ), MappingStrings{"MIF.DMTF|Physical Container Global Table|004.12"}, ModelCorrespondence{"CIM_PhysicalFrame.BreachDescription"}, ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "Unknown", "No Breach", "Breach Attempted", "Breach Successful"}]
	uint16 SecurityBreach;

 	[ArrayType ( "Indexed" ), Description ( "An array of free-form strings providing more detailed explanations for any of the entries in the Service Philosophy array. Note, each entry of this array is related to the entry in ServicePhilosophy that is located at the same index." ), ModelCorrespondence{"CIM_PhysicalFrame.ServicePhilosophy"}]
	string ServiceDescriptions[];

 	[ArrayType ( "Indexed" ), Description ( "ServicePhilosophy is an enumerated, integer-valued array that indicates whether the Frame is serviced from the top (value=2), front (3), back (4) or side (5), whether it has sliding trays (6) or removable sides (7), and/or whether the Frame is moveable (8), for example, having rollers." ), ModelCorrespondence{"CIM_PhysicalFrame.ServiceDescriptions"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8"}, Values{"Unknown", "Other", "Service From Top", "Service From Front", "Service From Back", "Service From Side", "Sliding Trays", "Removable Sides", "Moveable"}]
	uint16 ServicePhilosophy[];

 	[Description ( "Boolean indicating that the equipment includes a visible alarm." )]
	boolean VisibleAlarm;


};

// CIM_Chassis

	[Description ( "The Chassis class represents the PhysicalElements that enclose other Elements and provide definable functionality, such as a desktop, processing node, UPS, disk or tape storage, or a combination of these." ), Version ( "2.10.0" )]
class CIM_Chassis : CIM_PhysicalFrame {
	[Description ( "ChassisPackageType indicates the physical form factor for the type of Chassis." ), MappingStrings{"MIF.DMTF|Physical Container Global Table|004.1"}, ModelCorrespondence{"CIM_Chassis.ChassisTypeDescription"}, ValueMap{"0", "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", "..", "0x8000..0xFFFF"}, Values{"Unknown", "Other", "SMBIOS Reserved", "Desktop", "Low Profile Desktop", "Pizza Box", "Mini Tower", "Tower", "Portable", "LapTop", "Notebook", "Hand Held", "Docking Station", "All in One", "Sub Notebook", "Space-Saving", "Lunch Box", "Main System Chassis", "Expansion Chassis", "SubChassis", "Bus Expansion Chassis", "Peripheral Chassis", "Storage Chassis", "SMBIOS Reseved", "Sealed-Case PC", "SMBIOS Reserved", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ChassisPackageType;

 	[Description ( "A string providing more information on the ChassisPackageType." ), ModelCorrespondence{"CIM_Chassis.ChassisPackageType"}]
	string ChassisTypeDescription;

 	[ArrayType ( "Indexed" ), Deprecated{"CIM_Chassis.ChassisPackageType", "CIM_Chassis.MultipleSystemSupport"}, Description ( "The use of this property is deprecated in lieu of ChassisPackageType. A physical package should not have multiple form factors. Therefore, this property is being deprecated in lieu of a single value property. \nAn enumerated, integer-valued array indicating the type of Chassis." ), MappingStrings{"MIF.DMTF|Physical Container Global Table|004.1"}, ModelCorrespondence{"CIM_Chassis.TypeDescriptions"}, 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"}, Values{"Other", "Unknown", "Desktop", "Low Profile Desktop", "Pizza Box", "Mini Tower", "Tower", "Portable", "LapTop", "Notebook", "Hand Held", "Docking Station", "All in One", "Sub Notebook", "Space-Saving", "Lunch Box", "Main System Chassis", "Expansion Chassis", "SubChassis", "Bus Expansion Chassis", "Peripheral Chassis", "Storage Chassis", "Rack Mount Chassis", "Sealed-Case PC", "Multi-system Chassis"}]
	uint16 ChassisTypes[];

 	[Description ( "Current required by the Chassis at 120V. If power is provided by the Chassis (as in the case of a UPS), this property may indicate the amperage produced, as a negative number." ), Units ( "Amps at 120 Volts" )]
	sint16 CurrentRequiredOrProduced;

 	[Description ( "Amount of heat generated by the Chassis in BTU/hour." ), Units ( "BTU per Hour" )]
	uint16 HeatGeneration;

 	[Description ( "Enumeration indicating whether the input voltage required by the Chassis is: \nUnknown indicates the InputCurrentType is unknown \nOther indicates that InputCurrentType is not one of the enumerated values. OtherInputCurrentType may have more information. \nAC indicates that the InputCurrentType is Alternating Current (AC) \nDC indicates that the InputCurrentType is Direct Current (DC)" ), Experimental ( true ), ModelCorrespondence{"CIM_Chassis.InputVoltage", "CIM_Chassis.OtherInputCurrentType"}, ValueMap{"0", "1", "2", "3"}, Values{"Unknown", "Other", "AC", "DC"}]
	uint16 InputCurrentType;

 	[Description ( "A signed integer indicating the input voltage required by the Chassis. If the value of this property is unknown, it SHOULD have a value of 0. If the value of InputCurrentType is \"Unknown\", this property SHOULD have a value of 0." ), Experimental ( true ), ModelCorrespondence{"CIM_Chassis.InputCurrentType"}, Units ( "MilliVolts" )]
	sint32 InputVoltage;

 	[Description ( "MultipleSystemSupport indicates whether or not this chassis supports multiple systems, for example server blades." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "True", "False"}]
	uint16 MultipleSystemSupport;

 	[Description ( "Integer indicating the number of power cords which must be connected to the Chassis, for all the componentry to operate." )]
	uint16 NumberOfPowerCords;

 	[Description ( "A string describing the input current type when the value of the instance\'s InputCurrentType property is (\"Other\")." ), Experimental ( true ), ModelCorrespondence{"CIM_Chassis.InputCurrentType"}]
	string OtherInputCurrentType;

 	[Description ( "RackMountable indicates whether or not the chassis is Rack Mountable." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "True", "False"}]
	uint16 RackMountable;

 	[ArrayType ( "Indexed" ), Deprecated{"CIM_Chassis.ChassisTypeDescription"}, Description ( "The use of this property is deprecated in lieu of a single value property, ChassisTypeDescription. \nAn array of free-form strings providing more information on the ChassisTypes array entries. Note, each entry of this array is related to the entry in ChassisTypes that is located at the same index." ), ModelCorrespondence{"CIM_Chassis.ChassisTypes"}]
	string TypeDescriptions[];


};

// IBMTSDS_StorageFacilityChassis

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "StorageFacilityChassis represents the physical \'box\' that a StorageSystem resides in." ),  Version ( "2.10.0" )]
class IBMTSDS_StorageFacilityChassis : CIM_Chassis {
	[Description ( "ChassisPackageType indicates the physical form factor for the type of Chassis." ), MappingStrings{"MIF.DMTF|Physical Container Global Table|004.1"}, ModelCorrespondence{"CIM_Chassis.ChassisTypeDescription"}, ValueMap{"0", "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", "..", "0x8000..0xFFFF"}, Values{"Unknown", "Other", "SMBIOS Reserved", "Desktop", "Low Profile Desktop", "Pizza Box", "Mini Tower", "Tower", "Portable", "LapTop", "Notebook", "Hand Held", "Docking Station", "All in One", "Sub Notebook", "Space-Saving", "Lunch Box", "Main System Chassis", "Expansion Chassis", "SubChassis", "Bus Expansion Chassis", "Peripheral Chassis", "Storage Chassis", "SMBIOS Reseved", "Sealed-Case PC", "SMBIOS Reserved", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ChassisPackageType = 22;

 	[Description ( "A string providing more information on the ChassisPackageType. The possible values are \'DS6000\', \'DS8000\', and \'ESS\'." ), ModelCorrespondence{"CIM_Chassis.ChassisPackageType"}]
	string ChassisTypeDescription;

 	[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. Set to \'IBMTSDS_StorageFacilityChassis\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "A textual description of the PhysicalElement. Same as ElementName" ), MappingStrings{"MIF.DMTF|FRU|003.3"}, Override ( "Description" )]
	string Description;

 	[Description ( "Will be of the form \'Storage Facility <Tag>\'." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalName"}, Override ( "ElementName" )]
	string ElementName;

 	[Description ( "The name of the organization responsible for producing the PhysicalElement." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalMfgName", "MIF.DMTF|FRU|003.4"}, MaxLen ( 256 )]
	string Manufacturer = "IBM";

 	[Description ( "The Model of this Storage Facility." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalDescr", "MIF.DMTF|FRU|003.5"}, MaxLen ( 256 )]
	string Model;

 	[Description ( "MultipleSystemSupport indicates whether or not this chassis supports multiple systems. This is true for DS8000, false for DS6000 and ESS." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "True", "False"}]
	uint16 MultipleSystemSupport;

 	[Description ( "RackMountable indicates whether or not the chassis is Rack Mountable. This is true for DS6000, false for DS8000 and ESS." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "True", "False"}]
	uint16 RackMountable;

 	[Description ( "An arbitrary string that uniquely identifies the Physical Element. This corresponds to the Storage Unit ID for DS8000. For DS6000 and ESS, this corresponds to StorageSystem.Name." ), Key ( true ), MaxLen ( 256 ), Override ( "Tag" )]
	string Tag;


};

// IBMTSDS_ExtentPoolCapabilities

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This Capabilities class describes the ExtentPool. ExtentPools can be composed of Ranks of different RAID levels, although this configuration is not recommended." ),  Version ( "2.8.1000" )]
class IBMTSDS_ExtentPoolCapabilities : CIM_StorageCapabilities {
	[Description ( "DataRedundancyDefault describes the default number of complete copies of data that can be maintained. This is set to DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyMin"}, Override ( "DataRedundancyDefault" )]
	uint16 DataRedundancyDefault;

 	[Description ( "DataRedundancyMax describes the maximum number of complete copies of data that can be maintained. RAID5 is 1, RAID10 and RAID5+10 is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMin", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMax" )]
	uint16 DataRedundancyMax;

 	[Description ( "DataRedundancyMin describes the minimum number of complete copies of data that can be maintained. RAID5 and RAID5+10 is 1, RAID10 is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMin" )]
	uint16 DataRedundancyMin;

 	[Description ( "The user friendly name for this instance of Capabilities. In addition, the user friendly name can be used as a index property for a search of query. This will be of the form \'Capablities for ExtentPool <ExtentPool.Name>\'." ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Enumeration indicating the type of element to which this StorageCapabilities applies." ), Override ( "ElementType" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "Reserved", "Any Type", "StorageVolume", "StorageExtent", "StoragePool", "StorageConfigurationService", "LogicalDisk"}]
	uint16 ElementType = 5;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. This will be the same as ExtentPool.InstanceID." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[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"}, Override ( "NoSinglePointOfFailure" )]
	boolean NoSinglePointOfFailure = true;

 	[Description ( "Indicates the default value for the NoSinglePointOfFailure property." ), ModelCorrespondence{"CIM_StorageCapabilities.NoSinglePointOfFailure"}, Override ( "NoSinglePointOfFailureDefault" )]
	boolean NoSinglePointOfFailureDefault = true;

 	[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. This is set to PackageRedundancyMin." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyMax"}, Override ( "PackageRedundancyDefault" )]
	uint16 PackageRedundancyDefault = 1;

 	[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. For RAID5, RAID10, and RAID5+10, this is 2." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMax" )]
	uint16 PackageRedundancyMax = 2;

 	[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. For RAID5, RAID10, and RAID5+10, this is 1." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMax", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMin" )]
	uint16 PackageRedundancyMin = 1;

 	[Description ( "The types of elements that can be created from this pool." ), IBMExtension ( "5.2.0.650" ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
	uint16 SupportedElementTypes[] = {2};


};

// IBMTSDS_RankStatistics

	[Description ( "Statistical Data for a DS Rank or ESS DiskGroup" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_RankStatistics : CIM_BlockStorageStatisticalData {
	[Description ( "The abbreviated ID for the Rank. This ID is NOT globally unique. For example, if the InstanceID of an instance of RankStatistics was IBMTSDS:IBM.2107-13ABCDE-R0, then the AbbreviatedID would just be R0." ), IBMExtension ( "5.2.1" )]
	string AbbreviatedID;

 	[Description ( "Bytes read from this Rank" ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 BytesRead;

 	[Description ( "Bytes written to this Rank" ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 BytesWritten;

 	[Description ( "The short textual description of the volumespace statistic. Of the form \'Rank Statistics for <InstanceID>\'" ), MaxLen ( 64 ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Defines the role that the element played for which this statistics record was collected. The Rank is a nested StoragePool, so we use the sameelementtype as ExtentPool" ), Override ( "ElementType" ), Required ( true ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000", "0x8001", ".."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Rank", "ExtentPool", "Vendor Specific"}]
	uint16 ElementType = 32768;

 	[Description ( "The unique id of the rank statistic. Of the form \'IBMTSDS:<RankPool.InstanceID>\'" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The maximum value of the IBM extension properties that are in units of counts. This cannot be declared statically in the mof qualifiers because the value could theoretically vary from device to device. This maximum value is valid for ReadOperations and WriteOperations." ), IBMExtension ( "5.2.1" )]
	uint64 MaxCount;

 	[Description ( "The maximum value of the IBM extension properties that are in units of KiloBytes. This cannot be declared statically in the mof qualifiers because the value could theoretically vary from device to device. This maximum value is valid for BytesRead and BytesWritten." ), IBMExtension ( "5.2.1" ), Units ( "KiloBytes" )]
	uint64 MaxKB;

 	[Description ( "The maximum value of the IBM extension properties that are in units of Milliseconds. This cannot be declared statically in the mof qualifiers because the value could theoretically vary from device to device. This maximum value is valid for ReadResponseTime and WriteResponseTime." ), IBMExtension ( "5.2.1" ), Units ( "Milliseconds" )]
	uint64 MaxMS;

 	[Description ( "Number of DDMs in this Rank/DiskGroup. Only supported for ESS" ), IBMExtension ( "5.2.0.650" )]
	uint64 NumberOfDDMs;

 	[Description ( "Rank Type. Only supported for ESS." ), IBMExtension ( "5.2.0.650" )]
	uint64 RankType;

 	[Description ( "Total number of Rank read operations" ), IBMExtension ( "5.2.0.650" )]
	uint64 ReadOperations;

 	[Description ( "Rank read response time." ), IBMExtension ( "5.2.1" ), Units ( "Milliseconds" )]
	uint64 ReadResponseTime;

 	[Description ( "Sector Size of this DiskGroup. Only supported for ESS" ), IBMExtension ( "5.2.0.650" ), Units ( "Bytes" )]
	uint64 SectorSize;

 	[Description ( "Timestamp of the values" ), Override ( "StatisticTime" )]
	datetime StatisticTime;

 	[Counter ( true ), Description ( "Sum of ReadOperations and WriteOperations. The rate at which this counter rolls over cannot be determined, because each of the individual properties being added can roll at different rates. If you need to know the exact point at which which the counters roll, use the specific IBM extension properties and MaxCount." ), Override ( "TotalIOs" )]
	uint64 TotalIOs;

 	[Description ( "Total number of Rank write operations" ), IBMExtension ( "5.2.0.650" )]
	uint64 WriteOperations;

 	[Description ( "Rank write response time." ), IBMExtension ( "5.2.1" ), Units ( "Milliseconds" )]
	uint64 WriteResponseTime;


};

// IBMTSDS_RankAllocatedFromPrimordialPool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_RankPool and IBMTSDS_PrimodrialStoragePool. It is strongly recommended that this be treated as a generic AllocatedFromStoragePool association rather than a vendor or device specific association.Only valid for ESS." ),  Version ( "2.8.0" )]
class IBMTSDS_RankAllocatedFromPrimordialPool : CIM_AllocatedFromStoragePool {
	[Description ( "The ArrayPool." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_PrimordialStoragePool ref Antecedent;

 	[Description ( "The RankPool." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_RankPool ref Dependent;

 	[Description ( "Space consumed from this Pool, in bytes. This value MUST be maintained so that, relative to the Antecedent StoragePool, it is possible to compute TotalManagedSpace as StoragePool.RemainingManagedSpace plus the sum of SpaceConsumed from all of the AllocatedFromStoragePool references from the antecedent StoragePool. This means that this property refers to raw space." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_StoragePool.RemainingManagedSpace"}, Required ( true ), Units ( "Bytes" )]
	uint64 SpaceConsumed;


};

// CIM_SystemPackaging

[ASSOCIATION ( true ),  Description ( "Similar to the way that LogicalDevices are \'Realized\' by PhysicalElements, Systems can be associated with specific packaging or PhysicalElements. This association explicitly defines the relationship between a System and its packaging." ), Version ( "2.10.0" )]
class CIM_SystemPackaging : CIM_Dependency {
	[Description ( "The PhysicalElements that provide the packaging of a System." ), Override ( "Antecedent" )]
	CIM_PhysicalElement ref Antecedent;

 	[Description ( "The System whose packaging is described." ), Override ( "Dependent" )]
	CIM_System ref Dependent;


};

// CIM_ComputerSystemPackage

[ASSOCIATION ( true ),  Description ( "Similar to the way that LogicalDevices are \'Realized\' by PhysicalElements, UnitaryComputerSystems are realized in one or more PhysicalPackages. The ComputerSystemPackage association explicitly defines this relationship." ), Version ( "2.7.0" )]
class CIM_ComputerSystemPackage : CIM_SystemPackaging {
	[Description ( "The PhysicalPackage(s) that realize a Unitary ComputerSystem." ), Override ( "Antecedent" )]
	CIM_PhysicalPackage ref Antecedent;

 	[Description ( "The UnitaryComputerSystem." ), Override ( "Dependent" )]
	CIM_ComputerSystem ref Dependent;

 	[Description ( "A Gloabally Unique Identifier for the System\'s Package." )]
	string PlatformGUID;


};

// IBMTSDS_FCPortStatistics

	[Description ( "Statistical Data for an FCPort" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_FCPortStatistics : CIM_BlockStorageStatisticalData {
	[Description ( "The abbreviated ID for the Port. This matches the FCPort.DeviceID. This ID is NOT globally unique. For example, if the InstanceID of an instance of FCPortStatistics was IBMTSDS:IBM.2107-13ABCDE-100a, then the AbbreviatedID would just be 100a." ), IBMExtension ( "5.2.1" )]
	string AbbreviatedID;

 	[Description ( "Accumulated time of ECKD Read Operations on channel." ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 ECKDAccumulatedReadTime;

 	[Description ( "Accumulated time of ECKD Write Operations on channel." ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 ECKDAccumulatedWriteTime;

 	[Description ( "Total number of ECKD Bytes Read for this port." ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 ECKDBytesRead;

 	[Description ( "Total number of ECKD Bytes Written for this port." ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 ECKDBytesWritten;

 	[Description ( "Total number of ECKD Read Operations for this port." ), IBMExtension ( "5.2.0.650" )]
	uint64 ECKDReadOperations;

 	[Description ( "Total number of ECKD Write Operations for this port." ), IBMExtension ( "5.2.0.650" )]
	uint64 ECKDWriteOperations;

 	[Description ( "The short textual description of the FCP statistic. Of the form \'FCPort statistics for <FCPort.SystemName>-<FCPort.DeviceID>\'." ), MaxLen ( 64 ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Defines the role that the element played for which this statistics record was collected. The FCPort channels I/O to and from the hosts, so it is considered a front-end port." ), Override ( "ElementType" ), Required ( true ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000", "0x8001", ".."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Rank", "ExtentPool", "Vendor Specific"}]
	uint16 ElementType = 6;

 	[Description ( "The unique id of the FCPort statistic. Of the form \'IBMTSDS:<StorageSystem.Name>-<FCPort.DeviceID>\'" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The maximum value of the IBM extension properties that are in units of counts. This cannot be declared statically in the mof qualifiers because the value could theoretically vary from device to device. This maximum value is valid for SCSIReadOperations, SCSIWriteOperations, PPRCReceivedOperations, PPRCSendOperations, ECKDReadOperations, and ECKDWriteOperations" ), IBMExtension ( "5.2.1" )]
	uint64 MaxCount;

 	[Description ( "The maximum value of the IBM extension properties that are in units of KiloBytes. This cannot be declared statically in the mof qualifiers because the value could theoretically vary from device to device. This maximum value is valid for SCSIBytesRead, SCSIBytesWritten, PPRCBytesReceived, PPRCBytesSend, ECKDBytesRead, and ECKDBytesWritten" ), IBMExtension ( "5.2.1" ), Units ( "KiloBytes" )]
	uint64 MaxKB;

 	[Description ( "The maximum value of the IBM extension properties that are in units of Milliseconds. This cannot be declared statically in the mof qualifiers because the value could theoretically vary from device to device. This maximum value is valid for ECKDAccumulatedReadTime, ECKDAccumulatedWriteTime, PPRCReceivedTimeAccumulated, PPRCSendTimeAccumulated, SCSIReadTimeAccumulated, and SCSIWriteTimeAccumulated" ), IBMExtension ( "5.2.1" ), Units ( "Milliseconds" )]
	uint64 MaxMS;

 	[Description ( "Total number of PPRC Bytes Received for this port." ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 PPRCBytesReceived;

 	[Description ( "Total number of PPRC Bytes Sent of this port." ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 PPRCBytesSend;

 	[Description ( "Total number of PPRC Received Operations for this port." ), IBMExtension ( "5.2.0.650" )]
	uint64 PPRCReceivedOperations;

 	[Description ( "Accumulated time of PPRC Received Operations." ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 PPRCReceivedTimeAccumulated;

 	[Description ( "Total number of PPRC Send Operations for this port." ), IBMExtension ( "5.2.0.650" )]
	uint64 PPRCSendOperations;

 	[Description ( "Accumulated time of PPRC Send Operations." ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 PPRCSendTimeAccumulated;

 	[Description ( "Total number of SCSI Bytes Read for this port." ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 SCSIBytesRead;

 	[Description ( "Total number of SCSI Bytes Written for this port." ), IBMExtension ( "5.2.0.650" ), Units ( "KiloBytes" )]
	uint64 SCSIBytesWritten;

 	[Description ( "Total number of SCSI Read Operations for this port." ), IBMExtension ( "5.2.0.650" )]
	uint64 SCSIReadOperations;

 	[Description ( "Time of SCSI Read Operations." ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 SCSIReadTimeAccumulated;

 	[Description ( "Total number of SCSI Write Operations for this port." ), IBMExtension ( "5.2.0.650" )]
	uint64 SCSIWriteOperations;

 	[Description ( "Accumulated time of SCSI Write Operations on channel" ), IBMExtension ( "5.2.0.650" ), Units ( "Milliseconds" )]
	uint64 SCSIWriteTimeAccumulated;

 	[Description ( "Timestamp of the values for this instance of statistics." ), Override ( "StatisticTime" )]
	datetime StatisticTime;

 	[Counter ( true ), Description ( "The cumulative count of I/Os for the object. (SCSIReadOperations + SCSIWriteOperations + PPRCReceivedOperations + PPRCSendOperations + ECKDReadOperations + ECKDWriteOperations). The rate at which this counter rolls over cannot be determined, because each of the individual properties being added can roll at different rates. If you need to know the exact point at which the counters roll, use the specific IBM extension properties and MaxCount." ), Override ( "TotalIOs" )]
	uint64 TotalIOs;


};

// IBMTSDS_FCPortStatsMemberOfCollection

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "CIM_MemberOfCollection is an aggregation used to establish membership of ManagedElements in a Collection." ),  Version ( "2.6.0" )]
class IBMTSDS_FCPortStatsMemberOfCollection : CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The Collection that aggregates members." ), Key ( true ), Override ( "Collection" )]
	IBMTSDS_PerformanceStatisticsCollection ref Collection;

 	[Description ( "The aggregated member of the Collection." ), Key ( true ), Override ( "Member" )]
	IBMTSDS_FCPortStatistics ref Member;


};

// IBMTSDS_RankManifest

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "Instances of this class define a list of supported properties of IBMTSDS_RankStatistics instances. In the case where a IBMTSDS_BlockStatisticsManifest instance is a member of a IBMTSDS_RankStatsManifestCollection used in a IBMTSDS_PerformanceStatisticsService.GetStatisticsCollection request, for each of the boolean \"include\" properties set to true in  Manifest class, the corresponding RankStatistics property will be included, if available, in the statistics returned for IBMTSDS_RankStatistics instances. By default, all booleans are set to true." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_RankManifest : CIM_BlockStatisticsManifest {
	[Description ( "Since CIM/WBEM do not require that the order of properties in a mof file be preserved, this vendor-extension property lets clients know what order the properties will be returned in the GetStatisticsCollection method so that the order does not need to be hard-coded. SMI-S defines the order to beInstanceID, ElementType, StatisticTime, followed by the order in which the Include*** properties are defined above. The strings will be the name of the property in IBMTSDS_RankStatistics (without \"Include\")." ), IBMExtension ( "5.2.1" ), ModelCorrespondence{"CIM_BlockStatisticsService.GetStatisticsCollection(Statistics)"}]
	string BulkFormat[];

 	[Description ( "The ElementName will be set to InstanceID without the \'IBMTSDS:\'" ), MaxLen ( 64 ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Defines the role that the element played for which this statistics record was collected. The Rank is a nested StoragePool, so we use the sameelementtype as ExtentPool" ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ElementType"}, Override ( "ElementType" ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000", "0x8001", ".."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Rank", "ExtentPool", "Vendor Specific"}]
	uint16 ElementType = 32768;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeAbbreviatedID = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeBytesRead = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeBytesWritten = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeMaxCount = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeMaxKB = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeMaxMS = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeNumberOfDDMs = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeRankType = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeReadOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeReadResponseTime = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSectorSize = true;

 	[Override ( "IncludeStatisticTime" )]
	boolean IncludeStatisticTime = true;

 	[Override ( "IncludeTotalIOs" )]
	boolean IncludeTotalIOs = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeWriteOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeWriteResponseTime = true;

 	[Description ( "Currently only the default RankManifest is supported. The InstanceID will be \'IBMTSDS:RankManifest-Default\'" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;


};

// IBMTSDS_RegisteredSubProfile

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A RegisteredSubProfile subclasses RegisteredProfile to indicate that a scoping profile is required to provide context. The latter is specified by the mandatory association, SubProfileRequiresProfile." ),  Version ( "2.8.0" )]
class IBMTSDS_RegisteredSubProfile : CIM_RegisteredSubProfile {
	[ArrayType ( "Indexed" ), Description ( "This property signifies the advertisement for the profile information. It is used by the advertising services of the WBEM infrastructure to determine what should be advertised, via what mechanisms. The property is an array so that the profile MAY be advertised using several mechanisms. Note: If this property is null/uninitialized, this is equivalent to specifying the value 2, \"Not Advertised\"." ), ModelCorrespondence{"CIM_RegisteredProfile.AdvertiseTypeDescriptions"}, Override ( "AdvertiseTypes" ), Required ( true ), ValueMap{"1", "2", "3"}, Values{"Other", "Not Advertised", "SLP"}]
	uint16 AdvertiseTypes[] = {3};

 	[Description ( "The InstanceID will be of the form \'IBMTSDS:<RegisteredName>_<RegisteredVersion>\'." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The name of this registered profile. Since multiple versions can exist for the same RegisteredName, the combination of RegisteredName, RegisteredOrganization, and RegisteredVersion MUST uniquely identify the registered profile within the scope of the organization." ), MaxLen ( 256 ), Override ( "RegisteredName" ), Required ( true )]
	string RegisteredName;

 	[Description ( "The organization that defines this profile." ), ModelCorrespondence{"CIM_RegisteredProfile.OtherRegisteredOrganization"}, Override ( "RegisteredOrganization" ), Required ( true ), ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"}, Values{"Other", "DMTF", "CompTIA", "Consortium for Service Innovation", "FAST", "GGF", "INTAP", "itSMF", "NAC", "Northwest Energy Efficiency Alliance", "SNIA", "TM Forum", "The Open Group", "ANSI", "IEEE", "IETF", "INCITS", "ISO", "W3C"}]
	uint16 RegisteredOrganization;

 	[Description ( "The version of this profile. All profiles in IBM CIM Agent for the DS Open API 5.2 are version 1.1.0." ), Override ( "RegisteredVersion" ), Required ( true )]
	string RegisteredVersion = "1.1.0";


};

// IBMTSDS_DataTypeSettingToExtentPoolCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This association define StorageSettings that reflect the capabilities of the associated StorageCapabilities. The associated DataType setting can be passed into CreateOrModifyElementFromStoragePool as the Goal when the ExtentPool is passed in as InPools. " ), Experimental ( true ),  Version ( "2.8.1000" )]
class IBMTSDS_DataTypeSettingToExtentPoolCapabilities : CIM_StorageSettingsAssociatedToCapabilities {
	[Description ( "The ExtentPoolCapabilities." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ExtentPoolCapabilities ref Antecedent;

 	[Description ( "The default association associates the setting that will be used to create or modify a Storage Element if a no setting is passed as a Goal. The default for ExtentPools with ExtentType FB is Block512. The default for ExtentPools with ExtentType CKD is 3380." ), Required ( true )]
	boolean DefaultSetting;

 	[Description ( "The DataTypeSetting." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_DataTypeSetting ref Dependent;


};

// CIM_InstDeletion

	[Abstract ( true ), Description ( "CIM_InstDeletion notifies when an existing instance is deleted." ), INDICATION ( true ), Version ( "2.6.0" )]
class CIM_InstDeletion : CIM_InstIndication {
};

// IBMTSDS_InstDeletion

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "CIM_InstDeletion notifies when an existing instance is deleted." ), INDICATION ( true ),  Version ( "2.6.0" )]
class IBMTSDS_InstDeletion : CIM_InstDeletion {
	[Description ( "An identifier for the Indication. This property is similar to a key value in that it can be used for identification, when correlating Indications (see the CorrelatedIndications array). Its value SHOULD be unique as long as Alert correlations are reported, but MAY be reused or left NULL if no future Indications will reference it in their CorrelatedIndications array. Will be of the form \'<Object> <Identifier> Deleted <IndicationTime>\'.For example, \'Volume <ESSID>-100a Deleted 19980525133015.0000000-300\'. The time will be omitted if it is unknown" )]
	string IndicationIdentifier;

 	[Description ( "The time and date of creation of the Indication. The property may be set to NULL if the entity creating the Indication is not capable of determining this information. Note that IndicationTime may be the same for two Indications that are generated in rapid succession." )]
	datetime IndicationTime;

 	[Description ( "A copy of the instance that changed to generate the Indication. SourceInstance contains the current values of the properties selected by the Indication Filter\'s Query. In the case of CIM_InstDeletion, the property values are copied before the instance is deleted." ), EmbeddedObject ( true ), Required ( true )]
	string SourceInstance;

 	[Description ( "The Model Path of the SourceInstance. The following format MUST be used to encode the Model Path: \n<NamespacePath>:<ClassName>.<Prop1>=\"<Value1>\", \n<Prop2>=\"<Value2>\", ..." ), ModelCorrespondence{"CIM_InstIndication.SourceInstance"}]
	string SourceInstanceModelPath;


};

// CIM_ObjectManagerCommunicationMechanism

	[Description ( "The class, ObjectManagerCommunicationMechanism, describes access to an ObjectManager. It describes a protocol and data encoding that can be used for communication. When all instances of this class are enumerated for an ObjectManager (using the CommMechanismForManager association), all possible protocol and encoding schemes will be known. Also, specific capabilities (for example, basic read or query) that are supported in the protocol/encoding are described - using the ProfilesSupported property." ), Version ( "2.7.0" )]
class CIM_ObjectManagerCommunicationMechanism : CIM_ServiceAccessPoint {
	[ArrayType ( "Indexed" ), Description ( "A free-form string providing additional information related to the AdvertiseType. A description MUST be provided when the AdvertiseType is 1, \"Other\". An entry in this array corresponds to the entry in the AdvertiseTypes array at the same index. It is not expected that additional descriptions are needed if the Type is set to \"Not Advertised\" or \"SLP\". However, as the SLP template expands, or as other advertisement mechanisms are defined, support for additional descriptions may be needed. This array is defined to support this." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.AdvertiseTypes"}]
	string AdvertiseTypeDescriptions[];

 	[ArrayType ( "Indexed" ), Description ( "This property signifies the advertisement for this access point. . It is used by the advertising services of the WBEM infrastructure to determine what should be advertised, via what mechanisms. The property is an array so that the communicationMechansim MAY be advertised using several mechanisms. Note: If this property is null/uninitialized, this is equivalent to specifying the value 2, \"Not Advertised\"." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.AdvertiseTypeDescriptions"}, Required ( true ), ValueMap{"1", "2", "3"}, Values{"Other", "Not Advertised", "SLP"}]
	uint16 AdvertiseTypes[];

 	[ArrayType ( "Indexed" ), Description ( "Free-form strings providing descriptions of the supported mechanisms. Entries in this array are correlated with those in the AuthenticationMechanismsSupported array. An entry in this Descriptions array MUST be provided when 1, \"Other\", is specified in AuthenticationMechanismsSupported." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.AuthenticationMechanismsSupported"}]
	string AuthenticationMechanismDescriptions[];

 	[ArrayType ( "Indexed" ), Description ( "Enumerated array describing the types of authentication supported by the ObjectManager, using the encoding/protocol. specified in the property, CommunicationMechanism. The defined values represent the authentication defined in the DMTF document, Specification for CIM Operations over HTTP." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.AuthenticationMechanismDescriptions"}, Required ( true ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Unknown", "Other", "None", "Basic", "Digest"}]
	uint16 AuthenticationMechanismsSupported[];

 	[Description ( "CommunicationMechanism describes an encoding and protocol which can be used to communicate with the ObjectManager. At this time, only one encoding and protocol are standardized by the DMTF - \"CIM-XML\". If this is supported by an ObjectManager, the specified string should be indicated. Other \'standard\' strings may be defined. In addition, a vendor specific encoding/protocol string may be used." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.OtherCommunicationMechanismDescription"}, Required ( true ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Other", "CIM-XML"}]
	uint16 CommunicationMechanism;

 	[ArrayType ( "Indexed" ), Description ( "Free-form strings providing descriptions of the supported operations of the object manager. Entries in the array are correlated with those in the ProfilesSupported array. An entry in this Descriptions array MUST be provided when 1, \"Other\", is specified in the FunctionalProfilesSupported array." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.FunctionalProfilesSupported"}]
	string FunctionalProfileDescriptions[];

 	[ArrayType ( "Indexed" ), Description ( "Enumerated array describing the types of operations supported by the ObjectManager, using this encoding/protocol. The enumeration is based on the Functional Profiles defined for conformance in the DMTF document, Specification for CIM Operations over HTTP." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.FunctionalProfileDescriptions"}, Required ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, Values{"Unknown", "Other", "Basic Read", "Basic Write", "Schema Manipulation", "Instance Manipulation", "Association Traversal", "Query Execution", "Qualifier Declaration", "Indications"}]
	uint16 FunctionalProfilesSupported[];

 	[Description ( "Boolean indicating whether the ObjectManager supports multiple operation requests (TRUE) or only simple requests (FALSE)." ), Required ( true )]
	boolean MultipleOperationsSupported;

 	[Description ( "A free-form string providing a description of the supported protocols when 1, \"Other\", is specified in the CommunicationMechanism." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.CommunicationMechanism"}]
	string OtherCommunicationMechanismDescription;

 	[Description ( "Provides the protocol version for this service access point. Version information MUST be in the form of M.N, where M is a numeric that describes the Major version and N is a numeric that describes the minor version." ), Required ( true )]
	string Version;


};

// CIM_CIMXMLCommunicationMechanism

	[Description ( "This class specializes ObjectManagerCommunicationMechanism, adding properties specific to the CIM-XML protocol (XML encoding and CIM Operations)." ), Version ( "2.8.0" )]
class CIM_CIMXMLCommunicationMechanism : CIM_ObjectManagerCommunicationMechanism {
	[Description ( "Describes whether the CIM Server is strictly validating (validates the XML document against the DTD) or not (loosely validating)." ), Required ( true )]
	boolean CIMValidated;

 	[Deprecated{"CIM_CIMXMLCommunicationMechanism.Version"}, Description ( "Enumeration describing the CIM-XML protocol version supported by the ObjectManager. It is deprecated in lieu of a more general, inherited property (Version)." ), Required ( true ), ValueMap{"0", "1"}, Values{"Unknown", "1.0"}]
	uint16 CIMXMLProtocolVersion;

 	[Description ( "The only valid CommunicationMechanism for this subclass is CIM-XML." ), Override ( "CommunicationMechanism" ), Required ( true ), ValueMap{"2"}, Values{"CIM-XML"}]
	uint16 CommunicationMechanism = 2;

 	[Description ( "Enumeration describing the CIM-XML protocol version supported by the ObjectManager." ), Override ( "Version" ), Required ( true ), ValueMap{"1.0", "1.1", "1.2"}]
	string Version;


};

// IBMTSDS_Namespace

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "Namespace provides a domain (in other words, a container), in which the instances [of a class] are guaranteed to be unique per the KEY qualifier definitions. It is named relative to the CIM_ObjectManager implementation that provides such a domain." ),  Version ( "2.8.0" )]
class IBMTSDS_Namespace : CIM_Namespace {
	[Deprecated{"CIM_Namespace.ClassType"}, Description ( "Enumeration indicating the organization/schema of the Namespace\'s objects. For example, they may be instances of classes of a specific CIM version." ), ModelCorrespondence{"CIM_Namespace.DescriptionOfClassInfo"}, Override ( "ClassInfo" ), Required ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "200", "201", "202"}, Values{"Unknown", "Other", "CIM 1.0", "CIM 2.0", "CIM 2.1", "CIM 2.2", "CIM 2.3", "CIM 2.4", "CIM 2.5", "CIM 2.6", "CIM 2.7", "CIM 2.8", "DMI Recast", "SNMP Recast", "CMIP Recast"}, Write ( true )]
	uint16 ClassInfo = 1;

 	[Description ( "Enumeration indicating the schema of the Namespace\'s objects. For example, they may be instances of classes of a specific CIM version or a mapping from another standard, such as SNMP. All classes in the IBM CIM Agent are from the CIM standard." ), ModelCorrespondence{"CIM_Namespace.DescriptionOfClassType", "CIM_Namespace.ClassTypeVersion"}, Override ( "ClassType" ), ValueMap{"0", "1", "2", "200", "201", "202"}, Values{"Unknown", "Other", "CIM", "DMI Recast", "SNMP Recast", "CMIP Recast"}]
	uint16 ClassType = 2;

 	[Description ( "The version of the schema used is 2.10." ), ModelCorrespondence{"CIM_Namespace.DescriptionOfClassType", "CIM_Namespace.ClassType"}, Override ( "ClassTypeVersion" )]
	string ClassTypeVersion = "2.10";

 	[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. This value is set to IBMTSDS_Namespace." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "A string to uniquely identify the Namespace within the ObjectManager. For example, \'/root/ibm\' ." ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[Description ( "The scoping ObjectManager\'s CreationClassName." ), Key ( true ), MaxLen ( 256 ), Override ( "ObjectManagerCreationClassName" ), Propagated ( "CIM_ObjectManager.CreationClassName" )]
	string ObjectManagerCreationClassName;

 	[Description ( "The scoping ObjectManager\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "ObjectManagerName" ), Propagated ( "CIM_ObjectManager.Name" )]
	string ObjectManagerName;

 	[Description ( "The scoping System\'s CreationClassName." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" ), Propagated ( "CIM_ObjectManager.SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_ObjectManager.SystemName" )]
	string SystemName;


};

// CIM_RedundancySet

	[Description ( "A class derived from SystemSpecificCollection that is a special collection of ManagedElements. This collection indicates that the aggregated elements together provide redundancy, or that redundancy is provided via sparing. All elements collected in a RedundancySet SHOULD be instantiations of the same object class." ), Version ( "2.10.0" )]
class CIM_RedundancySet : CIM_SystemSpecificCollection {
	[Description ( "The current load balance algorithm. \nLeast Blocks, Least IO, and Address Region are used in storage device path redundancy drivers to optimize load balancing by routing requests to a path with the least queued blocks or IO requests, or based on locality of reference. \n\'Product Specific\' indicates that the algorithm is optimized for a particular type of product. Information about that product SHOULD be provided in an associated CIM_Product instance." ), ModelCorrespondence{"CIM_RedundancySet.OtherLoadBalanceAlgorithm"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "Other", "No Load Balancing", "Round Robin", "Least Blocks", "Least IO", "Address Region", "Product Specific"}, Write ( true )]
	uint16 LoadBalanceAlgorithm = 2;

 	[Description ( "MaxNumberSupported indicates the largest number of elements that can participate in the RedundancySet. A value of 0 indicates there is no limit on the number of elements." )]
	uint32 MaxNumberSupported;

 	[Description ( "MinNumberNeeded indicates the smallest number of elements that MUST be operational in order to function. For example, in an N+1 redundancy relationship, the MinNumberNeeded property is set equal to N. In a \'LimitedSparing\' environment, this property is meaningless and SHOULD be set to zero." ), MinValue ( 0 )]
	uint32 MinNumberNeeded;

 	[Description ( "When LoadBalanceAlgorithm is Other, this property describes the algorithm." ), ModelCorrespondence{"CIM_RedundancySet.LoadBalanceAlgorithm"}, Write ( true )]
	string OtherLoadBalanceAlgorithm;

 	[ArrayType ( "Indexed" ), Description ( "When the corresponding array entry in TypeOfSet[] is \'Other\', this entry provides a string describing the type of set." ), ModelCorrespondence{"CIM_RedundancySet.TypeOfSet"}]
	string OtherTypeOfSet[];

 	[Description ( "RedundancyStatus provides information on the state of the RedundancyGroup. \'Fully Redundant\' (value=2) means that all of the configured redundancy is still available; \'Degraded Redundancy\' (3) means that some configured elements are degraded, missing or failed but that the number of elements in the set is still greater than the minimum required (\'MinNumberNeeded\'); \'Redundancy Lost\' (4) means that sufficient configured elements are missing or failed that no redundancy is available and the next failure experienced will cause overall failure. \'Overall Failure\' (5) means that there has been an overall failure of the RedundancySet." ), ModelCorrespondence{"CIM_RedundancySet.MinNumberNeeded"}, ValueMap{"0", "1", "2", "3", "4", "5"}, Values{"Unknown", "DMTF Reserved", "Fully Redundant", "Degraded Redundancy", "Redundancy Lost", "Overall Failure"}]
	uint16 RedundancyStatus;

 	[ArrayType ( "Indexed" ), Description ( "TypeOfSet provides information on the type of redundancy. - N+1 (=2) indicates all members are active, are unaware and function independent of one another. However, there exist at least one extra member to achieve functionality. \'Sparing\' is implied (i.e. each member can be a spare for the other(s). An example of N+1 is a system that has 2 power supplies, but needs only 1 power supply to functioning properly. \n- Load Balanced (=3) indicates all members are active. However, there functionality is not independent of each other. Their functioning is determined by some sort of load balancing algrothim (implemented in hardware and/or software). \'Sparing\' is implied (i.e. each member can be a spare for the other(s). \n- Sparing (=4) indicates that all members are active and are aware of each others. However, their functionality is independent until failover. Each member can be a spare for the other(s). \n- Limited Sparing (=5) indicates that all members are active, and they may or may not be aware of each and they are not spares for each other. Instead, their redundancy is indicated by the IsSpare relationship." ), ModelCorrespondence{"CIM_RedundancySet.OtherTypeOfSet"}, ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x8000.."}, Values{"Unknown", "Other", "N+1", "Load Balanced", "Sparing", "Limited Sparing", "DMTF Reserved", "Vendor Reserved"}]
	uint16 TypeOfSet[];

 	[Description ( "VendorIdentifyingInfo captures the vendor identifying data for the RedundancySet. One example is the product name for a cluster." )]
	string VendorIdentifyingInfo;


		[Description ( "This method forces a failover from one ManagedElement to another. There are two parameters to the Failover method. \n- FailoverFrom is a reference to an \'active\' ManagedElement that will become inactive after the method. This element SHOULD be part of the RedundancySet via a MemberOfCollection relationship. \n- FailoverTo is a reference to the ManagedElement that will take over for the FailoverFrom element. This element SHOULD either be a member of the RedundancySet or be associated with the RedundancySet via an IsSpare relationship. \n\nUpon sucessful completion: \n- the FailoverTo element SHOULD be associated to the RedundancySet via MemberOfCollection. \n- the FailFrom element SHOULD either still be associated to the RedundandySet via MemberOfCollection with a OperationalStatus or EnableState that indicates it not active, or it SHOULD be associated to the \'Spared\' collection via the MemberOfCollection association." ), ValueMap{"0", "1", "2", "3", "4", "..", "32768..65535"}, Values{"Completed with No Error", "Not Supported", "Unknown/Unspecified Error", "Busy/In Use", "Paramter Error", "DMTF Reserved", "Vendor Reserved"}]
	uint32 Failover(
		[Description ( "The primary ManagedSystemElement that will become inactive after the method." ), IN ( true )]
		CIM_ManagedElement ref FailoverFrom,
	 	[Description ( "The ManagedSystemElement that will take over from the primary MSE." ), IN ( true )]
		CIM_ManagedElement ref FailoverTo
	);
};

// IBMTSDS_LPARRedundancySet

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This class represents the redundancy set of two LPAR systems into one Storage Facility Image (IBMTSDS_StorageSystem)." ), Experimental ( true ),  Version ( "2.8.1000" )]
class IBMTSDS_LPARRedundancySet : CIM_RedundancySet {
	[Description ( "A user-friendly name for the object. Will be of the form \'RedundancySet for <IBMTSDS_StorageSystem.Name>\'." )]
	string ElementName;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. This will be of the form \'IBMTSDS:<IBMTSDS_StorageSystem.Name>\'." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "MaxNumberSupported indicates the largest number of elements that can participate in the RedundancySet. A value of 0 indicates there is no limit on the number of elements. For the DS, this is set to 2." ), Override ( "MaxNumberSupported" )]
	uint32 MaxNumberSupported = 2;

 	[Description ( "MinNumberNeeded indicates the smallest number of elements that MUST be operational in order to function. For example, in an N+1 redundancy relationship, the MinNumberNeeded property is set equal to N. In a \'LimitedSparing\' environment, this property is meaningless and SHOULD be set to zero. For the DS, this is set to 1." ), MinValue ( 0 ), Override ( "MinNumberNeeded" )]
	uint32 MinNumberNeeded = 1;

 	[Description ( "The DS CIM Agent does not support status of single-point-of-failure, so RedundancyStatus is always \'Unknown\'." ), ModelCorrespondence{"CIM_RedundancySet.MinNumberNeeded"}, Override ( "RedundancyStatus" ), ValueMap{"0", "1", "2", "3", "..", "0x8000.."}, Values{"Unknown", "Other", "Redundant", "Redundancy Lost", "DMTF Reserved", "Vendor Reserved"}]
	uint16 RedundancyStatus = 0;

 	[ArrayType ( "Indexed" ), Description ( "TypeOfSet provides information on the type of redundancy. - N+1 (=2) indicates all members are active, are unaware and function independent of one another. However, there exist at least one extra member to achieve functionality. \'Sparing\' is implied (i.e. each member can be a spare for the other(s). An example of N+1 is a system that has 2 power supplies, but needs only 1 power supply to functioning properly. \n- Load Balanced (=3) indicates all members are active. However, there functionality is not independent of each other. Their functioning is determined by some sort of load balancing algrothim (implemented in hardware and/or software). \'Sparing\' is implied (i.e. each member can be a spare for the other(s). \n- Sparing (=4) indicates that all members are active and are aware of each others. However, their functionality is independent until failover. Each member can be a spare for the other(s). \n- Limited Sparing (=5) indicates that all members are active, and they may or may not be aware of each and they are not spares for each other. Instead, their redundancy is indicated by the IsSpare relationship.\nThe DS system uses Sparing." ), ModelCorrespondence{"CIM_RedundancySet.OtherTypeOfSet"}, Override ( "TypeOfSet" ), ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x8000.."}, Values{"Unknown", "Other", "N+1", "Load Balanced", "Sparing", "Limited Sparing", "DMTF Reserved", "Vendor Reserved"}]
	uint16 TypeOfSet[] = {4};


};

// IBMTSDS_StorageSystemToLPARRedundancySet

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This class associates StorageFacilitySystem to ControllerRedundancySet, which both represent the Storage Facilty Image." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageSystemToLPARRedundancySet : CIM_ConcreteIdentity {
	[Description ( "Another aspect of the ManagedElement." ), Key ( true ), Override ( "SameElement" )]
	IBMTSDS_LPARRedundancySet ref SameElement;

 	[Description ( "One aspect of the ManagedElement. The use of \'System\' in the name does not limit the scope of the association. This is an artifact of the original definition of the association." ), Key ( true ), Override ( "SystemElement" )]
	IBMTSDS_StorageSystem ref SystemElement;


};

// IBMTSDS_VolStatsMemberOfCollection

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "CIM_MemberOfCollection is an aggregation used to establish membership of ManagedElements in a Collection." ),  Version ( "2.6.0" )]
class IBMTSDS_VolStatsMemberOfCollection : CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The Collection that aggregates members." ), Key ( true ), Override ( "Collection" )]
	IBMTSDS_PerformanceStatisticsCollection ref Collection;

 	[Description ( "The aggregated member of the Collection." ), Key ( true ), Override ( "Member" )]
	IBMTSDS_VolumeStatistics ref Member;


};

// IBMTSDS_ConcreteDependencyStorageHardwareID

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_ConcreteDependencyStorageHardwareID : CIM_ConcreteDependency {
	[Override ( "Antecedent" )]
	IBMTSDS_StorageHardwareIDManagementService ref Antecedent;

 	[Override ( "Dependent" )]
	IBMTSDS_StorageHardwareID ref Dependent;


};

// CIM_SAPAvailableForElement

[ASSOCIATION ( true ),  Description ( "CIM_SAPAvailableForElement conveys the semantics of a Service Access Point that is available for a ManagedElement. When CIM_SAPAvailableForElement is not instantiated, then the SAP is assumed to be generally available. If instantiated, the SAP is available only for the associated ManagedElements. For example, a device might provide management access through a URL. This association allows the URL to be advertised for the device." ), Version ( "2.10.0" )]
class CIM_SAPAvailableForElement {
	[Description ( "The Service Access Point that is available." ), Key ( true )]
	CIM_ServiceAccessPoint ref AvailableSAP;

 	[Description ( "The ManagedElement for which the SAP is available." ), Key ( true )]
	CIM_ManagedElement ref ManagedElement;


};

// IBMTSDS_ArrayComponent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "Association between IBMTSDS_ArrayExtent and IBMTSDS_ArrayPool.Only valid for DS." ),  Version ( "2.7.0" )]
class IBMTSDS_ArrayComponent : CIM_ConcreteComponent {
	[Aggregate ( true ), Description ( "The parent element in the association." ), Key ( true ), Override ( "GroupComponent" )]
	IBMTSDS_ArrayPool ref GroupComponent;

 	[Description ( "The child element in the association." ), Key ( true ), Override ( "PartComponent" )]
	IBMTSDS_ArrayExtent ref PartComponent;


};

// IBMTSDS_RankStatisticalData

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CIM_ElementStatisticalData is an association that relates a IBMTSDS_Rank to its IBMTSDS_RankStatistics." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_RankStatisticalData : CIM_ElementStatisticalData {
	[Description ( "The Rank." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_RankPool ref ManagedElement;

 	[Description ( "The RankStatistics." ), Key ( true ), Override ( "Stats" )]
	IBMTSDS_RankStatistics ref Stats;


};

// CIM_Product

	[Description ( "CIM_Product is a concrete class that aggregates PhysicalElements, software (SoftwareIdentity and SoftwareFeatures), Services and/or other Products, and is acquired as a unit. Acquisition implies an agreement between supplier and consumer which may have implications to Product licensing, support and warranty. Non-commercial (e.g., in-house developed Products) should also be identified as an instance of CIM_Product. \nNote that software is handled a bit differently in the list of aggregated entities, above. This is because software can be viewed as a tangible asset (similar to PhysicalElements) AND/ OR as a set of features that make up a Product and are deployed. These are two different concepts, usually managed by different units in a business\' organization. When software \'features\' are described, the CIM_SoftwareFeature class from the Application Model is instantiated (where Features are Weak to/scoped by a Product). When a specific piece of software is acquired and perhaps warrantied as part of a Product, this is addressed by the class, SoftwareIdentity." ), Version ( "2.8.1000" )]
class CIM_Product : CIM_ManagedElement {
	[Description ( "Family that the product belongs to. A family refers to a set of products that are similar but not identical from a hardware or software point of view. Typically, a family is composed of different products, which have different configurations and pricing points. Products in the same family often have similar branding and cosmetic features." ), Experimental ( true ), MaxLen ( 64 )]
	string Family;

 	[Description ( "Product identification such as a serial number on software, a die number on a hardware chip, or (for non-commercial Products) a project number." ), Key ( true ), MappingStrings{"MIF.DMTF|ComponentID|001.4"}, MaxLen ( 64 )]
	string IdentifyingNumber;

 	[Description ( "Commonly used Product name." ), Key ( true ), MappingStrings{"MIF.DMTF|ComponentID|001.2"}, MaxLen ( 256 ), ModelCorrespondence{"PRS_Product.ProductName"}]
	string Name;

 	[Description ( "Product SKU (stock keeping unit) information." ), MaxLen ( 64 )]
	string SKUNumber;

 	[Description ( "The name of the Product\'s supplier, or entity selling the Product (the manufacturer, reseller, OEM, etc.). Corresponds to the Vendor property in the Product object in the DMTF Solution Exchange Standard." ), Key ( true ), MappingStrings{"MIF.DMTF|ComponentID|001.1"}, MaxLen ( 256 ), ModelCorrespondence{"PRS_Product.Vendor"}]
	string Vendor;

 	[Description ( "Product version information." ), Key ( true ), MappingStrings{"MIF.DMTF|ComponentID|001.3"}, MaxLen ( 64 ), ModelCorrespondence{"PRS_Product.Version"}]
	string Version;

 	[Description ( "If this Product is under warranty, the duration of the warranty in days." ), MappingStrings{"MIF.DMTF|FRU|002.10"}, ModelCorrespondence{"CIM_Product.WarrantyStartDate"}, Units ( "Days" )]
	uint32 WarrantyDuration;

 	[Description ( "If this Product is under warranty, the start date of the warranty." ), MappingStrings{"MIF.DMTF|FRU|002.9"}, ModelCorrespondence{"CIM_Product.WarrantyDuration"}]
	datetime WarrantyStartDate;


};

// CIM_ProductPhysicalComponent

[ASSOCIATION ( true ), Aggregation ( true ),  Composition ( true ), Description ( "Indicates that the referenced PhysicalElement is acquired as part of a Product." ), Version ( "2.7.0" )]
class CIM_ProductPhysicalComponent : CIM_Component {
	[Description ( "The Product." ), Max ( 1 ), Override ( "GroupComponent" )]
	CIM_Product ref GroupComponent;

 	[Description ( "The PhysicalElement which is a part of the Product." ), Override ( "PartComponent" )]
	CIM_PhysicalElement ref PartComponent;


};

// CIM_ProtocolEndpoint

	[Description ( "A communication point from which data can be sent or received. ProtocolEndpoints link system or computer interfaces to LogicalNetworks." ), Version ( "2.10.0" )]
class CIM_ProtocolEndpoint : CIM_ServiceAccessPoint {
	[Description ( "A boolean indicating whether the instrumentation supports the BroadcastReset method." ), Experimental ( true ), MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_PORT_CONFIG_CAPS_T.PortForceLipSupported"}, ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastReset"}]
	boolean BroadcastResetSupported;

 	[MappingStrings{"MIB.IETF|IF-MIB.ifDescr"}, Override ( "Description" )]
	string Description;

 	[MappingStrings{"MIB.IETF|IF-MIB.ifAdminStatus"}, Override ( "EnabledState" )]
	uint16 EnabledState;

 	[Description ( "A string that identifies this ProtocolEndpoint with either a port or an interface on a device. To ensure uniqueness, the Name property should be prepended or appended with information from the Type or OtherTypeDescription properties. The method selected is described in the NameFormat property of this class." ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[Description ( "NameFormat contains the naming heuristic that is selected to ensure that the value of the Name property is unique. For example, you might choose to prepend the name of the port or interface with the Type of ProtocolEndpoint (for example, IPv4) of this instance followed by an underscore." ), MaxLen ( 256 )]
	string NameFormat;

 	[MappingStrings{"MIB.IETF|IF-MIB.ifOperStatus"}, Override ( "OperationalStatus" )]
	uint16 OperationalStatus[];

 	[Description ( "A string that describes the type of ProtocolEndpoint when the Type property of this class (or any of its subclasses) is set to 1 (Other). This property should be set to null when the Type property is any value other than 1." ), MaxLen ( 64 ), ModelCorrespondence{"CIM_ProtocolEndpoint.ProtocolType", "CIM_ProtocolEndpoint.ProtocolIFType"}]
	string OtherTypeDescription;

 	[Description ( "ProtocolIFType is an enumeration that is synchronized with the IANA ifType MIB. The ifType MIB is maintained at the URL, http://www.iana.org/assignments/ianaiftype-mib. Also, additional values defined by the DMTF are included. The property is used to categorize and classify instances of the ProtocolEndpoint class. Note that if the ProtocolIFType is set to 1 (Other), then the type information should be provided in the OtherTypeDescription string property." ), MappingStrings{"MIB.IETF|IF-MIB.ifType"}, ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}, ValueMap{"0", "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", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", "210", "211", "212", "213", "214", "215", "216", "217", "218", "219", "220", "221", "222", "223", "224", "225..4095", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109", "4110", "4111", "4112", "4113", "4114", "4115", "4200", "4201", "4202", "4203", "4204", "4205", "4300", "4301..32767", "32768.."}, Values{"Unknown", "Other", "Regular 1822", "HDH 1822", "DDN X.25", "RFC877 X.25", "Ethernet CSMA/CD", "ISO 802.3 CSMA/CD", "ISO 802.4 Token Bus", "ISO 802.5 Token Ring", "ISO 802.6 MAN", "StarLAN", "Proteon 10Mbit", "Proteon 80Mbit", "HyperChannel", "FDDI", "LAP-B", "SDLC", "DS1", "E1", "Basic ISDN", "Primary ISDN", "Proprietary Point-to-Point Serial", "PPP", "Software Loopback", "EON", "Ethernet 3Mbit", "NSIP", "SLIP", "Ultra", "DS3", "SIP", "Frame Relay", "RS-232", "Parallel", "ARCNet", "ARCNet Plus", "ATM", "MIO X.25", "SONET", "X.25 PLE", "ISO 802.211c", "LocalTalk", "SMDS DXI", "Frame Relay Service", "V.35", "HSSI", "HIPPI", "Modem", "AAL5", "SONET Path", "SONET VT", "SMDS ICIP", "Proprietary Virtual/Internal", "Proprietary Multiplexor", "IEEE 802.12", "Fibre Channel", "HIPPI Interface", "Frame Relay Interconnect", "ATM Emulated LAN for 802.3", "ATM Emulated LAN for 802.5", "ATM Emulated Circuit", "Fast Ethernet (100BaseT)", "ISDN", "V.11", "V.36", "G703 at 64K", "G703 at 2Mb", "QLLC", "Fast Ethernet 100BaseFX", "Channel", "IEEE 802.11", "IBM 260/370 OEMI Channel", "ESCON", "Data Link Switching", "ISDN S/T Interface", "ISDN U Interface", "LAP-D", "IP Switch", "Remote Source Route Bridging", "ATM Logical", "DS0", "DS0 Bundle", "BSC", "Async", "Combat Net Radio", "ISO 802.5r DTR", "Ext Pos Loc Report System", "AppleTalk Remote Access Protocol", "Proprietary Connectionless", "ITU X.29 Host PAD", "ITU X.3 Terminal PAD", "Frame Relay MPI", "ITU X.213", "ADSL", "RADSL", "SDSL", "VDSL", "ISO 802.5 CRFP", "Myrinet", "Voice Receive and Transmit", "Voice Foreign Exchange Office", "Voice Foreign Exchange Service", "Voice Encapsulation", "Voice over IP", "ATM DXI", "ATM FUNI", "ATM IMA", "PPP Multilink Bundle", "IP over CDLC", "IP over CLAW", "Stack to Stack", "Virtual IP Address", "MPC", "IP over ATM", "ISO 802.5j Fibre Token Ring", "TDLC", "Gigabit Ethernet", "HDLC", "LAP-F", "V.37", "X.25 MLP", "X.25 Hunt Group", "Transp HDLC", "Interleave Channel", "FAST Channel", "IP (for APPN HPR in IP Networks)", "CATV MAC Layer", "CATV Downstream", "CATV Upstream", "Avalon 12MPP Switch", "Tunnel", "Coffee", "Circuit Emulation Service", "ATM SubInterface", "Layer 2 VLAN using 802.1Q", "Layer 3 VLAN using IP", "Layer 3 VLAN using IPX", "Digital Power Line", "Multimedia Mail over IP", "DTM", "DCN", "IP Forwarding", "MSDSL", "IEEE 1394", "IF-GSN/HIPPI-6400", "DVB-RCC MAC Layer", "DVB-RCC Downstream", "DVB-RCC Upstream", "ATM Virtual", "MPLS Tunnel", "SRP", "Voice over ATM", "Voice over Frame Relay", "ISDL", "Composite Link", "SS7 Signaling Link", "Proprietary P2P Wireless", "Frame Forward", "RFC1483 Multiprotocol over ATM", "USB", "IEEE 802.3ad Link Aggregate", "BGP Policy Accounting", "FRF .16 Multilink FR", "H.323 Gatekeeper", "H.323 Proxy", "MPLS", "Multi-Frequency Signaling Link", "HDSL-2", "S-HDSL", "DS1 Facility Data Link", "Packet over SONET/SDH", "DVB-ASI Input", "DVB-ASI Output", "Power Line", "Non Facility Associated Signaling", "TR008", "GR303 RDT", "GR303 IDT", "ISUP", "Proprietary Wireless MAC Layer", "Proprietary Wireless Downstream", "Proprietary Wireless Upstream", "HIPERLAN Type 2", "Proprietary Broadband Wireless Access Point to Mulipoint", "SONET Overhead Channel", "Digital Wrapper Overhead Channel", "ATM Adaptation Layer 2", "Radio MAC", "ATM Radio", "Inter Machine Trunk", "MVL DSL", "Long Read DSL", "Frame Relay DLCI Endpoint", "ATM VCI Endpoint", "Optical Channel", "Optical Transport", "Proprietary ATM", "Voice over Cable", "Infiniband", "TE Link", "Q.2931", "Virtual Trunk Group", "SIP Trunk Group", "SIP Signaling", "CATV Upstream Channel", "Econet", "FSAN 155Mb PON", "FSAN 622Mb PON", "Transparent Bridge", "Line Group", "Voice E&M Feature Group", "Voice FGD EANA", "Voice DID", "MPEG Transport", "6To4", "GTP", "Paradyne EtherLoop 1", "Paradyne EtherLoop 2", "Optical Channel Group", "HomePNA", "GFP", "ciscoISLvlan", "actelisMetaLOOP", "Fcip", "IANA Reserved", "IPv4", "IPv6", "IPv4/v6", "IPX", "DECnet", "SNA", "CONP", "CLNP", "VINES", "XNS", "ISDN B Channel Endpoint", "ISDN D Channel Endpoint", "BGP", "OSPF", "UDP", "TCP", "802.11a", "802.11b", "802.11g", "802.11h", "NFS", "CIFS", "DAFS", "WebDAV", "HTTP", "FTP", "NDMP", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ProtocolIFType;

 	[Deprecated{"CIM_ProtocolEndpoint.ProtocolIFType"}, Description ( "Note: This property is deprecated in lieu of the ProtocolIFType enumeration. This deprecation was done to have better alignment between the IF-MIB of the IETF and this CIM class. \nDeprecated description: ProtocolType is an enumeration that provides information to categorize and classify different instances of this class. For most instances, information in this enumeration and the definition of the subclass overlap. However, there are several cases where a specific subclass of ProtocolEndpoint is not required (for example, there is no Fibre Channel subclass of ProtocolEndpoint). Therefore, this property is needed to define the type of Endpoint." ), ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}, ValueMap{"0", "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"}, Values{"Unknown", "Other", "IPv4", "IPv6", "IPX", "AppleTalk", "DECnet", "SNA", "CONP", "CLNP", "VINES", "XNS", "ATM", "Frame Relay", "Ethernet", "TokenRing", "FDDI", "Infiniband", "Fibre Channel", "ISDN BRI Endpoint", "ISDN B Channel Endpoint", "ISDN D Channel Endpoint", "IPv4/v6", "BGP", "OSPF", "MPLS", "UDP", "TCP"}]
	uint16 ProtocolType;

 	[MappingStrings{"MIB.IETF|IF-MIB.ifLastChange"}, Override ( "TimeOfLastStateChange" )]
	datetime TimeOfLastStateChange;


		[Description ( "Send a broadcast reset. A broadcast reset is a request that peers perform a reset. Examples include a parallel SCSI Bus Reset and a Fibre Channel LIP." ), Experimental ( true ), ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastResetSupported"}, ValueMap{"0", "1", "2", "3", "4", "5..0x0FFF", "0x1000..0x7777", "0x8000.."}, Values{"Success", "Not_Supported", "Unspecified Error", "Timeout", "Failed", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}]
	uint32 BroadcastReset(
	
	);
};

// CIM_SCSIProtocolEndpoint

	[Description ( "A SCSIProtocolEndpoint represents the protocol (command) aspects of a logical SCSI port, independent of the connection/transport. SCSIProtocolEndpoint is either directly or indirectly associated to one or more instances of LogicalPort (via PortImplementsEndpoint) depending on the underlying transport. Indirect associations aggregate one or more LogicalPorts using intermediate ProtocolEndpoints (iSCSI, etc). SCSIProtocolEndpoint is also associated to a SCSIProtocolController, representing the SCSI device." ), Experimental ( true ), Version ( "2.8.1000" )]
class CIM_SCSIProtocolEndpoint : CIM_ProtocolEndpoint {
	[Description ( "The supported connection type for this endpoint. The connection type may be needed before the port(s) are associated and also is used in some SCSI commands." ), MappingStrings{"SPC.INCITS-T10 | Protocol Identifier | Values"}, ModelCorrespondence{"CIM_SCSIProtocolEndpoint.Name", "CIM_SCSIProtocolEndpoint.OtherConnectionType"}, ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9"}, Values{"Other", "Fibre Channel", "Parallel SCSI", "SSA", "IEEE 1394", "RDMA", "iSCSI", "SAS", "ADT"}]
	uint16 ConnectionType;

 	[Description ( "The SCSI identifier for the target or initiator device, in the format appropriate for the ConnectionType. If a ConnectionType specific subclass is defined, the subclass may override Name to define the format. For other ConnectionTypes, the format (and content) should match that of PermamnentAddress of the corresponding LogicalPort." ), MappingStrings{"SPC.INCITS-T10 |Protocol Specific Parameters | Name"}, MaxLen ( 256 ), ModelCorrespondence{"CIM_SCSIProtocolEndpoint.ConnectionType", "CIM_SCSIProtocolEndpoint.OtherConnectionType"}, Override ( "Name" )]
	string Name;

 	[Description ( "The connection type, if ConnectionType is \"Other\"." ), ModelCorrespondence{"CIM_SCSIProtocolEndpoint.Name", "CIM_SCSIProtocolEndpoint.ConnectionType"}]
	string OtherConnectionType;

 	[Description ( "For iSCSI, each SCSIProtocolEndpoint MUST act as either a target or an initiator endpoint. Other transports allow a SCSI PE to act as both an initiator and target endpoint. This property indicates which role this ProtocolEndpoint implements." ), ValueMap{"0", "2", "3", "4"}, Values{"Unknown", "Initiator", "Target", "Both Initiator and Target"}]
	uint16 Role;

 	[Description ( "For ports on a target device, the port number, relative to the storage system. 0 is reserved by T10, 1 is port A, 2 is port B, etc. These numbers are used in SCSI commands that operate on target port groups." ), MappingStrings{"SPC.INCITS-T10 | RelativeTargetPort | IdentifierFormat"}, MinValue ( 1 )]
	uint32 TargetRelativePortNumber;


};

// IBMTSDS_SCSIProtocolEndpoint

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A SCSIProtocolEndpoint represents the protocol (command) aspects of a logical SCSI port, independent of the connection/transport. SCSIProtocolEndpoint is either directly or indirectly associated to one or more instances of LogicalPort (via PortImplementsEndpoint) depending on the underlying transport. Indirect associations aggregate one or more LogicalPorts using intermediate ProtocolEndpoints (iSCSI, etc). SCSIProtocolEndpoint is also associated to a SCSIProtocolController, representing the SCSI device." ), Experimental ( true ),  Version ( "2.8.1000" )]
class IBMTSDS_SCSIProtocolEndpoint : CIM_SCSIProtocolEndpoint {
	[Description ( "The supported connection type for this endpoint is Fibre Channel." ), MappingStrings{"SPC.INCITS-T10 | Protocol Identifier | Values"}, ModelCorrespondence{"CIM_SCSIProtocolEndpoint.Name", "CIM_SCSIProtocolEndpoint.OtherConnectionType"}, Override ( "ConnectionType" ), ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9"}, Values{"Other", "Fibre Channel", "Parallel SCSI", "SSA", "IEEE 1394", "RDMA", "iSCSI", "SAS", "ADT"}]
	uint16 ConnectionType = 2;

 	[Description ( "The name of this class. Set to \'IBMTSDS_SCSIProtocolEndpoint\'" ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "Defined to be the same as FCPort.PermanentAddress, which is defined as the WWPN of the port." ), Key ( true ), MappingStrings{"SPC.INCITS-T10 |Protocol Specific Parameters | Name"}, MaxLen ( 256 ), ModelCorrespondence{"CIM_SCSIProtocolEndpoint.ConnectionType", "CIM_SCSIProtocolEndpoint.OtherConnectionType"}, Override ( "Name" )]
	string Name;

 	[Description ( "A string that describes the type of ProtocolEndpoint when the Type property of this class (or any of its subclasses) is set to 1 (Other). This is set to \'SCSI\'." ), MaxLen ( 64 ), ModelCorrespondence{"CIM_ProtocolEndpoint.ProtocolType", "CIM_ProtocolEndpoint.ProtocolIFType"}, Override ( "OtherTypeDescription" )]
	string OtherTypeDescription = "SCSI";

 	[Description ( "ProtocolIFType is an enumeration synchronized with the IANA ifType MIB, maintained at the URL, http://www.iana.org/assignments/ianaiftype-mib. Also, additional values defined by the DMTF are included. All instances of IBMTSDS_SCSIProtocolEndpoint are of type Fibre Channel." ), MappingStrings{"MIB.IETF|IF-MIB.ifType"}, ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}, Override ( "ProtocolIFType" ), ValueMap{"0", "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", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", "210", "211", "212", "213", "214", "215", "216", "217", "218", "219", "220", "221", "222", "223", "224", "225..4095", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109", "4110", "4111", "4112", "4113", "4114", "4115", "4200", "4201", "4202", "4203", "4204", "4205", "4300", "4301..32767", "32768.."}, Values{"Unknown", "Other", "Regular 1822", "HDH 1822", "DDN X.25", "RFC877 X.25", "Ethernet CSMA/CD", "ISO 802.3 CSMA/CD", "ISO 802.4 Token Bus", "ISO 802.5 Token Ring", "ISO 802.6 MAN", "StarLAN", "Proteon 10Mbit", "Proteon 80Mbit", "HyperChannel", "FDDI", "LAP-B", "SDLC", "DS1", "E1", "Basic ISDN", "Primary ISDN", "Proprietary Point-to-Point Serial", "PPP", "Software Loopback", "EON", "Ethernet 3Mbit", "NSIP", "SLIP", "Ultra", "DS3", "SIP", "Frame Relay", "RS-232", "Parallel", "ARCNet", "ARCNet Plus", "ATM", "MIO X.25", "SONET", "X.25 PLE", "ISO 802.211c", "LocalTalk", "SMDS DXI", "Frame Relay Service", "V.35", "HSSI", "HIPPI", "Modem", "AAL5", "SONET Path", "SONET VT", "SMDS ICIP", "Proprietary Virtual/Internal", "Proprietary Multiplexor", "IEEE 802.12", "Fibre Channel", "HIPPI Interface", "Frame Relay Interconnect", "ATM Emulated LAN for 802.3", "ATM Emulated LAN for 802.5", "ATM Emulated Circuit", "Fast Ethernet (100BaseT)", "ISDN", "V.11", "V.36", "G703 at 64K", "G703 at 2Mb", "QLLC", "Fast Ethernet 100BaseFX", "Channel", "IEEE 802.11", "IBM 260/370 OEMI Channel", "ESCON", "Data Link Switching", "ISDN S/T Interface", "ISDN U Interface", "LAP-D", "IP Switch", "Remote Source Route Bridging", "ATM Logical", "DS0", "DS0 Bundle", "BSC", "Async", "Combat Net Radio", "ISO 802.5r DTR", "Ext Pos Loc Report System", "AppleTalk Remote Access Protocol", "Proprietary Connectionless", "ITU X.29 Host PAD", "ITU X.3 Terminal PAD", "Frame Relay MPI", "ITU X.213", "ADSL", "RADSL", "SDSL", "VDSL", "ISO 802.5 CRFP", "Myrinet", "Voice Receive and Transmit", "Voice Foreign Exchange Office", "Voice Foreign Exchange Service", "Voice Encapsulation", "Voice over IP", "ATM DXI", "ATM FUNI", "ATM IMA", "PPP Multilink Bundle", "IP over CDLC", "IP over CLAW", "Stack to Stack", "Virtual IP Address", "MPC", "IP over ATM", "ISO 802.5j Fibre Token Ring", "TDLC", "Gigabit Ethernet", "HDLC", "LAP-F", "V.37", "X.25 MLP", "X.25 Hunt Group", "Transp HDLC", "Interleave Channel", "FAST Channel", "IP (for APPN HPR in IP Networks)", "CATV MAC Layer", "CATV Downstream", "CATV Upstream", "Avalon 12MPP Switch", "Tunnel", "Coffee", "Circuit Emulation Service", "ATM SubInterface", "Layer 2 VLAN using 802.1Q", "Layer 3 VLAN using IP", "Layer 3 VLAN using IPX", "Digital Power Line", "Multimedia Mail over IP", "DTM", "DCN", "IP Forwarding", "MSDSL", "IEEE 1394", "IF-GSN/HIPPI-6400", "DVB-RCC MAC Layer", "DVB-RCC Downstream", "DVB-RCC Upstream", "ATM Virtual", "MPLS Tunnel", "SRP", "Voice over ATM", "Voice over Frame Relay", "ISDL", "Composite Link", "SS7 Signaling Link", "Proprietary P2P Wireless", "Frame Forward", "RFC1483 Multiprotocol over ATM", "USB", "IEEE 802.3ad Link Aggregate", "BGP Policy Accounting", "FRF .16 Multilink FR", "H.323 Gatekeeper", "H.323 Proxy", "MPLS", "Multi-Frequency Signaling Link", "HDSL-2", "S-HDSL", "DS1 Facility Data Link", "Packet over SONET/SDH", "DVB-ASI Input", "DVB-ASI Output", "Power Line", "Non Facility Associated Signaling", "TR008", "GR303 RDT", "GR303 IDT", "ISUP", "Proprietary Wireless MAC Layer", "Proprietary Wireless Downstream", "Proprietary Wireless Upstream", "HIPERLAN Type 2", "Proprietary Broadband Wireless Access Point to Mulipoint", "SONET Overhead Channel", "Digital Wrapper Overhead Channel", "ATM Adaptation Layer 2", "Radio MAC", "ATM Radio", "Inter Machine Trunk", "MVL DSL", "Long Read DSL", "Frame Relay DLCI Endpoint", "ATM VCI Endpoint", "Optical Channel", "Optical Transport", "Proprietary ATM", "Voice over Cable", "Infiniband", "TE Link", "Q.2931", "Virtual Trunk Group", "SIP Trunk Group", "SIP Signaling", "CATV Upstream Channel", "Econet", "FSAN 155Mb PON", "FSAN 622Mb PON", "Transparent Bridge", "Line Group", "Voice E&M Feature Group", "Voice FGD EANA", "Voice DID", "MPEG Transport", "6To4", "GTP", "Paradyne EtherLoop 1", "Paradyne EtherLoop 2", "Optical Channel Group", "HomePNA", "GFP", "ciscoISLvlan", "actelisMetaLOOP", "Fcip", "IANA Reserved", "IPv4", "IPv6", "IPv4/v6", "IPX", "DECnet", "SNA", "CONP", "CLNP", "VINES", "XNS", "ISDN B Channel Endpoint", "ISDN D Channel Endpoint", "BGP", "OSPF", "UDP", "TCP", "802.11a", "802.11b", "802.11g", "802.11h", "NFS", "CIFS", "DAFS", "WebDAV", "HTTP", "FTP", "NDMP", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ProtocolIFType = 1;

 	[Description ( "For iSCSI, each SCSIProtocolEndpoint MUST act as either a target or an initiator endpoint. Other transports allow a SCSI PE to act as both an initiator and target endpoint. This property indicates which role this ProtocolEndpoint implements." ), Override ( "Role" ), ValueMap{"0", "2", "3", "4"}, Values{"Unknown", "Initiator", "Target", "Both Initiator and Target"}]
	uint16 Role = 3;

 	[Description ( "The scoping System\'s CreationClassName. Set to \'IBMTSDS_StorageSystem\'" ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_System.Name" )]
	string SystemName;


};

// IBMTSDS_SAPAvailableForElement

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_SAPAvailableForElement : CIM_SAPAvailableForElement {
	[Description ( "The Service Access Point that is available." ), Key ( true ), Override ( "AvailableSAP" )]
	IBMTSDS_SCSIProtocolEndpoint ref AvailableSAP;

 	[Description ( "The ManagedElement for which the SAP is available." ), Key ( true ), Override ( "ManagedElement" )]
	IBMTSDS_SCSIProtocolController ref ManagedElement;


};

// CIM_IndicationFilter

	[Description ( "CIM_IndicationFilter defines the criteria for generating an Indication and what data should be returned in the Indication. It is derived from CIM_ManagedElement to allow modeling the dependency of the filter on a specific service." ), Version ( "2.6.0" )]
class CIM_IndicationFilter : CIM_ManagedElement {
	[Description ( "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, it allows all instances of this class and its subclasses to be uniquely identified." ), Key ( true ), MaxLen ( 256 )]
	string CreationClassName;

 	[Description ( "The name of the filter." ), Key ( true )]
	string Name;

 	[Description ( "A query expression that defines the condition(s) under which Indications will be generated. For some Indication classes, the query expression may also define the instance properties to be copied to the CIM_InstIndication\'s SourceInstance and PreviousInstance properties. Query language semantics include projection (e.g., Select), range (e.g., From) and predicate (e.g., Where)." ), ModelCorrespondence{"CIM_IndicationFilter.QueryLanguage"}, Required ( true )]
	string Query;

 	[Description ( "The language in which the query is expressed." ), Required ( true )]
	string QueryLanguage;

 	[Description ( "The path to a local namespace where the Indications originate. If NULL, the namespace of the Filter registration is assumed." )]
	string SourceNamespace;

 	[Description ( "A System\'s CreationClassName. The Filter is defined in the context of a CIM_System, where it is hosted or to which it applies. In a future release, a weak relationship will be explicitly added to the model. This is not done now to allow further refinement of the Filter definition and its inheritance tree. Keys are defined now to allow the class to be instantiated." ), Key ( true ), MaxLen ( 256 )]
	string SystemCreationClassName;

 	[Description ( "A System\'s Name. The Filter is defined in the context of a CIM_System, where it is hosted or to which it applies. In a future release, a weak relationship will be explicitly added to the model. This is not done now to allow further refinement of the Filter definition and its inheritance tree. Keys are defined now to allow the class to be instantiated." ), Key ( true ), MaxLen ( 256 )]
	string SystemName;


};

// CIM_ListenerDestination

	[Abstract ( true ), Description ( "The description of a CIM Listener destination. A CIM_Listener is an entity capable of receiving CIM Export Messages (e.g., Indications or responses to an asynchronous CIM Operation)." ), Version ( "2.8.0" )]
class CIM_ListenerDestination : CIM_ManagedElement {
	[Description ( "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, it allows all instances of this class and its subclasses to be uniquely identified." ), Key ( true ), MaxLen ( 256 )]
	string CreationClassName;

 	[Description ( "Indicates the name of the CIM Listener destination." ), Key ( true ), MaxLen ( 256 )]
	string Name;

 	[Description ( "A string describing (\"Other\") values for PersistenceType. This value MUST be set to a non NULL value when the PersistenceType is 1 (\"Other\"). For all other values of PersistenceType, the value of OtherPersistenceType MUST be NULL." ), ModelCorrespondence{"CIM_ListenerDestination.PersistenceType"}]
	string OtherPersistenceType;

 	[Description ( "Describes the Persistence Type of the destination defined by this instance. If the value of PersistenceType is not specified, the value of PersistenceType MUST be treated as 2 (\"Permanent\"). A value of 2 (\"Permanent\") declares that the destination is always expected to be available (e.g., system log file). Inability to access this destination MUST be treated as an error condition. A value of 3 (\"Transient\") indicates that the destination is short-lived. Inability to access the destination MAY be treated as a normal termination condition. Subscriptions with \"Transient\" destinations MAY be deleted when the destination terminates or is no longer available." ), ModelCorrespondence{"CIM_ListenerDestination.OtherPersistenceType"}, ValueMap{"1", "2", "3"}, Values{"Other", "Permanent", "Transient"}]
	uint16 PersistenceType;

 	[Description ( "A System\'s CreationClassName. A CIM Listener destination is defined in context of a CIM_System (e.g., the sending system." ), Key ( true ), MaxLen ( 256 )]
	string SystemCreationClassName;

 	[Description ( "A System\'s Name. A CIM Listener destination is defined in context of a CIM_System (e.g., the sending system." ), Key ( true ), MaxLen ( 256 )]
	string SystemName;


};

// CIM_IndicationSubscription

[ASSOCIATION ( true ),  Description ( "CIM_IndicationSubscription describes a flow of Indications. The flow is specified by the referenced Filter, and directed to the referenced destination or process in the Handler. Property values of the referenced CIM_IndicationFilter instance and CIM_ListenerDestination instance MAY significantly effect the definition of the subscription. E.g., a subscription associated with a \"Transient\" destination MAY be deleted when the destination terminates or is no longer available." ), Version ( "2.8.1000" )]
class CIM_IndicationSubscription {
	[Description ( "Set to TRUE if a Listener should receive an IndicationSubscriptionAlert if a state change affects the subscription. Otherwise it is set to FALSE." ), Experimental ( true )]
	boolean AlertOnStateChange = false;

 	[Description ( "The FailureTriggerTimeInterval is used by the client to specify a recommended minimum delay before the OnFatalErrorPolicy is implemented." ), Units ( "Seconds" )]
	uint64 FailureTriggerTimeInterval;

 	[Description ( "The Filter that defines the criteria and data of the possible Indications of this subscription." ), Key ( true )]
	CIM_IndicationFilter ref Filter;

 	[Description ( "The Handler addressing delivery of the possible Indications of this subscription." ), Key ( true )]
	CIM_ListenerDestination ref Handler;

 	[Description ( "Defines the desired behavior for a subscription when a fatal error occurs in one of the Indication processing subcomponents (e.g., Indication processor, Indication or instance provider, or Indication handler) and the Indication cannot be successfully sent. Specifically, a failure implies that some aspect of Indication generation, processing or dispatch is no longer functioning and Indications may be lost. If the value of OnFatalErrorPolicy is 2 (\"Ignore\") or not set (NULL), the subscription MUST continue to be processed in a \'best effort\' mode. This mode of operation can lead to unpredictable, and potentially misleading results, because Indications may be lost. If the value is 3 (\"Disable\"), the subscription MUST be disabled. With this policy, no new Indications will be generated or dispatched until the subscription is explicitly enabled. This is accomplished via the property, SubscriptionState. If the value is 4 (\"Remove\"), the subscription MUST be deleted. Selecting this policy has the same effect as issuing a DeleteInstance operation on this subscription instance." ), ValueMap{"1", "2", "3", "4"}, Values{"Other", "Ignore", "Disable", "Remove"}]
	uint16 OnFatalErrorPolicy;

 	[Description ( "A string defining \"Other\" values for OnFatalErrorPolicy. This value MUST be set to a non NULL value when OnFatalErrorPolicy is set to a value of 1 (\"Other\"). For all other values, the OtherOnFatalErrorPolicy MUST be NULL." )]
	string OtherOnFatalErrorPolicy;

 	[Description ( "A string defining \"Other\" values for RepeatNotificationPolicy. This value MUST be set to a non NULL value when RepeatNotificationPolicy is set to a value of 1 (\"Other\"). For all other values, the OtherRepeatNotificationPolicy MUST be NULL." )]
	string OtherRepeatNotificationPolicy;

 	[Description ( "A string defining \"Other\" values for SubscriptionState. This value MUST be set to a non NULL value when SubscriptionState is set to a value of 1 (\"Other\"). For all other values, the OtherSubscriptionState MUST be NULL." )]
	string OtherSubscriptionState;

 	[Description ( "Defines the count property for the repeat notification policy calculation." )]
	uint16 RepeatNotificationCount;

 	[Description ( "Defines the gap interval for the repeat notification policy calculation." ), Units ( "Seconds" )]
	uint64 RepeatNotificationGap;

 	[Description ( "Defines the time interval for the repeat notification policy calculation." ), Units ( "Seconds" )]
	uint64 RepeatNotificationInterval;

 	[Description ( "The RepeatNotificationPolicy property defines the desired behavior for handling Indications that report the occurrence of the same underlying event (e.g., the disk is still generating I/O errors and has not yet been repaired). The defined semantics for the RepeatNotificationCount, RepeatNotificationInterval, and RepeatNotificationGap properties depend on the value of RepeatNotificationPolicy, but values for these properties MUST be set if the property is defined for the selected policy. If the value of RepeatNotificationPolicy is 0 (\"Unknown\") or not set, no special processing for repeat Indications is defined by the subscription. The semantics associated with the handling of repeat Indications MAY be defined by the Indication processing subcomponents. If the value of RepeatNotificationPolicy is 2 (\"None\"), special processing of repeat Indications MUST NOT be performed. If the value is 3 (\"Suppress\") the first RepeatNotificationCount Indications, describing the same event, MUST be sent and all subsequent Indications for this event suppressed for the remainder of the time interval RepeatNotificationInterval. A new interval starts when the next Indication for this event is received. If the value of RepeatNotificationPolicy is 4 (\"Delay\") and an Indication is received, this Indication MUST be suppressed if, including this Indication, RepeatNoticationCount or fewer Indications for this event have been received during the prior time interval defined by RepeatNotificationInterval. If this Indication is the RepeatNotificationCount + 1 Indication, this Indication MUST be sent and all subsequent Indications for this event ignored until the RepeatNotificationGap has elapsed. A RepeatNotificationInterval MAY NOT overlap a RepeatNotificationGap time interval." ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Unknown", "Other", "None", "Suppress", "Delay"}]
	uint16 RepeatNotificationPolicy;

 	[Description ( "SubscriptionDuration defines the desired length of the subscription. Indications generated after the duration of the subscription has exceeded SubscriptionDuration MUST NOT be sent. The duration of a subscription MAY be changed by modifying this property. An expired subscription MAY be deleted and MUST NOT be modified. If the value of SubscriptionDuration is not set, the subscription MUST be treated as having no expiration date." ), Units ( "Seconds" ), Write ( true )]
	uint64 SubscriptionDuration;

 	[Description ( "SubscriptionStartTime is the time the subscription was started. The value of this property is computed based on the notion of date and time of the ManagedSystemElement running the Indication processing subcomponents." )]
	datetime SubscriptionStartTime;

 	[Description ( "Indicates the current processing state of the subscription." ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Unknown", "Other", "Enabled", "Enabled Degraded", "Disabled"}, Write ( true )]
	uint16 SubscriptionState;

 	[Description ( "SubscriptionTimeRemaining is a computed value that provides a snapshot of the time remaining in the Subscription." ), Units ( "Seconds" )]
	uint64 SubscriptionTimeRemaining;

 	[Description ( "Date and time of the last state change. This value is based on the notion of local date and time of the Managed System Element running the Indication processing subcomponents." )]
	datetime TimeOfLastStateChange;


};

// IBMTSDS_HostedPrivilegeManagementService

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_HostedPrivilegeManagementService : CIM_HostedService {
	[Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_StorageSystem ref Antecedent;

 	[Key ( true ), Override ( "Dependent" )]
	IBMTSDS_PrivilegeManagementService ref Dependent;


};

// IBMTSDS_ArraySiteBasedOnDiskExtent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_DiskExtent and IBMTSDS_ArraySiteExtent. It is strongly suggested to treat this as a generic BasedOnassociation, to be traversed from Primordial StorageExtent to the volume, rather than a vendor or device specific association.Only valid for DS." ),  Version ( "2.6.0" )]
class IBMTSDS_ArraySiteBasedOnDiskExtent : CIM_CompositeExtentBasedOn {
	[Description ( "The lower level StorageExtent." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_DiskExtent ref Antecedent;

 	[Description ( "The higher level StorageExtent." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_ArraySiteExtent ref Dependent;

 	[Description ( "EndingAddress indicates where in lower level storage, the higher level Extent ends. This property is useful when mapping non-contiguous Extents into a higher level grouping. This is unknown, and set to 0." )]
	uint64 EndingAddress = 0;

 	[Description ( "Not supported. Set to 0." )]
	uint16 OrderIndex = 0;

 	[Description ( "StartingAddress indicates where in lower level storage, the higher level Extent begins. This is unknown, and set to 0." )]
	uint64 StartingAddress = 0;


};

// IBMTSDS_RankPoolCapabilities

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This Capabilities class describes the RankPool. A Rank takes the same redundacy capabilities as the Array that it is create from." ),  Version ( "2.8.1000" )]
class IBMTSDS_RankPoolCapabilities : CIM_StorageCapabilities {
	[Description ( "DataRedundancyDefault describes the default number of complete copies of data that can be maintained. This is set to DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyMin"}, Override ( "DataRedundancyDefault" )]
	uint16 DataRedundancyDefault;

 	[Description ( "DataRedundancyMax describes the maximum number of complete copies of data that can be maintained. RAID5 is 1, RAID10 is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMin", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMax" )]
	uint16 DataRedundancyMax;

 	[Description ( "DataRedundancyMin describes the minimum number of complete copies of data that can be maintained. RAID5 is 1, RAID10 is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMin" )]
	uint16 DataRedundancyMin;

 	[Description ( "The user friendly name for this instance of Capabilities. In addition, the user friendly name can be used as a index property for a search of query. This will be of the form \'Capablities for Rank <RankPool Name>\'." ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Enumeration indicating the type of element to which this StorageCapabilities applies." ), Override ( "ElementType" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "Reserved", "Any Type", "StorageVolume", "StorageExtent", "StoragePool", "StorageConfigurationService", "LogicalDisk"}]
	uint16 ElementType = 5;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. This will be the same as RankPool.InstanceID." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[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"}, Override ( "NoSinglePointOfFailure" )]
	boolean NoSinglePointOfFailure = true;

 	[Description ( "Indicates the default value for the NoSinglePointOfFailure property." ), ModelCorrespondence{"CIM_StorageCapabilities.NoSinglePointOfFailure"}, Override ( "NoSinglePointOfFailureDefault" )]
	boolean NoSinglePointOfFailureDefault = true;

 	[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. This is set to PackageRedundancyMin." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyMax"}, Override ( "PackageRedundancyDefault" )]
	uint16 PackageRedundancyDefault = 1;

 	[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. For RAID5 and RAID10 this is 2." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMax" )]
	uint16 PackageRedundancyMax = 2;

 	[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. For RAID5 and RAID10 this is 1." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMax", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMin" )]
	uint16 PackageRedundancyMin = 1;

 	[Description ( "The types of elements that can be created from this pool." ), IBMExtension ( "5.2.0.650" ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
	uint16 SupportedElementTypes[] = {2};


};

// IBMTSDS_ExtentTypeSettingToRankPoolCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This association define StorageSettings that reflect the capabilities of the associated StorageCapabilities. The associated ExtentType setting can be passed into CreateOrModifyStoragePool as the Goal when the RankPool is passed in as InPools. Only valid for DS." ), Experimental ( true ),  Version ( "2.8.1000" )]
class IBMTSDS_ExtentTypeSettingToRankPoolCapabilities : CIM_StorageSettingsAssociatedToCapabilities {
	[Description ( "The RankPoolCapabilities." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_RankPoolCapabilities ref Antecedent;

 	[Description ( "The default association associates the setting that will be used to create or modify a Storage Element if a no setting is passed as a Goal. The default is the ExtentType of the RankPool." ), Required ( true )]
	boolean DefaultSetting;

 	[Description ( "The ExtentTypeSetting." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_ExtentTypeSetting ref Dependent;


};

// IBMTSDS_ArrayPoolToCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Assocation between IBMTSDS_ArrayPool and IBMTSDS_ArraySitePoolCapabilities. The cardinality is 1:1. Only valid for DS." ),  Version ( "2.7.0" )]
class IBMTSDS_ArrayPoolToCapabilities : CIM_ElementCapabilities {
	[Description ( "The ArrayPoolCapabilities." ), Key ( true ), Override ( "Capabilities" )]
	IBMTSDS_ArrayPoolCapabilities ref Capabilities;

 	[Description ( "The ArrayPool." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_ArrayPool ref ManagedElement;


};

// CIM_ProcessIndication

	[Abstract ( true ), Description ( "An abstract superclass for specialized Indication classes, addressing specific changes and alerts published by providers and instrumentation. Subclasses include AlertIndication (with properties such as PerceivedSeverity and ProbableCause), and SNMPTrapIndication (which recasts Traps as CIM indications)." ), INDICATION ( true ), Version ( "2.6.0" )]
class CIM_ProcessIndication : CIM_Indication {
};

// IBMTSDS_StorageManagementSystem

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Abstract ( true ), Description ( "IBMTSDS_StorageManagementSystem reprents the ComputerSystem that the CIM Agent is running on." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageManagementSystem : CIM_System {
	[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. The name of this class is \'IBMTSDS_StorageManagementSystem\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "The Description property provides a textual description of the object. This value is set to \'Top level system for the IBM CIM Agent for the DS Open API\'." ), Override ( "Description" )]
	string Description = "IBM CIM Agent for the DS Open API Storage Management System";

 	[Description ( "A user-friendly name for the object. This property allows each instance to define a user-friendly name IN ADDITION TO its key properties/identity data, and description information. \nIn this case the ElementName is the same as CreationClassName." ), Override ( "ElementName" )]
	string ElementName = "IBM CIM Agent for the DS Open API Storage Management System";

 	[Description ( "The inherited Name serves as key of a System instance in an enterprise environment. In order to ensure uniqueness, this value will be of the form \'<IP address of system>\'." ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	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 subclass\' heuristic." ), MaxLen ( 64 )]
	string NameFormat = "IP";

 	[ArrayType ( "Indexed" ), Description ( "If you are able to get the OperationalStatus property, then the status should be OK. If the status is not OK, you should not be able to retreive the OperationalStatus property." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, Override ( "OperationalStatus" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[] = {2};


};

// IBMTSDS_CIMXMLCommunicationMechanism

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This class specializes ObjectManagerCommunicationMechanism, adding properties specific to the CIM-XML protocol (XML encoding and CIM Operations)." ),  Version ( "2.6.0" )]
class IBMTSDS_CIMXMLCommunicationMechanism : CIM_CIMXMLCommunicationMechanism {
	[ArrayType ( "Indexed" ), Description ( "Enumerated array describing the types of authentication supported by the ObjectManager, using the encoding/protocol. specified in the property, CommunicationMechanism. The defined values represent the authentication defined in the DMTF document, Specification for CIM Operations over HTTP. Currently only basic authentication is supported." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.AuthenticationMechanismDescriptions"}, Override ( "AuthenticationMechanismsSupported" ), Required ( true ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Unknown", "Other", "None", "Basic", "Digest"}]
	uint16 AuthenticationMechanismsSupported[] = {3};

 	[Description ( "Describes whether the CIM Server is strictly validating (validates the XML document against the DTD) or not (loosely validating)." ), Override ( "CIMValidated" ), Required ( true )]
	boolean CIMValidated;

 	[Description ( "CommunicationMechanism describes an encoding and protocol which can be used to communicate with the ObjectManager. At this time, only one encoding and protocol are standardized by the DMTF - \"CIM-XML\"." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.OtherCommunicationMechanismDescription"}, Override ( "CommunicationMechanism" ), Required ( true ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Other", "CIM-XML"}]
	uint16 CommunicationMechanism = 2;

 	[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. This value is set to \'IBMTSDS_CIMXMLCommunicationMechanism\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "A user-friendly name for the object. This property allows each instance to define a user-friendly name IN ADDITION TO its key properties/identity data, and description information. \nIn this case the ElementName is the same as its Name." ), Override ( "ElementName" )]
	string ElementName = "CIM-XML Communication Mechanism";

 	[ArrayType ( "Indexed" ), Description ( "Enumerated array describing the types of operations supported by the ObjectManager, using this encoding/protocol. The enumeration is based on the Functional Profiles defined for conformance in the DMTF document, Specification for CIM Operations over HTTP." ), ModelCorrespondence{"CIM_ObjectManagerCommunicationMechanism.FunctionalProfileDescriptions"}, Override ( "FunctionalProfilesSupported" ), Required ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, Values{"Unknown", "Other", "Basic Read", "Basic Write", "Schema Manipulation", "Instance Manipulation", "Association Traversal", "Query Execution", "Qualifier Declaration", "Indications"}]
	uint16 FunctionalProfilesSupported[] = {2, 3, 5, 6, 7, 8, 9};

 	[Description ( "Boolean indicating whether the ObjectManager supports multiple operation requests (TRUE) or only simple requests (FALSE)." ), Override ( "MultipleOperationsSupported" ), Required ( true )]
	boolean MultipleOperationsSupported = false;

 	[Description ( "The Name property uniquely identifies the ServiceAccessPoint and provides an indication of the functionality that is managed. This functionality is described in more detail in the object\'s Description property." ), Key ( true ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[ArrayType ( "Indexed" ), Description ( "If you are able to get the OperationalStatus property, then the status should be OK. If the status is not OK, you should not be able to retreive the OperationalStatus property." ), ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}, Override ( "OperationalStatus" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "..", "0x8000.."}, Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error", "Starting", "Stopping", "Stopped", "In Service", "No Contact", "Lost Communication", "Aborted", "Dormant", "Supporting Entity in Error", "Completed", "Power Mode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 OperationalStatus[] = {2};

 	[Description ( "The scoping System\'s CreationClassName." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" ), Propagated ( "CIM_System.CreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" ), Propagated ( "CIM_System.Name" )]
	string SystemName;

 	[Description ( "Enumeration describing the CIM-XML protocol version supported by the ObjectManager." ), Override ( "Version" ), Required ( true ), ValueMap{"1.0", "1.1", "1.2"}]
	string Version = "1.2";


};

// IBMTSDS_HostedAccessPoint

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CIM_HostedAccessPoint is an association between a Service AccessPoint and a system on which it is provided. The cardinality of this association is one-to-many and it is weak with respect to the System. Each System can host many ServiceAccessPoints. Heuristic: If the implementation of the ServiceAccessPoint is modeled, it must be implemented by a Device or SoftwareFeature that is part of the System that is Hosing the ServiceAccessPoint." ),  Version ( "2.10.0" )]
class IBMTSDS_HostedAccessPoint : CIM_HostedAccessPoint {
	[Description ( "The hosting System." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_StorageManagementSystem ref Antecedent;

 	[Description ( "The SAPs that are hosted on this System." ), Key ( true ), Override ( "Dependent" ), Weak ( true )]
	IBMTSDS_CIMXMLCommunicationMechanism ref Dependent;


};

// IBMTSDS_DeviceConfigurationService

	[Description ( "This service allows the active management of the devices that a CIM Agent is configured to." ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_DeviceConfigurationService : CIM_Service {
	[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. The name of this class is \'IBMTSDS_DeviceConfigurationService\'." ), Key ( true ), MaxLen ( 256 ), Override ( "CreationClassName" )]
	string CreationClassName;

 	[Description ( "Will be of the form \'DeviceConfigurationService for StorageManagementSystem at <StorageManagementSystem.Name>\'." ), Override ( "ElementName" )]
	string ElementName;

 	[Description ( "The Name property is used to uniquely identify a CIM Server. The CIM Server MUST ensure that this value is globally unique. In order to ensure uniqueness, this value will be of the form \'IBMTSDS:<IP address of system>\'." ), Key ( true ), Override ( "Name" )]
	string Name;

 	[Description ( "The scoping System\'s CreationClassName. Each StorageMangementSystem has one DeviceConfigurationService. Set to \'IBMTSDS_StorageManagementSystem\'." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemCreationClassName" )]
	string SystemCreationClassName;

 	[Description ( "The scoping System\'s Name." ), Key ( true ), MaxLen ( 256 ), Override ( "SystemName" )]
	string SystemName;


		[Description ( "Adds a storage device to the CIM Agent device configuration. When errors occur with the connection to the device, the device is still added to the configuration of the CIM Agent. If the configuration needs to be changed for any reason, it should be removed and then re-added." ), IBMExtension ( "5.2.0.650" ), Static ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "36893", "36897", "36900", "37646", "45057..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Invalid DeviceType parameter", "Not a valid IP address", "The specified device is invalid.", "The ESSID of IP does not match the ESSID of IP2.", "Device return codes - see ReturnCodes.txt"}]
	uint32 AddDevice(
		[Description ( "The created DeviceConfiguration. If unsuccessful, null is returned." ), IBMExtension ( "5.2.0.650" ), IN ( false ), OUT ( true )]
		IBMTSDS_DeviceConfiguration ref DeviceConfig,
	 	[Description ( "DeviceType specifies the type of Device being added. Currently only DS6000/8000 is supported." ), IBMExtension ( "5.2.0.650" ), IN ( true ), ValueMap{"0", "1", "2"}, Values{"DS6000/8000", "ESS CLI", "ESS Copy Services Server"}]
		uint16 DeviceType,
	 	[Description ( "The IP address of the Storage Device to be added." ), IBMExtension ( "5.2.0.650" ), IN ( true ), REQUIRED ( true )]
		string IPAddress,
	 	[Description ( "The secondary IP address of the Storage Device to be added. This is optional." ), IBMExtension ( "5.2.0.650" ), IN ( true )]
		string IPAddress2,
	 	[Description ( "The Password of the Storage Device to be added." ), IBMExtension ( "5.2.0.650" ), IN ( true ), REQUIRED ( true )]
		string Password,
	 	[Description ( "The User Name of the Storage Device to be added." ), IBMExtension ( "5.2.0.650" ), IN ( true ), REQUIRED ( true )]
		string UserName
	);
	 	[Description ( "Removes a storage device from the CIM Agent device configuration." ), IBMExtension ( "5.2.0.650" ), Static ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7..4095", "36892", "45057..65535"}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Invalid DeviceConfig parameter", "Device return codes - see ReturnCodes.txt"}]
	uint32 RemoveDevice(
		[Description ( "Device to be removed." ), IBMExtension ( "5.2.0.650" ), IN ( true )]
		IBMTSDS_DeviceConfiguration ref DeviceConfig
	);
};

// IBMTSDS_ConcreteDependencyDeviceConfiguration

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This is an assocation between the DeviceConfiguration and the DeviceConfiguationService instance that was used to create it." ),  Version ( "2.10.0" )]
class IBMTSDS_ConcreteDependencyDeviceConfiguration : CIM_ConcreteDependency {
	[Description ( "The DeviceConfigurationService." ), Override ( "Antecedent" )]
	IBMTSDS_DeviceConfigurationService ref Antecedent;

 	[Description ( "The DeviceConfiguration." ), Override ( "Dependent" )]
	IBMTSDS_DeviceConfiguration ref Dependent;


};

// IBMTSDS_HostedArrayPool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "SystemStoragePool is a specialization of SystemComponent association that establishes that the StoragePool is defined in the context of the System." ),  Version ( "2.7.0" )]
class IBMTSDS_HostedArrayPool : CIM_HostedStoragePool {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The StoragePool that is a component of a System." ), Key ( true ), Override ( "PartComponent" )]
	IBMTSDS_ArrayPool ref PartComponent;


};

// CIM_CommMechanismForManager

[ASSOCIATION ( true ),  Description ( "CommMechanismForManager is an association between an ObjectManager and an ObjectManagerCommunicationMechanism class. The latter describes a possible encoding/protocol/ set of operations for accessing the referenced ObjectManager." ), Version ( "2.6.0" )]
class CIM_CommMechanismForManager : CIM_ServiceAccessBySAP {
	[Description ( "The specific ObjectManager whose communication mechanism is described." ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	CIM_ObjectManager ref Antecedent;

 	[Description ( "The encoding/protocol/set of operations that may be used to communicate with the referenced ObjectManager." ), Min ( 1 ), Override ( "Dependent" )]
	CIM_ObjectManagerCommunicationMechanism ref Dependent;


};

// CIM_ElementSoftwareIdentity

[ASSOCIATION ( true ),  Description ( "ElementSoftwareIdentity allows a Managed Element to report its software related asset information (firmware, drivers, configuration software, and etc.)" ), Version ( "2.10.0" )]
class CIM_ElementSoftwareIdentity : CIM_Dependency {
	[Description ( "A LogicalElement\'s Software Asset." ), Override ( "Antecedent" )]
	CIM_SoftwareIdentity ref Antecedent;

 	[Description ( "The ManagedElement that requires or uses the software." ), Override ( "Dependent" )]
	CIM_ManagedElement ref Dependent;

 	[Description ( "A collection of properties describing the status of the software on the managed element. Multiple properties could be set at the same time. For example a ElementSoftwareStatus could have \"Default\", \"Current\" and \"FallBack\" set at the same time. \n\"Current\" indicates that the software is currently running on the Managed Element. \n\"Next\" indicates that the software is currently loaded and will run after the next reset or reboot. \n\"FallBack\" indicates that this version of software will run should the current version scheduled to load fail to run on the next reset or reboot. \n\"Default\" indicates the default version of the software that was originally shipped by the manufacturer." ), Experimental ( true ), ValueMap{"0", "2", "3", "4", "5", "6..32767", "32768..65535"}, Values{"Unknown", "Current", "Next", "FallBack", "Default", "DMTF Reserved", "Vendor Reserved"}]
	uint16 ElementSoftwareStatus[];

 	[Description ( "Describes the upgrade condition, when UpgradeCondition is set to 1 (\"Other\")." ), ModelCorrespondence{"CIM_ElementSoftwareIdentity.UpgradeCondition"}]
	string OtherUpgradeCondition;

 	[Description ( "Indicates the element\'s ability to upgrade this software asset. \n\'Resides off element\'(2), indicates the persistence of the software is outside of the element. Typically for a element this software is part of the OperatingSystem is typically upgradeable. \n\'Owner Upgradeable\' (3), indicates the persistence of the software is on the element and is upgradeable by the owner. \n\'FactoryUpgradeable\' (4),indicates the persistence of the software is on the element and is upgradeable by the manufacturer. \n\'Not Upgradeable\' (5), indicates the presistence of the software is on the element and is not upgradeable. (i.e. burned into a non replaceable ROM chip." ), ModelCorrespondence{"CIM_ElementSoftwareIdentity.OtherUpgradeCondition"}, ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x8000..0xFFFF"}, Values{"Unknown", "Other", "Resides off device", "Owner Upgradeable", "Factory Upgradeable", "Not Upgradeable", "DMTF Reserved", "Vendor Reserved"}]
	uint16 UpgradeCondition;


};

// IBMTSDS_ArraySitePoolToCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Assocation between IBMTSDS_ArraySitePool and IBMTSDS_ArraySitePoolCapabilities. The cardinality is 1:1. Only valid for DS." ),  Version ( "2.7.0" )]
class IBMTSDS_ArraySitePoolToCapabilities : CIM_ElementCapabilities {
	[Description ( "The ArraySitePoolCapabilities." ), Key ( true ), Override ( "Capabilities" )]
	IBMTSDS_ArraySitePoolCapabilities ref Capabilities;

 	[Description ( "The ArraySitePool." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_ArraySitePool ref ManagedElement;


};

// IBMTSDS_Certificate

	[Description ( "SslCertificate manages listing, creation and deletion of the certificates used by Pegasus for SSL communication" ), IBMExtension ( "5.2.0.650" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_Certificate {
	[Description ( "The Certificate property is a string representation of the certificate in PEM format." ), IBMExtension ( "5.2.0.650" ), Required ( true )]
	string Certificate;

 	[Description ( "The path to the certificate file." ), IBMExtension ( "5.2.0.650" )]
	string certPath;

 	[Description ( "The path to the key file." ), IBMExtension ( "5.2.0.650" )]
	string keyPath;

 	[Description ( "The Name property uniquely identifies the certificate." ), IBMExtension ( "5.2.0.650" ), Key ( true ), MaxLen ( 256 )]
	string Name;


		[Description ( "Creates a new SSL Certificate." ), IBMExtension ( "5.2.0.650" ), Static ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", ".."}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved"}]
	uint32 CreateCert(
		[Required ( true )]
		string name
	);
	 	[Description ( "Deletes an existing SSL certificate." ), IBMExtension ( "5.2.0.650" ), Static ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", ".."}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved"}]
	uint32 RemoveCert(
		[Required ( true )]
		string name
	);
};

// IBMTSDS_RankBasedOnArrayExtent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_ArrayExtent and IBMTSDS_RankExtent. It is strongly suggested to treat this as a generic BasedOnassociation, to be traversed from Primordial StorageExtent to the volume, rather than a vendor or device specific association.Only valid for DS." ),  Version ( "2.6.0" )]
class IBMTSDS_RankBasedOnArrayExtent : CIM_CompositeExtentBasedOn {
	[Description ( "The lower level StorageExtent." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ArrayExtent ref Antecedent;

 	[Description ( "The higher level StorageExtent." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_RankExtent ref Dependent;

 	[Description ( "EndingAddress indicates where in lower level storage, the higher level Extent ends. This property is useful when mapping non-contiguous Extents into a higher level grouping. This is unknown, and set to 0." )]
	uint64 EndingAddress = 0;

 	[Description ( "Not supported. Set to 0." )]
	uint16 OrderIndex = 0;

 	[Description ( "StartingAddress indicates where in lower level storage, the higher level Extent begins. This is unknown, and set to 0." )]
	uint64 StartingAddress = 0;


};

// IBMTSDS_ProviderSoftwareIdentity

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "SoftwareIdentity represents software, viewed as an asset and/or individually identifiable entity (similar to Physical Element). It does NOT indicate whether the software is installed, executing, etc. (The latter is the role of the SoftwareFeature/ SoftwareElement classes and the Application Model.) This class refers to the CIM Agent software, and not the software of the storage devices that the CIM Agent manages." ),  Version ( "2.8.0" )]
class IBMTSDS_ProviderSoftwareIdentity : CIM_SoftwareIdentity {
	[Description ( "The build number of the software - for example, \'1\' from \'5.2.0.1\'." ), Override ( "BuildNumber" )]
	uint16 BuildNumber;

 	[ArrayType ( "Indexed" ), Description ( "An array of enumerated integers that classify this software. For example, the software MAY be instrumentation (value=5) or firmware and diagnostic software (10 and 7). The use of value 6, Firmware/BIOS, is being deprecated. Instead, either the value 10 (Firmware) and/or 11 (BIOS/FCode) SHOULD be used." ), ModelCorrespondence{"CIM_SoftwareIdentity.ClassificationDescriptions"}, Override ( "Classifications" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "..", "0x8000..0xFFFF"}, Values{"Unknown", "Other", "Driver", "Configuration Software", "Application Software", "Instrumentation", "Firmware/BIOS", "Diagnostic Software", "Operating System", "Middleware", "Firmware", "BIOS/FCode", "DMTF Reserved", "Vendor Reserved"}]
	uint16 Classifications[] = {3, 5};

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID is defined as \'IBMTSDS:DSOpenAPI\'." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "The language editions supported by the software. The language codes are defined in ISO 639." ), Override ( "Languages" )]
	string Languages[] = {"eng"};

 	[Description ( "The major number component of the software\'s version information - for example, \'5\' from \'5.2.0.1\'." ), Override ( "MajorVersion" )]
	uint16 MajorVersion;

 	[Description ( "Manufacturer of this software." ), Override ( "Manufacturer" )]
	string Manufacturer = "IBM";

 	[Description ( "The minor number component of the software\'s version information - for example, \'2\' from \'5.2.0.1\'." ), Override ( "MinorVersion" )]
	uint16 MinorVersion;

 	[Description ( "A user-friendly name for the software." ), MaxLen ( 256 ), Override ( "Name" )]
	string Name;

 	[Description ( "The revision or maintenance release component of the software\'s version information - for example, \'0\' from \'5.2.0.1\'." ), Override ( "RevisionNumber" )]
	uint16 RevisionNumber;

 	[Description ( "Specifies the target operating systems of the software. Due to the extreme variability in operating systems, this property is defined as a string array." ), Override ( "TargetOperatingSystems" )]
	string TargetOperatingSystems[] = {"Red Hat Enterprise Linux Advanced Server 3.0", "SUSE Linux Enterprise Server 9", "Windows 2003", "AIX 5.3"};

 	[Description ( "A string representing the complete software version information - for example, \'5.2.0.1\'." ), Override ( "VersionString" )]
	string VersionString;


};

// IBMTSDS_RegisteredSubProfileSoftwareIdentity

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "ElementSoftwareIdentity allows a Managed Element to report its software related asset information (firmware, drivers, configuration software, and etc.)" ),  Version ( "2.8.0" )]
class IBMTSDS_RegisteredSubProfileSoftwareIdentity : CIM_ElementSoftwareIdentity {
	[Description ( "A LogicalElement\'s Software Asset." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ProviderSoftwareIdentity ref Antecedent;

 	[Description ( "The ManagedElement that requires or uses the software." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_RegisteredSubProfile ref Dependent;

 	[Description ( "Indicates the element\'s ability to upgrade this software asset. \n\'Resides off element\'(2), indicates the persistence of the software is outside of the element. Typically for a element this software is part of the OperatingSystem is typically upgradeable. \n\'Owner Upgradeable\' (3), indicates the persistence of the software is on the element and is upgradeable by the owner. \n\'FactoryUpgradeable\' (4),indicates the persistence of the software is on the element and is upgradeable by the manufacturer. \n\'Not Upgradeable\' (5), indicates the presistence of the software is on the element and is not upgradeable. (i.e. burned into a non replaceable ROM chip." ), ModelCorrespondence{"CIM_ElementSoftwareIdentity.OtherUpgradeCondition"}, ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x8000..0xFFFF"}, Values{"Unknown", "Other", "Resides off device", "Owner Upgradeable", "Factory Upgradeable", "Not Upgradeable", "DMTF Reserved", "Vendor Reserved"}]
	uint16 UpgradeCondition = 3;


};

// CIM_StorageConfigurationCapabilities

	[Description ( "A subclass of Capabilities that defines the Capabilities of a StorageConfigurationService. An instance of StorageConfigurationCapabilities is associated with a StorageConfigurationService using ElementCapabilities. The properties in this class specify the envelope of capabilites for storage configuration in the context of the Service or Pool with which the instance is associated. These properties correspond to the properties of the same base names in StorageSetting and StorageSettingWithHints when either is used as a goal parameter to the StorageConfigurationService methods (CreateOrModifyStoragePool, CreateOrModifyElementFromStoragePool, or CreateOrModifyElementFromElements)." ), Version ( "2.10.0" )]
class CIM_StorageConfigurationCapabilities : CIM_Capabilities {
	[Description ( "InitialReplicationState specifies which initial ReplicationState is supported by a particular provider. Values are: \nInitialized: The replication relationship is known and unsynchronized, but time required to synchronize may be long. \nPrepared: The replication relationship is known and unsynchronized and the time required to synchronize will be short. \nSynchronized: The replicas are synchronized." ), ModelCorrespondence{"CIM_StorageConfigurationService.AttachReplica", "CIM_StorageConfigurationService.CreateReplica"}, ValueMap{"2", "3", "4", "..", "0x8000..0xFFFF"}, Values{"Initialized", "Prepared", "Synchronized", "DMTF Reserved", "Vendor Specific"}]
	uint16 InitialReplicationState;

 	[Description ( "Enumeration indicating what operations will be executed as asynchronous jobs. If an operation is included in both this and SupportedSynchronousActions then the underlying implementation is indicating that it may or may not create a job. \n\nThe following values have been deprecated and replaced by values in StorageReplicationCapabilities. SupportedAsynchronousActions: \nReplica Creation(8) to Local Replica Creation(2) and Remote Replica Creation(3) \nReplica Modification(9) to Local Replica Modification(4), Remote Replica Modification(5) and \nReplica Attachment(10) to Local Replica Attachment(6) and Remote Replica Attachment(7)." ), ModelCorrespondence{"CIM_StorageConfigurationCapabilities.SupportedSynchronousActions"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", ".."}, Values{"Storage Pool Creation", "Storage Pool Deletion", "Storage Pool Modification", "Storage Element Creation", "Storage Element Return", "Storage Element Modification", "Replica Creation", "Replica Modification", "Replica Attachment", "SCSI Scan", "DMTF Reserved"}]
	uint16 SupportedAsynchronousActions[];

 	[Description ( "SupportedCopyTypes describes the replication capabilities supported by the associated StorageConfigurationServices. Values are: \nAsync: asynchronous copies may be created and maintained. \nSync: synchronous copies may be created and maintained. \nUnSyncAssoc: unsynchronized copies may be created and maintained. \nUnSyncUnAssoc: a \'straight copy\' may be created." ), ModelCorrespondence{"CIM_StorageConfigurationService.CreateReplica.CopyType"}, ValueMap{"2", "3", "4", "5", "..", "0x8000..0xFFFF"}, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedCopyTypes[];

 	[Description ( "Enumeration indicating features supported by the Storage Element methods." ), ModelCorrespondence{"CIM_StorageConfigurationService.CreateOrModifyElementFromStoragePool.ElementType", "CIM_StorageConfigurationService.CreateOrModifyElementFromStoragePool.InPool", "CIM_StorageConfigurationService.CreateOrModifyElementFromElements.InElements"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "..", "0x8000..0xFFFF"}, Values{"StorageExtent Creation", "StorageVolume Creation", "StorageExtent Modification", "StorageVolume Modification", "Single InPool", "Multiple InPools", "LogicalDisk Creation", "LogicalDisk Modification", "InExtents", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedStorageElementFeatures[];

 	[Description ( "Enumeration indicating the type of storage elements that are supported by the associated StorageConfigurationService." ), ModelCorrespondence{"CIM_StorageConfigurationService.CreateOrModifyElementFromStoragePool.ElementType"}, ValueMap{"2", "3", "4", "..", "0x8000..0xFFFF"}, Values{"StorageVolume", "StorageExtent", "LogicalDisk", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedStorageElementTypes[];

 	[Description ( "Enumeration indicating features supported by the StoragePool methods." ), ModelCorrespondence{"CIM_StorageConfigurationService.CreateOrModifyStoragePool.InPools", "CIM_StorageConfigurationService.CreateOrModifyStoragePool.InExtents"}, ValueMap{"2", "3", "4", "..", "0x8000..0xFFFF"}, Values{"InExtents", "Single InPool", "Multiple InPools", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedStoragePoolFeatures[];

 	[Description ( "Enumeration indicating what operations will be executed without the creation of a job. If an operation is included in both this and SupportedAsynchronousActions then the underlying instrumentation is indicating that it may or may not create a job. \n\nThe following values have been deprecated and replaced by values in StorageReplicationCapabilities.SupportedSynchronousActions: \nReplica Creation(8) to Local Replica Creation(2) and Remote Replica Creation(3) \nReplica Modification(9) to Local Replica Modification(4), Remote Replica Modification(5) and \nReplica Attachment(10) to Local Replica Attachment(6) and Remote Replica Attachment(7)." ), ModelCorrespondence{"CIM_StorageConfigurationCapabilities.SupportedAsynchronousActions"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", ".."}, Values{"Storage Pool Creation", "Storage Pool Deletion", "Storage Pool Modification", "Storage Element Creation", "Storage Element Return", "Storage Element Modification", "Replica Creation", "Replica Modification", "Replica Attachment", "SCSI Scan", "DMTF Reserved"}]
	uint16 SupportedSynchronousActions[];


};

// IBMTSDS_StorageConfigurationCapabilities

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "A subclass of Capabilities that defines the Capabilities of a StorageConfigurationService. An instance of StorageConfigurationCapabilities is associated with a StorageConfigurationService using ElementCapabilities. The properties in this class specify the envelope of capabilites for storage configuration in the context of the Service or Pool with which the instance is associated. These properties correspond to the properties of the same base names in StorageSetting and StorageSettingWithHints when either is used as a goal parameter to the StorageConfigurationService methods (CreateOrModifyStoragePool, CreateOrModifyElementFromStoragePool, or CreateOrModifyElementFromElements)." ),  Version ( "2.8.1000" )]
class IBMTSDS_StorageConfigurationCapabilities : CIM_StorageConfigurationCapabilities {
	[Description ( "The user friendly name for this instance of Capabilities. In addition, the user friendly name can be used as a index property for a search of query. The ElementName will be of the form \'StorageConfigurationCapabilities for <StorageSystem.Name>\'." ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "InitialReplicationState specifies which initial ReplicationState is supported by a particular provider. Values are: \nInitialized: The replication relationship is known and unsynchronized, but time required to synchronize may be long. \nPrepared: The replication relationship is known and unsynchronized and the time required to synchronize will be short. \nSynchronized: The replicas are synchronized." ), ModelCorrespondence{"CIM_StorageConfigurationService.AttachReplica", "CIM_StorageConfigurationService.CreateReplica"}, ValueMap{"2", "3", "4", "..", "0x8000..0xFFFF"}, Values{"Initialized", "Prepared", "Synchronized", "DMTF Reserved", "Vendor Specific"}]
	uint16 InitialReplicationState = 3;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. The InstanceID will be of the form IBMTSDS:<StorageSystem.Name>." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "Enumeration indicating what operations will be executed as asynchronous jobs. If an operation is included in both this and SupportedSynchronousActions then the underlying implementation is indicating that it may or may not create a job. The CIM Agent for the DS Open API does not support any asynchronous actions." ), ModelCorrespondence{"CIM_StorageConfigurationCapabilities.SupportedSynchronousActions"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10"}, Values{"Storage Pool Creation", "Storage Pool Deletion", "Storage Pool Modification", "Storage Element Creation", "Storage Element Return", "Storage Element Modification", "Replica Creation", "Replica Modification", "Replica Attachment"}]
	uint16 SupportedAsynchronousActions[];

 	[Description ( "SupportedCopyTypes describes the replication capabilities supported by the associated StorageConfigurationServices. Values are: \nAsync: asynchronous copies may be created and maintained. \nSync: synchronous copies may be created and maintained. \nUnSyncAssoc: unsynchronized copies may be created and maintained. \nUnSyncUnAssoc: a \'straight copy\' may be created." ), ModelCorrespondence{"CIM_StorageConfigurationService.CreateReplica.CopyType"}, ValueMap{"2", "3", "4", "5", "..", "0x8000..0xFFFF"}, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedCopyTypes[] = {4, 5};

 	[Description ( "Enumeration indicating what IBM Extension operations are supported for a particular StorageSystem. The DS CIM Agent, in fact, does support pool, volume, and replica creation and deletion. However due to deficiencies in the SMI-S recipes, we cannot certify our creation and deletion methods, so we cannot advertise these capabilities in SupportedSynchronousActions, so we advertise them in a vendor extension property here. DS supports ArrayPool Creation/Deletion, RankPool Creation/Deletion, ExtentPool Creation/Deletion/Modification (ElementName only), and StorageVolume Creation/Deletion/Modification (ElementName only). ESS supports ExtentPool (VolumeSpace) Creation/Deletion and StorageVolume Creation. ESS does not support StorageVolume deletion.  When an ExtentPool (VolumeSpace) is deleted on the ESS, the corresponding Volumes are automatically deleted." ), IBMExtension ( "5.2.1" ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"}, Values{"ArraySitePool Creation", "ArraySitePool Deletion", "ArraySitePool Modification", "ArrayPool Creation", "ArrayPool Deletion", "ArrayPool Modification", "RankPool Creation", "RankPool Deletion", "RankPool Modification", "ExtentPool Creation", "ExtentPool Deletion", "ExtentPool Modification", "StorageVolume Creation", "StorageVolume Deletion", "StorageVolume Modification", "StorageVolume Expansion", "StorageVolume Shrinking"}]
	uint16 SupportedIBMExtensionActions[];

 	[Description ( "Enumeration indicating features supported by the Storage Element methods. Volume creation from Single InPool is supported but we cannot advertise this capability. See above comment." ), ModelCorrespondence{"CIM_StorageConfigurationService.CreateOrModifyElementFromStoragePool.ElementType", "CIM_StorageConfigurationService.CreateOrModifyElementFromStoragePool.InPool", "CIM_StorageConfigurationService.CreateOrModifyElementFromElements.InElements"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "..", "0x8000..0xFFFF"}, Values{"StorageExtent Creation", "StorageVolume Creation", "StorageExtent Modification", "StorageVolume Modification", "Single InPool", "Multiple InPools", "LogicalDisk Creation", "LogicalDisk Modification", "InExtents", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedStorageElementFeatures[];

 	[Description ( "Enumeration indicating the type of storage elements that are supported by the associated StorageConfigurationService. Volume creation is supported, but not advertised, see above." ), ModelCorrespondence{"CIM_StorageConfigurationService.CreateOrModifyElementFromStoragePool.ElementType"}, ValueMap{"2", "3", "4", "..", "0x8000..0xFFFF"}, Values{"StorageVolume", "StorageExtent", "LogicalDisk", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedStorageElementTypes[];

 	[Description ( "Enumeration indicating features supported by the StoragePool methods. Single InPool and Multiple InPool are supported in different situations, but we cannot advertise these capabilities, see above comment." ), ModelCorrespondence{"CIM_StorageConfigurationService.CreateOrModifyStoragePool.InPools", "CIM_StorageConfigurationService.CreateOrModifyStoragePool.InExtents"}, ValueMap{"2", "3", "4", "..", "0x8000..0xFFFF"}, Values{"InExtents", "Single InPool", "Multiple InPools", "DMTF Reserved", "Vendor Specific"}]
	uint16 SupportedStoragePoolFeatures[];

 	[Description ( "Enumeration indicating what operations will be executed without the creation of a job. If an operation is included in both this and SupportedAsynchronousActions then the underlying instrumentation is indicating that it may or may not create a job. The DS CIM Agent, in fact, does support pool, volume, and replica creation and deletion. However due to deficiencies in the CTP specification, we cannot certify our creation and deletion methods, so we cannot advertise these capabilities." ), ModelCorrespondence{"CIM_StorageConfigurationCapabilities.SupportedAsynchronousActions"}, ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10"}, Values{"Storage Pool Creation", "Storage Pool Deletion", "Storage Pool Modification", "Storage Element Creation", "Storage Element Return", "Storage Element Modification", "Replica Creation", "Replica Modification", "Replica Attachment"}]
	uint16 SupportedSynchronousActions[];


};

// IBMTSDS_VolumeBasedOnRankExtent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_Rank and IBMTSDS_Volume. It is strongly suggested to treat this as a generic BasedOnassociation, to be traversed from Primordial StorageExtent to the volume, rather than a vendor or device specific association." ),  Version ( "2.6.0" )]
class IBMTSDS_VolumeBasedOnRankExtent : CIM_BasedOn {
	[Description ( "The lower level StorageExtent." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_RankExtent ref Antecedent;

 	[Description ( "The higher level StorageExtent." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_Volume ref Dependent;

 	[Description ( "EndingAddress indicates where in lower level storage, the higher level Extent ends. This property is useful when mapping non-contiguous Extents into a higher level grouping. This is unknown, and set to 0." )]
	uint64 EndingAddress = 0;

 	[Description ( "Not supported. Set to 0." )]
	uint16 OrderIndex = 0;

 	[Description ( "StartingAddress indicates where in lower level storage, the higher level Extent begins. This is unknown, and set to 0." )]
	uint64 StartingAddress = 0;


};

// IBMTSDS_RegisteredProfileSoftwareIdentity

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "ElementSoftwareIdentity allows a Managed Element to report its software related asset information (firmware, drivers, configuration software, and etc.)" ),  Version ( "2.8.0" )]
class IBMTSDS_RegisteredProfileSoftwareIdentity : CIM_ElementSoftwareIdentity {
	[Description ( "A LogicalElement\'s Software Asset." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ProviderSoftwareIdentity ref Antecedent;

 	[Description ( "The ManagedElement that requires or uses the software." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_RegisteredProfile ref Dependent;

 	[Description ( "Indicates the element\'s ability to upgrade this software asset. \n\'Resides off element\'(2), indicates the persistence of the software is outside of the element. Typically for a element this software is part of the OperatingSystem is typically upgradeable. \n\'Owner Upgradeable\' (3), indicates the persistence of the software is on the element and is upgradeable by the owner. \n\'FactoryUpgradeable\' (4),indicates the persistence of the software is on the element and is upgradeable by the manufacturer. \n\'Not Upgradeable\' (5), indicates the presistence of the software is on the element and is not upgradeable. (i.e. burned into a non replaceable ROM chip." ), ModelCorrespondence{"CIM_ElementSoftwareIdentity.OtherUpgradeCondition"}, ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x8000..0xFFFF"}, Values{"Unknown", "Other", "Resides off device", "Owner Upgradeable", "Factory Upgradeable", "Not Upgradeable", "DMTF Reserved", "Vendor Reserved"}]
	uint16 UpgradeCondition = 3;


};

// IBMTSDS_HostedDeviceConfigurationService

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CIM_HostedService is an association between a Service and the System on which the functionality resides. The cardinality of this association is 1-to-many. A System may host many Services. Services are weak with respect to their hosting System. Heuristic: A Service is hosted on the System where the LogicalDevices or SoftwareFeatures that implement the Service are located. The model does not represent Services hosted across multiple systems. This is modeled as an ApplicationSystem that acts as an aggregation point for Services, that are each located on a single host." ),  Version ( "2.8.0" )]
class IBMTSDS_HostedDeviceConfigurationService : CIM_HostedService {
	[Description ( "The hosting System." ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_StorageManagementSystem ref Antecedent;

 	[Description ( "The Service hosted on the System." ), Override ( "Dependent" ), Weak ( true )]
	IBMTSDS_DeviceConfigurationService ref Dependent;


};

// IBMTSDS_NamespaceInManager

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "NamespaceInManager is an association describing the Namespaces hosted by a CIM ObjectManager." ),  Version ( "2.7.0" )]
class IBMTSDS_NamespaceInManager : CIM_NamespaceInManager {
	[Description ( "The ObjectManager containing a Namespace." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_ObjectManager ref Antecedent;

 	[Description ( "The Namespace in an ObjectManager." ), Key ( true ), Override ( "Dependent" ), Weak ( true )]
	IBMTSDS_Namespace ref Dependent;


};

// IBMTSDS_ExtentPoolStatsMemberOfCollection

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "CIM_MemberOfCollection is an aggregation used to establish membership of ManagedElements in a Collection." ),  Version ( "2.10.0" )]
class IBMTSDS_ExtentPoolStatsMemberOfCollection : CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The Collection that aggregates members." ), Key ( true ), Override ( "Collection" )]
	IBMTSDS_PerformanceStatisticsCollection ref Collection;

 	[Description ( "The aggregated member of the Collection." ), Key ( true ), Override ( "Member" )]
	IBMTSDS_ExtentPoolStatistics ref Member;


};

// CIM_StorageSettingsGeneratedFromCapabilities

[ASSOCIATION ( true ),  Description ( "This association define StorageSettings that reflect the capabilities of the associated StorageCapabilities. The associated StorageSetting may not define the operational characteristics (through settings properties) of any storage element. StorageSettingsGeneratedFromCapabilities is the association between instances of StorageCapabilities and those instances of StorageSetting that have been created from the StorageCapabilities instance using the StorageCapabilities \"CreateSetting\" method. These settings have a StorageSetting.ChangeableType of \"Changeable - Transient\" or \"Changeable - Persistent\" The settings associated by this class reflect the capabilities from which they are generated. These setting SHALL be associated with one StorageCapabilities. \nA generated setting can be deleted by the implementation at any time if it is a a StorageSetting of \"Changed - Transient\" ChangeableType. \nA client should not use this association to find transient Settings to subsequently modify and/or use because that would increase the likelihood of setting contention across clients. Instead the implementation uses this association to define transient settings, which can be located through any means, that have special temporal based life cycle. \nDefaultSetting is meaningless in this class." ), Experimental ( true ), Version ( "2.10.0" )]
class CIM_StorageSettingsGeneratedFromCapabilities : CIM_SettingAssociatedToCapabilities {
	[Description ( "The StorageCapabilities." ), Max ( 1 ), Override ( "Antecedent" )]
	CIM_StorageCapabilities ref Antecedent;

 	[Description ( "The temporary and client generated StorageSetting." ), Override ( "Dependent" )]
	CIM_StorageSetting ref Dependent;


};

// IBMTSDS_FCPortSAPImplementation

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "An association between a ServiceAccessPoint and how it is implemented. This subclass associates FCPort to SCSIProtocolEndpoint." ),  Version ( "2.6.0" )]
class IBMTSDS_FCPortSAPImplementation : CIM_DeviceSAPImplementation {
	[Description ( "The FCPort." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_FCPort ref Antecedent;

 	[Description ( "The SCSIProtocolEndpoint implemented using the FCPort." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_SCSIProtocolEndpoint ref Dependent;


};

// IBMTSDS_DiskDriveSoftwareIdentity

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "DiskDriveSoftwareIdentity represents software, viewed as an asset and/or individually identifiable entity, for the Disk Drive. It does NOT indicate whether the software is installed, executing, etc." ),  Version ( "2.8.1000" )]
class IBMTSDS_DiskDriveSoftwareIdentity : CIM_SoftwareIdentity {
	[Description ( "IBMTSDS:DiskDriveSoftwareIdentity-<DiskDrive.DeviceID>." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[Description ( "Manufacturer of this software." ), Override ( "Manufacturer" )]
	string Manufacturer;

 	[Description ( "The firmware level of a DS disk drive. This will be set to the empty string for ESS disk drives." ), Override ( "VersionString" )]
	string VersionString;


};

// IBMTSDS_SoftwareIdentityToDiskDrive

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This class represents the association between DiskDrive and DiskDriveSoftwareIdentity." ),  Version ( "2.8.0" )]
class IBMTSDS_SoftwareIdentityToDiskDrive : CIM_ElementSoftwareIdentity {
	[Description ( "The DiskDriveSoftwareIdentity." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_DiskDriveSoftwareIdentity ref Antecedent;

 	[Description ( "The DiskDrive that requires or uses the software." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_DiskDrive ref Dependent;


};

// IBMTSDS_PrimordialStoragePoolCapabilities

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This Capabilities class describes the PrimordialStoragePool. Direct creation of a ConcretePool from the PrimordialStoragePool is not supported. The PrimordialStoragePool is carved into ArraySitePools, which are JBOD collections of unformatted disks." ),  Version ( "2.8.1000" )]
class IBMTSDS_PrimordialStoragePoolCapabilities : CIM_StorageCapabilities {
	[Description ( "DataRedundancyDefault describes the default number of complete copies of data that can be maintained. This is set to DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyMin"}, Override ( "DataRedundancyDefault" )]
	uint16 DataRedundancyDefault = 1;

 	[Description ( "DataRedundancyMax describes the maximum number of complete copies of data that can be maintained. JBOD is 1." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMin", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMax" )]
	uint16 DataRedundancyMax = 1;

 	[Description ( "DataRedundancyMin describes the minimum number of complete copies of data that can be maintained. JBOD is 1." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMin" )]
	uint16 DataRedundancyMin = 1;

 	[Description ( "The user friendly name for this instance of Capabilities. In addition, the user friendly name can be used as a index property for a search of query. This will be of the form \'Capablities for PrimordialStoragePool <PrimordialStoragePool Name>\'." ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Enumeration indicating the type of element to which this StorageCapabilities applies." ), Override ( "ElementType" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"}, Values{"Unknown", "Reserved", "Any Type", "StorageVolume", "StorageExtent", "StoragePool", "StorageConfigurationService", "LogicalDisk"}]
	uint16 ElementType = 5;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. This will be the same as PrimordialStoragePool.InstanceID." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[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"}, Override ( "NoSinglePointOfFailure" )]
	boolean NoSinglePointOfFailure = true;

 	[Description ( "Indicates the default value for the NoSinglePointOfFailure property." ), ModelCorrespondence{"CIM_StorageCapabilities.NoSinglePointOfFailure"}, Override ( "NoSinglePointOfFailureDefault" )]
	boolean NoSinglePointOfFailureDefault = true;

 	[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. This is set to PackageRedundancyMin." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyMax"}, Override ( "PackageRedundancyDefault" )]
	uint16 PackageRedundancyDefault = 0;

 	[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. For JBOD, this is 0." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMax" )]
	uint16 PackageRedundancyMax = 0;

 	[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. For JBOD, this is 0." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMax", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMin" )]
	uint16 PackageRedundancyMin = 0;

 	[Description ( "The types of elements that can be created from this pool." ), ValueMap{"2", "3", "4"}, Values{"Storage Pool", "Storage Volume", "Logical Disk"}]
	uint16 SupportedElementTypes[] = {2};


};

// IBMTSDS_AllocatedFromPrimordialStoragePool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_PrimordialStoragePool and IBMTSDS_ArraySitePool. It is strongly recommended that this be treated as a generic AllocatedFromStoragePool association rather than a vendor or device specific association.Only valid for DS." ),  Version ( "2.8.0" )]
class IBMTSDS_AllocatedFromPrimordialStoragePool : CIM_AllocatedFromStoragePool {
	[Description ( "The PrimordialStoragePool." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_PrimordialStoragePool ref Antecedent;

 	[Description ( "The ArraySitePool." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_ArraySitePool ref Dependent;

 	[Description ( "Space consumed from this Pool, in bytes. This value MUST be maintained so that, relative to the Antecedent StoragePool, it is possible to compute TotalManagedSpace as StoragePool.RemainingManagedSpace plus the sum of SpaceConsumed from all of the AllocatedFromStoragePool references from the antecedent StoragePool. This means that this property refers to raw space." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_StoragePool.RemainingManagedSpace"}, Required ( true ), Units ( "Bytes" )]
	uint64 SpaceConsumed;


};

// IBMTSDS_InitiatorElementSettingData

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_InitiatorElementSettingData : CIM_ElementSettingData {
	[Description ( "Set to Is Current, because by the definition of this association, it associates the StorageHardwareID to its current StorageClientSettingData." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Is Current", "Is Not Current"}]
	uint16 IsCurrent = 1;

 	[Description ( "Set to true if the StorageClientSettingData is Microsoft Windows, false otherwise." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Is Default", "Is Not Default"}]
	uint16 IsDefault;

 	[Key ( true ), Override ( "ManagedElement" )]
	IBMTSDS_StorageHardwareID ref ManagedElement;

 	[Key ( true ), Override ( "SettingData" )]
	IBMTSDS_StorageClientSettingData ref SettingData;


};

// IBMTSDS_RankStatsMemberOfCollection

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "CIM_MemberOfCollection is an aggregation used to establish membership of ManagedElements in a Collection." ),  Version ( "2.10.0" )]
class IBMTSDS_RankStatsMemberOfCollection : CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The Collection that aggregates members." ), Key ( true ), Override ( "Collection" )]
	IBMTSDS_PerformanceStatisticsCollection ref Collection;

 	[Description ( "The aggregated member of the Collection." ), Key ( true ), Override ( "Member" )]
	IBMTSDS_RankStatistics ref Member;


};

// IBMTSDS_InstModification

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "CIM_InstModification notifies when an instance is modified." ), INDICATION ( true ),  Version ( "2.10.0" )]
class IBMTSDS_InstModification : CIM_InstModification {
	[Description ( "An identifier for the Indication. This property is similar to a key value in that it can be used for identification, when correlating Indications (see the CorrelatedIndications array). Its value SHOULD be unique as long as Alert correlations are reported, but MAY be reused or left NULL if no future Indications will reference it in their CorrelatedIndications array. Will be of the form \'<Object> <Identifier> Modified <IndicationTime>\'.For example, \'Volume <ESSID>-100a Modified 19980525133015.0000000-300\'. The time will be omitted if it is unknown" )]
	string IndicationIdentifier;

 	[Description ( "The time and date of creation of the Indication. The property may be set to NULL if the entity creating the Indication is not capable of determining this information. Note that IndicationTime may be the same for two Indications that are generated in rapid succession." )]
	datetime IndicationTime;

 	[Description ( "A copy of the \'previous\' instance whose change generated the Indication. PreviousInstance contains \'older\' values of an instance\'s properties (as compared to SourceInstance), selected by the IndicationFilter\'s Query." ), EmbeddedObject ( true )]
	string PreviousInstance;

 	[Description ( "A copy of the instance that changed to generate the Indication. SourceInstance contains the current values of the properties selected by the Indication Filter\'s Query. In the case of CIM_InstDeletion, the property values are copied before the instance is deleted." ), EmbeddedObject ( true ), Required ( true )]
	string SourceInstance;

 	[Description ( "The Model Path of the SourceInstance. The following format MUST be used to encode the Model Path: \n<NamespacePath>:<ClassName>.<Prop1>=\"<Value1>\", \n<Prop2>=\"<Value2>\", ..." ), ModelCorrespondence{"CIM_InstIndication.SourceInstance"}]
	string SourceInstanceModelPath;


};

// IBMTSDS_ConcreteDependencyController

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_ConcreteDependencyController : CIM_ConcreteDependency {
	[Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ControllerConfigurationService ref Antecedent;

 	[Key ( true ), Override ( "Dependent" )]
	IBMTSDS_SCSIProtocolController ref Dependent;


};

// IBMTSDS_HostedPrimordialStoragePool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "SystemStoragePool is a specialization of SystemComponent association that establishes that the StoragePool is defined in the context of the System." ),  Version ( "2.7.0" )]
class IBMTSDS_HostedPrimordialStoragePool : CIM_HostedStoragePool {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The StoragePool that is a component of a System." ), Key ( true ), Override ( "PartComponent" )]
	IBMTSDS_PrimordialStoragePool ref PartComponent;


};

// IBMTSDS_StgSysHostsSCSIProtocolEndpoint

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CIM_HostedAccessPoint is an association between a Service AccessPoint and the System on which it is provided. This subclass associates the StorageSystem to SCSIProtocolEndpoint." ),  Version ( "2.8.0" )]
class IBMTSDS_StgSysHostsSCSIProtocolEndpoint : CIM_HostedAccessPoint {
	[Description ( "The hosting System." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_StorageSystem ref Antecedent;

 	[Description ( "The SCSIProtocolEndpoints that are hosted on this System." ), Key ( true ), Override ( "Dependent" ), Weak ( true )]
	IBMTSDS_SCSIProtocolEndpoint ref Dependent;


};

// IBMTSDS_HostedPerformanceStatisticsService

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_HostedPerformanceStatisticsService : CIM_HostedService {
	[Override ( "Antecedent" )]
	IBMTSDS_StorageSystem ref Antecedent;

 	[Override ( "Dependent" )]
	IBMTSDS_PerformanceStatisticsService ref Dependent;


};

// IBMTSDS_StorageFacilitySystemPackaging

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Similar to the way that LogicalDevices are \'Realized\' by PhysicalElements, Systems can be associated with specific packaging or PhysicalElements. This association explicitly defines the relationship between a System and its packaging." ),  Version ( "2.10.0" )]
class IBMTSDS_StorageFacilitySystemPackaging : CIM_ComputerSystemPackage {
	[Description ( "The PhysicalElements that provide the packaging of a System." ), Override ( "Antecedent" )]
	IBMTSDS_StorageFacilityChassis ref Antecedent;

 	[Description ( "The System whose packaging is described." ), Override ( "Dependent" )]
	IBMTSDS_StorageSystem ref Dependent;


};

// IBMTSDS_SystemElementSettingData

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_SystemElementSettingData : CIM_ElementSettingData {
	[Description ( "Set to unknown, because IsCurrent for StorageClientSettingData does not apply for the StorageSystem." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Is Current", "Is Not Current"}]
	uint16 IsCurrent = 0;

 	[Description ( "Set to true if the StorageClientSettingData is Microsoft Windows, false otherwise." ), ValueMap{"0", "1", "2"}, Values{"Unknown", "Is Default", "Is Not Default"}]
	uint16 IsDefault;

 	[Key ( true ), Override ( "ManagedElement" )]
	IBMTSDS_StorageSystem ref ManagedElement;

 	[Key ( true ), Override ( "SettingData" )]
	IBMTSDS_StorageClientSettingData ref SettingData;


};

// IBMTSDS_PrimordialComponent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "Association between IBMTSDS_DiskExtent and IBMTSDS_PrimordialStoragePool." ),  Version ( "2.7.0" )]
class IBMTSDS_PrimordialComponent : CIM_ConcreteComponent {
	[Aggregate ( true ), Description ( "The parent element in the association." ), Key ( true ), Override ( "GroupComponent" )]
	IBMTSDS_PrimordialStoragePool ref GroupComponent;

 	[Description ( "The child element in the association." ), Key ( true ), Override ( "PartComponent" )]
	IBMTSDS_DiskExtent ref PartComponent;


};

// IBMTSDS_AuthorizedTarget

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_AuthorizedTarget : CIM_AuthorizedTarget {
	[Key ( true ), Override ( "Privilege" )]
	IBMTSDS_Privilege ref Privilege;

 	[Key ( true ), Override ( "TargetElement" )]
	IBMTSDS_SCSIProtocolController ref TargetElement;


};

// IBMTSDS_MemberOfVolumeGroup

[ASSOCIATION ( true ), Aggregation ( true ),  Description ( "Represents a Volume as a member of a VolumeGroup." ), IBMExtension ( "5.2.1" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_MemberOfVolumeGroup : CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The VolumeGroup." ), Key ( true ), Override ( "Collection" )]
	IBMTSDS_VolumeGroup ref Collection;

 	[Description ( "Volume." ), Key ( true ), Override ( "Member" )]
	IBMTSDS_Volume ref Member;


};

// IBMTSDS_StorageFacilityProduct

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "CIM_Product is a concrete class that aggregates PhysicalElements, software (SoftwareIdentity and SoftwareFeatures), Services and/or other Products, and is acquired as a unit. Acquisition implies an agreement between supplier and consumer which may have implications to Product licensing, support and warranty. Non-commercial (e.g., in-house developed Products) should also be identified as an instance of CIM_Product. \nThe StorageFacilityProduct describes the Product characteristics of the StorageFacilityChassis." ),  Version ( "2.8.1000" )]
class IBMTSDS_StorageFacilityProduct : CIM_Product {
	[Description ( "Will be of the form \'Product for Storage Facility <IdentifyingNumber>\'." ), MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalName"}, Override ( "ElementName" )]
	string ElementName;

 	[Description ( "Same as StorageFacilityChassis.Tag" ), Key ( true ), MappingStrings{"MIF.DMTF|ComponentID|001.4"}, MaxLen ( 64 ), Override ( "IdentifyingNumber" )]
	string IdentifyingNumber;

 	[Description ( "Commonly used Product name. Will be DS6000, DS8000, or ESS. " ), Key ( true ), MappingStrings{"MIF.DMTF|ComponentID|001.2"}, MaxLen ( 256 ), ModelCorrespondence{"PRS_Product.ProductName"}, Override ( "Name" )]
	string Name;

 	[Description ( "The name of the Product\'s supplier, or entity selling the Product (the manufacturer, reseller, OEM, etc.). Corresponds to the Vendor property in the Product object in the DMTF Solution Exchange Standard." ), Key ( true ), MappingStrings{"MIF.DMTF|ComponentID|001.1"}, MaxLen ( 256 ), ModelCorrespondence{"PRS_Product.Vendor"}, Override ( "Vendor" )]
	string Vendor = "IBM";

 	[Description ( "Product version information. In this case, the model of the Storage Facility." ), Key ( true ), MappingStrings{"MIF.DMTF|ComponentID|001.3"}, MaxLen ( 64 ), ModelCorrespondence{"PRS_Product.Version"}, Override ( "Version" )]
	string Version;


};

// IBMTSDS_ProtocolControllerForPort

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This association is used to define a relationship between a ProtocolController and a LogicalPort. This subclass is provided so that an enumeration of related controllers and ports can be performed without retrieving any other controllers or connected units." ),  Version ( "2.8.0" )]
class IBMTSDS_ProtocolControllerForPort : CIM_ProtocolControllerForPort {
	[Description ( "The ProtocolController." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_SCSIProtocolController ref Antecedent;

 	[Description ( "The LogicalPort \'behind\' the ProtocolController." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_FCPort ref Dependent;


};

// IBMTSDS_ProtocolControllerForUnit

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_ProtocolControllerForUnit : CIM_ProtocolControllerForUnit {
	[Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_SCSIProtocolController ref Antecedent;

 	[Key ( true ), Override ( "Dependent" )]
	IBMTSDS_Volume ref Dependent;

 	[Description ( "The access rights granted to the referenced logical unit as exposed throughreferenced ProtocolController." ), Experimental ( true ), ValueMap{"0", "2", "3", "4", "5..15999", "16000.."}, Values{"Unknown", "Read Write", "Read-Only", "No Access", "DMTF Reserved", "Vendor Reserved"}]
	uint16 DeviceAccess = 2;

 	[Description ( "Address of the associated Device in the context of the Antecedent Controller. This is the SCSI LUN ID of the volume.Shall be formatted as unseparated uppercase hexadecimal digits with no leading Ox." ), Override ( "DeviceNumber" )]
	string DeviceNumber;


};

// CIM_Job

	[Abstract ( true ), Description ( "A Job is a LogicalElement that represents an executing unit of work, such as a script or a print job. A Job is distinct from a Process in that a Job can be scheduled or queued, and its execution is not limited to a single system." ), Version ( "2.10.0" )]
class CIM_Job : CIM_LogicalElement {
	[Description ( "Indicates whether or not the job should be automatically deleted upon completion. Note that the \'completion\' of a recurring job is defined by its JobRunTimes or UntilTime properties, or when the Job is terminated by manual intervention. If this property is set to false and the job completes, then the extrinsic method DeleteInstance must be used to delete the job instead of updating this property." ), Write ( true )]
	boolean DeleteOnCompletion;

 	[Description ( "The time interval that the Job has been executing or the total execution time if the Job is complete. Note that this property is also present in the JobProcessingStatistics class. This class is necessary to capture the processing information for recurring Jobs, because only the \'last\' run time can be stored in this single-valued property." )]
	datetime ElapsedTime;

 	[Description ( "A vendor-specific error code. The value must be set to zero if the Job completed without error. Note that this property is also present in the JobProcessingStatistics class. This class is necessary to capture the processing information for recurring Jobs, because only the \'last\' run error can be stored in this single-valued property." ), ModelCorrespondence{"CIM_Job.ErrorDescription"}]
	uint16 ErrorCode;

 	[Description ( "A free-form string that contains the vendor error description. Note that this property is also present in the JobProcessingStatistics class. This class is necessary to capture the processing information for recurring Jobs, because only the \'last\' run error can be stored in this single-valued property." ), ModelCorrespondence{"CIM_Job.ErrorCode"}]
	string ErrorDescription;

 	[Description ( "The number of times that the Job should be run. A value of 1 indicates that the Job is not recurring, while any non-zero value indicates a limit to the number of times that the Job will recur. Zero indicates that there is no limit to the number of times that the Job can be processed, but that it is terminated either after the UntilTime or by manual intervention. By default, a Job is processed once." ), Write ( true )]
	uint32 JobRunTimes = 1;

 	[Description ( "A free-form string that represents the status of the job. The primary status is reflected in the inherited OperationalStatus property. JobStatus provides additional, implementation-specific details." ), ModelCorrespondence{"CIM_ManagedSystemElement.OperationalStatus"}]
	string JobStatus;

 	[Description ( "This property indicates whether the times represented in the RunStartInterval and UntilTime properties represent local times or UTC times. Time values are synchronized worldwide by using the enumeration value 2, \"UTC Time\"." ), ValueMap{"1", "2"}, Values{"Local Time", "UTC Time"}, Write ( true )]
	uint16 LocalOrUtcTime;

 	[Description ( "The User who is to be notified upon the Job completion or failure." ), Write ( true )]
	string Notify;

 	[Description ( "A string describing the recovery action when the RecoveryAction property of the instance is 1 (\"Other\")." ), ModelCorrespondence{"CIM_Job.RecoveryAction"}]
	string OtherRecoveryAction;

 	[Description ( "The User that submitted the Job, or the Service or method name that caused the job to be created." ), ModelCorrespondence{"CIM_OwningJobElement"}]
	string Owner;

 	[Description ( "The percentage of the job that has completed at the time that this value is requested. Note that this property is also present in the JobProcessingStatistics class. This class is necessary to capture the processing information for recurring Jobs, because only the \'last\' run data can be stored in this single-valued property. \nNote that the value 101 is undefined and will be not be allowed in the next major revision of the specification." ), MaxValue ( 101 ), MinValue ( 0 ), Units ( "Percent" )]
	uint16 PercentComplete;

 	[Description ( "Indicates the urgency or importance of execution of the Job. The lower the number, the higher the priority. Note that this property is also present in the JobProcessingStatistics class. This class is necessary to capture the setting information that would influence the results of a job." ), Write ( true )]
	uint32 Priority;

 	[Description ( "Describes the recovery action to be taken for an unsuccessfully run Job. The possible values are: \n0 = \"Unknown\", meaning it is unknown as to what recovery action to take \n1 = \"Other\", indicating that the recovery action will be specified in the OtherRecoveryAction property \n2 = \"Do Not Continue\", meaning stop the execution of the job and appropriately update its status \n3 = \"Continue With Next Job\", meaning continue with the next job in the queue \n4 = \"Re-run Job\", indicating that the job should be re-run \n5 = \"Run Recovery Job\", meaning run the Job associated using the RecoveryJob relationship. Note that the recovery Job must already be in the queue from which it will run." ), ModelCorrespondence{"CIM_Job.OtherRecoveryAction"}, ValueMap{"0", "1", "2", "3", "4", "5"}, Values{"Unknown", "Other", "Do Not Continue", "Continue With Next Job", "Re-run Job", "Run Recovery Job"}]
	uint16 RecoveryAction;

 	[Description ( "The day in the month on which the Job should be processed. There are two different interpretations for this property, depending on the value of DayOfWeek. In one case, RunDay defines the day-in-month on which the Job is processed. This interpretation is used when the DayOfWeek is 0. A positive or negative integer indicates whether the RunDay should be calculated from the beginning or end of the month. For example, 5 indicates the fifth day in the RunMonth and -1 indicates the last day in the RunMonth. \n\nWhen RunDayOfWeek is not 0, RunDay is the day-in-month on which the Job is processed, defined in conjunction with RunDayOfWeek. For example, if RunDay is 15 and RunDayOfWeek is Saturday, then the Job is processed on the first Saturday on or after the 15th day in the RunMonth (for example, the third Saturday in the month). If RunDay is 20 and RunDayOfWeek is -Saturday, then this indicates the first Saturday on or before the 20th day in the RunMonth. If RunDay is -1 and RunDayOfWeek is -Sunday, then this indicates the last Sunday in the RunMonth." ), MaxValue ( 31 ), MinValue ( -31 ), ModelCorrespondence{"CIM_Job.RunMonth", "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval"}, Write ( true )]
	sint8 RunDay;

 	[Description ( "A positive or negative integer used in conjunction with RunDay to indicate the day of the week on which the Job is processed. RunDayOfWeek is set to 0 to indicate an exact day of the month, such as March 1. A positive integer (representing Sunday, Monday, ..., Saturday) means that the day of week is found on or after the specified RunDay. A negative integer (representing -Sunday, -Monday, ..., -Saturday) means that the day of week is found on or BEFORE the RunDay." ), ModelCorrespondence{"CIM_Job.RunMonth", "CIM_Job.RunDay", "CIM_Job.RunStartInterval"}, ValueMap{"-7", "-6", "-5", "-4", "-3", "-2", "-1", "0", "1", "2", "3", "4", "5", "6", "7"}, Values{"-Saturday", "-Friday", "-Thursday", "-Wednesday", "-Tuesday", "-Monday", "-Sunday", "ExactDayOfMonth", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}, Write ( true )]
	sint8 RunDayOfWeek;

 	[Description ( "The month during which the Job should be processed. Specify 0 for January, 1 for February, and so on." ), ModelCorrespondence{"CIM_Job.RunDay", "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval"}, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}, Values{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}, Write ( true )]
	uint8 RunMonth;

 	[Description ( "The time interval after midnight when the Job should be processed. For example, \n00000000020000.000000:000 \nindicates that the Job should be run on or after two o\'clock, local time or UTC time (distinguished using the LocalOrUtcTime property." ), ModelCorrespondence{"CIM_Job.RunMonth", "CIM_Job.RunDay", "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval"}, Write ( true )]
	datetime RunStartInterval;

 	[Deprecated{"CIM_Job.RunMonth", "CIM_Job.RunDay", "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval"}, Description ( "The time that the current Job is scheduled to start. This time can be represented by the actual date and time, or an interval relative to the time that this property is requested. A value of all zeroes indicates that the Job is already executing. The property is deprecated in lieu of the more expressive scheduling properties, RunMonth, RunDay, RunDayOfWeek, and RunStartInterval." ), Write ( true )]
	datetime ScheduledStartTime;

 	[Description ( "The time that the Job was actually started. This time can be represented by an actual date and time, or by an interval relative to the time that this property is requested. Note that this property is also present in the JobProcessingStatistics class. This class is necessary to capture the processing information for recurring Jobs, because only the \'last\' run time can be stored in this single-valued property." )]
	datetime StartTime;

 	[Description ( "The time that the Job was submitted to execute. A value of all zeroes indicates that the owning element is not capable of reporting a date and time. Therefore, the ScheduledStartTime and StartTime are reported as intervals relative to the time their values are requested." )]
	datetime TimeSubmitted;

 	[Description ( "The time after which the Job is invalid or should be stopped. This time can be represented by an actual date and time, or by an interval relative to the time that this property is requested. A value of all nines indicates that the Job can run indefinitely." ), ModelCorrespondence{"CIM_Job.LocalOrUtcTime"}, Write ( true )]
	datetime UntilTime;


		[Deprecated{"CIM_ConcreteJob.RequestStateChange()"}, Description ( "KillJob is being deprecated because there is no distinction made between an orderly shutdown and an immediate kill. CIM_ConcreteJob.RequestStateChange() provides \'Terminate\' and \'Kill\' options to allow this distinction. \nA method to kill this job and any underlying processes, and to remove any \'dangling\' associations." ), ValueMap{"0", "1", "2", "3", "4", "6", "7", "..", "32768..65535"}, Values{"Success", "Not Supported", "Unknown", "Timeout", "Failed", "Access Denied", "Not Found", "DMTF Reserved", "Vendor Specific"}]
	uint32 KillJob(
		[Description ( "Indicates whether or not the Job should be automatically deleted upon termination. This parameter takes precedence over the property, DeleteOnCompletion." ), IN ( true )]
		boolean DeleteOnKill
	);
};

// IBMTSDS_ElementCapabilitiesMasking

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_ElementCapabilitiesMasking : CIM_ElementCapabilities {
	[Key ( true ), Override ( "Capabilities" )]
	IBMTSDS_DeviceMaskingCapabilities ref Capabilities;

 	[Key ( true ), Override ( "ManagedElement" )]
	IBMTSDS_StorageSystem ref ManagedElement;


};

// IBMTSDS_RankBasedOnDiskExtent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_ArrayExtent and IBMTSDS_RankExtent. It is strongly suggested to treat this as a generic BasedOnassociation, to be traversed from Primordial StorageExtent to the volume, rather than a vendor or device specific association.Only valid for ESS." ),  Version ( "2.6.0" )]
class IBMTSDS_RankBasedOnDiskExtent : CIM_CompositeExtentBasedOn {
	[Description ( "The lower level StorageExtent." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_DiskExtent ref Antecedent;

 	[Description ( "The higher level StorageExtent." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_RankExtent ref Dependent;

 	[Description ( "EndingAddress indicates where in lower level storage, the higher level Extent ends. This property is useful when mapping non-contiguous Extents into a higher level grouping. This is unknown, and set to 0." )]
	uint64 EndingAddress = 0;

 	[Description ( "Not supported. Set to 0." )]
	uint16 OrderIndex = 0;

 	[Description ( "StartingAddress indicates where in lower level storage, the higher level Extent begins. This is unknown, and set to 0." )]
	uint64 StartingAddress = 0;


};

// IBMTSDS_ExtentPoolStatisticalData

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CIM_ElementStatisticalData is an association that relates a IBMTSDS_ExtentPool to its IBMTSDS_ExtentPoolStatistics." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_ExtentPoolStatisticalData : CIM_ElementStatisticalData {
	[Description ( "The ExtentPool." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_ExtentPool ref ManagedElement;

 	[Description ( "The ExtentPoolStatistics." ), Key ( true ), Override ( "Stats" )]
	IBMTSDS_ExtentPoolStatistics ref Stats;


};

// IBMTSDS_ProviderConfiguration

	[Description ( "This class represents the set of configuration properties for the CIM Agent." ), IBMExtension ( "5.2.0.650" ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_ProviderConfiguration {
	[Description ( "The percentage of time spent updating the data cache for DS devices." ), IBMExtension ( "5.2.0.650" )]
	uint32 DSDutyCycle;

 	[Description ( "The percentage of time spent updating the data cache for ESS devices." ), IBMExtension ( "5.2.0.650" )]
	uint32 ESSDutyCycle;

 	[Description ( "Always set to \'IBMTSDS:DSCIMProvider\'.  There can only be one instance of this class." ), Key ( true )]
	string InstanceID;

 	[Description ( "Command line argument passed into JVM." ), IBMExtension ( "5.2.0.650" )]
	string JVMArg;

 	[Description ( "The level of log event required to log into file.  The valid values are: 0 - Fatal errors only, 1 - Errors and above, 2 - Warnings and above, 3 - Informational and above." ), IBMExtension ( "5.2.0.650" )]
	uint32 LogLevel;

 	[Description ( "The IP Address to use to register for performance statistics for ESS. If not specified, then a default IP will be chosen. Localhost is not valid." ), IBMExtension ( "5.2.0.680" )]
	string PreferredEssPerfStatsIP;

 	[Description ( "The IP Addresses to be used for SLP Registration. If none are specified, then a default IP will be chosen. Localhost is not valid." ), IBMExtension ( "5.2.0.655" )]
	string PreferredSLPRegIPs[];

 	[Description ( "The list of trace components currently filtered." ), IBMExtension ( "5.2.0.650" )]
	string TraceComponent[];

 	[Description ( "The set of trace events currently filtered. The valid values are: 1 - Entry and Exit events, 2 - Debugging events, 4 - Fine-grained debugging events, 8 - Performance events." ), IBMExtension ( "5.2.0.650" )]
	uint32 TraceMask;


		[Description ( "Performs cleanup operations, such as disconnecting internal connections. This method is used for internal purposes. Clients should not be using this method. Use the stopagent script to shut down the CIM Agent." ), IBMExtension ( "5.2.0.650" )]
	uint32 Cleanup(
	
	);
	 	[Description ( "Sets the DS duty cycle, which is the percentage of time spent updating the DS cache. A value of zero is interpreted as turning the cache off, so that all data is retrieved realtime from the device" ), IBMExtension ( "5.2.0.650" ), MaxValue ( 99 ), MinValue ( 0 ), ValueMap{"0", "1", "2", "3", "4", "5", "6", ".."}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved"}]
	uint32 SetDSDutyCycle(
		[Required ( true )]
		uint32 DSDutyCycle
	);
	 	[Description ( "Sets the ESS duty cycle, which is the percentage of time spent updating the ESS cache" ), IBMExtension ( "5.2.0.650" ), MaxValue ( 99 ), MinValue ( 1 ), ValueMap{"0", "1", "2", "3", "4", "5", "6", ".."}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved"}]
	uint32 SetESSDutyCycle(
		[Required ( true )]
		uint32 ESSDutyCycle
	);
	 	[Description ( "Sets the JVM argument" ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", ".."}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved"}]
	uint32 SetJVMArg(
		[Required ( true )]
		string JVMArg
	);
	 	[Description ( "Sets the log level" ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", ".."}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved"}]
	uint32 SetLogLevel(
		[Required ( true )]
		uint32 LogLevel
	);
	 	[Description ( "Sets the preferred IP to use to register for performance statistics for ESS. If any of the IPs are invalid, the method will return 0x9409 andthe ValidIPs output parameter will contain the list of the valid IPsfound on the server. DNS names are not valid . Localhost is not valid" ), IBMExtension ( "5.2.0.680" ), ValueMap{"0x9409"}, Values{"Nonexistent IP"}]
	uint32 SetPreferredEssPerfStatsIP(
		[Description ( "The IP to use to register for performance statistics for ESS." ), IN ( true )]
		string IP,
	 	[Description ( "If the IP passed in was invalid, ValidIPs contains an array of the IPs found on the server. " ), OUT ( true )]
		string ValidIPs
	);
	 	[Description ( "Sets the preferred IP to use to register in SLP. If any of the IPs are invalid, the method will return 0x9409 and the IP output parameter will contain the list of the valid IPs found on the server. DNS names are not valid . Localhost is not valid The first IP in the list will be used as key for Server Profile classes." ), IBMExtension ( "5.2.0.655" ), ValueMap{"0x9409"}, Values{"Nonexistent IP"}]
	uint32 SetPreferredSLPRegIPs(
		[Description ( "As input parameter, the preferred IPs.As an output parameter, the list of valid IPs." ), IN ( true ), OUT ( true )]
		string IPs
	);
	 	[Description ( "Sets the trace component" ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "36901", ".."}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "The specified trace components are invalid", "DMTF Reserved"}]
	uint32 SetTraceComponent(
		[Required ( true )]
		string TraceComponent
	);
	 	[Description ( "Sets the trace mask" ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5", "6", ".."}, Values{"Job Completed with No Error", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved"}]
	uint32 SetTraceMask(
		[Required ( true )]
		uint32 TraceMask
	);
};

// IBMTSDS_AllocatedFromExtentPool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_ExtentPool and IBMTSDS_Volume.It is strongly recommended that this be treated as a generic AllocatedFromStoragePool association rather than a vendor or device specific association." ),  Version ( "2.8.0" )]
class IBMTSDS_AllocatedFromExtentPool : CIM_AllocatedFromStoragePool {
	[Description ( "The ExtentPool." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ExtentPool ref Antecedent;

 	[Description ( "The Volume." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_Volume ref Dependent;

 	[Description ( "Space consumed from this Pool, in bytes. This value MUST be maintained so that, relative to the Antecedent StoragePool, it is possible to compute TotalManagedSpace as StoragePool.RemainingManagedSpace plus the sum of SpaceConsumed from all of the AllocatedFromStoragePool references from the antecedent StoragePool. This means that this property refers to raw space." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_StoragePool.RemainingManagedSpace"}, Required ( true ), Units ( "Bytes" )]
	uint64 SpaceConsumed;


};

// IBMTSDS_RAIDVSFormatSetting

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "This class of StorageSetting is used to describe RAID in addition to VolumeType, to be used for ESS VolumeSpace creation. Nine instances of this class exist statically for each StorageManagementSystem, representing the cross product of valid RAID (JBOD, RAID5, RAID10) and VolumeSpace formats(FB, 3380, 3390)." ),  Version ( "2.8.1000" )]
class IBMTSDS_RAIDVSFormatSetting : CIM_StorageSetting {
	[Description ( "Enumeration indicating the type of setting. \"Fixed - Not Changeable\" settings are primordial. These setting are defined at the implementor of the class. \"Changeable - Transient\" is the type of setting produced by the \"CreateSetting\" method. A client can subsequently request that the implementation persist the generated and potentially modified setting indefinately. Only a \"Changeable - Transient\" setting SHALL be converted to a \"Changeable = Persistent\" setting; the setting SHALL NOT be changed back." ), Experimental ( true ), Override ( "ChangeableType" ), ValueMap{"0", "1", "2"}, Values{"Fixed - Not Changeable", "Changeable - Transient", "Changeable - Persistent"}]
	uint16 ChangeableType = 0;

 	[Description ( "DataRedundancyGoal describes the desired number of complete copies of data that can be maintained. This is set to DataRedundancyMin." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyMin"}, Override ( "DataRedundancyGoal" )]
	uint16 DataRedundancyGoal;

 	[Description ( "DataRedundancyMax describes the maximum number of complete copies of data that can be maintained. The max supported redundancy of RAID5 is 1 and of RAID10 is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMin", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMax" )]
	uint16 DataRedundancyMax;

 	[Description ( "DataRedundancyMin describes the minimum number of complete copies of data that can be maintained. The minimum of RAID5 is 1 and of RAID10 is 2." ), MinValue ( 1 ), ModelCorrespondence{"CIM_StorageCapabilities.DataRedundancyMax", "CIM_StorageCapabilities.DataRedundancyDefault"}, Override ( "DataRedundancyMin" )]
	uint16 DataRedundancyMin;

 	[Description ( "The user friendly name for this instance of SettingData. In addition, the user friendly name can be used as a index property for a search of query. Will be of the form StorageSetting for <RAID level>+<VSFormat>." ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. Will be of the form IBMTSDS:<RAID level>+<VS format>, e.g. IBMTSDS:RAID5+FB." ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;

 	[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"}, Override ( "NoSinglePointOfFailure" )]
	boolean NoSinglePointOfFailure = true;

 	[Description ( "Indicates the default value for the NoSinglePointOfFailure property." ), ModelCorrespondence{"CIM_StorageCapabilities.NoSinglePointOfFailure"}]
	boolean NoSinglePointOfFailureDefault = true;

 	[Description ( "PackageRedundancyGoal describes the desired number of redundant packages to 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 (max and min) for redundancy are defined using the properties, PackageRedundancyMax and PackageRedundancyMin. Set to Min, 1." ), ModelCorrespondence{"CIM_StorageSetting.PackageRedundancyMax", "CIM_StorageSetting.PackageRedundancyMin"}, Override ( "PackageRedundancyGoal" ), Write ( true )]
	uint16 PackageRedundancyGoal = 1;

 	[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. The max for RAID5 is 2 and for RAID10 is 3." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMin", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMax" )]
	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. The minimum for RAID5 and RAID10 is 1." ), ModelCorrespondence{"CIM_StorageCapabilities.PackageRedundancyMax", "CIM_StorageCapabilities.PackageRedundancyDefault"}, Override ( "PackageRedundancyMin" )]
	uint16 PackageRedundancyMin = 1;

 	[Description ( "Describes the IBM-defined RAID level. " ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4", "5"}, Values{"Not applicable", "Unknown", "Undefined", "JBOD", "RAID5", "RAID10"}]
	uint16 RAIDLevel[];

 	[Description ( "Describes the IBM-defined VolumeSpace format. " ), IBMExtension ( "5.2.0.650" ), ValueMap{"0", "1", "2", "3", "4"}, Values{"Not applicable", "Unknown", "FB", "3380", "3390"}]
	uint16 VSFormat[];


};

// IBMTSDS_ExtentTypeSettingToArrayPoolCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This association define StorageSettings that reflect the capabilities of the associated StorageCapabilities. The associated ExtentType setting can be passed into CreateOrModifyStoragePool as the Goal when the ArrayPool is passed in as InPools. Only valid for DS." ), Experimental ( true ),  Version ( "2.8.1000" )]
class IBMTSDS_ExtentTypeSettingToArrayPoolCapabilities : CIM_StorageSettingsAssociatedToCapabilities {
	[Description ( "The ArrayPoolCapabilities." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ArrayPoolCapabilities ref Antecedent;

 	[Description ( "The default association associates the setting that will be used to create or modify a Storage Element if a no setting is passed as a Goal. The default is FB." ), Required ( true )]
	boolean DefaultSetting;

 	[Description ( "The ExtentTypeSetting." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_ExtentTypeSetting ref Dependent;


};

// CIM_CredentialManagementService

	[Abstract ( true ), Description ( "CIM_CredentialManagementService issues credentials and manages the credential lifecycle." ), Version ( "2.6.0" )]
class CIM_CredentialManagementService : CIM_AuthenticationService {
};

// CIM_ListenerDestinationCIMXML

	[Description ( "CIM_ListenerDestinationCIMXML describes the destination for CIM Export Messages to be delivered via CIM-XML." ), Version ( "2.8.0" )]
class CIM_ListenerDestinationCIMXML : CIM_ListenerDestination {
	[Description ( "The destination URL to which CIM-XML Export Messages are to be delivered.The scheme prefix MUST be consistent with the DMTF CIM-XML specifications.If a scheme prefix is not specified, the scheme \"http:\" MUST be assumed." ), Required ( true )]
	string Destination;


};

// IBMTSDS_VolumeManifest

[Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Description ( "Instances of this class define a list of supported properties of IBMTSDS_VolumeStatistics instances. In the case where a IBMTSDS_VolumeManifest instance is a member of a IBMTSDS_VolStatManifestCollection used in a IBMTSDS_PerformanceStatisticsService.GetStatisticsCollection request, for each of the boolean \"include\" properties set to true in  Manifest class, the corresponding VolumeStatistics property will be included, if available, in the statistics returned for IBMTSDS_VolumeStatistics instances. " ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_VolumeManifest : CIM_BlockStatisticsManifest {
	[Description ( "Since CIM/WBEM do not require that the order of properties in a mof file be preserved, this vendor-extension property lets clients know what order the properties will be returned in the GetStatisticsCollection method so that the order does not need to be hard-coded. SMI-S defines the order to beInstanceID, ElementType, StatisticTime, followed by the order in which the Include*** properties are defined above. The strings will be the name of the property in IBMTSDS_VolumeStatistics (without \"Include\")." ), IBMExtension ( "5.2.1" ), ModelCorrespondence{"CIM_BlockStatisticsService.GetStatisticsCollection(Statistics)"}]
	string BulkFormat[];

 	[Description ( "The ElementName will be set to InstanceID without the \'IBMTSDS:\'" ), MaxLen ( 64 ), Override ( "ElementName" ), Required ( true )]
	string ElementName;

 	[Description ( "Determines the type of elements that this BlockStatisticsManifest can be applied to (e.g. during a GetStatisticsCollection request). This is used when the same set of statistical metrics is calculated for several types of devices. In this way, a single BlockStatisticsManifest instance can be used to filter all the StatsiticalData instances that contain metrics for the same type of element in a StatisticsCollection. If used, a subclass should override this property to specify the element types supported by that class, preferably through ValueMap and Values qualifiers to allow clients to programmatically retrieve those supported types." ), ModelCorrespondence{"CIM_BlockStorageStatisticalData.ElementType"}, Override ( "ElementType" ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "..", "0x8000.."}, Values{"Computer System", "Front-end Computer System", "Peer Computer System", "Back-end Computer System", "Front-end Port", "Back-end Port", "Volume", "Extent", "Disk Drive", "Arbitrary LUs", "Remote Replica Group", "DMTF Reserved", "Vendor Specific"}]
	uint16 ElementType = 8;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeAbbreviatedID = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeAccumulatedReadTime = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeAccumulatedWriteTime = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeBypassCacheRequests = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeBytesRead = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeBytesWritten = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeCacheDASDTransfers = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeCacheFastWriteHits = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeCacheFastWriteReadHits = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeCacheFastWriteReadRequests = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeCacheFastWriteRequests = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeCacheSpaceDelay = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeContaminatingWrites = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeDASDCacheTransfers = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeDFWHits = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeDFWSequentialHits = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeExtentPoolInstanceID = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeInhibitCacheLoadingRequests = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeIrregularTrackAccesses = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeIrregularTrackHits = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeLowerInterfaceActivity = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeLSS = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeMaxCount = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeMaxKB = true;

 	[IBMExtension ( "5.2.1" )]
	boolean IncludeMaxMS = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeNormalDFWOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeNormalReadHits = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeNormalReadRequests = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeNormalWriteRequests = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeNVSSpaceAllocations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeNVSSpaceDelayingDFW = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePhysicalStorageBytesRead = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePhysicalStorageBytesWritten = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePhysicalStorageReadOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePhysicalStorageReadTime = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePhysicalStorageWriteOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePhysicalStorageWriteTime = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludePPRCTracks = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeQuickWritePromotes = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeRecordCacheMisses = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeRecordModeReads = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSequentialAccessDFWOperations = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSequentialDASDCacheTransfers = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSequentialReadHits = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSequentialReadRequests = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSequentialWriteRequests = true;

 	[IBMExtension ( "5.2.0.650" )]
	boolean IncludeSideFileTrackReads = true;

 	[Override ( "IncludeStatisticTime" )]
	boolean IncludeStatisticTime = true;

 	[Override ( "IncludeTotalIOs" )]
	boolean IncludeTotalIOs = true;

 	[Description ( "Currently only the default VolumeManifest is supported. The InstanceID will be \'IBMTSDS:VolumeManifest-Default\'" ), Key ( true ), Override ( "InstanceID" )]
	string InstanceID;


};

// IBMTSDS_VolManifestMemberOfCollection

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "CIM_MemberOfCollection is an aggregation used to establish membership of ManagedElements in a Collection." ),  Version ( "2.10.0" )]
class IBMTSDS_VolManifestMemberOfCollection : CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The Collection that aggregates members." ), Key ( true ), Override ( "Collection" )]
	IBMTSDS_BlockStatisticsManifestCollection ref Collection;

 	[Description ( "The aggregated member of the Collection." ), Key ( true ), Override ( "Member" )]
	IBMTSDS_VolumeManifest ref Member;


};

// IBMTSDS_ExtentPoolToCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Assocation between IBMTSDS_ExtentPool and IBMTSDS_ExtentPoolCapabilities. The cardinality is 1:1." ),  Version ( "2.7.0" )]
class IBMTSDS_ExtentPoolToCapabilities : CIM_ElementCapabilities {
	[Description ( "The ExtentPoolCapabilities." ), Key ( true ), Override ( "Capabilities" )]
	IBMTSDS_ExtentPoolCapabilities ref Capabilities;

 	[Description ( "The ExtentPool." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_ExtentPool ref ManagedElement;


};

// IBMTSDS_StorageConfigurationServiceToCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "ElementCapabilities represents the association between ManagedElements and their Capabilities. Note that the cardinality of the ManagedElement reference is Min(1), Max(1). This cardinality mandates the instantiation of the ElementCapabilities association for the referenced instance of Capabilities. ElementCapabilities describes the existence requirements and context for the referenced instance of ManagedElement. Specifically, the ManagedElement MUST exist and provides the context for the Capabilities." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageConfigurationServiceToCapabilities : CIM_ElementCapabilities {
	[Description ( "The Capabilities object associated with the element." ), Key ( true ), Override ( "Capabilities" )]
	IBMTSDS_StorageConfigurationCapabilities ref Capabilities;

 	[Description ( "The managed element." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_StorageConfigurationService ref ManagedElement;


};

// IBMTSDS_RankManifestMemberOfCollection

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "CIM_MemberOfCollection is an aggregation used to establish membership of ManagedElements in a Collection." ),  Version ( "2.10.0" )]
class IBMTSDS_RankManifestMemberOfCollection : CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The Collection that aggregates members." ), Key ( true ), Override ( "Collection" )]
	IBMTSDS_BlockStatisticsManifestCollection ref Collection;

 	[Description ( "The aggregated member of the Collection." ), Key ( true ), Override ( "Member" )]
	IBMTSDS_RankManifest ref Member;


};

// IBMTSDS_FCPortStatisticalData

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CIM_ElementStatisticalData is an association that relates a IBMTSDS_FCPort to its IBMTSDS_FCPortStatistics." ), Experimental ( true ),  Version ( "2.10.0" )]
class IBMTSDS_FCPortStatisticalData : CIM_ElementStatisticalData {
	[Description ( "The FCPort." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_FCPort ref ManagedElement;

 	[Description ( "The FCPortStatistics." ), Key ( true ), Override ( "Stats" )]
	IBMTSDS_FCPortStatistics ref Stats;


};

// CIM_GatewayPathID

	[Description ( "GatewayPathID extends StorageHardwareID to name a path segment defined by the end identities, HardwareID and GatewayID. The purpose is to describe Identity to allow access control to be applied to a particular path segment. Think of the element identified by GatewayPathID as a Gateway between a non-trusted world and a trusted world." ), Version ( "2.8.1000" )]
class CIM_GatewayPathID : CIM_StorageHardwareID {
	[Description ( "The ID representing the Gateway for a path segment from the element identified in the HardwareID property to the Gateway." ), ModelCorrespondence{"CIM_GatewayPathID.GatewayIDType", "CIM_GatewayPathID.OtherGatewayIDType"}, Required ( true )]
	string GatewayID;

 	[Description ( "The type of the ID property. iSCSI GatewayIDs may use one of three iSCSI formats - iqn, eui, or naa. This three letter format is the name prefix; so a single iSCSI type is provided here, the prefix can be used to further refine the format." ), ModelCorrespondence{"CIM_GatewayPathID.GatewayID"}, Required ( true ), ValueMap{"1", "2", "3", "4", "5"}, Values{"Other", "PortWWN", "NodeWWN", "Hostname", "iSCSI Name"}]
	uint16 GatewayIDType;

 	[Description ( "The gateway ID type when Gateway IDType is \"Other\"." ), ModelCorrespondence{"CIM_GatewayPathID.GatewayID"}]
	string OtherGatewayIDType;


};

// IBMTSDS_StgMgmtSysHostsObjMgr

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CIM_HostedService is an association between a Service and the System on which the functionality resides. This particular class is for the association between StorageManagementSystem and ObjectManager." ),  Version ( "2.8.0" )]
class IBMTSDS_StgMgmtSysHostsObjMgr : CIM_HostedService {
	[Description ( "The hosting System." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_StorageManagementSystem ref Antecedent;

 	[Description ( "The Service hosted on the System." ), Key ( true ), Override ( "Dependent" ), Weak ( true )]
	IBMTSDS_ObjectManager ref Dependent;


};

// CIM_LocalCredentialManagementService

	[Abstract ( true ), Description ( "CIM_LocalCredentialManagementService is a credential management service that provides management of credentials used by the local system." ), Version ( "2.6.0" )]
class CIM_LocalCredentialManagementService : CIM_CredentialManagementService {
};

// IBMTSDS_SubProfileRequiresProfile

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "A subprofile requires another RegisteredProfile for context. This association mandates the scoping relationship between a subprofile and its scoping profile." ),  Version ( "2.8.0" )]
class IBMTSDS_SubProfileRequiresProfile : CIM_SubProfileRequiresProfile {
	[Description ( "The RegisteredProfile that is referenced/required by the subprofile." ), Key ( true ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_RegisteredProfile ref Antecedent;

 	[Description ( "A RegisteredSubProfile that requires a scoping profile, for context." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_RegisteredSubProfile ref Dependent;


};

// CIM_AuthorizedSubject

[ASSOCIATION ( true ),  Description ( "CIM_AuthorizedSubject is an association used to tie specific AuthorizedPrivileges to specific subjects (i.e., Identities, Roles or Collections of these). At this time, only Identities and Roles (or Collections of Identities and Roles) should be associated to AuthorizedPrivileges using this relationship. Note that any Privileges not explicitly granted to a subject, SHOULD be denied." ), Version ( "2.8.0" )]
class CIM_AuthorizedSubject {
	[Description ( "The AuthorizedPrivilege either granted or denied to an Identity, Role or Collection. Whether the privilege is granted or denied is defined by the inherited property, CIM_Privilege.PrivilegeGranted." ), Key ( true )]
	CIM_AuthorizedPrivilege ref Privilege;

 	[Description ( "The Subject for which AuthorizedPrivileges are granted or denied. Whether the privilege is granted or denied is defined by the property, CIM_Privilege.PrivilegeGranted." ), Key ( true )]
	CIM_ManagedElement ref PrivilegedElement;


};

// IBMTSDS_StorageConfigurationServiceToReplicationCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "ElementCapabilities represents the association between ManagedElements and their Capabilities. Note that the cardinality of the ManagedElement reference is Min(1), Max(1). This cardinality mandates the instantiation of the ElementCapabilities association for the referenced instance of Capabilities. ElementCapabilities describes the existence requirements and context for the referenced instance of ManagedElement. Specifically, the ManagedElement MUST exist and provides the context for the Capabilities." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageConfigurationServiceToReplicationCapabilities : CIM_ElementCapabilities {
	[Description ( "The Capabilities object associated with the element." ), Key ( true ), Override ( "Capabilities" )]
	IBMTSDS_StorageReplicationCapabilities ref Capabilities;

 	[Description ( "The managed element." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_StorageConfigurationService ref ManagedElement;


};

// IBMTSDS_CommMechanismForManager

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "CommMechanismForManager is an association between an ObjectManager and an CIMXMLCommunicationMechanism class. The latter describes a possible encoding/protocol/ set of operations for accessing the referenced ObjectManager." ),  Version ( "2.6.0" )]
class IBMTSDS_CommMechanismForManager : CIM_CommMechanismForManager {
	[Description ( "The specific ObjectManager whose communication mechanism is described." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "Antecedent" )]
	IBMTSDS_ObjectManager ref Antecedent;

 	[Description ( "The encoding/protocol/set of operations that may be used to communicate with the referenced ObjectManager." ), Key ( true ), Min ( 1 ), Override ( "Dependent" )]
	IBMTSDS_CIMXMLCommunicationMechanism ref Dependent;


};

// IBMTSDS_AllocatedFromRankPool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_RankPool and IBMTSDS_ExtentPool.It is strongly recommended that this be treated as a generic AllocatedFromStoragePool association rather than a vendor or device specific association." ),  Version ( "2.8.0" )]
class IBMTSDS_AllocatedFromRankPool : CIM_AllocatedFromStoragePool {
	[Description ( "The RankPool." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_RankPool ref Antecedent;

 	[Description ( "The ExtentPool." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_ExtentPool ref Dependent;

 	[Description ( "Space consumed from this Pool, in bytes. This value MUST be maintained so that, relative to the Antecedent StoragePool, it is possible to compute TotalManagedSpace as StoragePool.RemainingManagedSpace plus the sum of SpaceConsumed from all of the AllocatedFromStoragePool references from the antecedent StoragePool. This means that this property refers to raw space." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_StoragePool.RemainingManagedSpace"}, Required ( true ), Units ( "Bytes" )]
	uint64 SpaceConsumed;


};

// IBMTSDS_FCPortManifestMemberOfCollection

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "CIM_MemberOfCollection is an aggregation used to establish membership of the ManagedElements FCPort in the FCPortManifestCollection." ),  Version ( "2.10.0" )]
class IBMTSDS_FCPortManifestMemberOfCollection : CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The Collection that aggregates members." ), Key ( true ), Override ( "Collection" )]
	IBMTSDS_BlockStatisticsManifestCollection ref Collection;

 	[Description ( "The aggregated member of the Collection." ), Key ( true ), Override ( "Member" )]
	IBMTSDS_FCPortManifest ref Member;


};

// IBMTSDS_MemberOfLPARRedundancySet

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Description ( "This class aggregates and associates the LPAR systems to corresponding RedundancySets." ),  Version ( "2.6.0" )]
class IBMTSDS_MemberOfLPARRedundancySet : CIM_MemberOfCollection {
	[Aggregate ( true ), Description ( "The Collection that aggregates members." ), Key ( true ), Override ( "Collection" )]
	IBMTSDS_LPARRedundancySet ref Collection;

 	[Description ( "The aggregated member of the Collection." ), Key ( true ), Override ( "Member" )]
	IBMTSDS_StorageLPARSystem ref Member;


};

// IBMTSDS_StorageSystemToFCPort

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "LogicalDevices may be aggregated by a System. This relationship is made explicit by the SystemDevice association." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageSystemToFCPort : CIM_SystemDevice {
	[Aggregate ( true ), Description ( "The StorageSystem." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The FCPort." ), Key ( true ), Override ( "PartComponent" ), Weak ( true )]
	IBMTSDS_FCPort ref PartComponent;


};

// IBMTSDS_StorageSystemToArraySiteExtent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "LogicalDevices may be aggregated by a System. This relationship is made explicit by the SystemDevice association." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageSystemToArraySiteExtent : CIM_SystemDevice {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The LogicalDevice that is a component of a System." ), Key ( true ), Override ( "PartComponent" ), Weak ( true )]
	IBMTSDS_ArraySiteExtent ref PartComponent;


};

// IBMTSDS_AuthorizedSubject

[ASSOCIATION ( true ),  Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" )]
class IBMTSDS_AuthorizedSubject : CIM_AuthorizedSubject {
	[Key ( true ), Override ( "Privilege" )]
	IBMTSDS_Privilege ref Privilege;

 	[Key ( true ), Override ( "PrivilegedElement" )]
	IBMTSDS_StorageHardwareID ref PrivilegedElement;


};

// IBMTSDS_ProductForStorageFacilityChassis

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "Indicates that the referenced PhysicalElement is acquired as part of a Product." ),  Version ( "2.7.0" )]
class IBMTSDS_ProductForStorageFacilityChassis : CIM_ProductPhysicalComponent {
	[Description ( "The Product." ), Max ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageFacilityProduct ref GroupComponent;

 	[Description ( "The PhysicalElement which is a part of the Product." ), Override ( "PartComponent" )]
	IBMTSDS_StorageFacilityChassis ref PartComponent;


};

// IBMTSDS_RAIDVSFormatSettingToRankPoolCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "This association define StorageSettings that reflect the capabilities of the associated StorageCapabilities. The associated DataType setting can be passed into CreateOrModifyElementFromStoragePool as the Goal when the ExtentPool is passed in as InPools. Only valid for ESS" ), Experimental ( true ),  Version ( "2.8.1000" )]
class IBMTSDS_RAIDVSFormatSettingToRankPoolCapabilities : CIM_StorageSettingsAssociatedToCapabilities {
	[Description ( "The RankPoolCapabilities." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_RankPoolCapabilities ref Antecedent;

 	[Description ( "The default association associates the setting that will be used to create or modify a Storage Element if a no setting is passed as a Goal. The default is RAID5+FB." ), Required ( true )]
	boolean DefaultSetting;

 	[Description ( "The RankVSFormatSetting." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_RAIDVSFormatSetting ref Dependent;


};

// CIM_ConcreteJob

	[Description ( "A concrete version of Job. This class represents a generic and instantiable unit of work, such as a batch or a print job." ), Version ( "2.10.0" )]
class CIM_ConcreteJob : CIM_Job {
	[Description ( "Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class. In order to ensure uniqueness within the NameSpace, the value of InstanceID SHOULD be constructed using the following \'preferred\' algorithm: \n<OrgID>:<LocalID> \nWhere <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 that is 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 re-used to identify different underlying (real-world) elements. If the above \'preferred\' algorithm is not used, the defining entity must assure that the resulting InstanceID is not re-used across any InstanceIDs produced by this or other providers for the NameSpace of this instance. \nFor DMTF defined instances, the \'preferred\' algorithm must be used with the <OrgID> set to \'CIM\'." ), Key ( true )]
	string InstanceID;

 	[Description ( "JobState is an integer enumeration that indicates the operational state of a Job. It can also indicate transitions between these states, for example, \'Shutting Down\' and \'Starting\'. Following is a brief description of the states: \nNew (2) indicates that the job has never been started. \nStarting (3) indicates that the job is moving from the \'New\', \'Suspended\', or \'Service\' states into the \'Running\' state. \nRunning (4) indicates that the Job is running. \nSuspended (5) indicates that the Job is stopped, but can be restarted in a seamless manner. \nShutting Down (6) indicates that the job is moving to a \'Completed\', \'Terminated\', or \'Killed\' state. \nCompleted (7) indicates that the job has completed normally. \nTerminated (8) indicates that the job has been stopped by a \'Terminate\' state change request. The job and all its underlying processes are ended and can be restarted (this is job-specific) only as a new job. \nKilled (9) indicates that the job has been stopped by a \'Kill\' state change request. Underlying processes might have been left running, and cleanup might be required to free up resources. \nException (10) indicates that the Job is in an abnormal state that might be indicative of an error condition. Actual status might be displayed though job-specific objects. \nService (11) indicates that the Job is in a vendor-specific state that supports problem discovery, or resolution, or both." ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12..32767", "32768..65535"}, Values{"New", "Starting", "Running", "Suspended", "Shutting Down", "Completed", "Terminated", "Killed", "Exception", "Service", "DMTF Reserved", "Vendor Reserved"}]
	uint16 JobState;

 	[Description ( "The user-friendly name for this instance of a Job. In addition, the user-friendly name can be used as a property for a search or query. (Note: Name does not have to be unique within a namespace.)" ), Override ( "Name" ), Required ( true )]
	string Name;

 	[Description ( "The amount of time that the Job is retained after it has finished executing, either succeeding or failing in that execution. The job must remain in existence for some period of time regardless of the value of the DeleteOnCompletion property. \nThe default is five minutes." ), Required ( true ), Write ( true )]
	datetime TimeBeforeRemoval;

 	[Description ( "The date or time when the state of the Job last changed. If the state of the Job has not changed and this property is populated, then it must be set to a 0 interval value. If a state change was requested, but rejected or not yet processed, the property must not be updated." )]
	datetime TimeOfLastStateChange;


		[Description ( "When the job is executing or has terminated without error, then this method returns no CIM_Error instance. However, if the job has failed because of some internal problem or because the job has been terminated by a client, then a CIM_Error instance is returned." ), Experimental ( true ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "4098..32767", "32768..65535"}, Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access Denied", "DMTF Reserved", "Vendor Specific"}]
	uint32 GetError(
		[Description ( "If the OperationalStatus on the Job is not \"OK\", then this method will return a CIM Error instance. Otherwise, when the Job is \"OK\", null is returned." ), EmbeddedInstance ( "CIM_Error" ), OUT ( true )]
		string Error
	);
	 	[Description ( "Requests that the state of the job be changed to the value specified in the RequestedState parameter. Invoking the RequestStateChange method multiple times could result in earlier requests being overwritten or lost. \nIf 0 is returned, then the task completed successfully. Any other return code indicates an error condition." ), ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098", "4099", "4100..32767", "32768..65535"}, Values{"Completed with No Error", "Not Supported", "Unknown/Unspecified Error", "Can NOT complete within Timeout Period", "Failed", "Invalid Parameter", "In Use", "DMTF Reserved", "Method Parameters Checked - Transition Started", "Invalid State Transition", "Use of Timeout Parameter Not Supported", "Busy", "Method Reserved", "Vendor Specific"}]
	uint32 RequestStateChange(
		[Description ( "RequestStateChange changes the state of a job. The possible values are as follows: \nStart (2) changes the state to \'Running\'. \nSuspend (3) stops the job temporarily. The intention is to subsequently restart the job with \'Start\'. It might be possible to enter the \'Service\' state while suspended. (This is job-specific.) \nTerminate (4) stops the job cleanly, saving data, preserving the state, and shutting down all underlying processes in an orderly manner. \nKill (5) terminates the job immediately with no requirement to save data or preserve the state. \nService (6) puts the job into a vendor-specific service state. It might be possible to restart the job." ), IN ( true ), ValueMap{"2", "3", "4", "5", "6", "7..32767", "32768..65535"}, Values{"Start", "Suspend", "Terminate", "Kill", "Service", "DMTF Reserved", "Vendor Reserved"}]
		uint16 RequestedState,
	 	[Description ( "A timeout period that specifies the maximum amount of time that the client expects the transition to the new state to take. The interval format must be used to specify the TimeoutPeriod. A value of 0 or a null parameter indicates that the client has no time requirements for the transition. \nIf this property does not contain 0 or null and the implementation does not support this parameter, a return code of \'Use Of Timeout Parameter Not Supported\' must be returned." ), IN ( true )]
		datetime TimeoutPeriod
	);
};

// IBMTSDS_RankPoolToCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Assocation between IBMTSDS_RankPool and IBMTSDS_RankPoolCapabilities. The cardinality is 1:1." ),  Version ( "2.7.0" )]
class IBMTSDS_RankPoolToCapabilities : CIM_ElementCapabilities {
	[Description ( "The RankPoolCapabilities." ), Key ( true ), Override ( "Capabilities" )]
	IBMTSDS_RankPoolCapabilities ref Capabilities;

 	[Description ( "The RankPool." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_RankPool ref ManagedElement;


};

// IBMTSDS_StorageSynchronized

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Indicates that two Storage objects were replicated at the specified point in time. Currently only the UnSyncAssoc and UnSyncUnAssoc CopyTypes are supported." ),  Version ( "2.9.1000" )]
class IBMTSDS_StorageSynchronized : CIM_StorageSynchronized {
	[Description ( "A limited number of total background copies can run at a timeThis indicates if the background copy is active for this particular relationship." ), IBMExtension ( "5.2.0.650" )]
	boolean BackgroundCopyActive;

 	[Description ( "True if the StorageSynchronized was established with the RecordChanges option." ), IBMExtension ( "5.2.0.650" )]
	boolean ChangeRecordingEnabled;

 	[Description ( "Async = Asynchronous PPRC\nSync = Synchronous PPRC\nUnSyncAssoc = Persistent FlashCopy\nUnSyncUnAssoc = Non-Persistent FlashCopy\n" ), Override ( "CopyType" ), ValueMap{"2", "3", "4", "5", "..", "0x8000.."}, Values{"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", "DMTF Reserved", "Vendor Specific"}]
	uint16 CopyType;

 	[Description ( "If the relationship is valid, ErrorCode will be 0.If it is invalid, check for the value of ErrorCode in ReturnCodes.txt." ), IBMExtension ( "5.2.0.650" )]
	uint32 ErrorCode;

 	[Description ( "True if the StorageSynchronized was established without the NoBackgroundCopy option." ), IBMExtension ( "5.2.0.650" )]
	boolean EstablishedWithBackgroundCopy;

 	[Description ( "Indicates that the StorageSynchronized instance is a full volume relation. Only supported for DS." ), IBMExtension ( "5.2.0.650" )]
	boolean FullVolumeRelation;

 	[Description ( "The number of out of sync tracks. Only supported for DS." ), IBMExtension ( "5.2.0.650" )]
	uint64 NumberOfOutOfSyncTracks;

 	[Description ( "ReplicaType provides information on how the Replica is being maintained. Values are: \nFull Copy: This indicates that a full copy of the source object is (or will be) generated . \nBefore Delta: This indicates that the source object will be maintained as a delta data from the replica. \nAfter Delta: This indicates that the replica will be maintained as delta data from the source object. \nLog: This indicates that the replica object is being maintained as a log of changes to the source. \nNot Specified: The method of maintaining the copy is not specified.\nAll copy relationships for ESS and DS have ReplicaType Not Specified." ), Override ( "ReplicaType" ), ValueMap{"0", "2", "3", "4", "5", "..", "0x8000.."}, Values{"Not Specified", "Full Copy", "Before Delta", "After Delta", "Log", "DMTF Reserved", "Vendor Specific"}]
	uint16 ReplicaType = 0;

 	[Description ( "True if the StorageSynchronized was modified with the Revertible option." ), IBMExtension ( "5.2.0.650" )]
	boolean Revertible;

 	[Description ( "True if the StorageSynchronized was established with the InhibitSourceWrites option." ), IBMExtension ( "5.2.0.650" )]
	boolean SourceWriteInhibited;

 	[Description ( "SyncedElement represents the Storage that is the target of the replication." ), Key ( true ), Override ( "SyncedElement" )]
	IBMTSDS_Volume ref SyncedElement;

 	[Description ( "Boolean indicating whether synchronization is maintained. Since only FlashCopy is supported, SyncMaintained is always false." ), Override ( "SyncMaintained" )]
	boolean SyncMaintained = false;

 	[Description ( "SyncState describes the state of the association with respect to Replication activity.\nCopyType      State     SyncState\nUnSyncAssoc   N/A       Idle\nUnSyncUnAssoc N/A       ResyncInProgress\n" ), Override ( "SyncState" ), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "..", "0x8000", "0x8001.."}, Values{"Initialized", "PrepareInProgress", "Prepared", "ResyncInProgress", "Synchronized", "Fracture In Progress", "QuiesceInProgress", "Quiesced", "Restore In Progresss", "Idle", "Broken", "Fractured", "Frozen", "Copy In Progress", "DMTF Reserved", "Unknown", "Vendor Specific"}]
	uint16 SyncState;

 	[Description ( "SystemElement represents the Storage that is the source of the replication." ), Key ( true ), Override ( "SystemElement" )]
	IBMTSDS_Volume ref SystemElement;

 	[Description ( "True if the StorageSynchronized was established with the InhibitTargetWrites option." ), IBMExtension ( "5.2.0.650" )]
	boolean TargetWriteInhibited;

 	[Description ( "The time which the StorageSynchronized was created." ), IBMExtension ( "5.2.0.650" )]
	datetime WhenCreated;

 	[Description ( "The point in time that the Elements were synchronized." ), Override ( "WhenSynced" )]
	datetime WhenSynced;


};

// IBMTSDS_StorageSystemToRankExtent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "LogicalDevices may be aggregated by a System. This relationship is made explicit by the SystemDevice association." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageSystemToRankExtent : CIM_SystemDevice {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The LogicalDevice that is a component of a System." ), Key ( true ), Override ( "PartComponent" ), Weak ( true )]
	IBMTSDS_RankExtent ref PartComponent;


};

// IBMTSDS_PrimordialStoragePoolToCapabilities

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Assocation between IBMTSDS_PrimordialStoragePool and IBMTSDS_PrimordialStoragePoolCapabilities. The cardinality is 1:1." ),  Version ( "2.7.0" )]
class IBMTSDS_PrimordialStoragePoolToCapabilities : CIM_ElementCapabilities {
	[Description ( "The PrimordialStoragePoolCapabilities." ), Key ( true ), Override ( "Capabilities" )]
	IBMTSDS_PrimordialStoragePoolCapabilities ref Capabilities;

 	[Description ( "The PrimordialStoragePool." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "ManagedElement" )]
	IBMTSDS_PrimordialStoragePool ref ManagedElement;


};

// IBMTSDS_StorageSystemToDiskExtent

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ), Aggregation ( true ),  Composition ( true ), Description ( "LogicalDevices may be aggregated by a System. This relationship is made explicit by the SystemDevice association." ),  Version ( "2.7.0" )]
class IBMTSDS_StorageSystemToDiskExtent : CIM_SystemDevice {
	[Aggregate ( true ), Description ( "The parent system in the Association." ), Key ( true ), Max ( 1 ), Min ( 1 ), Override ( "GroupComponent" )]
	IBMTSDS_StorageSystem ref GroupComponent;

 	[Description ( "The LogicalDevice that is a component of a System." ), Key ( true ), Override ( "PartComponent" ), Weak ( true )]
	IBMTSDS_DiskExtent ref PartComponent;


};

// IBMTSDS_AllocatedFromArrayPool

[ASSOCIATION ( true ), Provider ( "java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider" ),  Description ( "Association between IBMTSDS_ArrayPool and IBMTSDS_RankPool. It is strongly recommended that this be treated as a generic AllocatedFromStoragePool association rather than a vendor or device specific association.Only valid for DS." ),  Version ( "2.8.0" )]
class IBMTSDS_AllocatedFromArrayPool : CIM_AllocatedFromStoragePool {
	[Description ( "The ArrayPool." ), Key ( true ), Override ( "Antecedent" )]
	IBMTSDS_ArrayPool ref Antecedent;

 	[Description ( "The RankPool." ), Key ( true ), Override ( "Dependent" )]
	IBMTSDS_RankPool ref Dependent;

 	[Description ( "Space consumed from this Pool, in bytes. This value MUST be maintained so that, relative to the Antecedent StoragePool, it is possible to compute TotalManagedSpace as StoragePool.RemainingManagedSpace plus the sum of SpaceConsumed from all of the AllocatedFromStoragePool references from the antecedent StoragePool. This means that this property refers to raw space." ), ModelCorrespondence{"CIM_StoragePool.TotalManagedSpace", "CIM_StoragePool.RemainingManagedSpace"}, Required ( true ), Units ( "Bytes" )]
	uint64 SpaceConsumed;


};
