#pragma namespace ("/root/brocade1")

#pragma Locale ("en-US")

// ==================================================================
// Qualifiers
// ==================================================================
Qualifier Abstract : boolean = false, 
    Scope(class, association, indication), 
    Flavor(Restricted);

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

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

Qualifier Alias : string = null, 
    Scope(property, reference, method), 
    Flavor(Translatable);

Qualifier ArrayType : string = "Bag", 
    Scope(property, parameter),
    Flavor(DisableOverride);

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

Qualifier BitMap : string[], 
    Scope(property, method, parameter);

Qualifier BitValues : string[], 
    Scope(property, method, parameter), 
    Flavor(Translatable);

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

Qualifier Counter : boolean = false, 
    Scope(property, method, parameter);

Qualifier Delete : boolean = false, 
    Scope(association, reference);

Qualifier Deprecated : string [], 
    Scope(any),
    Flavor(Restricted);

Qualifier Description : string = null, 
    Scope(any), 
    Flavor(Translatable);

Qualifier DisplayName : string = null, 
    Scope(any),
    Flavor(Translatable);

Qualifier DN : boolean=false, 
    Scope(property, method, parameter), 
    Flavor(DisableOverride); 

Qualifier EmbeddedInstance : string,
    Scope(property, method, parameter),
    Flavor(DisableOverride); 

Qualifier EmbeddedObject : boolean = false, 
    Scope(property, method, parameter),
    Flavor(DisableOverride); 

Qualifier Exception: boolean = false,
    Scope(class, indication), 
    Flavor(disableoverride, tosubclass); 

Qualifier Expensive : boolean = false, 
    Scope(any);

Qualifier Experimental : boolean = false, 
    Scope(any), 
    Flavor(Restricted); 

Qualifier Gauge : boolean = false, 
    Scope(property, method, parameter);

Qualifier Ifdeleted : boolean = false, 
    Scope(association, reference);

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

Qualifier Indication : boolean = false, 
    Scope(class, indication), 
    Flavor(DisableOverride);

Qualifier Invisible : boolean = false,
    Scope(reference, association, class, property, method);

Qualifier Key : boolean = false, 
    Scope(property, reference), 
    Flavor(DisableOverride);

Qualifier Large : boolean = false, 
    Scope(property, class);

Qualifier MappingStrings : string[],
    Scope(any);

Qualifier Max : uint32 = null, 
    Scope(reference);

Qualifier MaxLen : uint32 = null, 
    Scope(property, method, parameter);

Qualifier MaxValue : sint64 = null, 
    Scope(property, method, parameter);

Qualifier Min : uint32 = 0, 
    Scope(reference);

Qualifier MinLen : uint32 = 0,
    Scope(property, method, parameter);

Qualifier MinValue : sint64 = null, 
    Scope(property, method, parameter);

Qualifier ModelCorrespondence : string[], 
    Scope(any);

Qualifier Nonlocal : string = null, 
    Scope(reference);

Qualifier NonlocalType : string = null, 
    Scope(reference);

Qualifier NullValue : string = null, 
    Scope (property),
    Flavor(DisableOverride);

Qualifier Octetstring : boolean = false, 
    Scope(property, method, parameter), 
    Flavor(DisableOverride);

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

Qualifier Override : string = null, 
    Scope(property, method, reference), 
    Flavor(Restricted);

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

Qualifier PropertyUsage : string = "CurrentContext", 
    Scope(property); 

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

Qualifier Read : boolean = true, 
    Scope(property);

Qualifier Required : boolean = false, 
    Scope(property, reference, parameter),
    Flavor(DisableOverride);

//  The Revision qualifer has been deprecated. For the replacement,
//  see the usage rule for the version qualifer in the CIM
//  Specification.
Qualifier Revision : string = null, 
    Scope(class, association, indication ), 
    Flavor(Translatable);

Qualifier Schema : string = null, 
    Scope (property, method), 
    Flavor(DisableOverride, Translatable);

Qualifier Source : string = null, 
    Scope(class, association, indication);

Qualifier SourceType : string = null, 
    Scope(class, association, indication, reference);

Qualifier Static : boolean = false, 
    Scope(method, property),
    Flavor(DisableOverride);

Qualifier Syntax : string = null, 
    Scope(property, reference, method, parameter);

Qualifier SyntaxType : string = null, 
    Scope(property, reference, method, parameter);

Qualifier Terminal : boolean = FALSE, 
    Scope(class, association, indication);

Qualifier TriggerType : string = null,
    Scope(class, property, reference, method, association, indication);

Qualifier Units : string = null, 
    Scope(property, method, parameter), 
    Flavor(Translatable);

Qualifier UnknownValues : string[], 
    Scope(property),
    Flavor(DisableOverride);

Qualifier UnsupportedValues : string[], 
    Scope(property),
    Flavor(DisableOverride);

Qualifier ValueMap : string[], 
    Scope(property, method, parameter);

Qualifier Values : string[], 
    Scope(property, method, parameter), 
    Flavor(Translatable);

Qualifier Version : string = null, 
    Scope(class, association, indication), 
    Flavor(Restricted, Translatable);

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

Qualifier Write : boolean = false, 
    Scope(property);


// CIM_ManagedElement

    [Abstract(true),
     Version("2.7.0"),
     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.")
    ]
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 ManagedSystemElement\'s Name property 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 MAY be present in both the Name and ElementName properties.")
    ]
    string ElementName;

};

// CIM_ManagedSystemElement

    [Abstract(true),
     Version("2.8.0"),
     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.")
    ]
class CIM_ManagedSystemElement : CIM_ManagedElement {
    [Description("A datetime value indicating when the object was installed. A 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;

     [Description("Indicates the current status(es) of the element. Various health and operational statuses are defined. Many of the enumeration\'s values are self- explanatory. However, a few are not and are described in more detail. \n\"Stressed\" indicates that the element is functioning, but needs attention. Examples of \"Stressed\" states are overload, overheated, etc. \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 element\'s state and configuration may need to be updated. \n\"Dormant\" indicates that the element is inactive or quiesced. \n\"Supporting Entity in Error\" describes that this element may 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 the element has completed its operation. This value should be combined with either OK, Error, or Degraded so that a client can till if the complete operation passed (Completed with OK), and failure (Completed with Error). Completed with Degraded would imply the operation finished, but did not complete OK or report an error. \n\"Power Mode\" indicates 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 since it required the DEPRECATED qualifier. Due to the widespread use of the existing Status property in management applications, it is strongly RECOMMENDED that providers/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 (since it is single-valued) SHOULD also provide the primary status of the element."),
     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"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

     [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."),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.OperationalStatus"}
    ]
    string StatusDescriptions[];

     [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: 1) Status is more correctly defined as an array. This overcomes the limitation of describing status via a single value, when it is really a multi-valued property (for example, an element may be OK AND Stopped. 2) A MaxLen of 10 is too restrictive and leads to unclear enumerated values. And, 3) 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."),
     ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service", "Stressed", "NonRecover", "No Contact", "Lost Comm", "Stopped"},
     MaxLen(10)
    ]
    string Status;

};

// CIM_LogicalElement

    [Abstract(true),
     Version("2.6.0"),
     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.")
    ]
class CIM_LogicalElement : CIM_ManagedSystemElement {
};

// CIM_Job

    [Abstract(true),
     Version("2.8.0"),
     Description("A Job is a LogicalElement representing 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, queued, and its execution is not limited to a single system.")
    ]
class CIM_Job : CIM_LogicalElement {
    [Description("A free form string representing the Job\'s status. The primary status is reflected in the inherited OperationalStatus property. JobStatus provides additional, implementation-specific details."),
     ModelCorrespondence{"CIM_ManagedSystemElement.OperationalStatus"}
    ]
    string JobStatus;

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

     [Deprecated{"CIM_Job.RunMonth", "CIM_Job.RunDay", "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval"},
     Write(true),
     Description("The time that the current Job is scheduled to start. This may 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.")
    ]
    datetime ScheduledStartTime;

     [Description("The time that the Job was actually started. This may 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 is necessary to capture the processing information for recurring Jobs, since only the \'last\' run time can be stored in this single-valued property.")
    ]
    datetime StartTime;

     [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 is necessary to capture the processing information for recurring Jobs, since only the \'last\' run time can be stored in this single-valued property.")
    ]
    datetime ElapsedTime;

     [Write(true),
     Description("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.")
    ]
    uint32 JobRunTimes = 1;

     [Write(true),
     Description("The month during which the Job should be processed. Specify 0 for January, 1 for February, and so on."),
     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"},
     ModelCorrespondence{"CIM_Job.RunDay", "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval"}
    ]
    uint8 RunMonth;

     [Write(true),
     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 the end of the month. For example, 5 indicates the fifth day in 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 (e.g., 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."),
     MinValue(-31),
     MaxValue(31),
     ModelCorrespondence{"CIM_Job.RunMonth", "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval"}
    ]
    sint8 RunDay;

     [Write(true),
     Description("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."),
     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"},
     ModelCorrespondence{"CIM_Job.RunMonth", "CIM_Job.RunDay", "CIM_Job.RunStartInterval"}
    ]
    sint8 RunDayOfWeek;

     [Write(true),
     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"}
    ]
    datetime RunStartInterval;

     [Write(true),
     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"}
    ]
    uint16 LocalOrUtcTime;

     [Write(true),
     Description("The time after which the Job is invalid or should be stopped. This may 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"}
    ]
    datetime UntilTime;

     [Write(true),
     Description("User to be notified upon the Job completion or failure.")
    ]
    string Notify;

     [Description("The User that submitted the Job or the Service/method name/etc. that caused the job to be created."),
     ModelCorrespondence{"CIM_OwningJobElement"}
    ]
    string Owner;

     [Write(true),
     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 is necessary to capture the setting information that would influence a Job\'s results.")
    ]
    uint32 Priority;

     [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 is necessary to capture the processing information for recurring Jobs, since only the \'last\' run data can be stored in this single-valued property."),
     Units("Percent"),
     MinValue(0),
     MaxValue(101)
    ]
    uint16 PercentComplete;

     [Write(true),
     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 versus updating this property.")
    ]
    boolean DeleteOnCompletion;

     [Description("A vendor specific error code. This MUST be set to zero if the Job completed without error. Note that this property is also present in the JobProcessingStatistics class. This is necessary to capture the processing information for recurring Jobs, since only the \'last\' run error can be stored in this single-valued property."),
     ModelCorrespondence{"CIM_Job.ErrorDescription"}
    ]
    uint16 ErrorCode;

     [Description("A free form string containing the vendor error description. Note that this property is also present in the JobProcessingStatistics class. This is necessary to capture the processing information for recurring Jobs, since only the \'last\' run error can be stored in this single-valued property."),
     ModelCorrespondence{"CIM_Job.ErrorCode"}
    ]
    string ErrorDescription;

     [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 property, OtherRecoveryAction \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 on the queue from which it will run."),
     ValueMap{"0", "1", "2", "3", "4", "5"},
     Values{"Unknown", "Other", "Do Not Continue", "Continue With Next Job", "Re-run Job", "Run Recovery Job"},
     ModelCorrespondence{"CIM_Job.OtherRecoveryAction"}
    ]
    uint16 RecoveryAction;

     [Description("A string describing the recovery action when the instance\'s RecoveryAction property is 1 (\"Other\")."),
     ModelCorrespondence{"CIM_Job.RecoveryAction"}
    ]
    string OtherRecoveryAction;

    [Deprecated{"CIM_ConcreteJob.RequestStateChange()"},
     Description("KillJob is being deprecated because there is no distiction 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([IN(true), Description("Indicates whether or not the Job should be automatically deleted upon termination. This parameter takes precedence over the property, DeleteOnCompletion.")] boolean DeleteOnKill);
};

// CIM_ConcreteJob

    [Version("2.8.1000"),
     Description("A concrete version of Job. This class represents a generic and instantiable unit of work, such as a batch or a print job.")
    ]
class CIM_ConcreteJob : CIM_Job {
    [Key(true),
     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\'.")
    ]
    string InstanceID;

     [Required(true),
     Override("Name"),
     Description("The user friendly name for this instance of 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.)"),
     MaxLen(1024)
    ]
    string Name;

     [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 may be restarted in a seamless manner. \nShutting Down (6) indicates 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 may 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 may have been left running and cleanup may be required to free up resources. \nException (10) indicates that the Job is in an abnormal state that may be indicative of an error condition. Actual status may be surfaced though job-specific objects. \nService (11) indicates that the Job is in a vendor-specific state that supports problem discovery and/or resolution."),
     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 date/time when the Job\'s State 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;

     [Experimental(true),
     Required(true),
     Write(true),
     Description("The amount of time 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.")
    ]
    datetime TimeBeforeRemoval ;

    [Description("Requests that the job\'s state be changed to the value specified in the RequestedState parameter. Invoking the RequestStateChange method multiple times could result in earlier requests being overwritten/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([IN(true), Description("Changes the state of a job. \nStart (2) changes the state to \'Running\'. \nSuspend (3) stops the job temporarily. The intention is to subsequently restart the job with \'Start\'. It may be possible to enter the \'Service\' state while suspended - this is job-specific. \nTerminate (4) stops the job cleanly, saving data, preserving 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 state. Service (6) puts the job into a vendor-specific service state. The job may be able to be restarted."), ValueMap{"2", "3", "4", "5", "6", "7..32767", "32768..65535"}, Values{"Start", "Suspend", "Terminate", "Kill", "Service", "DMTF Reserved", "Vendor Reserved"}] uint16 RequestedState, [IN(true), 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 doesn\'t support this parameter. A return code of \'Use Of Timeout Parameter Not Supported\' MUST be returned.")] datetime TimeoutPeriod);
     [Experimental(true),
     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."),
     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([OUT(true), 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")] string Error);
};

// CIM_MethodResult

    [Experimental(true),
     Version("2.8.1000"),
     Description("Jobs are sometimes used to represent extrinsic method invocations that execute for times longer than the length of time is reasonable to require a client to wait. The method executing continues beyond the method return to the client. The class provides the result of the execution of a Job that was itself started by the side-effect of this extrinsic method invocation. \nThe indication instances embedded an instance of this class MUST be the same indications delivered to listening clients or recorded, all or in part, to logs. Basically, this approach is a corollary to the functionality provided by an instance of ListenerDestinationLog (as defined in the Interop Model). The latter provides a comprehensive, persistent mechanism for recording Job results, but is also more resource-intensive and requires supporting logging functionality. Both the extra resources and logging MAY NOT be available in all environments (for example, embedded environments). Therefore, this instance-based approach is also provided. \nThe MethodResult instances MUST NOT exist after the associated ConcreteJob is deleted.")
    ]
class CIM_MethodResult : CIM_ManagedElement {
    [Key(true),
     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\'.")
    ]
    string InstanceID;

     [Description("This property contains a CIM_InstMethodCall Indication that describes the pre-execution values of the extrinisic method invocation."),
     EmbeddedInstance("CIM_InstMethodCall")
    ]
    string PreCallIndication;

     [Description("This property contains a CIM_InstMethodCall Indication that describes the post-execution values of the extrinisic method invocation."),
     EmbeddedInstance("CIM_InstMethodCall")
    ]
    string PostCallIndication;

};

// CIM_AssociatedJobMethodResult

    [Association(true),
     Experimental(true),
     Version("2.8.1000"),
     Description("AssociatedJobMethodResult represents an association between a ConcreteJob and the MethodResult expressing the parameters for the Job when the job was created by side-effect of the execution of an extrinsic method.")
    ]
class CIM_AssociatedJobMethodResult {
    [Key(true),
     Max(1),
     Description("The associated ConcreteJob.")
    ]
    CIM_ConcreteJob REF Job;

     [Key(true),
     Max(1),
     Description("The associated MethodResult.")
    ]
    CIM_MethodResult REF JobParameters;

};

// CIM_IndicationFilter

    [Version("2.6.0"),
     Provider("internal: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.")
    ]
class CIM_IndicationFilter : CIM_ManagedElement {
    [Key(true),
     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."),
     MaxLen(256)
    ]
    string SystemCreationClassName;

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

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

     [Key(true),
     Description("The name of the filter.")
    ]
    string Name;

     [Description("The path to a local namespace where the Indications originate. If NULL, the namespace of the Filter registration is assumed.")
    ]
    string SourceNamespace;

     [Required(true),
     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"}
    ]
    string Query;

     [Required(true),
     Description("The language in which the query is expressed.")
    ]
    string QueryLanguage;

};

// CIM_ListenerDestination

    [Abstract(true),
     Version("2.8.0"),
     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).")
    ]
class CIM_ListenerDestination : CIM_ManagedElement {
    [Key(true),
     Description("A System\'s CreationClassName. A CIM Listener destination is defined in context of a CIM_System (e.g., the sending system."),
     MaxLen(256)
    ]
    string SystemCreationClassName;

     [Key(true),
     Description("A System\'s Name. A CIM Listener destination is defined in context of a CIM_System (e.g., the sending system."),
     MaxLen(256)
    ]
    string SystemName;

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

     [Key(true),
     Description("Indicates the name of the CIM Listener destination."),
     MaxLen(256)
    ]
    string Name;

     [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."),
     ValueMap{"1", "2", "3"},
     Values{"Other", "Permanent", "Transient"},
     ModelCorrespondence{"CIM_ListenerDestination.OtherPersistenceType"}
    ]
    uint16 PersistenceType;

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

};

// CIM_IndicationSubscription

    [Association(true),
     Version("2.7.0"),
     Provider("internal:cim_indicationsubscription"),
     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.")
    ]
class CIM_IndicationSubscription {
    [Key(true),
     Description("The Filter that defines the criteria and data of the possible Indications of this subscription.")
    ]
    CIM_IndicationFilter REF Filter;

     [Key(true),
     Description("The Handler addressing delivery of the possible Indications of this subscription.")
    ]
    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("The FailureTriggerTimeInterval is used by the client to specify a recommended minimum delay before the OnFatalErrorPolicy is implemented."),
     Units("Seconds")
    ]
    uint64 FailureTriggerTimeInterval;

     [Write(true),
     Description("Indicates the current processing state of the subscription."),
     ValueMap{"0", "1", "2", "3", "4"},
     Values{"Unknown", "Other", "Enabled", "Enabled Degraded", "Disabled"}
    ]
    uint16 SubscriptionState;

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

     [Write(true),
     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")
    ]
    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("SubscriptionTimeRemaining is a computed value that provides a snapshot of the time remaining in the Subscription."),
     Units("Seconds")
    ]
    uint64 SubscriptionTimeRemaining;

     [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("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("Defines the time interval for the repeat notification policy calculation."),
     Units("Seconds")
    ]
    uint64 RepeatNotificationInterval;

     [Description("Defines the gap interval for the repeat notification policy calculation."),
     Units("Seconds")
    ]
    uint64 RepeatNotificationGap;

     [Description("Defines the count property for the repeat notification policy calculation.")
    ]
    uint16 RepeatNotificationCount;

};

// CIM_Dependency

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

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

};

// CIM_Component

    [Association(true),
     Abstract(true),
     Aggregation(true),
     Version("2.7.0"),
     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.")
    ]
class CIM_Component {
    [Key(true),
     Aggregate(true),
     Description("The parent element in the association.")
    ]
    CIM_ManagedElement REF GroupComponent;

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

};

// CIM_EnabledLogicalElement

    [Abstract(true),
     Version("2.8.0"),
     Description("This class extends LogicalElement to abstract the concept of an element that is enabled and disabled, such as a LogicalDevice or a ServiceAccessPoint.")
    ]
class CIM_EnabledLogicalElement : CIM_LogicalElement {
    [Description("EnabledState is an integer enumeration that indicates the enabled/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/disabled states: \nEnabled (2) indicates that the element is/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 doesn\'t support being enabled/disabled. \nEnabled but Offline (6) indicates that the element may 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 may be completing commands, but will queue any new requests. \nQuiesce (9) indicates that the element is enabled but in a restricted mode. The element\'s behavior is similar to the Enabled state, but it only processes 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."),
     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"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.OtherEnabledState"}
    ]
    uint16 EnabledState = 5;

     [Description("A string describing the element\'s enabled/disabled state 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 indicating 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/disabled states. Note that when EnabledState is set to 5 (\"Not Applicable\"), then this property has no meaning. By default, the element\'s RequestedState is 5 (\"No Change\"). Refer to the EnabledState\'s 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). The former, Reboot, refers to doing a \"Shut Down\" and then moving to an \"Enabled\" state. The latter, Reset, indicates that the element is first \"Disabled\" and then \"Enabled\". The distinction between requesting \"Shut Down\" and \"Disabled\" should also be noted. The former, Shut Down, requests an orderly transition to the Disabled state, and MAY involve removing power, to completely erase any existing state. The latter, 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 may be overridden and defined as WRITEable in a subclass. The method approach is considered superior to a WRITEable property, since it allows an explicit invocation of the operation and the return of a result code."),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "..", "32768..65535"},
     Values{"Enabled", "Disabled", "Shut Down", "No Change", "Offline", "Test", "Deferred", "Quiesce", "Reboot", "Reset", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.EnabledState"}
    ]
    uint16 RequestedState = 5;

     [Write(true),
     Description("An enumerated value indicating an administrator\'s default/startup configuration for an element\'s Enabled State. 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"}
    ]
    uint16 EnabledDefault = 2;

     [Description("The date/time when the element\'s EnabledState 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 element\'s state be changed to the value specified in the RequestedState parameter. When the requested state change takes place, the element\'s EnabledState and RequestedState will be the same. Invoking the RequestStateChange method multiple times could result in earlier requests being overwritten/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."),
     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 - Job Started", "Invalid State Transition", "Use of Timeout Parameter Not Supported", "Busy", "Method Reserved", "Vendor Specific"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}
    ]
    uint32 RequestStateChange([IN(true), Description("The state requested for the element. This information will be placed into the instance\'s RequestedState property if the RequestStateChange method\'s return code is 0, 3, or 4096 (0x1000) - \'Completed with No Error\', \'Timeout\', or \'Job Started\' respectively. Refer to the description of the EnabledState and RequestedState properties for the detailed meanings of the RequestedState values."), 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"}, ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}] uint16 RequestedState, [IN(false), OUT(true), Description("Reference to the job (may be null if task completed).")] CIM_ConcreteJob REF Job, [IN(true), 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 doesn\'t support this parameter. A return code of \'Use Of Timeout Parameter Not Supported\' MUST be returned.")] datetime TimeoutPeriod);
};

// CIM_ServiceAccessPoint

    [Abstract(true),
     Version("2.6.0"),
     Description("CIM_ServiceAccessPoint represents the ability to utilize or invoke a Service. Access points represent that a Service is made available to other entities for use.")
    ]
class CIM_ServiceAccessPoint : CIM_EnabledLogicalElement {
    [Key(true),
     Propagated("CIM_System.CreationClassName"),
     Description("The scoping System\'s CreationClassName."),
     MaxLen(256)
    ]
    string SystemCreationClassName;

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

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

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

};

// CIM_SAPAvailableForElement

    [Association(true),
     Version("2.8.0"),
     Description("CIM_SAPAvailableForElement conveys the semantics of a Service Access Point being available for a ManagedElement. When CIM_SAPAvailableForElement is not instantiated then the SAP is assumed to be generally available. If instantiated, the SAP is only available 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.")
    ]
class CIM_SAPAvailableForElement {
    [Key(true),
     Description("The Service Access Point that is available.")
    ]
    CIM_ServiceAccessPoint REF AvailableSAP;

     [Key(true),
     Description("The ManagedElement for which the SAP is available.")
    ]
    CIM_ManagedElement REF ManagedElement;

};

// CIM_SettingData

    [Abstract(true),
     Version("2.7.0"),
     Description("The SettingData class represents configuration-related and operational parameters for one or more ManagedElement(s). A ManagedElement may have multiple SettingData objects associated with it. The current operational values for an Element\'s parameters are reflected by properties in the Element itself or by properties in its associations. These properties do not have to be the same values present in the SettingData object. For example, a modem may have a SettingData baud rate of 56Kb/sec but be operating at 19.2Kb/sec. \nNote that the CIM_SettingData class is very similar to CIM_Setting, yet both classes are present in the model. This is 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.")
    ]
class CIM_SettingData : CIM_ManagedElement {
    [Key(true),
     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\'.")
    ]
    string InstanceID;

     [Required(true),
     Override("ElementName"),
     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. (Note: Name does not have to be unique within a namespace.)")
    ]
    string ElementName;

};

// CIM_ElementSettingData

    [Association(true),
     Version("2.7.0"),
     Description("ElementSettingData represents the association between ManagedElements and applicable setting data. This association also describes whether this is a default or current setting.")
    ]
class CIM_ElementSettingData {
    [Key(true),
     Description("The managed element.")
    ]
    CIM_ManagedElement REF ManagedElement;

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

     [Description("An enumerated integer indicating 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 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;

};

// CIM_OwningJobElement

    [Association(true),
     Version("2.7.0"),
     Description("OwningJobElement represents an association between a Job and the ManagedElement responsible for the creation of the Job. This association may not be possible, given that the execution of jobs can move between systems and that the lifecycle of the creating entity may not persist for the total duration of the job. However, this can be very useful information when available. This association defines a more specific \'owner\' than is provided by the CIM_Job.Owner string."),
     ModelCorrespondence{"CIM_Job.Owner"}
    ]
class CIM_OwningJobElement {
    [Key(true),
     Max(1),
     Description("The ManagedElement responsible for the creation of the Job.")
    ]
    CIM_ManagedElement REF OwningElement;

     [Key(true),
     Description("The Job created by the ManagedElement.")
    ]
    CIM_Job REF OwnedElement;

};

// CIM_Service

    [Abstract(true),
     Version("2.7.0"),
     Description("A CIM_Service is a Logical Element that contains the information necessary to represent and manage the functionality provided by a Device and/or SoftwareFeature. A Service is a general-purpose object to configure and manage the implementation of functionality. It is not the functionality itself.")
    ]
class CIM_Service : CIM_EnabledLogicalElement {
    [Key(true),
     Propagated("CIM_System.CreationClassName"),
     Description("The scoping System\'s CreationClassName."),
     MaxLen(256)
    ]
    string SystemCreationClassName;

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

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

     [Key(true),
     Override("Name"),
     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 object\'s Description property."),
     MaxLen(256)
    ]
    string Name;

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

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

     [Deprecated{"CIM_Service.EnabledDefault"},
     Description("StartMode is a string value indicating whether the Service is automatically started by a System, Operating System, etc. or only started upon request. This property is deprecated in lieu of the EnabledDefault property inherited from EnabledLogicalElement, which 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 and did not want to modify their code. Therefore, 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."),
     ValueMap{"Automatic", "Manual"},
     MaxLen(10)
    ]
    string StartMode;

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

    [Description("The StartService method places the Service in the started state. Note that this method\'s function overlaps with the RequestedState property. RequestedState was added to the model to maintain a record (i.e., 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\' may also be specified in the subclass as a Values array qualifier. \n\nNote that this method overlaps in semantics with the RequestStateChange method inherited from EnabledLogicalElement. This method is maintained since 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 this method\'s function overlaps with the RequestedState property. RequestedState was added to the model to maintain a record (i.e., 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\' may also be specified in the subclass as a Values array qualifier. \n\nNote that this method overlaps in semantics with the RequestStateChange method inherited from EnabledLogicalElement. This method is maintained since it has been widely implemented, and its simple \'stop\' semantics are convenient to use.")
    ]
    uint32 StopService();
};

// CIM_ServiceAvailableToElement

    [Association(true),
     Version("2.7.0"),
     Description("CIM_ServiceAvailableToElement conveys the semantics of a Service being available for the \'use\' of a ManagedElement. An example is that a Processor and an enclosure (a PhysicalElement) may 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 not a dependency of the processor or enclosure. To describe that use of this service is restricted or has limited availability/applicability, then the CIM_ServiceAvailableToElement association would be instantiated between the Service and specific CIM_Processors and CIM_Chassis .")
    ]
class CIM_ServiceAvailableToElement {
    [Key(true),
     Description("The Service that is available.")
    ]
    CIM_Service REF ServiceProvided;

     [Key(true),
     Description("The ManagedElement that may use the Service.")
    ]
    CIM_ManagedElement REF UserOfService;

};

// CIM_Indication

    [Indication(true),
     Abstract(true),
     Version("2.7.0"),
     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.")
    ]
class CIM_Indication {
    [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("A list of IndicationIdentifiers whose notifications are correlated with (related to) this one."),
     MappingStrings{"Recommendation.ITU|X733.Correlated notifications"}
    ]
    string CorrelatedIndications[];

     [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 determing this information. Note that IndicationTime may be the same for two Indications that are generated in rapid succession.")
    ]
    datetime IndicationTime;

};

// CIM_StatisticalData

    [Abstract(true),
     Version("2.8.0"),
     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.")
    ]
class CIM_StatisticalData : CIM_ManagedElement {
    [Key(true),
     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\'.")
    ]
    string InstanceID;

     [Required(true),
     Override("ElementName"),
     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.)")
    ]
    string ElementName;

     [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("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("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([IN(true), Description("Array of strings indicating which statistics to reset.")] string SelectedStatistics[]);
};

// CIM_ElementStatisticalData

    [Association(true),
     Version("2.7.0"),
     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.")
    ]
class CIM_ElementStatisticalData {
    [Key(true),
     Min(1),
     Max(1),
     Description("The ManagedElement for which statistical or metric data is defined.")
    ]
    CIM_ManagedElement REF ManagedElement;

     [Key(true),
     Description("The statistic information/object.")
    ]
    CIM_StatisticalData REF Stats;

};

// CIM_Location

    [Version("2.6.0"),
     Description("The Location class specifies the position and address of a PhysicalElement.")
    ]
class CIM_Location : CIM_ManagedElement {
    [Key(true),
     Description("Name is a free-form string defining a label for the Location. It is a part of the key for the object."),
     MaxLen(256)
    ]
    string Name;

     [Key(true),
     Description("Position is a free-form string indicating the placement of a PhysicalElement. It can specify slot information on a HostingBoard, mounting site in a Cabinet, or latitude and longitude information, for example, from a GPS. It is part of the key of the Location object."),
     MaxLen(256)
    ]
    string PhysicalPosition;

     [Description("Address is a free-form string indicating a street, building or other type of address for the PhysicalElement\'s Location."),
     MaxLen(1024)
    ]
    string Address;

};

// CIM_ElementLocation

    [Association(true),
     Version("2.7.0"),
     Description("ElementLocation associates a ManagedElement with a Location for positioning, inventory, maintenance and similar purposes. PhysicalElements can certainly have Locations - this is explicitly defined in a subclass, PhysicalElement Location. However, other ManagedElements may also be associated with Locations. For example, Organizations may be \'in\' one or more Locations, or Services may be restricted to a Location.")
    ]
class CIM_ElementLocation {
    [Key(true),
     Description("The ManagedElement whose Location is specified.")
    ]
    CIM_ManagedElement REF Element;

     [Key(true),
     Description("The element\'s Location.")
    ]
    CIM_Location REF PhysicalLocation;

};

// CIM_Error

    [Indication(true),
     Experimental(true),
     Exception(true),
     Version("2.8.1000"),
     Description("CIM_Error is a specialized class that contains information about the severity, cause, recommended actions and other data related to the failure of a CIM Operation. Instances of this type MAY be included as part of the response to a CIM Operation. \n\nCIM_Errors like CIM_Indications do not persist, and therefore do not have keys. Currently, this is only allowed by defining a concrete class with the Indication qualifier. Until the CIM Specification is modified to allow other concrete classes without keys, the CIM_Error class MUST be qualified by both Indication and Exception. After this, the Indication qualifier can be removed.")
    ]
class CIM_Error {
    [Description("Primary classification of the error. The following values are defined: \n2 - Communications Error. Errors of this type are principally associated with the procedures and/or processes required to convey information from one point to another. \n3 - Quality of Service Error. Errors of this type are principally associated with failures that result in reduced functionality or performance. \n4 - Software Error. Error of this type are principally associated with a software or processing fault. \n5 - Hardware Error. Errors of this type are principally associated with an equipment or hardware failure. \n6 - Environmental Error. Errors of this type are principally associated with a failure condition relating the to facility, or other environmental considerations. \n7 - Security Error. Errors of this type are associated with security violations, detection of viruses, and similar issues. \n8 - Oversubscription Error. Errors of this type are principally associated with the failure to allocate sufficient resources to complete the operation. \n9 - Unavailable Resource Error. Errors of this type are principally associated with the failure to access a required resource. \n10 -Unsupported Operation Error. Errors of this type are principally associated with requests that are not supported."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"},
     Values{"Unknown", "Other", "Communications Error", "Quality of Service Error", "Software Error", "Hardware Error", "Environmental Error", "Security Error", "Oversubscription Error", "Unavailable Resource Error", "Unsupported Operation Error"}
    ]
    uint16 ErrorType;

     [Description("A free-form string describing the ErrorType when 1, \"Other\", is specified as the ErrorType."),
     ModelCorrespondence{"CIM_Error.ErrorType"}
    ]
    string OtherErrorType;

     [Required(true),
     Description("A string that uniquely identifies the entity that owns the definition of the format of the Message described in this instance. OwningEntity MUST include a copyrighted, trademarked or otherwise unique name that is owned by the business entity or standards body defining the format.")
    ]
    string OwningEntity;

     [Required(true),
     Description("An opaque string that uniquely identifies, within the scope of the OwningEntity, the format of the Message.")
    ]
    string MessageID;

     [Required(true),
     Description("The formatted message. This message is constructed by applying the dynamic content of the message, described in MessageArguments, to the format string uniquely identified, within the scope of the OwningEntity, by MessageID.")
    ]
    string Message;

     [Description("An array containing the dynamic content of the message.")
    ]
    string MessageArguments[];

     [Required(true),
     Description("An enumerated value that describes the severity of the error from the notifier\'s point of view: \n2 - Low should be used for noncritical issues such as invalid parameters, incorrect usage, unsupported functionality. \n3 - Medium should be used to indicate action is needed, but the situation is not serious at this time. \n4 - High should be used to indicate action is needed NOW. \n5 - Fatal should be used to indicate a loss of data or unrecoverable system or service failure."),
     ValueMap{"0", "2", "3", "4", "5"},
     Values{"Unknown", "Low", "Medium", "High", "Fatal"}
    ]
    uint16 PerceivedSeverity;

     [Required(true),
     Description("An enumerated value that describes the probable cause of the error."),
     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"},
     Values{"Unknown", "Other", "Adapter/Card Error", "Application Subsystem Failure", "Bandwidth Reduced", "Connection Establishment Error", "Communications Protocol Error", "Communications Subsystem Failure", "Configuration/Customization Error", "Congestion", "Corrupt Data", "CPU Cycles Limit Exceeded", "Dataset/Modem Error", "Degraded Signal", "DTE-DCE Interface Error", "Enclosure Door Open", "Equipment Malfunction", "Excessive Vibration", "File Format Error", "Fire Detected", "Flood Detected", "Framing Error", "HVAC Problem", "Humidity Unacceptable", "I/O Device Error", "Input Device Error", "LAN Error", "Non-Toxic Leak Detected", "Local Node Transmission Error", "Loss of Frame", "Loss of Signal", "Material Supply Exhausted", "Multiplexer Problem", "Out of Memory", "Output Device Error", "Performance Degraded", "Power Problem", "Pressure Unacceptable", "Processor Problem (Internal Machine Error)", "Pump Failure", "Queue Size Exceeded", "Receive Failure", "Receiver Failure", "Remote Node Transmission Error", "Resource at or Nearing Capacity", "Response Time Excessive", "Retransmission Rate Excessive", "Software Error", "Software Program Abnormally Terminated", "Software Program Error (Incorrect Results)", "Storage Capacity Problem", "Temperature Unacceptable", "Threshold Crossed", "Timing Problem", "Toxic Leak Detected", "Transmit Failure", "Transmitter Failure", "Underlying Resource Unavailable", "Version Mismatch", "Previous Alert Cleared", "Login Attempts Failed", "Software Virus Detected", "Hardware Security Breached", "Denial of Service Detected", "Security Credential Mismatch", "Unauthorized Access", "Alarm Received", "Loss of Pointer", "Payload Mismatch", "Transmission Error", "Excessive Error Rate", "Trace Problem", "Element Unavailable", "Element Missing", "Loss of Multi Frame", "Broadcast Channel Failure", "Invalid Message Received", "Routing Failure", "Backplane Failure", "Identifier Duplication", "Protection Path Failure", "Sync Loss or Mismatch", "Terminal Problem", "Real Time Clock Failure", "Antenna Failure", "Battery Charging Failure", "Disk Failure", "Frequency Hopping Failure", "Loss of Redundancy", "Power Supply Failure", "Signal Quality Problem", "Battery Discharging", "Battery Failure", "Commercial Power Problem", "Fan Failure", "Engine Failure", "Sensor Failure", "Fuse Failure", "Generator Failure", "Low Battery", "Low Fuel", "Low Water", "Explosive Gas", "High Winds", "Ice Buildup", "Smoke", "Memory Mismatch", "Out of CPU Cycles", "Software Environment Problem", "Software Download Failure", "Element Reinitialized", "Timeout", "Logging Problems", "Leak Detected", "Protection Mechanism Failure", "Protecting Resource Failure", "Database Inconsistency", "Authentication Failure", "Breach of Confidentiality", "Cable Tamper", "Delayed Information", "Duplicate Information", "Information Missing", "Information Modification", "Information Out of Sequence", "Key Expired", "Non-Repudiation Failure", "Out of Hours Activity", "Out of Service", "Procedural Error", "Unexpected Information"},
     MappingStrings{"Recommendation.ITU|X733.Probable cause", "Recommendation.ITU|M3100.probableCause", "ITU-IANA-ALARM-TC"},
     ModelCorrespondence{"CIM_Error.ProbableCauseDescription"}
    ]
    uint16 ProbableCause;

     [Description("A free-form string describing the probable cause of the error."),
     ModelCorrespondence{"CIM_Error.ProbableCause"}
    ]
    string ProbableCauseDescription;

     [Description("A free-form string describing recommended actions to take to resolve the error.")
    ]
    string RecommendedActions[];

     [Description("The identifying information of the entity (i.e., the instance) generating the error.  If this entity is modeled in the CIM Schema, this property contains the path of the instance encoded as a string parameter.  If not modeled, the property contains some identifying string that names the entity that generated the error.  The path or identifying string is formatted per the ErrorSourceFormat property."),
     ModelCorrespondence{"CIM_Error.ErrorSourceFormat"}
    ]
    string ErrorSource;

     [Description("The format of the ErrorSource property is interpretable based on the value of this property. Values are defined as: \n0 - Unknown. The format is unknown or not meaningfully interpretable by a CIM client application. \n1 - Other. The format is defined by the value of the OtherErrorSourceFormat property. \n2 - CIMObjectHandle. A CIM Object Handle, encoded using the MOF syntax defined for the objectHandle non-terminal, is used to identify the entity."),
     ValueMap{"0", "1", "2"},
     Values{"Unknown", "Other", "CIMObjectHandle"},
     ModelCorrespondence{"CIM_Error.ErrorSource", "CIM_Error.OtherErrorSourceFormat"}
    ]
    uint16 ErrorSourceFormat = 0;

     [Description("A string defining \"Other\" values for ErrorSourceFormat. This value MUST be set to a non NULL value when ErrorSourceFormat is set to a value of 1 (\"Other\"). For all other values of ErrorSourceFormat, the value of this string must be set to NULL."),
     ModelCorrespondence{"CIM_Error.ErrorSourceFormat"}
    ]
    string OtherErrorSourceFormat;

     [Required(true),
     Description("The CIM status code that characterizes this instance. \nThis property defines the status codes that MAY be return by a conforming CIM Server or Listener. Note that not all status codes are valid for each operation. The specification for each operation SHOULD define the status codes that may be returned by that operation. \nThe following values for CIM status code are defined: \n1 - CIM_ERR_FAILED. A general error occurred that is not covered by a more specific error code. \n2 - CIM_ERR_ACCESS_DENIED. Access to a CIM resource was not available to the client. \n3 - CIM_ERR_INVALID_NAMESPACE. The target namespace does not exist. \n4 - CIM_ERR_INVALID_PARAMETER. One or more parameter values passed to the method were invalid. \n5 - CIM_ERR_INVALID_CLASS. The specified Class does not exist. \n6 - CIM_ERR_NOT_FOUND. The requested object could not be found. \n7 - CIM_ERR_NOT_SUPPORTED. The requested operation is not supported. \n8 - CIM_ERR_CLASS_HAS_CHILDREN. Operation cannot be carried out on this class since it has instances. \n9 - CIM_ERR_CLASS_HAS_INSTANCES. Operation cannot be carried out on this class since it has instances. \n10 - CIM_ERR_INVALID_SUPERCLASS. Operation cannot be carried out since the specified superclass does not exist. \n11 - CIM_ERR_ALREADY_EXISTS. Operation cannot be carried out because an object already exists. \n12 - CIM_ERR_NO_SUCH_PROPERTY. The specified Property does not exist. \n13 - CIM_ERR_TYPE_MISMATCH. The value supplied is incompatible with the type. \n14 - CIM_ERR_QUERY_LANGUAGE_NOT_SUPPORTED. The query language is not recognized or supported. \n15 - CIM_ERR_INVALID_QUERY. The query is not valid for the specified query language. \n16 - CIM_ERR_METHOD_NOT_AVAILABLE. The extrinsic Method could not be executed. \n17 - CIM_ERR_METHOD_NOT_FOUND. The specified extrinsic Method does not exist. \n18 - CIM_ERR_UNEXPECTED_RESPONSE. The returned response to the asynchronous operation was not expected. \n19 - CIM_ERR_INVALID_RESPONSE_DESTINATION. The specified destination for the asynchronous response is not valid. \n20 - CIM_ERR_NAMESPACE_NOT_EMPTY. The specified Namespace is not empty."),
     ValueMap{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21.."},
     Values{"CIM_ERR_FAILED", "CIM_ERR_ACCESS_DENIED", "CIM_ERR_INVALID_NAMESPACE", "CIM_ERR_INVALID_PARAMETER", "CIM_ERR_INVALID_CLASS", "CIM_ERR_NOT_FOUND", "CIM_ERR_NOT_SUPPORTED", "CIM_ERR_CLASS_HAS_CHILDREN", "CIM_ERR_CLASS_HAS_INSTANCES", "CIM_ERR_INVALID_SUPERCLASS", "CIM_ERR_ALREADY_EXISTS", "CIM_ERR_NO_SUCH_PROPERTY", "CIM_ERR_TYPE_MISMATCH", "CIM_ERR_QUERY_LANGUAGE_NOT_SUPPORTED", "CIM_ERR_INVALID_QUERY", "CIM_ERR_METHOD_NOT_AVAILABLE", "CIM_ERR_METHOD_NOT_FOUND", "CIM_ERR_UNEXPECTED_RESPONSE", "CIM_ERR_INVALID_RESPONSE_DESTINATION", "CIM_ERR_NAMESPACE_NOT_EMPTY", "DMTF Reserved"},
     MappingStrings{"DSP0201.DMTF|ERROR.CODE|2.2"},
     ModelCorrespondence{"CIM_Error.CIMStatusCodeDescription"}
    ]
    uint32 CIMStatusCode;

     [Description("A free-form string containing a human-readable description of CIMStatusCode. This description MAY extend, but MUST be consistent with, the definition of CIMStatusCode."),
     MappingStrings{"DSP0201.DMTF|ERROR.DESCRIPTION|2.2"},
     ModelCorrespondence{"CIM_Error.CIMStatusCode"}
    ]
    string CIMStatusCodeDescription;

};

// CIM_LogicalIdentity

    [Association(true),
     Abstract(true),
     Version("2.7.0"),
     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\nOne of the scenarios where this relationship is reasonable is to represent that a LogicalDevice is both a \'bus\' entity and a \'functional\' entity. For example, a Device could be both a USB (bus) and a Keyboard (functional) entity.")
    ]
class CIM_LogicalIdentity {
    [Key(true),
     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.")
    ]
    CIM_ManagedElement REF SystemElement;

     [Key(true),
     Description("SameElement represents an alternate aspect of the ManagedElement.")
    ]
    CIM_ManagedElement REF SameElement;

};

// CIM_Collection

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

// CIM_MemberOfCollection

    [Association(true),
     Aggregation(true),
     Version("2.6.0"),
     Description("CIM_MemberOfCollection is an aggregation used to establish membership of ManagedElements in a Collection.")
    ]
class CIM_MemberOfCollection {
    [Key(true),
     Aggregate(true),
     Description("The Collection that aggregates members.")
    ]
    CIM_Collection REF Collection;

     [Key(true),
     Description("The aggregated member of the Collection.")
    ]
    CIM_ManagedElement REF Member;

};

// CIM_ServiceAffectsElement

    [Association(true),
     Version("2.7.0"),
     Description("ServiceAffectsElement represents an association between a Service and the ManagedElement(s) that may be affected by its execution. Instantiating this association indicates that running the service will pose some burden on the ManagedElement that may affect performance, throughput, availability, etc.")
    ]
class CIM_ServiceAffectsElement {
    [Key(true),
     Description("The Managed Element affected by the Service.")
    ]
    CIM_ManagedElement REF AffectedElement;

     [Key(true),
     Description("The Service that is affecting the ManagedElement.")
    ]
    CIM_Service REF AffectingElement;

     [Description("An enumeration describing the \'effect\' on the ManagedElement. This array corresponds to the OtherElementEffectsDescriptions array, where the latter provides details related to the high-level \'effects\' enumerated by this property. Additional detail is required if the ElementEffects array contains the value 1, \"Other\"."),
     ValueMap{"0", "1", "2", "3", "4"},
     Values{"Unknown", "Other", "Exclusive Use", "Performance Impact", "Element Integrity"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ServiceAffectsElement.OtherElementEffectsDescriptions"}
    ]
    uint16 ElementEffects[];

     [Description("Provides details for the \'effect\' at the corresponding array position in ElementEffects. This information is required ElementEffects contains the value 1 (\"Other\")."),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ServiceAffectsElement.ElementEffects"}
    ]
    string OtherElementEffectsDescriptions[];

};

// CIM_AffectedJobElement

    [Association(true),
     Version("2.7.0"),
     Description("AffectedJobElement represents an association between a Job and the ManagedElement(s) that may be affected by its execution. It may not be feasible for the Job to describe all of the affected elements. The main purpose of this association is to provide information when a Job requires exclusive use of the \'affected\' ManagedElment(s) or when describing that side effects may result.")
    ]
class CIM_AffectedJobElement {
    [Key(true),
     Description("The ManagedElement affected by the execution of the Job.")
    ]
    CIM_ManagedElement REF AffectedElement;

     [Key(true),
     Description("The Job that is affecting the ManagedElement.")
    ]
    CIM_Job REF AffectingElement;

     [Description("An enumeration describing the \'effect\' on the ManagedElement. This array corresponds to the OtherElementEffectsDescriptions array, where the latter provides details related to the high-level \'effects\' enumerated by this property. Additional detail is required if the ElementEffects array contains the value 1, \"Other\"."),
     ValueMap{"0", "1", "2", "3", "4"},
     Values{"Unknown", "Other", "Exclusive Use", "Performance Impact", "Element Integrity"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_AffectedJobElement.OtherElementEffectsDescriptions"}
    ]
    uint16 ElementEffects[];

     [Description("Provides details for the \'effect\' at the corresponding array position in ElementEffects. This information is required whenever ElementEffects contains the value 1 (\"Other\")."),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_AffectedJobElement.ElementEffects"}
    ]
    string OtherElementEffectsDescriptions[];

};

// CIM_Capabilities

    [Abstract(true),
     Version("2.7.0"),
     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.")
    ]
class CIM_Capabilities : CIM_ManagedElement {
    [Key(true),
     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\'.")
    ]
    string InstanceID;

     [Required(true),
     Override("ElementName"),
     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.)")
    ]
    string ElementName;

};

// CIM_ElementCapabilities

    [Association(true),
     Version("2.7.0"),
     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.")
    ]
class CIM_ElementCapabilities {
    [Key(true),
     Min(1),
     Max(1),
     Description("The managed element.")
    ]
    CIM_ManagedElement REF ManagedElement;

     [Key(true),
     Description("The Capabilities object associated with the element.")
    ]
    CIM_Capabilities REF Capabilities;

};

// CIM_System

    [Abstract(true),
     Version("2.7.0"),
     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, this is not true for the power supply (or the power supply sub-\'system\') within the computer. \n\nAlthough a System may be viewed as a Collection, this 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 a sum of its parts. Note that System is a subclass of EnabledLogicalElement which allows the entire abstraction to be functionally enabled/disabled - at a higher level than enabling/disabling its component parts.")
    ]
class CIM_System : CIM_EnabledLogicalElement {
    [Key(true),
     Description("CreationClassName indicates the name of the class or the subclass used in the creation of an instance. When used with the other key properties of this class, this property allows all instances of this class and its subclasses to be uniquely identified."),
     MaxLen(256)
    ]
    string CreationClassName;

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

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

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

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

     [Write(true),
     Description("An array (bag) of strings that specify 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 instrumentation\'s view of a System\'s \'roles\' is defined by instantiating a specific subclass of System and/ or by properties in a subclass. For example, a ComputerSystem\'s purpose is defined using the Dedicated and OtherDedicatedDescription properties.")
    ]
    string Roles[];

};

// CIM_SoftwareIdentity

    [Version("2.8.0"),
     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.")
    ]
class CIM_SoftwareIdentity : CIM_LogicalElement {
    [Key(true),
     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\'.")
    ]
    string InstanceID;

     [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("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 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("The build number of the software.")
    ]
    uint16 BuildNumber;

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

     [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("Manufacturer of this software.")
    ]
    string Manufacturer;

     [Description("The language editions supported by the software. The language codes defined in ISO 639 should be used.")
    ]
    string Languages[];

     [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."),
     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"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_SoftwareIdentity.ClassificationDescriptions"}
    ]
    uint16 Classifications[];

     [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."),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_SoftwareIdentity.Classifications"}
    ]
    string ClassificationDescriptions[];

     [Description("A manufacturer-allocated number used to identify the software.")
    ]
    string SerialNumber;

};

// CIM_InstalledSoftwareIdentity

    [Association(true),
     Version("2.8.0"),
     Description("The InstalledSoftwareIdentity association identifies the System on which a SoftwareIdentity is installed. This class is a corollary to InstalledSoftwareElement, but deals with the asset aspects of software (as indicated by SoftwareIdentity), versus the deployment aspects (as indicated by SoftwareElement).")
    ]
class CIM_InstalledSoftwareIdentity {
    [Key(true),
     Description("The system on which the software is installed.")
    ]
    CIM_System REF System;

     [Key(true),
     Description("The SoftwareIdentity that is installed.")
    ]
    CIM_SoftwareIdentity REF InstalledSoftware;

};

// Brocade_ConcreteJob

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("A concrete version of Job. This class represents a generic and instantiable unit of work, such as a batch or a print job. deleteInstanceon this class is only supported on Jobs which endedwith Error. But the failed jobs will be overwrittenif another job is started on the same target.Successful jobs will be automaticallydeleted 5 minutes after their completion.If the Target Switch segments out of the fabric, then the associated job\'s status will be marked as Unknown. If the connection becomes inactive then all the associated running Jobs will be marked as Unknown.JobStatus property will be set to \'Completed\' only when the firmware download completed or upragded event is received from the switch.The user can delete the Unknown jobs along with the failed jobs")
    ]
class Brocade_ConcreteJob : CIM_ConcreteJob {
    [Override("InstanceID"),
     Description("Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class."),
     Key(true)
    ]
    string InstanceID;

     [Override("Name"),
     Description("The user friendly name for this instance of 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.)"),
     Required(true),
     MaxLen(1024)
    ]
    string Name = "ConcreteJob";

     [Override("OperationalStatus"),
     Required(true),
     Description("Indicates the current status(es) of the element. \"Completed\" indicates the element has completed its operation. This value will be combined with either OK or Error if the complete operation passed (Completed with OK) or failed (Completed with Error)."),
     ValueMap{"0", "2", "6", "17"},
     Values{"Unknown", "OK", "Error", "Completed"},
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"},
     ArrayType("Indexed")
    ]
    uint16 OperationalStatus[];

     [Override("JobStatus"),
     Required(true),
     Description("A free form string representing the Job\'s status. The primary status is reflected in the inherited OperationalStatus property. "),
     ModelCorrespondence{"CIM_ManagedSystemElement.OperationalStatus"}
    ]
    string JobStatus;

     [Override("PercentComplete"),
     Required(true),
     Description("The percentage of the job that has completed at the time that this value is requested. 0 percent means that the job has not started and 100 percent means job has finished. 50 percent means job is running."),
     Units("Percent"),
     MinValue(0),
     MaxValue(101)
    ]
    uint16 PercentComplete;

     [Override("DeleteOnCompletion"),
     Required(true),
     Description("Indicates whether or not the job should be automatically deleted upon completion. If this property is set to false and the job completes, then the extrinsic method DeleteInstance MUST be used to delete the job. This propery will be setto True if the job completes with success andFalse if the job completes with Error.If thisproperty is set to False, the Job should beexplicitly deleted using deleteInstance."),
     Write(true)
    ]
    boolean DeleteOnCompletion;

     [Override("TimeBeforeRemoval"),
     Description("The amount of time the Job is retained after it has finished executing, only on succeeding in that execution. If the exection finishes with error, thenthe job must be deleted through deleteInstance.The job will remain in existence for 5 minutes if the value of the DeleteOnCompletion is true.The default is five minutes."),
     Required(true),
     Write(true)
    ]
    datetime TimeBeforeRemoval ;

     [Override("ElapsedTime"),
     Description("Gives the time of job execution.")
    ]
    datetime ElapsedTime;

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

     [Override("ErrorDescription"),
     Description("A free form string containing the error description. "),
     ModelCorrespondence{"CIM_Job.ErrorCode"}
    ]
    string ErrorDescription;

     [Override("ErrorCode"),
     Description("A vendor specific error code. This will be set to zero if the Job completed without error."),
     ValueMap{"0", "4", "5"},
     Values{"Completed", "Error", "Unknown"},
     ModelCorrespondence{"CIM_Job.ErrorDescription"}
    ]
    uint16 ErrorCode;

    [Override("RequestStateChange"),
     Description("Requests that the job\'s state be changed to the value specified in the RequestedState parameter. Invoking the RequestStateChange method multiple times could result in earlier requests being overwritten/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([IN(true), Description("Changes the state of a job. \nStart (2) changes the state to \'Running\'. \nSuspend (3) stops the job temporarily. The intention is to subsequently restart the job with \'Start\'. It may be possible to enter the \'Service\' state while suspended - this is job-specific. \nTerminate (4) stops the job cleanly, saving data, preserving 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 state. Service (6) puts the job into a vendor-specific service state. The job may be able to be restarted."), ValueMap{"2", "3", "4", "5", "6", "7..32767", "32768..65535"}, Values{"Start", "Suspend", "Terminate", "Kill", "Service", "DMTF Reserved", "Vendor Reserved"}] uint16 RequestedState, [IN(true), 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 doesn\'t support this parameter. A return code of \'Use Of Timeout Parameter Not Supported\' MUST be returned.")] datetime TimeoutPeriod);
};

// Brocade_MethodResult

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Jobs are sometimes used to represent extrinsic method invocations that execute for times longer than the length of time is reasonable to require a client to wait. The method executing continues beyond the method return to the client. This class provides the result of the execution of a Job that was itself started by the side-effect of this extrinsic method invocation. The indication instances embedded in an instance of this class are the same indications delivered to listening clients. The MethodResult instances will notexist after the associated ConcreteJob is deleted.")
    ]
class Brocade_MethodResult : CIM_MethodResult {
    [Override("InstanceID"),
     Description("Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class."),
     Key(true)
    ]
    string InstanceID;

     [Override("PreCallIndication"),
     Required(true),
     Description("This property contains a CIM_InstMethodCall Indication that describes the pre-execution values of the extrinisic method invocation."),
     EmbeddedInstance("CIM_InstMethodCall")
    ]
    string PreCallIndication;

     [Override("PostCallIndication"),
     Required(true),
     Description("This property contains a CIM_InstMethodCall Indication that describes the post-execution values of the extrinisic method invocation."),
     EmbeddedInstance("CIM_InstMethodCall")
    ]
    string PostCallIndication;

};

// Brocade_AssociatedJobMethodResult

    [Association(true),
Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_AssociatedJobMethodResult represents an association between a ConcreteJob and the MethodResult expressing the parameters for the Job when the job was created by side-effect of the execution of an extrinsic method.")
    ]
class Brocade_AssociatedJobMethodResult : CIM_AssociatedJobMethodResult {
    [Override("Job"),
     Max(1),
     Description("The associated ConcreteJob."),
     Key(true)
    ]
    Brocade_ConcreteJob REF Job;

     [Override("JobParameters"),
     Max(1),
     Description("The associated MethodResult."),
     Key(true)
    ]
    Brocade_MethodResult REF JobParameters;

};

// CIM_LogicalDevice

    [Abstract(true),
     Version("2.8.0"),
     Description("An abstraction or emulation of a hardware entity, that may or may 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.")
    ]
class CIM_LogicalDevice : CIM_EnabledLogicalElement {
    [Key(true),
     Propagated("CIM_System.CreationClassName"),
     Description("The scoping System\'s CreationClassName."),
     MaxLen(256)
    ]
    string SystemCreationClassName;

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

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

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

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

     [Deprecated{"CIM_PowerManagementCapabilities.PowerCapabilities"},
     Description("An enumerated array describing the power management capabilities of the Device. The use of this property has been deprecated. Instead, the PowerCapabilites property in an associated PowerManagementCapabilities class should be used."),
     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("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). Regarding the Power Save states, these 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; 14 (\"Power Save - Low Power Mode\") indicates that the Device is in a power save state but still functioning, and may exhibit degraded performance; 15 (\"Power Save - Standby\") describes 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, though also in a power save mode."),
     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"},
     MappingStrings{"MIF.DMTF|Operational State|006.5", "MIB.IETF|HOST-RESOURCES-MIB.hrDeviceStatus", "MIF.DMTF|Host Device|001.5"},
     ModelCorrespondence{"CIM_LogicalDevice.AdditionalAvailability"}
    ]
    uint16 Availability;

     [Deprecated{"CIM_EnabledLogicalElement.EnabledState"},
     Description("The StatusInfo property indicates whether the Logical Device is in an enabled (value = 3), disabled (value = 4) or some other (1) or unknown (2) state. If this property does not apply to the LogicalDevice, the value, 5 (\"Not Applicable\"), should be used. StatusInfo has been deprecated in lieu of a more clearly named property with additional enumerated values (EnabledState), that is inherited from ManagedSystemElement. \nIf a Device is (\"Enabled\")(value=3), it has been powered up, and is configured and operational. The Device may or may not be functionally active, depending on whether its Availability (or AdditionalAvailability) indicate that it is (\"Running/Full Power\")(value=3) or (\"Off line\") (value=8). In an enabled but offline mode, a Device may be performing out-of-band requests, such as running Diagnostics. If (\"Disabled\") StatusInfo value=4), a Device can only be \"enabled\" or powered off. In a personal computer environment, (\"Disabled\") means that the Device\'s driver 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 can not be communicated with until a load of a driver, a load of a configuration file or some other \"enabling\" activity has occurred."),
     ValueMap{"1", "2", "3", "4", "5"},
     Values{"Other", "Unknown", "Enabled", "Disabled", "Not Applicable"},
     MappingStrings{"MIF.DMTF|Operational State|006.4"}
    ]
    uint16 StatusInfo;

     [Deprecated{"CIM_DeviceErrorData.LastErrorCode"},
     Description("LastErrorCode captures the last error code reported by the LogicalDevice.")
    ]
    uint32 LastErrorCode;

     [Deprecated{"CIM_DeviceErrorData.ErrorDescription"},
     Description("ErrorDescription is a free-form string supplying more information about the error recorded in LastErrorCode, and information on any corrective actions that may be taken.")
    ]
    string ErrorDescription;

     [Deprecated{"CIM_ManagedSystemElement.OperationalStatus"},
     Description("ErrorCleared is a boolean property indicating that the error reported in LastErrorCode is now cleared.")
    ]
    boolean ErrorCleared;

     [Description("OtherIdentifyingInfo captures additional data, beyond DeviceID information, that could be used to identify a LogicalDevice. One example would be to hold the Operating System\'s user friendly name for the Device in this property."),
     MaxLen(256),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_LogicalDevice.IdentifyingDescriptions"}
    ]
    string OtherIdentifyingInfo[];

     [Description("The number of consecutive hours that this Device has been powered, since its last power cycle."),
     Units("Hours"),
     Counter(true)
    ]
    uint64 PowerOnHours;

     [Description("The total number of hours that this Device has been powered."),
     Units("Hours"),
     Counter(true)
    ]
    uint64 TotalPowerOnHours;

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

     [Description("Additional availability and status of the Device, beyond that specified in the Availability property. The Availability property denotes the primary status and availability of the Device. In some cases, this 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, a Device\'s primary Availability may be \"Off line\" (value=8), but it may also be in a low power state (AdditonalAvailability value=14), or the Device could be running Diagnostics (AdditionalAvailability value=5, \"In Test\")."),
     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"},
     ModelCorrespondence{"CIM_LogicalDevice.Availability"}
    ]
    uint16 AdditionalAvailability[];

     [Deprecated{"No value"},
     Description("The MaxQuiesceTime property has been deprecated. When evaluating the use of Quiesce, it was determine 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 will be re-evaluated and repositioned later. \nMaximum time in milliseconds, that a Device can run in a \"Quiesced\" state. A Device\'s 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 may unquiesce, may offline or take other action. A value of 0 indicates that a Device can remain quiesced indefinitely."),
     Units("MilliSeconds")
    ]
    uint64 MaxQuiesceTime;

    [Deprecated{"CIM_PowerManagementService.SetPowerState"},
     Description("Sets the power state of the Device. The use of this method has been deprecated. Instead, use the SetPowerState method in the associated PowerManagementService class.")
    ]
    uint32 SetPowerState([IN(true), Description("The power state to set."), 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, [IN(true), 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.")] datetime Time);
     [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\' may also be specified in the subclass as a Values array qualifier.")
    ]
    uint32 Reset();
     [Deprecated{"CIM_EnabledLogicalElement.RequestStateChange"},
     Description("The EnableDevice method has been deprecated in lieu of the more general RequestStateChange method that directly overlaps with the functionality provided by this method. \nRequests that the LogicalDevice be enabled (\"Enabled\" input parameter = TRUE) or disabled (= FALSE). If successful, the Device\'s StatusInfo/EnabledState properties should reflect the desired state (enabled/disabled). Note that this method\'s function overlaps with the RequestedState property. RequestedState was added to the model to maintain a record (i.e., 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, 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 EnableDevice([IN(true), Description("If TRUE enable the device, if FALSE disable the device.")] boolean Enabled);
     [Deprecated{"CIM_EnabledLogicalElement.RequestStateChange"},
     Description("The OnlineDevice method has been deprecated in lieu of the more general RequestStateChange method that directly overlaps with the functionality provided by this method. \nRequests 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 Device\'s Availability property would be set to a value of 3 (\"Running/Full Power\"). \"Offline\" indicates that a Device is powered up and operational, but not processing functional requests. In an offline state, a Device may 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 could be available for diagnostics or maintenance. \nIf this method is successful, the Device\'s Availability and AdditionalAvailability properties should reflect the updated status. If a failure occurs trying to bring the Device online or offline, it should remain in its current state. IE, 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/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\' may also be specified in the subclass as a Values array qualifier. \nNote that this method\'s function overlaps with the RequestedState property. RequestedState was added to the model to maintain a record (i.e., a persisted value) of the last state request. Invoking the OnlineDevice method should set the RequestedState property appropriately.")
    ]
    uint32 OnlineDevice([IN(true), Description("If TRUE, take the device online, if FALSE, take the device OFFLINE.")] boolean Online);
     [Deprecated{"CIM_EnabledLogicalElement.RequestStateChange"},
     Description("The QuiesceDevice method has been deprecated in lieu of the more general RequestStateChange method that directly overlaps with the functionality provided by this method. \nRequests that the LogicalDevice cleanly cease all current 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 may then be offlined 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/StatusInfo of \"Enabled\". In this case, the Device would be returned to an \"Enabled\" and \"Running/Full Power\" status. \nThe method\'s return code 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\' may also be specified in the subclass as a Values array qualifier.")
    ]
    uint32 QuiesceDevice([IN(true), Description("If set to TRUE then cleanly cease all activity, if FALSE resume activity.")] boolean Quiesce);
     [Description("Requests that the Device capture its current configuration, setup and/or state information in a backing store. The goal would be to use this information at a later time (via the RestoreProperties method), to return a Device to its present \"condition\". This method may 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\' may also be specified in the subclass as a Values array qualifier.")
    ]
    uint32 SaveProperties();
     [Description("Requests that the Device re-establish its configuration, setup and/or state information from a backing store. The intent is to capture this information at an earlier time (via the SaveProperties method), and use it to return a Device to this earlier \"condition\". This method may 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\' may also be specified in the subclass as a Values array qualifier.")
    ]
    uint32 RestoreProperties();
};

// CIM_PhysicalElement

    [Abstract(true),
     Version("2.8.0"),
     Description("Subclasses of CIM_PhysicalElement define any component of a System that has a distinct physical identity. Instances of this class can be defined in terms of labels that can be physically attached to the object. All Processes, Files, and LogicalDevices are considered not to be Physical Elements. For example, it is not possible to attach a label to a modem. It is only possible to attach a label to the card that implements the modem. The same card could also implement a LAN adapter. These are tangible Managed SystemElements (usually actual hardware items) that have a physical manifestation of some sort. A ManagedSystem Element is not necessarily a discrete component. For example, it is possible for a single Card (which is a type of PhysicalElement) to host more than one LogicalDevice. The card would be represented by a single PhysicalElement associated with multiple Devices.")
    ]
class CIM_PhysicalElement : CIM_ManagedSystemElement {
    [Key(true),
     Description("An arbitrary string that uniquely identifies the Physical Element and serves as the Element\'s key. 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/entity, regardless of physical placement in or on Cabinets, Adapters, etc. For example, a hotswappable or removeable component may be taken from its containing (scoping) Package and be temporarily unused. The object still continues to exist - and may 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."),
     MaxLen(256)
    ]
    string Tag;

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

     [Override("ElementName"),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalName"},
     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 ManagedSystemElement\'s Name property 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 MAY be present in both the Name and ElementName properties.")
    ]
    string ElementName;

     [Description("The name of the organization responsible for producing the PhysicalElement. This may 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."),
     MaxLen(256),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalMfgName"}
    ]
    string Manufacturer;

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

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

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

     [Description("A string indicating the version of the PhysicalElement."),
     MaxLen(64),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalHardwareRev"}
    ]
    string Version;

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

     [Write(true),
     Description("OtherIdentifyingInfo captures additional data, beyond that of Tag information, that 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/able to be used as an Element key, this property would be NULL and the bar code data used as the class key, in the Tag property."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalAlias"}
    ]
    string OtherIdentifyingInfo;

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

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

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

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

     [Description("Boolean indicating whether this PhysicalElement can be FRUed (TRUE) or not (FALSE)."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalIsFRU"}
    ]
    boolean CanBeFRUed;

};

// CIM_PhysicalPackage

    [Version("2.8.0"),
     Description("The PhysicalPackage class represents PhysicalElements that contain or host other components. Examples are a Rack enclosure or an adapter Card.")
    ]
class CIM_PhysicalPackage : CIM_PhysicalElement {
    [Description("The RemovalCapabilites property is used to describe the conditions under which a PhysicalPackage can be removed. Since all PhysicalPackages are not removable, this property defaults to 2, \'Not Applicable\'."),
     ValueMap{"0", "2", "3", "4"},
     Values{"Unknown", "Not Applicable", "Removable when off", "Removable when on or off"}
    ]
    uint16 RemovalConditions = 2;

     [Deprecated{"CIM_PhysicalPackage.RemovalConditions"},
     Description("The use of this property is being deprecated. Instead RemovalConditions should be used. The RemovalConditions property addresses whether a PhysicalPackage is removable with or without power being applied. \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;

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

     [Deprecated{"CIM_PhysicalPackage.RemovalConditions"},
     Description("The use of this property is being deprecated. Instead RemovalConditions should be used. The RemovalConditions property addresses whether a PhysicalPackage is removable with or without power being applied. \n\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("The height of the PhysicalPackage in inches."),
     Units("Inches")
    ]
    real32 Height;

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

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

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

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

// CIM_PackageDependency

    [Association(true),
     Version("2.6.0"),
     Description("A LogicalDevice is installed in a Package such as a Chassis or a Rack, not for a specific Device, but to function with the Package in general. This relationship is described by the PackageDependency association.")
    ]
class CIM_PackageDependency : CIM_Dependency {
    [Override("Antecedent"),
     Description("The Logical Device for the Package."),
     Key(true)
    ]
    CIM_LogicalDevice REF Antecedent;

     [Override("Dependent"),
     Description("The PhysicalPackage whose environment is affected."),
     Key(true)
    ]
    CIM_PhysicalPackage REF Dependent;

};

// CIM_Account

    [Version("2.8.0"),
     Description("CIM_Account is the information held by a SecurityService to track identity and privileges managed by that service. Common examples of an Account are the entries in a UNIX /etc/passwd file. Several kinds of security services use various information from those entries - the /bin/login program uses the account name (\'root\') and hashed password to authenticate users, and the file service, for instance, uses the UserID field (\'0\') and GroupID field (\'0\') to record ownership and determine access control privileges on files in the file system. This class is defined so as to incorporate commonly-used LDAP attributes to permit implementations to easily derive this information from LDAP-accessible directories. \n\nThe semantics of Account overlap with that of the class, CIM_Identity. However, aspects of Account - such as its specific tie to a System - are valuable and have been widely implemented. For this reason, the Account and Identity classes are associated using a subclass of LogicalIdentity (AccountIdentity), instead of deprecating the Account class in the CIM Schema. When an Account has been authenticated, the corresponding Identity\'s TrustEstablished Boolean would be set to TRUE. Then, the Identity class can be used as defined for authorization purposes.")
    ]
class CIM_Account : CIM_LogicalElement {
    [Key(true),
     Propagated("CIM_System.CreationClassName"),
     Description("The scoping System\'s CCN."),
     MaxLen(256)
    ]
    string SystemCreationClassName;

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

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

     [Key(true),
     Override("Name"),
     Description("The Name property defines the label by which the object is known. The value of this property may be set to be the same as that of the UserID property or, in the case of an LDAP-derived instance, the Name property value may be set to the distinguishedName of the LDAP-accessed object instance."),
     MaxLen(1024)
    ]
    string Name;

     [Description("UserID is the value used by the SecurityService to represent identity. For an authentication service, the UserID may be the name of the user, or for an authorization service the value which serves as a handle to a mapping of the identity."),
     MaxLen(256)
    ]
    string UserID;

     [Description("In the case of an LDAP-derived instance, the ObjectClass property value(s) may be set to the objectClass attribute values.")
    ]
    string ObjectClass[];

     [Description("The Descriptions property values may contain human-readable descriptions of the object. In the case of an LDAP-derived instance, the description attribute may have multiple values that, therefore, cannot be placed in the inherited Description property."),
     MaxLen(1024)
    ]
    string Descriptions[];

     [Description("Based on RFC1274, the host name of the system(s) for which the account applies. The host name may be a fully-qualified DNS name or it may be an unqualified host name.")
    ]
    string Host[];

     [Description("This property contains the name of a locality, such as a city, county or other geographic region.")
    ]
    string LocalityName[];

     [Required(true),
     Description("The name of the organization related to the account.")
    ]
    string OrganizationName[];

     [Description("The name of an organizational unit related to the account.")
    ]
    string OU[];

     [Description("In the case of an LDAP-derived instance, the SeeAlso property specifies distinguished name of other Directory objects which may be other aspects (in some sense) of the same real world object.")
    ]
    string SeeAlso[];

     [Description("Based on inetOrgPerson and for directory compatibility, the UserCertificate property may be used to specify a public key certificate for the person."),
     OctetString(true)
    ]
    string UserCertificate[];

     [Description("In the case of an LDAP-derived instance, the UserPassword property may contain an encrypted password used to access the person\'s resources in a directory."),
     OctetString(true)
    ]
    string UserPassword[];

};

// Brocade_Account

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Account is the information held by a security service, such as RADIUS or the local password authentication service within the switch to track identity and privileges managed by that service.  Currently, only the account used to connect to a switch is shown by the agent.")
    ]
class Brocade_Account : CIM_Account {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s CreationClassName."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_SwitchAccessService";

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

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_Account";

     [Override("Name"),
     MaxLen(1024),
     Description("The Name property defines the label by which the object is known.  The value of this property can be set to be the same as that of the UserID property or, in the case of an LDAP-derived instance, the value can be set to the distinguishedName of the LDAP-accessed object instance."),
     Key(true)
    ]
    string Name;

     [Override("UserID"),
     MaxLen(256),
     Description("UserID is the value used by the SecurityService to represent identity.  For an authentication service, UserID can be the name of the user or, for an authorization service, the value that serves as a handle to mapping the identity.")
    ]
    string UserID;

     [Override("UserPassword"),
     Description("In the case of an LDAP-derived instance, the UserPassword property can contain an encrypted password used to access the user\'s resources in a directory.  This property is currently not populated, for security reasons."),
     OctetString(true)
    ]
    string UserPassword[];

};

// CIM_Identity

    [Version("2.8.0"),
     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.")
    ]
class CIM_Identity : CIM_ManagedElement {
    [Key(true),
     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\'.")
    ]
    string InstanceID;

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

};

// Brocade_Identity

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The Brocade_Identity class describes the parameters specified by the agent in order to get access to a switch.  Instances of this class are persisted so that they areavailable over Agent re-starts.\nTo create an instance of this class, use method CreateIdentity in class Brocade_SwitchAccessService.")
    ]
class Brocade_Identity : CIM_Identity {
    [Override("InstanceID"),
     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 \':\'.  \'OrgID\' MUST include a copyrighted, trademarked, or otherwise unique name that is owned by the business entity creating or defining the InstanceID, or be a registered ID 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 (\':\').\n\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.\n\nFor DMTF defined instances, the \'preferred\' algorithm MUST be used with the \'OrgID\' set to \'CIM\'."),
     Key(true)
    ]
    string InstanceID;

     [Description("The address formatted according to the appropriate convention as defined in the AddressType property of this class (for example, 171.79.6.40)."),
     ModelCorrespondence{"TargetAddressType"}
    ]
    string TargetAddress;

     [Description("An enumeration that defines how the address is formatted.  Currently, \'IPv6\' is not supported."),
     ValueMap{"0", "1", "2"},
     Values{"Unknown", "IPv4", "IPv6"},
     ModelCorrespondence{"TargetAddress"}
    ]
    uint16 TargetAddressType;

     [Description("An enumeration that defines the application-layer protocol used to connect to the target switch.  \'Any\' indicates that any supported protocol may be used.  Currently, only \'RPC\' and \'Any\' options are supported."),
     ValueMap{"0", "1", "2", "3", "5", "6"},
     Values{"RPC", "HTTP", "Secure RPC", "HTTPS", "Any", "AnySecure"}
    ]
    uint16 ProtocolToUse;

     [Description("An enumeration that defines whether the connection should be made to a SAN running Brocade SecureSAN or a SAN that is not running Brocade SecureSAN.  \'Any\' indicates that a connection can be made to either.  If \'Any\' is used, the agent first attempts a SecureSAN login.  If this login fails, the agent then attempts a non-SecureSAN login."),
     ValueMap{"0", "1", "2"},
     Values{"Non SecureSAN", "SecureSAN", "Any"}
    ]
    uint16 SecureSANType;

     [MinValue(1),
     MaxValue(10),
     Description("Number of RPC handles requested by the user associated with this identity class.")
    ]
    uint16 RequestedNumOfRPCHandles;

};

// Brocade_UsersAccount

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This relationship associates identities with the accounts that they are able to access.")
    ]
class Brocade_UsersAccount : CIM_Dependency {
    [Override("Antecedent"),
     Description("The user\'s account."),
     Key(true)
    ]
    Brocade_Account REF Antecedent;

     [Override("Dependent"),
     Description("The user as identified by the Identity instance."),
     Key(true)
    ]
    Brocade_Identity REF Dependent;

};

// CIM_ServiceSAPDependency

    [Association(true),
     Version("2.6.0"),
     Description("CIM_ServiceSAPDependency is an association between a Service and a ServiceAccessPoint indicating that the referenced SAP is utilized by the Service to provide its functionality. For example, Boot Services may invoke BIOS\' Disk Services (interrupts) in order to function.")
    ]
class CIM_ServiceSAPDependency : CIM_Dependency {
    [Override("Antecedent"),
     Description("The required ServiceAccessPoint."),
     Key(true)
    ]
    CIM_ServiceAccessPoint REF Antecedent;

     [Override("Dependent"),
     Description("The Service that is dependent on an underlying SAP."),
     Key(true)
    ]
    CIM_Service REF Dependent;

};

// CIM_ProtocolController

    [Abstract(true),
     Version("2.8.0"),
     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.")
    ]
class CIM_ProtocolController : CIM_LogicalDevice {
    [Description("Maximum number of Units that can be controlled by or accessed through this ProtocolController.")
    ]
    uint32 MaxUnitsControlled;

};

// CIM_ProtocolControllerForDevice

    [Association(true),
     Abstract(true),
     Version("2.8.0"),
     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.")
    ]
class CIM_ProtocolControllerForDevice : CIM_Dependency {
    [Override("Antecedent"),
     Description("The ProtocolController."),
     Key(true)
    ]
    CIM_ProtocolController REF Antecedent;

     [Override("Dependent"),
     Description("The controlled Device."),
     Key(true)
    ]
    CIM_LogicalDevice REF Dependent;

     [Description("Address of the associated Device in the context of the Antecedent Controller.")
    ]
    string DeviceNumber;

     [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 State property indicates whether the Controller is actively commanding or accessing the device (value=2) or not (value=3). Also, the value, \"Unknown\" (0), can be defined. This information is necessary when a LogicalDevice can be commanded by, or accessed through, multiple ProtocolControllers."),
     ValueMap{"0", "2", "3"},
     Values{"Unknown", "Active", "Inactive"}
    ]
    uint16 AccessState;

};

// CIM_SystemSpecificCollection

    [Version("2.7.0"),
     Description("SystemSpecificCollection represents the general concept of a collection which is scoped (or contained) by a System. It represents a Collection that only has meaning in the context of a System, and/or whose elements are restricted by the definition of the System. This 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.")
    ]
class CIM_SystemSpecificCollection : CIM_Collection {
    [Key(true),
     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\'.")
    ]
    string InstanceID;

};

// CIM_RedundancySet

    [Experimental(true),
     Version("2.8.1000"),
     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.")
    ]
class CIM_RedundancySet : CIM_SystemSpecificCollection {
    [Description("RedundancyStatus provides information on the state of the RedundancySet. \n- Redundant (=2) means that there is no single point of failure. It is possible that some elements in the set have failed leaving greater than the minimum required (\'MinNumberNeeded\' ) to have Redundancy. This \'Partial Redundancy\' can be determined by evaluating the number of failed members in the set. When calculating this number, failed members with a Spared relationship SHOULD NOT be included as each has another member that was added to the set when it failed. \n- Redundancy Lost (=3) means that a single point of failure exists. It is possible that some aspects are redundant."),
     ValueMap{"0", "1", "2", "3", "..", "0x8000.."},
     Values{"Unknown", "Other", "Redundant", "Redundancy Lost", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_RedundancySet.MinNumberNeeded"}
    ]
    uint16 RedundancyStatus;

     [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."),
     ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x8000.."},
     Values{"Unknown", "Other", "N+1", "Load Balanced", "Sparing", "Limited Sparing", "DMTF Reserved", "Vendor Reserved"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_RedundancySet.OtherTypeOfSet"}
    ]
    uint16 TypeOfSet[];

     [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("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("VendorIdentifyingInfo captures the vendor identifying data for the RedundancySet. One example is the product name for a cluster.")
    ]
    string VendorIdentifyingInfo;

     [Description("When the corresponding array entry in TypeOfSet[] is \'Other\', this entry provides a string describing the type of set."),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_RedundancySet.TypeOfSet"}
    ]
    string OtherTypeOfSet[];

     [Write(true),
     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."),
     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"},
     ModelCorrespondence{"CIM_RedundancySet.OtherLoadBalanceAlgorithm"}
    ]
    uint16 LoadBalanceAlgorithm = 2;

     [Write(true),
     Description("When LoadBalanceAlgorithm is Other, this property describes the algorithm."),
     ModelCorrespondence{"CIM_RedundancySet.LoadBalanceAlgorithm"}
    ]
    string OtherLoadBalanceAlgorithm;

    [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([IN(true), Description("The primary ManagedSystemElement that will become inactive after the method.")] CIM_ManagedElement REF FailoverFrom, [IN(true), Description("The ManagedSystemElement that will take over from the primary MSE.")] CIM_ManagedElement REF FailoverTo);
};

// CIM_IsSpare

    [Association(true),
     Experimental(true),
     Version("2.8.1000"),
     Description("The IsSpare association indicates an element that can spare or replace any of the elements in the referenced RedundancySet. If the \'spare\' is itself a Collection, this indicates that each of the \'spare\' members can replace any of the elements in the RedundancySet. In the case of a collection all of the values in the properties of this association MUST apply to all members of the Collection. \nIn the case of a collection, all of the values in the properties of this association (such as FailoverSupported) MUST apply to all members. If this is not true, then the Collection SHOULD be broken down into smaller sets (and the IsSpare association defined for each of these smallar sets), such that the properties of this association apply to all collected members.")
    ]
class CIM_IsSpare : CIM_Dependency {
    [Override("Antecedent"),
     Description("A ManagedElement or Collection of elements acting as a spare."),
     Key(true)
    ]
    CIM_ManagedElement REF Antecedent;

     [Override("Dependent"),
     Description("The set of elements that ARE spared."),
     Key(true)
    ]
    CIM_RedundancySet REF Dependent;

     [Description("Indicates theat state of the \'spare\'. \n- Hot Standby. The element is available \'immediately\' to become a functioning member of the set. Such an element is powered on and has been initialized for it\'s role as a spare. \n- Cold Standby. The element is not available to join the set without action to prepare it."),
     ValueMap{"0", "2", "3"},
     Values{"Unknown", "Hot Standby", "Cold Standby"},
     MappingStrings{"MOF.DMTF|CIM_IsSpare.HotStandby|2.7.1000"}
    ]
    uint8 SpareStatus;

     [Description("Indicates whether or not the failover to the spare is a manual or automatic."),
     ValueMap{"0", "2", "3", "4"},
     Values{"Unknown", "Automatic", "Manual", "Both Manual and Automatic"}
    ]
    uint8 FailoverSupported;

};

// CIM_HostedDependency

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

     [Override("Dependent"),
     Description("The hosted ManagedElement."),
     Key(true)
    ]
    CIM_ManagedElement REF Dependent;

};

// Brocade_SwitchAccessService

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchAccessService is a service that Brocade_Agents use when they are attempting to get access to a switch to perform management operations.  This service enables Identity instances to be created through an extrinsic method.  The deletion of Identity instances must be done intrinsically.\n\nNote that the connection to the switch is independent of deletion or creation of the identity.  If successful, LoginAsUser() results in creation of a SwitchConnection.  Deletion of SwitchConnections are done through the LogoutAsUser() method.")
    ]
class Brocade_SwitchAccessService : CIM_Service {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is the server on which the service is hosted."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_Agent";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name.  The scoping system is the server on which the agent is hosted."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_SwitchAccessService";

     [Override("Name"),
     MaxLen(256),
     Description("The Name property uniquely identifies the agent 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)
    ]
    string Name;

    [Description("Brocade_SwitchAccessService is a service that runs one or more Brocade_Agents.  This method creates Brocade_Identity and the association Brocade_ConnectAsUser, which associates Brocade_Identity to the Brocade_Agent where it was created.  A reference to this newly created object can then be used to log in to a fabric using the LoginAsUser method of this class.  If an Identity with the same input parameters already exists, the output argument will contain a reference to the already existing instance, and a return code of \'Already_Exists\' will result."),
     ValueMap{"0", "1", "4", "5", "8"},
     Values{"Success", "Not Supported", "Failed", "Invalid Parameter", "Already_Exists"}
    ]
    uint32 CreateIdentity([IN(true), Required(true), Description("The address formatted according to the appropriate convention as defined in the AddressType property of this class (for example, 171.79.6.40)."), ModelCorrespondence{"TargetAddressType"}] string TargetAddress, [IN(true), Required(true), Description("An enumeration that defines how the address is formatted.  Currently \'IPv6\' is not supported."), ValueMap{"0", "1", "2"}, Values{"Unknown", "IPv4", "IPv6"}, ModelCorrespondence{"TargetAddress"}] uint16 TargetAddressType, [IN(true), Description("An enumeration that defines which application layer protocol is used to connect to the target switch.  \'Any\' indicates that any supported protocol can be used.  Only \'RPC\' and \'Any\' are currently supported."), ValueMap{"0", "1", "2", "3", "5", "6"}, Values{"RPC", "HTTP", "Secure RPC", "HTTPS", "Any", "AnySecure"}] uint16 ProtocolToUse, [IN(true), Description("An enumeration that defines which application layer protocol is used to connect to the target switch.  \'Any\' indicates that any supported protocol can be used."), ValueMap{"0", "1", "2"}, Values{"Non SecureSAN", "SecureSAN", "Any"}] uint16 SecureSANType, [IN(true), MinValue(1), MaxValue(10), Description("Number of RPC handles requested by the user associated with this identity class.")] uint16 RequestedNumOfRPCHandles, [OUT(true), IN(false), Description("A reference to the newly created Identity.")] Brocade_Identity REF Identity);
     [Description("This method uses the RemoteID and Secret provided and attempts to log into a switch as specified by the reference to Brocade_Identity.\n\nIf successful, the Brocade_Account and Brocade_SwitchAccessPoint objects are created, along with their corresponding associations.\n\nIf attempting to log in to a fabric that already has an active connection or if the fabric contains a proxy switch where there is an inactive connection, an \"Already_Exists\" error will result."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 LoginAsUser([IN(true), Required(true), Description("A reference to user access into a fabric.")] Brocade_Identity REF Identity, [IN(true), Required(true), Description("RemoteID is the name by which the user is known at the remote secret key authentication service.  The user ID should match the user ID of one of the accounts on the switch for access to be permitted.")] string RemoteID, [IN(true), Required(true), Octetstring(true), MaxLen(256), Description("The secret known by the user\'s access.")] string Secret, [OUT(true), IN(false), Description("A reference to the newly created Fabric.")] Brocade_Fabric REF Fabric);
     [Description("This method is used to log out of a fabric to which the user currently has access."),
     ValueMap{"0", "5", "7"},
     Values{"Success", "Invalid Parameter", "Not_Found"}
    ]
    uint32 LogoutAsUser([IN(true), Required(true), Description("A reference to user access into a fabric.")] Brocade_Identity REF Identity);
     [Description("This method activates the specified Brocade_SwitchConnection if it is inactive; it has no effect when applied to a connection that is already active.\n\nA connection can become inactive due to inability to access the underlying networking services or due to a disruption in network connectivity.\n\nIf reactivating a connection to a fabric that already has an existing connection, an \"Already_Exists\" error will result."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 ActivateSwitchConnection([IN(true), Required(true), Description("The switch connection to be activated.")] Brocade_SwitchConnection REF ActiveConnection);
};

// Brocade_ConnectAsUser

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ConnectAsUser is an association used to establish the ownership of Identity object instances; ManagedElement can have identity to systems and, therefore, be users on those systems.\n\nIdentity instances must have an owning managed element.  Typically, managed elements are limited to Collection, Person, Service, and ServiceAccessPoint.  Other nonhuman managed elements that might be thought of as having identities (for example, a device or system) have services that have the identity.")
    ]
class Brocade_ConnectAsUser : CIM_Dependency {
    [Min(1),
     Max(1),
     Override("Antecedent"),
     Description("The access service used by the agent to access a switch."),
     Key(true)
    ]
    Brocade_SwitchAccessService REF Antecedent;

     [Override("Dependent"),
     Description("The \'owned\' identity."),
     Key(true)
    ]
    Brocade_Identity REF Dependent;

};

// Brocade_AlternateLogin

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_AlternateLogin provide login information to a fabric.")
    ]
class Brocade_AlternateLogin : CIM_Account {
    [Write(true),
     Description("This number represents an ordering of which alternate login to attempt among multiple alternate login instances. The higher the priority alternate login will be attempted first.")
    ]
    uint16 Priority;

     [Write(true),
     MaxLen(256),
     Description("RemoteID is the value used by the SecurityService to represent identity.  For an authentication service, RemoteID can be the name of the user or, for an authorization service, the value that serves as a handle to mapping the identity.")
    ]
    string RemoteID;

     [Write(true),
     MaxLen(256),
     Description("In the case of an LDAP-derived instance, the RemoteID property can contain an encrypted password used to access the user\'s resources in a directory.  This property is currently not populated, for security reasons.")
    ]
    string Secret;

     [Write(true),
     Description("Whether this alternate login should be attempted.")
    ]
    boolean Enabled;

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

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

     [Override("CreationClassName"),
     MaxLen(1024),
     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)
    ]
    string CreationClassName = "Brocade_AlternateLogin";

     [Override("Name"),
     MaxLen(1024),
     Description("The Name property defines the label by which the object is known. The value of this property may be set to be the same as that of the UserID property or, in the case of an LDAP-derived instance, the Name property value may be set to the distinguishedName of the LDAP-accessed object instance."),
     Key(true)
    ]
    string Name;

};

// Brocade_AlternateLoginAccount

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
Description("This relationship associates identities with the accounts that they are able to access.")
    ]
class Brocade_AlternateLoginAccount : CIM_Dependency {
    [Override("Antecedent"),
     Description("The user\'s account."),
     Key(true)
    ]
    Brocade_AlternateLogin REF Antecedent;

     [Override("Dependent"),
     Description("The user as identified by the Identity instance."),
     Key(true)
    ]
    Brocade_Identity REF Dependent;

};

// CIM_LogicalModule

    [Version("2.8.0"),
     Description("LogicalModule is the logical device corresponding to a line card/blade in a device. For example, a line card in a switch is an instance of LogicalModule, associated with the the switch itself. A logical module is not necessarily independently managed.")
    ]
class CIM_LogicalModule : CIM_LogicalDevice {
    [Description("Logical modules are often named by the physical or logical slot that they occupy within the containing device. ModuleNumber is the number assigned to the module by its parent.")
    ]
    uint16 ModuleNumber;

};

// Brocade_CP

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Deprecated{"Brocade_PhysicalComputerSystem"},
     Description("Brocade_CP represents a control processor in a switch blade.  There can be one CP instance on a CP blade. Multiple CP instances (typically dual CP configurations) are supported on systems (such as the SilkWorm 12000 and Silkworn 24000) that support high availability, for redundancy.  The OperationalStatus property indicates whether a CP is active or dormant.  A failover causes the activation of the standby CP.  Note that for proxy firmware versions 3.0.x and 2.6.0, Brocade_CP instances might not show up, even though they exist within the fabric.  This is a limitation of the 3.0.x and 2.6.0 firmware.")
    ]
class Brocade_CP : CIM_LogicalModule {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name, which, in this case, is Brocade_Switch."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName;

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name, which is the WWN of the license switch."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

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

     [Override("DeviceID"),
     MaxLen(64),
     Description("An address or other identifying information to uniquely name the logical device.  In this case, this value represents the index number of the CP within the physical chassis."),
     Key(true)
    ]
    string DeviceID;

     [Description("Indicates the CP firmware version."),
     MappingStrings{"API.Brocade | CP | CPFirmwareVersion"}
    ]
    string FirmwareVersion;

     [Description("Indicates the current status of the high-availability service running on the given CP."),
     ValueMap{"0", "1", "2", "3", "4", "5"},
     Values{"Unknown", "Invalid", "Suppressed", "Non-Redundant", "Disabled", "Enabled"},
     MappingStrings{"API.Brocade | CP | CPHAState"}
    ]
    uint16 HAStatus;

     [Override("OperationalStatus"),
     Description("Indicates the current status of the CP.  Various health and operational statuses and the mappings to Brocade 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\n\"Stressed\" indicates that the CP is functioning but needs attention.  Examples of \"Stressed\" states are overload or overheated.\n\n\"Predictive Failure\" indicates that the CP is functioning normally but predicting a failure in the near future.\n\n\"In Service\" describes an element being configured, maintained, cleaned, or otherwise administered.\n\n\"No Contact\" indicates that the monitoring system has knowledge of this element but has never been able to establish communications with it.\n\n\"Lost Communication\" indicates that ManagedSystemElement exists and has been contacted successfully in the past but is currently unreachable.\n\n\"Stopped\" and \"Aborted\" are similar, although the former implies a clean and orderly stop, while the latter implies an abrupt stop after which the element\'s state and configuration might need to be updated.\n\n\"Dormant\" indicates that the element is inactive or quiesced.  A CP in this state is equivalent to being in the \'passive\' state.\n\n\"Supporting Entity in Error\" describes 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\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 passed (Completed with OK) or failed (Completed with Error).  Completed with Degraded implies that the operation finished but did not complete OK or report an error.\n\n\"Power Mode\" indicates that the element has additional power model information contained in the AssociatedPowerManagementService association.\n\nThe following mappings must be made to these status values from the status values defined in Brocade API:\n\"Suppressed\" maps to \"Degraded\".\n\"Dormant\" maps to an inactive CP that is in standby mode.\n\"Unavailable\" maps to \"No Contact\"."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"},
     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"},
     MappingStrings{"API.Brocade | CP | CPHAStatus"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

     [Override("EnabledState"),
     Description("EnabledState is an integer enumeration that indicates the enabled/disabled states of the CP.  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 summarizes the various states:\n\nEnabled (2) indicates that the element is in an active state and executes commands, processes queued commands, and queues new requests.\n\nDisabled (3) indicates that the element does not execute commands and drops new requests.\n\nShutting Down (4) indicates that the element is in the process of going to a disabled state.\n\nNot Applicable (5) indicates the element does not support being enabled or disabled.\n\nEnabled but Offline (6) indicates that the element is in a passive state.\n\nTest (7) indicates that the element is in a test state.\n\nDeferred (8) indicates that the element might be completing commands but queuing new requests.\n\nQuiesce (9) indicates that the element is enabled but in a restricted mode.  The element\'s behavior is similar to the enabled state, but it processes only a restricted set of commands.  All other requests are queued.\n\nStarting (10) indicates that the element is in the process of going to an enabled state.  New requests are queued."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"},
     Values{"Unknown", "Other", "Enabled", "Disabled", "Shutting Down", "Not Applicable", "Enabled but Offline", "In Test", "Deferred", "Quiesce", "Starting"},
     MappingStrings{"API.Brocade | CP | CPFruState"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.OtherEnabledState"}
    ]
    uint16 EnabledState = 5;

     [Override("RequestedState"),
     Description("RequestedState is an integer enumeration indicating the last requested or desired state for the switch.  The actual state of the element is represented by EnabledState.  This property is provided to compare the last requested and current enabled/disabled states.\n\nNote that when EnabledState is set to 5 (\"Not Applicable\"), this property has no meaning.  By default, the element\'s RequestedState is 5 (\"No Change\").  Refer to the EnabledState property\'s description for explanations of the values in the RequestedState enumeration."),
     ModelCorrespondence{"CIM_EnabledLogicalElement.EnabledState"},
     ValueMap{"5", "32768"},
     Values{"No Change", "Failover"}
    ]
    uint16 RequestedState = 5;

    [Override("RequestStateChange"),
     Description("This method requests that CP state be changed to one of the values from the input list.  When the requested state change takes place, the element\'s EnabledState and RequestedState will be the same.  The use of ConcreteJob (if operation is performed asynchronously) is not supported and hence always returns NULL.\n\nSupported by Proxy Firmware versions: 3.1.x, 4.1.x, 4.2.x, 5.0.x.\nSupported by Target Firmware versions: 4.1.x, 4.2.x, 5.0.x."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "32768"},
     Values{"Completed with No Error", "Not Supported", "Unknown/Unspecified Error", "Can NOT complete within Timeout Period", "Failed", "Invalid Parameter", "In Use", "Not_Found", "Already_Exists", "Insufficient_Resources", "Access_Denied"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}
    ]
    uint32 RequestStateChange([IN(true), Required(true), Description("The state requested for the element.  This information will be placed into the instance\'s RequestedState property if the RequestStateChange method\'s return code is 0, 3 (\'Completed with No Error\', \'Timeout\') respectively.  Refer to the description of the EnabledState property for the detailed meanings of the RequestedState Values."), ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}, ValueMap{"32768"}, Values{"Failover"}] uint16 RequestedState, [OUT(true), IN(false), Description("Reference to the job (might be null if task completed).")] CIM_ConcreteJob REF Job, [IN(true), 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.\n\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.")] datetime TimeoutPeriod);
};

// Brocade_PhysicalPackage

    [Abstract(true),
Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PhysicalPackage is an abstract class that describes the physical characteristics of units (such as fans, sensors, and power supplies) that are contained within the chassis of the system.")
    ]
class Brocade_PhysicalPackage : CIM_PhysicalPackage {
    [Override("Tag"),
     MaxLen(256),
     Description("An arbitrary string that uniquely identifies the physical element and serves as the element\'s key.  The Tag property can contain information such as asset tag or serial number data.  This value varies depending on the type of physical package."),
     Key(true)
    ]
    string Tag;

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

     [Override("PartNumber"),
     MaxLen(256),
     Description("Part number of this package.  The part number is assigned by the organization (Brocade) responsible for producing or manufacturing the part.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade| SwitchEnclosure | SwitchBlower | FanPartNumber", "API.Brocade| PortModule | PortModulePartNumber", "API.Brocade| Blade | BladePartNumber", "API.Brocade| WWNCard | PartNumber", "API.Brocade| SwitchEnclosure|SwitchPowerSupply|PartNumber"}
    ]
    string PartNumber;

     [Override("SerialNumber"),
     MaxLen(64),
     Description("Brocade-assigned serial number.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchBlower | FanSerialNumber", "API.Brocade | SwitchEnclosure | SwitchPowerSupply| PSSerialNumber", "API.Brocade | PortModule | PortModuleSN", "API.Brocade | Blade | BladeSerialNumber", "API.Brocade | WWNCard | SerialNumber"}
    ]
    string SerialNumber;

     [MaxLen(256),
     Description("Vendor-assigned part number of this package.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchBlower | VendorPartNumber", "API.Brocade | SwitchEnclosure | SwitchPowerSupply | VendorPartNumber", "API.Brocade| PortModule | VendorPartNumber", "API.Brocade| WWNCard | VendorPartNumber", "API.Brocade| Blade | VendorPartNumber"}
    ]
    string VendorPartNumber;

     [MaxLen(64),
     Description("Vendor-assigned serial number.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchBlower | FanSerialNumber", "API.Brocade | SwitchEnclosure | SwitchPowerSupply| PSSerialNumber", "API.Brocade| PortModule | PortModuleSN", "API.Brocade| Blade | BladeSerialNumber", "API.Brocade| WWNCard | VendorSerialNumber"}
    ]
    string VendorSerialNumber;

     [Override("CanBeFRUed"),
     Description("Indicates whether the module is customer-replaceable.  This property is filled in only for subclass instances that represent Brocade_Blade."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalIsFRU"}
    ]
    boolean CanBeFRUed;

     [Description("Slot number of the element.  This property can be null if the blade is in a fixed slot."),
     MappingStrings{"API.Brocade | Blade | BladeSlotNumber", "API.Brocade | SwitchEnclosure | SwitchTemperature | SensorSlotNumber"}
    ]
    uint16 SlotNumber;

     [Override("ManufactureDate"),
     Description("Date that this physical package was manufactured.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade| PowerSupply | PSMfgDate", "API.Brocade| CP | CPMfgDate", "API.Brocade| PortModule | PortModuleManufactureDate", "API.Brocade| SwitchEnclosure | SwitchBlower | FanMfgDate", "API.Brocade| WWNCard | WWNCardMfgDate", "API.Brocade| Blade | BladeMfgDate"}
    ]
    datetime ManufactureDate;

     [Description("Date that this physical package was last updated.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade| PowerSupply | PSUpdateDate", "API.Brocade| SwitchEnclosure| SwitchBlower | FanUpdateDate", "API.Brocade| WWNCard| WWNCardUpdateDate", "API.Brocade| Blade | BladeUpdateDate", "API.Brocade| CP | CPUpdateDate"}
    ]
    datetime UpdateDate;

     [Override("Version"),
     MaxLen(64),
     Description("The OEM/vendor-assigned version number.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | PortModule | PortModuleRevision", "API.Brocade | Blade | VendorRevision", "API.Brocade | SwitchEnclosure | SwitchBlower | VendorRevision", "API.Brocade | SwitchEnclosure | SwitchPowerSupply | VendorRevision", "API.Brocade | WWNCard | VendorRevision"}
    ]
    string Version;

};

// Brocade_Blade

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Blade represents the physical properties of a blade or an embedded switch.\n\nNote that for 3.0.x and 2.6.0 proxy firmwares, Brocade_Blade instances might not appear, even though they might actually exist within the fabric.  This is a limitation of 3.0.x and 2.6.0 firmwares.")
    ]
class Brocade_Blade : Brocade_PhysicalPackage {
    [Override("Manufacturer"),
     MaxLen(256),
     Description("The name of the organization responsible for producing the blade."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalMfgName"}
    ]
    string Manufacturer = "Brocade Communications, Inc.";

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

     [Override("VendorEquipmentType"),
     Description("The type of blade.  Port blades are associated to port modules."),
     ValueMap{"Unknown", "WWN Card", "CP Blade", "FC Port Blade"},
     Values{"Unknown", "WWN Card", "CP Blade", "FC Port Blade"},
     MappingStrings{"API.Brocade| Blade | BladeType"}
    ]
    string VendorEquipmentType;

     [Override("PoweredOn"),
     Write(true),
     Description("Boolean indicating whether the blade is powered on (true), or is currently off (false).  This property is writeable only for FC Port blades, and can be set to either true (power on) or false (power off).  Also, this property is writeable only if it is a SilkWorm 12000 or SilkWorm 24000 switch and if the switch running out of the given blade belongs in a fabric managed by the CIM agent (that is, if the switch is \'reachable\')."),
     MappingStrings{"API.Brocade | CP | CPFruState", "API.Brocade | Blade | BladeState"}
    ]
    boolean PoweredOn;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_Blade";

     [Override("Tag"),
     MaxLen(256),
     Description("An arbitrary string that uniquely identifies the physical element and serves as the element\'s key.  The Tag property can contain information such as asset tag or serial number data.  This value varies depending on the type of physical package."),
     Key(true)
    ]
    string Tag;

     [Override("SlotNumber"),
     Description("Slot number of the element.  This property can be null if the blade is in a fixed slot."),
     MappingStrings{"API.Brocade | Blade | BladeSlotNumber", "API.Brocade | SwitchEnclosure | SwitchTemperature | SensorSlotNumber"}
    ]
    uint16 SlotNumber;

     [Override("CanBeFRUed"),
     Description("Indicates whether the module is customer-replaceable.  This property is filled in only for subclass instances that represent Brocade_Blade."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalIsFRU"}
    ]
    boolean CanBeFRUed;

     [Override("SerialNumber"),
     MaxLen(64),
     Description("Brocade-assigned serial number.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchBlower | FanSerialNumber", "API.Brocade | SwitchEnclosure | SwitchPowerSupply| PSSerialNumber", "API.Brocade | PortModule | PortModuleSN", "API.Brocade | Blade | BladeSerialNumber", "API.Brocade | WWNCard | SerialNumber"}
    ]
    string SerialNumber;

     [Override("PartNumber"),
     MaxLen(256),
     Description("Part number of this package.  The part number is assigned by the organization (Brocade) responsible for producing or manufacturing the part.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade| SwitchEnclosure | SwitchBlower | FanPartNumber", "API.Brocade| PortModule | PortModulePartNumber", "API.Brocade| Blade | BladePartNumber", "API.Brocade| WWNCard | PartNumber", "API.Brocade| SwitchEnclosure|SwitchPowerSupply|PartNumber"}
    ]
    string PartNumber;

     [Override("VendorSerialNumber"),
     MaxLen(64),
     Description("Vendor-assigned serial number.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchBlower | FanSerialNumber", "API.Brocade | SwitchEnclosure | SwitchPowerSupply| PSSerialNumber", "API.Brocade| PortModule | PortModuleSN", "API.Brocade| Blade | BladeSerialNumber", "API.Brocade| WWNCard | VendorSerialNumber"}
    ]
    string VendorSerialNumber;

     [Override("VendorPartNumber"),
     MaxLen(256),
     Description("Vendor-assigned part number of this package.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchBlower | VendorPartNumber", "API.Brocade | SwitchEnclosure | SwitchPowerSupply | VendorPartNumber", "API.Brocade| PortModule | VendorPartNumber", "API.Brocade| WWNCard | VendorPartNumber", "API.Brocade| Blade | VendorPartNumber"}
    ]
    string VendorPartNumber;

     [Override("Version"),
     MaxLen(64),
     Description("The OEM/vendor-assigned version number.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | PortModule | PortModuleRevision", "API.Brocade | Blade | VendorRevision", "API.Brocade | SwitchEnclosure | SwitchBlower | VendorRevision", "API.Brocade | SwitchEnclosure | SwitchPowerSupply | VendorRevision", "API.Brocade | WWNCard | VendorRevision"}
    ]
    string Version;

     [Override("ManufactureDate"),
     Description("Date that this physical package was manufactured.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade| PowerSupply | PSMfgDate", "API.Brocade| CP | CPMfgDate", "API.Brocade| PortModule | PortModuleManufactureDate", "API.Brocade| SwitchEnclosure | SwitchBlower | FanMfgDate", "API.Brocade| WWNCard | WWNCardMfgDate", "API.Brocade| Blade | BladeMfgDate"}
    ]
    datetime ManufactureDate;

     [Override("UpdateDate"),
     Description("Date that this physical package was last updated.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade| PowerSupply | PSUpdateDate", "API.Brocade| SwitchEnclosure| SwitchBlower | FanUpdateDate", "API.Brocade| WWNCard| WWNCardUpdateDate", "API.Brocade| Blade | BladeUpdateDate", "API.Brocade| CP | CPUpdateDate"}
    ]
    datetime UpdateDate;

};

// Brocade_CPOnBlade

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Deprecated{"Brocade_PCSOnBlade"},
     Description("The CP installed on a blade.")
    ]
class Brocade_CPOnBlade : CIM_Dependency {
    [Override("Antecedent"),
     Description("The CP."),
     Key(true)
    ]
    Brocade_CP REF Antecedent;

     [Override("Dependent"),
     Description("The CP blade as a FRU."),
     Key(true)
    ]
    Brocade_Blade REF Dependent;

};

// CIM_DeviceSAPImplementation

    [Association(true),
     Version("2.6.0"),
     Description("An association between a ServiceAccessPoint and how it is implemented. The cardinality of this association is many-to-many. A SAP may be provided by more than one LogicalDevice, operating in conjunction. And, any Device may 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.")
    ]
class CIM_DeviceSAPImplementation : CIM_Dependency {
    [Override("Antecedent"),
     Description("The LogicalDevice."),
     Key(true)
    ]
    CIM_LogicalDevice REF Antecedent;

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

};

// CIM_Spared

    [Association(true),
     Experimental(true),
     Version("2.8.1000"),
     Description("The Spared association indicates an element that is acting as a replacement for another element. If the Dependent references a Collection, this indicates that \'spared\' element is a member of that collection and the actual mapping between the spare and the spared is un-important.")
    ]
class CIM_Spared : CIM_Dependency {
    [Override("Antecedent"),
     Description("A ManagedElement that has replaced/spared another the reference Dependent element."),
     Key(true)
    ]
    CIM_ManagedElement REF Antecedent;

     [Override("Dependent"),
     Description("The Element or Elements (in the case of a collection) that have been replaced/spared."),
     Key(true)
    ]
    CIM_ManagedElement REF Dependent;

};

// CIM_ComputerSystem

    [Version("2.7.0"),
     Description("A class derived from System that is a special collection of ManagedSystemElements. This collection provides compute capabilities and serves as aggregation point to associate one or more of the following elements: FileSystem, OperatingSystem, Processor and Memory (Volatile and/or NonVolatile Storage).")
    ]
class CIM_ComputerSystem : CIM_System {
    [Override("NameFormat"),
     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."),
     ValueMap{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN", "NAA"},
     MaxLen(64)
    ]
    string NameFormat;

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

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

     [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."),
     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"},
     MappingStrings{"MIB.IETF|MIB-II.sysServices"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ComputerSystem.OtherDedicatedDescriptions"}
    ]
    uint16 Dedicated[];

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

     [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)."),
     ValueMap{"1", "2", "3", "4", "5"},
     Values{"Other", "Unknown", "Disabled", "Enabled", "Not Implemented"},
     MappingStrings{"MIF.DMTF|System Hardware Security|001.4"}
    ]
    uint16 ResetCapability;

     [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."),
     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"},
     MappingStrings{"MIF.DMTF|System Power Controls|001.2"}
    ]
    uint16 PowerManagementCapabilities[];

    [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([IN(true), Description("The Desired state for the ComputerSystem."), 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, [IN(true), 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.")] datetime Time);
};

// Brocade_PhysicalComputerSystem

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Every switch capable of functioning in multidomain mode will be partitioned to demarcate the logical and physical aspects of each system. The Brocade_Switch will represent the the logical aspects of that switch. And the Brocade_PhysicalComputerSystem will represent the physical aspects of that switch. The Brocade_PhysicalComputerSystem really is the CP and hence there will be an many instances of Brocade_PhysicalComputerSystem as there are CPs. The number of instances of Brocade_Switch will depend on whether the switch is functioning in single domain mode or multi domain mode. Since all the underlying physical ComputerSystems share the same physical package as that of Brocade_Switch, there will be no association between these instances and Brocade_Chassis. Only the logical Brocade_Switch instances will be associated with a Brocade_Chassis.")
    ]
class Brocade_PhysicalComputerSystem : CIM_ComputerSystem {
    [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName;

     [Override("Name"),
     MaxLen(256),
     Description("This is a unique identifier for the physical computer system. It is the licenseWWN;CPNumber, which is a combination of the WWN of the license switch and the index number of the CP within the physical chassis."),
     Key(true)
    ]
    string Name;

     [Override("NameFormat"),
     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."),
     ValueMap{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN", "NAA"},
     MaxLen(64)
    ]
    string NameFormat = "Other";

     [Override("ElementName"),
     MaxLen(15),
     Description("A user friendly name for the object. This property cannot be changed.")
    ]
    string ElementName = "Non-Top-Level System";

     [Override("Dedicated"),
     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). In this case the computer system is not 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"},
     MappingStrings{"MIB.IETF|MIB-II.sysServices"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ComputerSystem.OtherDedicatedDescriptions"}
    ]
    uint16 Dedicated[] = {0};

     [Override("OperationalStatus"),
     Description("Indicates the current status of this physical computer system. Various operational statuses are defined. The relevant enumeration values are described here in more detail.\n\n\"OK\" indicates that this physcial computer system instance is currently active.\n\n\"Dormant\" indicates that this physcial computer system instance is currently inactive and is the spare or standby instance for failover.\n\n"),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"},
     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"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

};

// Brocade_PCSOnBlade

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The PhysicalComputerSystem installed on a blade.")
    ]
class Brocade_PCSOnBlade : CIM_Dependency {
    [Override("Antecedent"),
     Description("The Brocade_PhysicalComputerSystem."),
     Key(true)
    ]
    Brocade_PhysicalComputerSystem REF Antecedent;

     [Override("Dependent"),
     Description("The PCS blade."),
     Key(true)
    ]
    Brocade_Blade REF Dependent;

};

// CIM_Sensor

    [Abstract(true),
     Version("2.6.0"),
     Description("A Sensor is a hardware device capable of measuring the characteristics of some physical property - for example, the temperature or voltage characteristics of a UnitaryComputer System.")
    ]
class CIM_Sensor : CIM_LogicalDevice {
    [Description("The Type of the Sensor, e.g. Voltage or Temperature Sensor. If the type is set to \"Other\", then the OtherSensorType Description can be used to further identify the type, or if the Sensor has numeric readings, then the type of the Sensor can be implicitly determined by the Units. A description of the different Sensor types is as follows: A Temperature Sensor measures the environmental temperature. Voltage and Current Sensors measure electrical voltage and current readings. A Tachometer measures speed/revolutions of a Device. For example, a Fan Device can have an associated Tachometer which measures its speed. A Counter is a general purpose Sensor that measures some numerical property of a Device. A Counter value can be cleared, but it never decreases. A Switch Sensor has states like Open/Close, On/Off, or Up/Down. A Lock has states of Locked/Unlocked. Humidity, Smoke Detection and Air Flow Sensors measure the equivalent environmental characteristics. A Presence Sensor detects the presence of a PhysicalElement."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"},
     Values{"Unknown", "Other", "Temperature", "Voltage", "Current", "Tachometer", "Counter", "Switch", "Lock", "Humidity", "Smoke Detection", "Presence", "Air Flow"},
     ModelCorrespondence{"CIM_Sensor.OtherSensorTypeDescription"}
    ]
    uint16 SensorType;

     [Description("A string describing the Sensor type - used when the SensorType property is set to \"Other\"."),
     MaxLen(128),
     ModelCorrespondence{"CIM_Sensor.SensorType"}
    ]
    string OtherSensorTypeDescription;

     [Description("PossibleStates enumerates the string outputs of the Sensor. For example, a \"Switch\" Sensor may output the states \"On\", or \"Off\". Another implementation of the Switch may output the states \"Open\", and \"Close\". Another example is a NumericSensor supporting thresholds. This Sensor can report the states like \"Normal\", \"Upper Fatal\", \"Lower Non-Critical\", etc. A NumericSensor that does not publish readings and thresholds, but stores this data internally, can still report its states."),
     MaxLen(128)
    ]
    string PossibleStates[];

     [Description("The current state indicated by the Sensor. This is always one of the \"PossibleStates\"."),
     MaxLen(128)
    ]
    string CurrentState;

     [Description("The polling interval that the Sensor hardware or the instrumentation uses to determine the current state of the Sensor."),
     Units("NanoSeconds")
    ]
    uint64 PollingInterval;

};

// CIM_AssociatedSensor

    [Association(true),
     Version("2.6.0"),
     Description("Many Devices include Sensors or have Sensors installed nearby, in order to measure critical input and output properties.  This association indicates that relationship.")
    ]
class CIM_AssociatedSensor : CIM_Dependency {
    [Override("Antecedent"),
     Description("The Sensor."),
     Key(true)
    ]
    CIM_Sensor REF Antecedent;

     [Override("Dependent"),
     Description("The LogicalDevice for which information is measured by the Sensor."),
     Key(true)
    ]
    CIM_LogicalDevice REF Dependent;

};

// CIM_PhysicalConnector

    [Version("2.8.0"),
     Description("The PhysicalConnector class represents any PhysicalElement that is used to connect to other Elements. Any object that can be used to connect and transmit signals or power between two or more PhysicalElements is a descendant (or member) of this class. For example, Slots and D-shell connectors are types of PhysicalConnectors.")
    ]
class CIM_PhysicalConnector : CIM_PhysicalElement {
    [Description("A free-form string describing the pin configuration and/or signal usage of a PhysicalConnector."),
     ModelCorrespondence{"CIM_PhysicalConnector.NumPhysicalPins"}
    ]
    string ConnectorPinout;

     [Deprecated{"CIM_PhysicalConnector.ConnectorGender", "CIM_PhysicalConnector.ConnectorElectricalCharacteristics", "CIM_PhysicalConnector.NumPhysicalPins", "CIM_PhysicalConnector.ConnectorLayout"},
     Description("An array of integers defining the type of PhysicalConnector. An array is specified to allow the description of \'combinations\' of Connector information. For example, one array entry could specify RS-232 (value=25), another DB-25 (value=23) and a third entry define the Connector as \"Male\" (value=2). \nThis single property is being deprecated in lieu of using separate properties to describe the various aspects of the connector. The separation allows for a more generic means of describing the connectors. Obsolete connectors were intentionally removed from the new list."),
     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"},
     Values{"Unknown", "Other", "Male", "Female", "Shielded", "Unshielded", "SCSI (A) High-Density (50 pins)", "SCSI (A) Low-Density (50 pins)", "SCSI (P) High-Density (68 pins)", "SCSI SCA-I (80 pins)", "SCSI SCA-II (80 pins)", "Fibre Channel (DB-9, Copper)", "Fibre Channel (Optical Fibre)", "Fibre Channel SCA-II (40 pins)", "Fibre Channel SCA-II (20 pins)", "Fibre Channel BNC", "ATA 3-1/2 Inch (40 pins)", "ATA 2-1/2 Inch (44 pins)", "ATA-2", "ATA-3", "ATA/66", "DB-9", "DB-15", "DB-25", "DB-36", "RS-232C", "RS-422", "RS-423", "RS-485", "RS-449", "V.35", "X.21", "IEEE-488", "AUI", "UPT Category 3", "UPT Category 4", "UPT Category 5", "BNC", "RJ11", "RJ45", "Fiber MIC", "Apple AUI", "Apple GeoPort", "PCI", "ISA", "EISA", "VESA", "PCMCIA", "PCMCIA Type I", "PCMCIA Type II", "PCMCIA Type III", "ZV Port", "CardBus", "USB", "IEEE 1394", "HIPPI", "HSSDC (6 pins)", "GBIC", "DIN", "Mini-DIN", "Micro-DIN", "PS/2", "Infrared", "HP-HIL", "Access.bus", "NuBus", "Centronics", "Mini-Centronics", "Mini-Centronics Type-14", "Mini-Centronics Type-20", "Mini-Centronics Type-26", "Bus Mouse", "ADB", "AGP", "VME Bus", "VME64", "Proprietary", "Proprietary Processor Card Slot", "Proprietary Memory Card Slot", "Proprietary I/O Riser Slot", "PCI-66MHZ", "AGP2X", "AGP4X", "PC-98", "PC-98-Hireso", "PC-H98", "PC-98Note", "PC-98Full", "SSA SCSI", "Circular", "On Board IDE Connector", "On Board Floppy Connector", "9 Pin Dual Inline", "25 Pin Dual Inline", "50 Pin Dual Inline", "68 Pin Dual Inline", "On Board Sound Connector", "Mini-jack", "PCI-X", "Sbus IEEE 1396-1993 32 bit", "Sbus IEEE 1396-1993 64 bit", "MCA", "GIO", "XIO", "HIO", "NGIO", "PMC", "MTRJ", "VF-45", "Future I/O", "SC", "SG", "Electrical", "Optical", "Ribbon", "GLM", "1x9", "Mini SG", "LC", "HSSC", "VHDCI Shielded (68 pins)", "InfiniBand", "AGP8X"},
     MappingStrings{"MIF.DMTF|Bus Port|004.10"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_PhysicalConnector.OtherTypeDescription"}
    ]
    uint16 ConnectorType[];

     [Deprecated{"CIM_PhysicalConnector.ConnectorDescription"},
     Description("A string describing the Connector - used when the ConnectorType property is set to 1 (\"Other\"). OtherType Description should be set to NULL when ConnectorType is any value other than 1. \nThe use of this property is deprecated in lieu of Connector Description."),
     MappingStrings{"MIF.DMTF|Bus Port|004.11"},
     ModelCorrespondence{"CIM_PhysicalConnector.ConnectorType"}
    ]
    string OtherTypeDescription;

     [Description("Describes the gender of the connector."),
     ValueMap{"0", "2", "3"},
     Values{"Unknown", "Male", "Female"}
    ]
    uint16 ConnectorGender;

     [Description("Describes the electrical characteristic for this connector."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8"},
     Values{"Unknown", "Other", "Single Ended", "Differential", "Low Voltage Differential", "Optical", "Copper", "Shielded", "Unshielded"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_PhysicalConnector.OtherElectricalCharacteristics"}
    ]
    uint16 ConnectorElectricalCharacteristics[];

     [Description("A string describing the connector\'s electrical characteristics - used when the ConnectorElectricalCharacteristics property contains an entry of 1 (Other). OtherElectricalCharacteristics should be set to NULL when ConnectorElectricalCharacteristics does not contain an value of 1."),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_PhysicalConnector.ConnectorElectricalCharacteristics"}
    ]
    string OtherElectricalCharacteristics[];

     [Description("Describes the number of physical pins (male/female) that are present on this connector."),
     ModelCorrespondence{"CIM_PhysicalConnector.ConnectorPinout"}
    ]
    uint32 NumPhysicalPins;

     [Description("Describes the type of packaging normally associated with this type of connector."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"},
     Values{"Unknown", "Other", "RS232", "BNC", "RJ11", "RJ45", "DB9", "Slot", "SCSI High Density", "SCSI Low Density", "Ribbon"},
     ModelCorrespondence{"CIM_PhysicalConnector.ConnectorDescription"}
    ]
    uint16 ConnectorLayout;

     [Description("A string describing the Connector - used when the ConnectorLayout property is set to 1 (\"Other\"). Connector Description should be set to NULL when ConnectorLayout is any value other than 1."),
     MappingStrings{"MIF.DMTF|Bus Port|004.11"},
     ModelCorrespondence{"CIM_PhysicalConnector.ConnectorLayout"}
    ]
    string ConnectorDescription;

};

// CIM_PackageInConnector

    [Association(true),
     Version("2.6.0"),
     Description("Adapter cards and other \'packaging\' are plugged into System Connectors for power and/or to transfer data. This relationship is defined by PackageInConnector. For example, it would be used to describe the insertion of a daughtercard onto another Card. Various subclasses of PackageInConnector are also defined. PackageInSlot and its subclass, CardInSlot, are two examples of subclasses.")
    ]
class CIM_PackageInConnector : CIM_Dependency {
    [Override("Antecedent"),
     Description("The Connector into which the Package is inserted."),
     Key(true)
    ]
    CIM_PhysicalConnector REF Antecedent;

     [Override("Dependent"),
     Max(1),
     Description("The Package in the Connector."),
     Key(true)
    ]
    CIM_PhysicalPackage REF Dependent;

};

// CIM_SAPSAPDependency

    [Association(true),
     Version("2.6.0"),
     Description("CIM_SAPSAPDependency is an association between a Service AccessPoint and another ServiceAccessPoint indicating that the latter is required in order for the former ServiceAccess Point to utilize or connect with its Service. For example, to print at a network printer, local Print Access Points must utilize underlying network-related SAPs, or ProtocolEndpoints, in order to send the print request.")
    ]
class CIM_SAPSAPDependency : CIM_Dependency {
    [Override("Antecedent"),
     Description("The required ServiceAccessPoint."),
     Key(true)
    ]
    CIM_ServiceAccessPoint REF Antecedent;

     [Override("Dependent"),
     Description("The ServiceAccessPoint that is dependent on an underlying SAP."),
     Key(true)
    ]
    CIM_ServiceAccessPoint REF Dependent;

};

// CIM_DeviceConnection

    [Association(true),
     Version("2.6.0"),
     Description("The DeviceConnection relationship indicates that two or more Device are connected together.")
    ]
class CIM_DeviceConnection : CIM_Dependency {
    [Override("Antecedent"),
     Description("A LogicalDevice."),
     Key(true)
    ]
    CIM_LogicalDevice REF Antecedent;

     [Override("Dependent"),
     Description("A second LogicalDevice connected to the Antecedent Device."),
     Key(true)
    ]
    CIM_LogicalDevice REF Dependent;

     [Description("When several bus and/or connection speeds are possible, the NegotiatedSpeed property defines the one in use between the Devices. Speed is specified in bits per second. If connection or bus speeds are not negotiated, or if this information is not available/important to Device management, the property should be set to 0."),
     Units("Bits per Second"),
     MappingStrings{"MIF.DMTF|Bus Port Association|001.2"}
    ]
    uint64 NegotiatedSpeed;

     [Description("When several bus and/or connection data widths are possible, the NegotiatedDataWidth property defines the one in use between the Devices. Data width is specified in bits. If data width is not negotiated, or if this information is not available/important to Device management, the property should be set to 0."),
     Units("Bits"),
     MappingStrings{"MIF.DMTF|Bus Port Association|001.3"}
    ]
    uint32 NegotiatedDataWidth;

};

// CIM_LogicalPortGroup

    [Version("2.8.0"),
     Description("A collection of one or more ports logically grouped for administrative and discovery/topology purposes. LogicalPortGroups define port collections for access control, or for use in routing policy or other management tasks. For example, in Fibre Channel and Infiniband, a LogicalPortGroup represents the concept of a \'node\'.")
    ]
class CIM_LogicalPortGroup : CIM_SystemSpecificCollection {
    [Description("The Name property defines the identity by which the LogicalPortGroup is known."),
     MaxLen(256),
     ModelCorrespondence{"CIM_LogicalPortGroup.NameFormat"}
    ]
    string Name;

     [Description("The NameFormat property identifies how the Name of the LogicalPortGroup is generated."),
     ValueMap{"Unknown", "Other", "WWN", "GUID"},
     MaxLen(64),
     ModelCorrespondence{"CIM_LogicalPortGroup.Name", "CIM_LogicalPortGroup.OtherNameFormat"}
    ]
    string NameFormat;

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

};

// Brocade_Node

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Node represents a Fibre Channel node as defined by FC-FS.  A node contains one or more Fibre Channel endpoint objects (that is, ports of type N or NL).  A Node object typically corresponds to an HBA, a storage subsystem host adaptor, or a storage device.  Typically, nodes are associated with a platform; if the platform cannot be determined, the node is associated with the fabric.")
    ]
class Brocade_Node : CIM_LogicalPortGroup {
    [Override("InstanceID"),
     Description("Opaque identifier to uniquely identify the Node instance.  This is equivalent to the node WWN."),
     Key(true)
    ]
    string InstanceID;

     [Override("Name"),
     Description("The node WWN."),
     MappingStrings{"API.Brocade | Node | WWN", "FC-GS-4 | FDMI | Node_Name"},
     MaxLen(256),
     ModelCorrespondence{"CIM_LogicalPortGroup.NameFormat"}
    ]
    string Name;

     [Override("NameFormat"),
     MaxLen(64),
     Description("The NameFormat property identifies the format used for the device name."),
     ValueMap{"Unknown", "Other", "WWN", "GUID"},
     ModelCorrespondence{"CIM_LogicalPortGroup.Name", "CIM_LogicalPortGroup.OtherNameFormat"}
    ]
    string NameFormat = "WWN";

     [Override("ElementName"),
     Write(true),
     Description("Node symbolic name. This is populated only if returned from the device and nonzero in length.  Any nonprintable characters returned from the device for this property are automatically converted to whitespace.Setting of this property is not supported on 2.6.x as proxy/target"),
     MappingStrings{"API.Brocade | Node | SymbolicName", "FC-GS-4 | FDMI | Node Symbolic Name"}
    ]
    string ElementName;

};

// CIM_Controller

    [Abstract(true),
     Version("2.8.0"),
     Description("Controller is a superclass for grouping the miscellaneous control-related Devices that provide a \'classic\' bus master interface. Examples of Controllers are USBControllers, SerialControllers, etc. The Controller class is an abstraction for Devices with a single protocol stack, which exist to control communications (data, control, and reset) to \'downstream\' devices. Note that a new abstract class (ProtocolController) has been created to model more complex interface controllers such as SCSI.")
    ]
class CIM_Controller : CIM_LogicalDevice {
    [Description("Time of last reset of the Controller.")
    ]
    datetime TimeOfLastReset;

     [Description("The protocol used by the Controller to access \'controlled\' Devices."),
     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", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48"},
     Values{"Other", "Unknown", "EISA", "ISA", "PCI", "ATA/ATAPI", "Flexible Diskette", "1496", "SCSI Parallel Interface", "SCSI Fibre Channel Protocol", "SCSI Serial Bus Protocol", "SCSI Serial Bus Protocol-2 (1394)", "SCSI Serial Storage Architecture", "VESA", "PCMCIA", "Universal Serial Bus", "Parallel Protocol", "ESCON", "Diagnostic", "I2C", "Power", "HIPPI", "MultiBus", "VME", "IPI", "IEEE-488", "RS232", "IEEE 802.3 10BASE5", "IEEE 802.3 10BASE2", "IEEE 802.3 1BASE5", "IEEE 802.3 10BROAD36", "IEEE 802.3 100BASEVG", "IEEE 802.5 Token-Ring", "ANSI X3T9.5 FDDI", "MCA", "ESDI", "IDE", "CMD", "ST506", "DSSI", "QIC2", "Enhanced ATA/IDE", "AGP", "TWIRP (two-way infrared)", "FIR (fast infrared)", "SIR (serial infrared)", "IrBus", "Serial ATA"},
     MappingStrings{"MIF.DMTF|Bus Port|004.2", "MIF.DMTF|Disks|003.3"},
     ModelCorrespondence{"CIM_Controller.ProtocolDescription"}
    ]
    uint16 ProtocolSupported;

     [Description("Maximum number of directly addressable entities supported by this Controller. A value of 0 should be used if the number is unknown or unlimited."),
     MappingStrings{"MIF.DMTF|Bus Port|004.9"}
    ]
    uint32 MaxNumberControlled;

     [Description("A free form string providing more information related to the ProtocolSupported by the Controller."),
     MappingStrings{"MIF.DMTF|Bus Port|004.3"},
     ModelCorrespondence{"CIM_Controller.ProtocolSupported"}
    ]
    string ProtocolDescription;

};

// CIM_PortController

    [Version("2.8.0"),
     Description("PortController is a logical device corresponding to a hardware network port controller. Port controllers provide various features depending on their types and versions.")
    ]
class CIM_PortController : CIM_Controller {
    [Description("The type or model of the port controller. Specific values will be enumerated in a later release of this schema. When set to 1 (\"Other\"), the related property OtherControllerType contains a string description of the controller\'s type."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8"},
     Values{"Unknown", "Other", "Ethernet", "IB", "FC", "FDDI", "ATM", "Token Ring", "Frame Relay"},
     ModelCorrespondence{"CIM_PortController.OtherControllerType"}
    ]
    uint16 ControllerType;

     [Description("A string value for controller types not captured by the ControllerType enumeration. This should only be used when the value of the ControllerType property is set to 1, \"Other\"."),
     ModelCorrespondence{"CIM_PortController.ControllerType"}
    ]
    string OtherControllerType;

     [Description("The revision number of the controller.")
    ]
    uint16 ControllerVersion;

};

// Brocade_Device

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Device represents a logical device such as a disk, a RAID, or an HBA associated with a platform.")
    ]
class Brocade_Device : CIM_PortController {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is the Brocade_Platform or Brocade_Fabric of which this device is part."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName;

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s Name property.  The value is equivalent to the platform name if the scoping system is an instance of Brocade_Platform or the Proxy Switch WWN if the scoping system is an instance of Brocade_Fabric."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     Description("CreationClassName indicates the name of the Brocade_Device class that, when used with the other key properties of this class, uniquely identifies an instance of the Brocade_Device class."),
     Key(true)
    ]
    string CreationClassName = "Brocade_Device";

     [Override("DeviceID"),
     MaxLen(64),
     Description("An address or other identifying information to uniquely name the device, which is the device WWN.  In the case of an HBA, it is the node name associated with the specific HBA."),
     MappingStrings{"API.Brocade | HBA | WWN", "API.Brocade | Node | WWN"},
     Key(true)
    ]
    string DeviceID;

     [Description("Physical storage device type."),
     Values{"Unknown", "Device", "Subsystem"},
     ValueMap{"0", "1", "2"},
     MappingStrings{"API.Brocade | Device | DeviceType"}
    ]
    uint16 DeviceType;

     [Octetstring(true),
     Description("A vendor-specific binary string returned by SCSI devices.  The first 4 bytes indicate the length, with byte 0 being the most significant byte of the length.  Octet data starts at byte 4."),
     MappingStrings{"API.Brocade | Device | SCSIInquiryString"}
    ]
    uint8 SCSIInquiryString[];

     [Override("ControllerType"),
     Required(true),
     Description("The type or model of the port controller. Specific values will be enumerated in a later release of this schema. When set to 1 (\"Other\"), the related property OtherControllerType contains a string description of the controller\'s type."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8"},
     Values{"Unknown", "Other", "Ethernet", "IB", "FC", "FDDI", "ATM", "Token Ring", "Frame Relay"},
     ModelCorrespondence{"CIM_PortController.OtherControllerType"}
    ]
    uint16 ControllerType = 4;

};

// Brocade_DeviceInNode

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_DeviceInNode is a generic association used to establish a relationship between a device and a node.  The cardinality of this association is one-to-one, because a device can be considered as connected to a single node. Dual ported devices also have only one node,which has two associated N-Ports.")
    ]
class Brocade_DeviceInNode : CIM_Dependency {
    [Override("Antecedent"),
     Description("The node that contains a device."),
     MappingStrings{"API.Brocade | Device | NodeOID"},
     Key(true)
    ]
    Brocade_Node REF Antecedent;

     [Override("Dependent"),
     Description("The device that is part of a node."),
     Key(true)
    ]
    Brocade_Device REF Dependent;

};

// Brocade_Transceiver

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Transceiver represents a GBIC/SFP on a port.  Instances of this class are shown only if the transceiver is used by a switch that is \'reachable\' by the CIM agent.  A switch is considered \'reachable\' if it is contained within a fabric to which the agent has connectivity.")
    ]
class Brocade_Transceiver : CIM_LogicalModule {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name, which in this case is Brocade_Switch."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName;

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name.  This is the WWN of the switch that is host to the instance."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_Transceiver";

     [Override("DeviceID"),
     MaxLen(64),
     Description("The WWN of the port to which this transceiver is connected."),
     Key(true)
    ]
    string DeviceID;

     [Description("GBIC/SFP temperature.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x."),
     Units("Celsius"),
     MinValue(-10),
     MaxValue(85),
     MappingStrings{"API.Brocade | Port | PortSFPTemp"}
    ]
    sint16 Temperature;

     [Description("GBIC/SFP receive power.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x."),
     Units("uWatts"),
     MinValue(0),
     MaxValue(5000),
     MappingStrings{"API.Brocade | Port | PortSFPRxp"}
    ]
    uint16 RxPower;

     [Description("GBIC/SFP transmit power.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x."),
     Units("uWatts"),
     MinValue(0),
     MaxValue(5000),
     MappingStrings{"API.Brocade | Port | PortSFPTxp"}
    ]
    uint16 TxPower;

     [Description("GBIC/SFP Current.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x."),
     Units("mA"),
     MinValue(0),
     MaxValue(50),
     MappingStrings{"API.Brocade | Port | PortSFPCurrent"}
    ]
    uint16 Current;

     [Description("GBIC/SFP Voltage.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x."),
     Units("mV"),
     MinValue(3150),
     MaxValue(3600),
     MappingStrings{"API.Brocade | Port | PortSFPVoltage"}
    ]
    uint16 Voltage;

     [Override("OperationalStatus"),
     Description("The operational status of the transceiver."),
     ValueMap{"0", "1", "2", "3", "4", "6", "8", "9", "10", "12"},
     Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Error", "Starting", "Stopping", "Stopped", "No Contact"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

};

// Brocade_Link

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The Brocade_Link association indicates that two transceivers are connected together via a physical link.  Instances of this class are shown only if the link is between switches that are \'reachable\' by the CIM agent.  A switch is considered \'reachable\' if it is contained within a fabric to which the agent has connectivity.")
    ]
class Brocade_Link : CIM_Dependency {
    [Override("Antecedent"),
     Description("Antecedent represents a physical medium (GBIC/SFP) that serves as one end of the connection."),
     Key(true)
    ]
    Brocade_Transceiver REF Antecedent;

     [Override("Dependent"),
     Description("Dependent represents another physical connector that serves as the other end of the connection."),
     Key(true)
    ]
    Brocade_Transceiver REF Dependent;

     [Description("Port Link Distance: normal, less than or equal to 50 km, less than or equal to 100 km.\n\nNote that this property needs the Extended Fabric license key; otherwise, a link distance of normal is always returned."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"},
     Values{"Normal", "Auto", "10KM", "25KM", "50KM", "100KM", "10KM_VCX", "25KM_VCX", "50KM_VCX", "100KM_VCX", "Auto_VCX"},
     MappingStrings{"API.Brocade | Port | LinkDistance"}
    ]
    uint16 LinkDistance;

     [Description("Applies to switch port only. Logical port number of trunk group master.  This property is populated only if the port is trunked.  The target firmware applies to the highest firmware level of either of the switches the link spans.\n\nSupported by Proxy Firmware versions: 2.6.x, 3.1.x, 4.0.x, 4.1.x, 4.2.x.\nSupported by Target Firmware versions: 2.6.x, 3.1.x, 4.0.x, 4.1.x, 4.2.x."),
     MappingStrings{"API.Brocade | Port | TrunkMasterPortNum"}
    ]
    uint16 TrunkMasterPortNum;

     [Description("PortLinkInfo is a text description of the link.  It consists of a set of textual values that are separated by whitespaces.  Possible values are: segmented, upstream, downstream, loopback, incompatible, domain_overlap, zone_conflict, fspf_mismatch, no_license, disabled_E_Port, Platform_DB_conflict, Security_Violation, and Security_Incompatibility.  The target firmware applies to the highest firmware level of either of the switches the link spans.\n\nSupported by Proxy Firmware versions: 3.1.x, 4.1.x, 4.2.x.\nSupported by Target Firmware versions: 3.1.x, 4.1.x, 4.2.x."),
     MappingStrings{"API.Brocade | Port | PortLinkInfo"}
    ]
    string PortLinkInfo;

};

// CIM_Realizes

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

     [Override("Dependent"),
     Description("The LogicalDevice."),
     Key(true)
    ]
    CIM_LogicalDevice REF Dependent;

};

// CIM_ElementSoftwareIdentity

    [Association(true),
     Version("2.8.0"),
     Description("ElementSoftwareIdentity allows a Managed Element to report its software related asset information (firmware, drivers, configuration software, and etc.)")
    ]
class CIM_ElementSoftwareIdentity : CIM_Dependency {
    [Override("Antecedent"),
     Description("A LogicalElement\'s Software Asset."),
     Key(true)
    ]
    CIM_SoftwareIdentity REF Antecedent;

     [Override("Dependent"),
     Description("The ManagedElement that requires or uses the software."),
     Key(true)
    ]
    CIM_ManagedElement 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."),
     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"},
     ModelCorrespondence{"CIM_ElementSoftwareIdentity.OtherUpgradeCondition"}
    ]
    uint16 UpgradeCondition;

     [Description("Describes the upgrade condition, when UpgradeCondition is set to 1 (\"Other\")."),
     ModelCorrespondence{"CIM_ElementSoftwareIdentity.UpgradeCondition"}
    ]
    string OtherUpgradeCondition;

};

// CIM_LogicalPort

    [Version("2.8.0"),
     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.")
    ]
class CIM_LogicalPort : CIM_LogicalDevice {
    [Description("The bandwidth of the Port in Bits per Second."),
     Units("Bits per Second")
    ]
    uint64 Speed;

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

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

     [Description("In some circumstances, a LogicalPort may be identifiable as a front end or back end port. An example of this would be a storage array which 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

    [Version("2.8.0"),
     Description("NetworkPort is the logical representation of network communications hardware - a physical connector and the setup/operation of the network chips, at the lowest layers of a network stack.")
    ]
class CIM_NetworkPort : CIM_LogicalPort {
    [Override("Speed"),
     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."),
     Units("Bits per Second"),
     MappingStrings{"MIB.IETF|MIB-II.ifSpeed", "MIF.DMTF|Network Adapter 802 Port|001.5"}
    ]
    uint64 Speed;

     [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 the of the port\'s type. A range of values, DMTF_Reserved, has been defined that allows subclasses to override and define their specific port types."),
     ValueMap{"0", "1", "2", "3..15999", "16000..65535"},
     Values{"Unknown", "Other", "Not Applicable", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_NetworkPort.OtherNetworkPortType"}
    ]
    uint16 PortType;

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

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

     [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."),
     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"},
     ModelCorrespondence{"CIM_NetworkPort.OtherLinkTechnology"}
    ]
    uint16 LinkTechnology;

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

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

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

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

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

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

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

};

// CIM_FCPort

    [Version("2.7.1"),
     Description("Capabilities and management of a Fibre Channel Port Device.")
    ]
class CIM_FCPort : CIM_NetworkPort {
    [Override("PortType"),
     Description("The specific mode currently enabled for the Port. The values: \"N\" = Node Port, \"NL\" = Node Port supporting FC arbitrated loop, \"E\" = Expansion Port connecting fabric elements (for example, FC switches), \"F\" = Fabric (element) Port, \"FL\" = Fabric (element) Port supporting FC arbitrated loop, \"B\" = Bridge and \"G\" = Generic Port. PortTypes are defined in the ANSI X3 standards. When set to 1 (\"Other\"), the related property OtherPortType contains a string description of the port\'s type."),
     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"},
     ModelCorrespondence{"CIM_NetworkPort.OtherNetworkPortType"}
    ]
    uint16 PortType;

     [Description("An array of integers indicating 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 indicating the Classes of Service that are active. The Active COS is indicated in ActiveCOS."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"},
     Values{"Unknown", "1", "2", "3", "4", "5", "6", "F"},
     ModelCorrespondence{"CIM_FCPort.SupportedCOS"}
    ]
    uint16 ActiveCOS[];

     [Description("An array of integers indicating 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[];

     [Description("An array of integers indicating the Fibre Channel FC-4 protocols currently running. A list of all protocols supported is indicated in the SupportedFC4Types 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"},
     ModelCorrespondence{"CIM_FCPort.SupportedFC4Types"}
    ]
    uint16 ActiveFC4Types[];

};

// Brocade_FCPort

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
Description("Brocade_FCPort represents a single fibre channel port on a switch or a fabric node.")
    ]
class Brocade_FCPort : CIM_FCPort {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is the Brocade switch or Brocade node of which this port is a part."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName;

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s Name property. The scoping system is the Brocade switch or Brocade node of which this port is part.  This property represents the WWN of the switch or node."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     Description("CreationClassName indicates the name of the FCPort class that, when used with the other key properties of this class, uniquely identifies an instance of the port class."),
     Key(true)
    ]
    string CreationClassName;

     [Override("DeviceID"),
     MaxLen(64),
     Description("An address or identifying information to uniquely name the port.  This is the N_Port WWN in the case of an N_Port and the switch port WWN in the case of a switch port."),
     Key(true)
    ]
    string DeviceID;

     [Override("PermanentAddress"),
     MaxLen(64),
     Description("The port ID of the port.  This is the WWN of the port."),
     MappingStrings{"API.Brocade | Port | WWN"}
    ]
    string PermanentAddress;

     [Override("PortNumber"),
     Description("The logical port number of the user port.  There is no assumption of any relation to the physical location of a port within a chassis."),
     MappingStrings{"API.Brocade | Port | PortNumber"}
    ]
    uint16 PortNumber;

     [Override("PortType"),
     Description("The specific mode currently enabled for the Port. The values are:\n\n\"N\" = Node port\n\"NL\" = Node port supporting FC arbitrated loop\n\"E\" = Expansion port connecting fabric elements (for example, FC switches)\n\"F\" = Fabric (element) port\n\"FL\" = Fabric (element) port supporting FC arbitrated loop\n\"B\" = Bridge port\n\"G\" = Generic port\n\"LB\" = Loopback port\n\"PL\"= Private loop port"),
     Values{"Unknown", "Other", "N", "NL", "F/NL", "Nx", "E", "F", "FL", "B", "G", "LB", "PL"},
     ValueMap{"0", "1", "10", "11", "12", "13", "14", "15", "16", "17", "18", "32768", "32769"},
     MappingStrings{"API.Brocade | Port | PortType", "FC-GS-4 | FDMI | Port Type"},
     ModelCorrespondence{"CIM_NetworkPort.OtherNetworkPortType"}
    ]
    uint16 PortType;

     [Override("Speed"),
     Description("Actual speed at which the port is currently operating. If the value is 0, the speed is unknown or cannot be determined.  To obtain this property for Brocade_NodeFCPort instances, the device for the port must be FDMI-enabled and attached to a switch with 3.1.x, 4.1.x, or greater firmware and with proxy firmware version of 3.1.x, 4.1.x, or greater and not 7.3.x"),
     Units("Bits per Second"),
     MappingStrings{"API.Brocade | Port | PortSpeed", "FC-GS-4 | FDMI | Current Port Speed"}
    ]
    uint64 Speed;

     [Override("MaxSpeed"),
     Description("The maximum speed the port is capable of supporting, in bits per second.  For example, the maximum port speed for a port on a 2 Gb switch is 2 Gb.  To obtain this property for Brocade_NodeFCPort instances, the device for the port must be FDMI-enabled and attached to a switch with version 3.1.x, 4.1.x, or greater firmware and with proxy firmware version of 3.1.x, 4.1.x, or greater and not 7.3.x"),
     Units("Bits per Second"),
     MappingStrings{"FC-GS-4 | FDMI | Supported Speed"}
    ]
    uint64 MaxSpeed;

     [Override("NetworkAddresses"),
     MaxLen(64),
     Description("The FC port ID of the port."),
     MappingStrings{"API.Brocade | Port | PortId", "FC-GS-4 | FDMI | Fibre Channel Identifier"}
    ]
    string NetworkAddresses[];

     [Override("LinkTechnology"),
     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."),
     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"},
     ModelCorrespondence{"CIM_NetworkPort.OtherLinkTechnology"}
    ]
    uint16 LinkTechnology = 4;

};

// Brocade_SwitchFCPort

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPort represents a single fibre channel switch port on a switch.")
    ]
class Brocade_SwitchFCPort : Brocade_FCPort {
    [Write(true),
     Override("ElementName"),
     Description("User-settable friendly name of the port.  This property is persisted.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x.")
    ]
    string ElementName = "";

     [Override("OperationalStatus"),
     Description("Indicates the current status of the switch port.  Various health and operational statuses and the mappings to Brocade statuses are defined.  Many of the enumeration values are self-explanatory; however, a few are not and are described in more detail.\n\n\"Stressed\" indicates that the element is functioning, but needs attention.  Some examples of \"Stressed\" states are overload, overheated, and so on.\n\n\"Predictive Failure\" indicates that an element is functioning normally but predicting a failure in the near future.\n\n\"In Service\" indicates the element is being configured, maintained, cleaned, or otherwise administered.\n\n\"No Contact\" indicates that the monitoring system has knowledge of this element, but has never been able to establish communications with it.\n\n\"Lost Communication\" indicates that the ManagedSystemElement is known to exist and has been contacted successfully in the past, but is currently unreachable.\n\n\"Stopped\" and \"Aborted\" are similar, although the former implies a clean and orderly stop, while the latter implies an abrupt stop where the element\'s state and configuration might need to be updated.\n\n\"Dormant\" indicates that the element is inactive or quiesced.\n\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\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 operation passed (Completed with OK), failed (Completed with Error), or finished, but did not complete OK or report an error (Completed with Degraded).\n\n\"Power Mode\" indicates that the element has additional power model information contained in the AssociatedPowerManagementService association.\n\nThe following mappings must be made to these status values from the status values defined in Brocade API:\n\"Warning\" maps to \"Stressed\",\n\"Faulty\" maps to \"Error\",\n\"No_Card\" and \"No_Module\" map to \"No Contact\"."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"},
     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"},
     MappingStrings{"API.Brocade | Port | PortStatus"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

     [Override("EnabledState"),
     Description("EnabledState is an integer enumeration that indicates the enabled/disabled states of the port.  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 summarizes the enabled/disabled states:\n\nEnabled (2) indicates that the element is or could be executing commands, processes any queued commands, and queues new requests.\n\nDisabled (3) indicates that the element does not execute commands and drops any new requests.\n\nShutting Down (4) indicates that the element is in the process of going to a Disabled state.\n\nNot Applicable (5) indicates that the element does not support being enabled or disabled.\n\nEnabled but Offline (6) indicates that the element might be completing commands and drops any new requests.\n\nTest (7) indicates that the element is in a test state.\n\nDeferred (8) indicates that the element might be completing commands, but queues any new requests.\n\nQuiesce (9) indicates that the element is enabled but in a restricted mode.  The element\'s behavior is similar to the Enabled state, but it processes only a restricted set of commands.  All other requests are queued.\n\nStarting (10) indicates that the element is in the process of going to an Enabled state.\n\nNew requests are queued.\n\n\"In Test\" maps to the Brocade API \"Testing\", and\n\"Not Applicable\" maps to the Brocade API \"Not Supported\"."),
     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"},
     MappingStrings{"API.Brocade | Port| PortState"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.OtherEnabledState"}
    ]
    uint16 EnabledState = 5;

     [Description("This property tells whether the port is a real port or a virtual port. In the case of Front Phantom ports and Xlate phantom ports this property will be true, and false for all other real switch ports in the fabric.\n\n")
    ]
    boolean IsVirtual;

     [Write(true),
     Description("PortLock is an integer enumeration indicating whether the port is locked as an FL, G, or PL port, or is simply unlocked.  This is a writable property that takes the following values:\n\n\"None\" = Unlock L/G port\n\"FL\" = Lock as fabric loop port\n\"G\" = Lock as generic port\n\"PL\" = Lock as private loop port\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x,5.0.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x,5.0.x.\nUnlocking L/G port and Locking a port as private loop port is not supported for 7.3.x proxy and target firmware versions"),
     ValueMap{"0", "1", "2", "3"},
     Values{"None", "FL", "G", "PL"}
    ]
    uint16 PortLock;

     [Override("RequestedState"),
     Description("RequestedState is an integer enumeration indicating the new requested state for the Port.\n\nThe actual state of the element is represented by EnabledState.  This property is provided to get the current requested state of the port during the state change.  After the state change is done the EnabledState property will have the new value and RequestedState will be set back to 5.\n\nNote that when EnabledState is set to 5 (\"Not Applicable\"), then this property has no meaning.  By default, the RequestedState is 5 (\"No Change\").  Refer to the EnabledState property description for explanations of the values in the RequestedState enumeration."),
     ModelCorrespondence{"CIM_EnabledLogicalElement.EnabledState"},
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10..32767", "32768..65535"},
     Values{"Enabled", "Disabled", "Shut Down", "No Change", "Offline", "Test", "Deferred", "Quiesce", "DMTF Reserved", "Vendor Reserved"}
    ]
    uint16 RequestedState = 5;

     [Write(true),
     Override("EnabledDefault"),
     Description("An enumerated value indicating an administrator\'s default/startup configuration for an element\'s Enabled State i.e this property represents the Persistent State of SwitchFCPort. \nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x,4.4.x,5.0.x, 7.3.xSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x,5.0.x, 7.3.x"),
     ValueMap{"2", "3", "5", "6", "7", "8..32767", "32768..65535"},
     Values{"Enabled", "Disabled", "Not Applicable", "Enabled but Offline", "No Default", "DMTF Reserved", "Vendor Reserved"}
    ]
    uint16 EnabledDefault;

     [Override("AutoSense"),
     Description("Indicates whether the port speed has been autonegotiated.  Note that if this value is \"true\", the value of Speed could be 0, since the port is in the process of autonegotiating its operating speed.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x,4.4.x,5.0.x, 7.3.xSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x,5.0.x, 7.3.x")
    ]
    boolean AutoSense;

     [Deprecated{"Brocade_Trunk"},
     Description("Trunking is a capability that enables more than one port to be connected to ports of other systems in order to extend the available bandwidth.  This attribute indicates whether this port is trunked.\n\nSupported by Proxy Firmware versions: 2.6.x, 3.2.x,3.1.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x,5.0.x, 7.3.x\nSupported by Target Firmware versions: 2.6.x, 3.2.x, 3.1.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x,5.0.x, 7.3.x.")
    ]
    boolean Trunked;

     [Deprecated{"Brocade_Trunk"},
     Description("If trunked, indicates whether this port is the trunk master.\n\nSupported by Proxy Firmware versions: 2.6.x, 3.2.x, 3.1.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x\nSupported by Target Firmware versions: 2.6.x, 3.2.x, 3.1.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x,7.3.x.")
    ]
    boolean TrunkMaster;

     [Write(true),
     Description("Indicates whether to disable this port from coming up as an E_Port.  Set to true if it should be disabled from coming up as an E_Port, and false otherwise.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x , 5.0.x, 7.3.x.")
    ]
    boolean EportDisable;

     [Write(true),
     Description("Indicates whether the port is configured for ISL R_RDY mode.  Set to true if configured for ISL mode enabled, and false if ISL mode disabled.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x., 5.0.x\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 5.0.x.")
    ]
    boolean ISLModeEnable;

     [MinValue(1),
     Description("The cost of a specific link when connected to this interface.Standard link costs are automatically assigned."),
     MappingStrings{"API.Brocade | Port | TxLinkRouteCost"}
    ]
    uint32 LinkCost;

     [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is the Brocade switch or Brocade node of which this port is a part."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_Switch";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s Name property. The scoping system is the Brocade switch or Brocade node of which this port is part.  This property represents the WWN of the switch or node."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     Description("CreationClassName indicates the name of the FCPort class that, when used with the other key properties of this class, uniquely identifies an instance of the port class."),
     Key(true)
    ]
    string CreationClassName = "Brocade_SwitchFCPort";

     [Override("DeviceID"),
     MaxLen(64),
     Description("An address or identifying information to uniquely name the port.  This is the N_Port WWN in the case of an N_Port and the switch port WWN in the case of a switch port."),
     Key(true)
    ]
    string DeviceID;

     [Override("PortType"),
     Description("The specific mode currently enabled for the Port. The values are:\n\n\"N\" = Node port\n\"NL\" = Node port supporting FC arbitrated loop\n\"E\" = Expansion port connecting fabric elements (for example, FC switches)\n\"F\" = Fabric (element) port\n\"FL\" = Fabric (element) port supporting FC arbitrated loop\n\"B\" = Bridge port\n\"G\" = Generic port\n\"LB\" = Loopback port\n\"PL\"= Private loop port"),
     Values{"Unknown", "Other", "N", "NL", "F/NL", "Nx", "E", "F", "FL", "B", "G", "LB", "PL"},
     ValueMap{"0", "1", "10", "11", "12", "13", "14", "15", "16", "17", "18", "32768", "32769"},
     MappingStrings{"API.Brocade | Port | PortType", "FC-GS-4 | FDMI | Port Type"},
     ModelCorrespondence{"CIM_NetworkPort.OtherNetworkPortType"}
    ]
    uint16 PortType;

     [Override("Speed"),
     Description("Actual speed at which the port is currently operating. If the value is 0, the speed is unknown or cannot be determined.  To obtain this property for Brocade_NodeFCPort instances, the device for the port must be FDMI-enabled and attached to a switch with 3.1.x, 4.1.x, or greater firmware and with proxy firmware version of 3.1.x, 4.1.x, or greater and not 7.3.x"),
     Units("Bits per Second"),
     MappingStrings{"API.Brocade | Port | PortSpeed", "FC-GS-4 | FDMI | Current Port Speed"}
    ]
    uint64 Speed;

     [Override("PermanentAddress"),
     MaxLen(64),
     Description("The port ID of the port.  This is the WWN of the port."),
     MappingStrings{"API.Brocade | Port | WWN"}
    ]
    string PermanentAddress;

     [Override("PortNumber"),
     Description("The logical port number of the user port.  There is no assumption of any relation to the physical location of a port within a chassis."),
     MappingStrings{"API.Brocade | Port | PortNumber"}
    ]
    uint16 PortNumber;

     [Override("NetworkAddresses"),
     MaxLen(64),
     Description("The FC port ID of the port."),
     MappingStrings{"API.Brocade | Port | PortId", "FC-GS-4 | FDMI | Fibre Channel Identifier"}
    ]
    string NetworkAddresses[];

     [Override("MaxSpeed"),
     Description("The maximum speed the port is capable of supporting, in bits per second.  For example, the maximum port speed for a port on a 2 Gb switch is 2 Gb.  To obtain this property for Brocade_NodeFCPort instances, the device for the port must be FDMI-enabled and attached to a switch with version 3.1.x, 4.1.x, or greater firmware and with proxy firmware version of 3.1.x, 4.1.x, or greater and not 7.3.x"),
     Units("Bits per Second"),
     MappingStrings{"FC-GS-4 | FDMI | Supported Speed"}
    ]
    uint64 MaxSpeed;

    [Override("RequestStateChange"),
     Description("Requests that port state be changed to one of the values from the input list.  When the requested state change takes place, the element\'s EnabledState and RequestedState will be the same.  The use of ConcreteJob (if the operation is performed asynchronously) is not supported and always returns NULL.\n\nNot Supported by Proxy and Target Firmware: 7.3.x"),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "32768"},
     Values{"Completed with No Error", "Not Supported", "Unknown/Unspecified Error", "Can NOT complete within Timeout Period", "Failed", "Invalid Parameter", "In Use", "Not_Found", "Already_Exists", "Insufficient_Resources", "Access_Denied"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}
    ]
    uint32 RequestStateChange([IN(true), Required(true), Description("The state requested for the element.  This information will be placed into the instance\'s RequestedState property if the RequestStateChange method\'s return code is 0, 3 (\'Completed with No Error\', \'Timeout\') respectively.\n\nRefer to the description of the EnabledState property for the detailed meanings of the RequestedState Values."), ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}, ValueMap{"2", "3"}, Values{"Enabled", "Disabled"}] uint16 RequestedState, [OUT(true), IN(false), Description("Reference to the job (can be null if task completed).")] CIM_ConcreteJob REF Job, [IN(true), 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.\n\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.")] datetime TimeoutPeriod);
     [Description("Set port speed to 1G, 2G, or 4G, or set it to AN if speed should be autonegotiated.On Silkworm 48000 switches, proxy firmware version should be 4.4.x and above."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources"}
    ]
    uint32 SetPortSpeed([IN(true), Required(true), ValueMap{"0", "1", "2", "3"}, Values{"1G", "2G", "4G", "AN"}] uint16 PortSpeed);
};

// Brocade_PortTransceiver

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The Brocade_PortTransceiver relationship indicates that a port is using the referenced PhysicalConnector to output to the network.")
    ]
class Brocade_PortTransceiver : CIM_Dependency {
    [Override("Antecedent"),
     Description("The physical connection medium."),
     Key(true)
    ]
    Brocade_Transceiver REF Antecedent;

     [Override("Dependent"),
     Description("The port that transmits using the connector."),
     MappingStrings{"API.Brocade | Port | ConnectedPortSet"},
     Key(true)
    ]
    Brocade_SwitchFCPort REF Dependent;

};

// CIM_ProvidesServiceToElement

    [Association(true),
     Deprecated{"CIM_ServiceAvailableToElement"},
     Version("2.7.0"),
     Description("The use of the CIM_ProvidesServiceToElement class has been deprecated.  Instead, ServiceAvailableToElement conveys the semantics of \'use\', while the subclasses of ProvidesService ToElement (or the ConcreteDependency association) describe dependency relationships.  CIM_ProvidesServiceToElement was meant to generalize the ServiceServiceDependency association.  It tried to indicate that ManagedElements may use the functionality provided by one or more Services.  An example is that a Processor and an enclosure (a PhysicalElement) may 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 not a dependency of the processor or enclosure.  To describe that use of the service may be restricted or have limited availability/ applicability, then the CIM_ServiceAvailableToElement association would be instantiated.")
    ]
class CIM_ProvidesServiceToElement : CIM_Dependency {
    [Deprecated{"CIM_ServiceAvailableToElement.ServiceProvided"},
     Override("Antecedent"),
     Description("The Service provided."),
     Key(true)
    ]
    CIM_Service REF Antecedent;

     [Deprecated{"CIM_ServiceAvailableToElement.UserOfService"},
     Override("Dependent"),
     Description("The ManagedElement dependent on the Service."),
     Key(true)
    ]
    CIM_ManagedElement REF Dependent;

};

// CIM_SystemPackaging

    [Association(true),
     Version("2.7.0"),
     Description("Similar to the way that LogicalDevices are \'Realized\' by PhysicalElements, Systems may be associated with specific packaging/PhysicalElements. This association explicitly defines the relationship between a System and its packaging.")
    ]
class CIM_SystemPackaging : CIM_Dependency {
    [Override("Antecedent"),
     Description("The PhysicalElement(s) that provide the packaging of a System."),
     Key(true)
    ]
    CIM_PhysicalElement REF Antecedent;

     [Override("Dependent"),
     Description("The System whose packaging is described."),
     Key(true)
    ]
    CIM_System REF Dependent;

};

// CIM_ServiceComponent

    [Association(true),
     Version("2.6.0"),
     Description("The ServiceComponent aggregation models a set of subordinate Services that are aggregated together to form a higher-level service."),
     Aggregation(true)
    ]
class CIM_ServiceComponent : CIM_Component {
    [Override("GroupComponent"),
     Description("The parent Service."),
     Key(true),
     Aggregate(true)
    ]
    CIM_Service REF GroupComponent;

     [Override("PartComponent"),
     Description("The component Service."),
     Key(true)
    ]
    CIM_Service REF PartComponent;

};

// CIM_AdminDomain

    [Version("2.8.0"),
     Description("This is a special grouping of ManagedSystemElements. The grouping is viewed as a single entity, reflecting that all of its components are administered similarly - either by the same user, group of users or policy. It serves as an aggregation point to associate one or more of the following elements: network devices, such as routers and switches, servers, and other resources that can be accessed by end systems. This grouping of devices plays an essential role in ensuring that the same administrative policy and actions are applied to all of the devices in the grouping. The specific behavior and/or semantics of the AdminDomain can be identified through its aggregated and associated entities.")
    ]
class CIM_AdminDomain : CIM_System {
    [Override("NameFormat"),
     Description("The NameFormat property identifies how the Name of the AdminDomain is generated, using the heuristic specified in the CIM V2 System Model spec. It assumes that the documented rules are traversed in order, to determine and assign a Name. The NameFormat Values list defines the precedence order for assigning the Name of the AdminDomain. \n\n\"FC\" has been deprecated and replaced by \"WWN\" to be consistent with the other ValueMaps."),
     ValueMap{"Other", "AS", "NAP", "NOC", "POP", "RNP", "IP", "IPX", "SNA", "Dial", "WAN", "LAN", "ISDN", "Frame Relay", "ATM", "E.164", "IB", "FC", "Policy Repository", "WWN"},
     Values{"Other", "Autonomous System", "Network Access Provider", "Network Operations Center", "Point of Presence", "Regional Network Provider", "IP", "IPX", "SNA", "Dial", "WAN", "LAN", "ISDN", "Frame Relay", "ATM", "E.164", "Infiniband", "Fibre Channel", "Policy Repository", "Fibre Channel Worldwide Name"},
     ModelCorrespondence{"CIM_AdminDomain.Name"},
     MaxLen(64)
    ]
    string NameFormat;

};

// Brocade_Fabric

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Fabric represents one or more switches connected by interswitch links (ISLs).  Each fabric is uniquely identified by the WWN of the proxy switch in the fabric.")
    ]
class Brocade_Fabric : CIM_AdminDomain {
    [Override("Name"),
     Description("An opaque key that identifies the fabric.  This is equivalent to the WWN of the proxy switch."),
     Key(true),
     MaxLen(256)
    ]
    string Name;

     [Override("ElementName"),
     Description("The 8-byte World Wide Name of the principal switch in the fabric, as per FC-GS-3, which is also considered the fabric World Wide Name."),
     MappingStrings{"API.Brocade | Fabric | WWN"}
    ]
    string ElementName;

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

     [Override("NameFormat"),
     Description("The NameFormat property identifies how the name of Brocade_Fabric is generated, using the heuristic specified in the CIM V2 System Model specification.  It assumes that the documented rules are traversed in order, to determine and assign a Name.  The NameFormat Values list defines the precedence order for assigning the name of Brocade_Fabric."),
     ValueMap{"Other", "WWN"},
     Values{"Other", "Fibre Channel Worldwide Name"},
     ModelCorrespondence{"Brocade_Fabric.Name"},
     MaxLen(64)
    ]
    string NameFormat;

};

// Brocade_Platform

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Platform represents a fabric-connected entity, containing one or more Node objects, that has registered with a fabric\'s Management Server service.Instances of this class can be created and deleted by a client using createInstance and deleteInstance respectively This class also represents the HBA host and if the HBA host information is got through FDMI call then the setInstance will not be supported for setting the properties like Dedicated, Management ServerList.")
    ]
class Brocade_Platform : CIM_ComputerSystem {
    [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_Platform";

     [Override("Name"),
     MaxLen(256),
     Description("The inherited Name serves as key of the platform in an enterprise environment.  This value has the following format:\n\"Proxy WWN\";\"Platform Name\"."),
     Key(true)
    ]
    string Name;

     [Override("ElementName"),
     Required(true),
     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 ManagedSystemElement\'s Name property 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 MAY be present in both the Name and ElementName properties.")
    ]
    string ElementName;

     [Override("NameFormat"),
     Required(true),
     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."),
     ValueMap{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN", "NAA"},
     MaxLen(64)
    ]
    string NameFormat = "Other";

     [Write(true),
     Override("Dedicated"),
     Description("Platform type.  Although this is represented as an array, only one type is specified at any given time (array size is always 1).  When writing this property, users should specify only a single type in an array size of exactly 1.  Specifying more or less than 1 type results in an exception with an invalid argument error code."),
     Values{"Unknown", "Others", "Gateway", "dummy3", "dummy4", "Converter", "HBA", "Swproxy", "StorageDev", "Host", "Storsubsys", "Module", "Driver", "StorAccess"},
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"},
     MappingStrings{"API.Brocade | Platform | PlatformType"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ComputerSystem.OtherDedicatedDescriptions"}
    ]
    uint16 Dedicated[];

     [Override("OtherIdentifyingInfo"),
     Description("Platform name: for example, host name."),
     MappingStrings{"API.Brocade | Platform | PlatformName"},
     MaxLen(256),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ComputerSystem.IdentifyingDescriptions"}
    ]
    string OtherIdentifyingInfo[];

     [Write(true),
     Description("The set of management IP Addresses used to access this platform."),
     MappingStrings{"API.Brocade | Platform | ManagementAddrSet"}
    ]
    string MgmtAddressList[];

};

// Brocade_PlatformInFabric

    [Association(true),
Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PlatformInFabric is a generic association used to establish membership relationships between the fabric and platforms connected to the fabric."),
     Aggregation(true)
    ]
class Brocade_PlatformInFabric : CIM_Component {
    [Override("GroupComponent"),
     Description("The fabric that has connected platforms."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Fabric REF GroupComponent;

     [Override("PartComponent"),
     Description("The platforms connected to this fabric."),
     MappingStrings{"API.Brocade | Fabric | PlatformSet "},
     Key(true)
    ]
    Brocade_Platform REF PartComponent;

};

// CIM_SystemComponent

    [Association(true),
     Version("2.7.0"),
     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. \nThe use of this association is cautioned - versus the use 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, since the physical element exists independently of any internal components, software, etc. In fact, again, a Dependency relationship is true - where a ComputerSystem is Dependent on its packaging, as described by the ComputerSystemPackage association."),
     Aggregation(true)
    ]
class CIM_SystemComponent : CIM_Component {
    [Override("GroupComponent"),
     Description("The parent System in the Association."),
     Key(true),
     Aggregate(true)
    ]
    CIM_System REF GroupComponent;

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

};

// CIM_ModulePort

    [Association(true),
     Version("2.8.0"),
     Description("ModulePort associates ports with their hosting modules."),
     Aggregation(true)
    ]
class CIM_ModulePort : CIM_Component {
    [Override("GroupComponent"),
     Max(1),
     Description("A module that has ports."),
     Key(true),
     Aggregate(true)
    ]
    CIM_LogicalModule REF GroupComponent;

     [Override("PartComponent"),
     Description("A Port that is associated with a module."),
     Key(true)
    ]
    CIM_NetworkPort REF PartComponent;

};

// CIM_Container

    [Association(true),
     Version("2.6.0"),
     Description("The Container association represents the relationship between a contained and a containing PhysicalElement.  A containing object must be a PhysicalPackage."),
     Aggregation(true)
    ]
class CIM_Container : CIM_Component {
    [Override("GroupComponent"),
     Max(1),
     Description("The PhysicalPackage that contains other PhysicalElements, including other Packages."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalContainedIn"},
     Key(true),
     Aggregate(true)
    ]
    CIM_PhysicalPackage REF GroupComponent;

     [Override("PartComponent"),
     Description("The PhysicalElement which is contained in the Package."),
     Key(true)
    ]
    CIM_PhysicalElement REF PartComponent;

     [Description("A free-form string representing the positioning of the PhysicalElement within the PhysicalPackage.  Information relative to stationary elements in the Container (for example, \'second drive bay from the top\'), angles, altitudes and other data may be recorded in this property.  This string could supplement or be used in place of instantiating the CIM_Location object."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalParentRelPos"}
    ]
    string LocationWithinContainer;

};

// Brocade_Switch

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Switch corresponds to the logical aspects of a single Brocade_Switch instance.  Any number of these switch instances can be associated with a Brocade_Chassis.  A switch instance corresponds to a single port, to a group of ports, or to all ports.  When enumerating switches, instances of \'unreachable\' switches are not shown.  \'Unreachable\' switches are switches that are not in any fabric that the CIM agent is managing, but might still be running in the same physical chassis as a switch that is in a fabric being managed by the agent.")
    ]
class Brocade_Switch : CIM_ComputerSystem {
    [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_Switch";

     [Override("Name"),
     MaxLen(256),
     Description("The switch WWN, which is a unique numeric identifier for the switch.  The WWN is factory-assigned and is typically used in license keys and digital certificates."),
     MappingStrings{"API.Brocade | Switch | WWN"},
     Key(true)
    ]
    string Name;

     [Override("Dedicated"),
     Description("Indicates that the computer system is a switch."),
     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"},
     MappingStrings{"MIB.IETF|MIB-II.sysServices"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ComputerSystem.OtherDedicatedDescriptions"}
    ]
    uint16 Dedicated[] = {5};

     [Override("OtherIdentifyingInfo"),
     MaxLen(256),
     MappingStrings{"API.Brocade | Switch | DomainId"},
     Description("The domain ID is a fabric-assigned identifier that uniquely identifies a switch in the fabric."),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ComputerSystem.IdentifyingDescriptions"}
    ]
    string OtherIdentifyingInfo[];

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

     [Description("Switch embedded port destination identifier (D_ID)."),
     MappingStrings{"API.Brocade | Switch | SwitchId"}
    ]
    string SwitchID;

     [Override("ElementName"),
     Write(true),
     MaxLen(15),
     Description("Switch symbolic name."),
     MappingStrings{"API.Brocade | Switch | SwitchName"}
    ]
    string ElementName;

     [Override("NameFormat"),
     Description("The ComputerSystem object and its derivatives are CIM top level objects.  They provide the scope for numerous components.  Having unique system keys is required.  The NameFormat property identifies how 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 computer system that better suits a business, using the inherited ElementName property."),
     ValueMap{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN"},
     MaxLen(64)
    ]
    string NameFormat = "WWN";

     [Description("This property tells whether the switch is a real switch or a virtual switch. In the case of Front Phantoms and Xlate phantoms this property will be true, and false for all other real switches in the fabric.\n\n")
    ]
    boolean IsVirtual;

     [Override("OperationalStatus"),
     Description("Indicates the current status of the switch.  Various health and operational statuses and the mappings to Brocade statuses are defined.  Many of the enumeration values are self-explanatory.  A few are described here in more detail.\n\n\"Stressed\" indicates that the switch instance is functioning, but needs attention.  Examples of \"Stressed\" states are overload, overheated, and so on.\n\n\"Predictive Failure\" indicates that the switch instance is functioning normally but predicting a failure in the near future.\n\n\"In Service\" indicates that the switch instance is being configured, maintained, cleaned, or otherwise administered.\n\n\"No Contact\" indicates that the monitoring system has knowledge of this switch instance, but has never been able to establish communication with it.\n\n\"Lost Communication\" indicates that the switch instance is known to exist and has been contacted successfully in the past, but is currently unreachable.\n\n\"Stopped\" and \"Aborted\" are similar, although the former implies a clean and orderly stop, while the latter implies an abrupt stop where the switch instance\'s state and configuration might need to be updated.\n\n\"Dormant\" indicates that the switch instance is inactive or quiesced or is used as a standby instance for failover.\n\n\"Supporting Entity in Error\" describes 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\n\"Completed\" indicates that the element has completed its operation.  This value is combined with either OK, Error, or Degraded so that a client can tell if the operation passed (Completed with OK), failed (Completed with Error), or finished, but did not complete OK or report an error (Completed with Degraded).\n\n\"Power Mode\" indicates the element has additional power model information contained in the AssociatedPowerManagementService association.\n\nThe following mappings must be made to these status values from the status values defined in Brocade API:\n\"Warning\" maps to \"Stressed\",\n\"Faulty\" maps to \"Error\"."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"},
     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"},
     MappingStrings{"API.Brocade | Switch | SwitchStatus"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

     [Description("A description of the reason for switch operational status.")
    ]
    string StatusReason;

     [Override("EnabledState"),
     Description("EnabledState is an integer enumeration that indicates the enabled and disabled states of the switch.  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 summarizes the various states:\n\nEnabled (2) indicates that the element is or could be executing commands, processes any queued commands, and queues new requests.\n\nDisabled (3) indicates that the element does not execute commands and drops any new requests.\n\nShutting Down (4) indicates that the element is in the process of going to a Disabled state.\n\nNot Applicable (5) indicates the element does not support being enabled or disabled.\n\nEnabled but Offline (6) indicates that the element might be completing commands, but will drop any new requests.\n\nTest (7) indicates that the element is in a test state.\n\nDeferred (8) indicates that the element might be completing commands, but queues any new requests.\n\nQuiesce (9) indicates that the element is enabled but in a restricted mode.  The element\'s behavior is similar to the Enabled state, but it processes only a restricted set of commands.  All other requests are queued.\n\nStarting (10) indicates that the element is in the process of going to an Enabled state.  New requests are queued.\n\n\"In Test\" maps to the Brocade API \"Testing\",\n\"Not Applicable\" maps to the Brocade API \"Not Supported\"."),
     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"},
     MappingStrings{"API.Brocade | Switch | SwitchState"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.OtherEnabledState"}
    ]
    uint16 EnabledState = 5;

     [Override("RequestedState"),
     Description("RequestedState is an integer enumeration indicating the new requested state for the Switch.  The actual state of the element is represented by EnabledState.  This property is provided to get the current requested state of the Switch during the state change.  After the state change is done the EnabledState property will have the new value and RequestedState will be set back to 5.\n\nNote that when EnabledState is set to 5 (\"Not Applicable\"), then this property has no meaning.  By default, the element\'s RequestedState is 5 (\"No Change\").  Refer to the EnabledState\'s property description for explanations of the values in the RequestedState enumeration. \n."),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10..32767", "32768..65535"},
     Values{"Enabled", "Disabled", "Shut Down", "No Change", "Offline", "Test", "Deferred", "Quiesce", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.EnabledState"}
    ]
    uint16 RequestedState = 5;

     [Write(true),
     Description("The switch\'s notion of time-of-day (number of seconds since midnight, January 1, 1970)."),
     MappingStrings{"API.Brocade | Switch | SwitchTime"}
    ]
    datetime SwitchTime;

     [Write(true),
     Description("The time zone, the total offset (hour and minute), reported in minutes.\n\nSupported by Proxy Firmware versions: 2.6.x, 3.1.x,3.2.x,4.1.x, 4.2.x,4.4.x,5.0.x\nSupported by Target Firmware versions: 2.6.x, 3.1.x,3.2.x, 4.1.x, 4.2.x,4.4.x,5.0.x\n"),
     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"},
     Values{"Unknown Timezone", "-12:00Hrs (Enitwetok, Kwajalien)", "-11:00Hrs (Midway Island, Samoa)", "-10:00Hrs (Hawaii)", "-9:30Hrs", "-9:00Hrs (Alaska)", "-8:30Hrs", "-8.00Hrs (Pacific Time (US & Canada))", "-7:00Hrs (Mountain Time (US & Canada), Arizona)", "-6:00Hrs (Central Time (US & Canada), Mexico City)", "-5:00Hrs (Eastern Time (US & Canada), Bogota, Lima, Quito)", "-4:00Hrs (Atlantic Time (Canada), Caracas, La Paz)", "-3:30Hrs (Newfoundland)", "-3:00Hrs (Brazil, Buenos Aires, Georgetown, Greenland)", "-2:00Hrs (Mid-Atlantic, Ascention Is., St Helena)", "-1:00Hrs (Azores, Cape Verde Islands)", "0Hrs (Casablanca, Dublin, Edinburgh, London, Lisbon, Monrovia)", "1:00Hrs (Berlin, Brussels, Copenhagen, Madrid, Paris, Rome)", "2:00Hrs (Kaliningrad, South Africa, Warsaw)", "3:00Hrs (Baghdad, Riyadh, Moscow, Nairobi)", "3:30Hrs (Tehran)", "4:00Hrs (Adu Dhabi, Baku, Muscat, Tbilisi)", "4:30Hrs (Kabul)", "5:00Hrs (Ekaterinburg, Islamabad, Karachi, Tashkent)", "5:30Hrs (Bombay, Calcutta, Madras, New Delhi)", "6:00Hrs (Almaty, Colombo, Dhaka)", "6:30Hrs (Rangoon)", "7:00Hrs (Bangkok, Hanoi, Jakarta)", "8:00Hrs (Beijing, Hong Kong, Perth, Singapore, Taipei)", "9:00Hrs (Osaka, Sapporo, Seoul, Tokyo, Yakutsk)", "9:30Hrs (Adelaide, Darwin)", "10:00Hrs (Melbourne, Canberra, Sydney, Vladivostok)", "10:30Hrs", "11:00Hrs (Magadan, New Caledonia, Solomon Islands)", "11:30Hrs", "12:00Hrs (Auckland, Wellington, Fiji, Marshall Island)"},
     MappingStrings{"API.Brocade | Switch | SwitchTimeZone"}
    ]
    uint16 SwitchTimeZone;

     [Description("The current role of the switch.  As part of the fabric bringup, one switch in the fabric assumes the role of a principal switch; every other switch assumes a subordinate role unless the principal switch is disabled."),
     ValueMap{"0", "1", "2", "3"},
     Values{"Unknown", "Principal", "Subordinate", "Disabled"},
     MappingStrings{"API.Brocade | Switch | SwitchRole"}
    ]
    uint16 SwitchRole;

     [Write(true),
     Maxlen(1022),
     Description("A message (specified by the administrator) that is displayed whenever a user logs in to a switch.  This is the same capability provided by the MOTD (message of the day) daemon in UNIX systems.\n\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x."),
     MappingStrings{"API.Brocade | Switch | SecureBanner"}
    ]
    string Banner;

     [Description("The period of time elapsed since last reboot.  This value represents an absolute time interval that the switch has been up and NOT the time measured between the last reboot and midnight, January 1, 1970 UTC.\n\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x, 4.2.x,4.4.x,5.0.x,7.3.x."),
     MappingStrings{"API.Brocade | Switch | UpTime"}
    ]
    datetime UpTime;

     [Description("The period of time elapsed since the last configuration change.\n\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x."),
     MappingStrings{"API.Brocade | Switch | LastConfigChangeTime"}
    ]
    datetime LastConfigChangeTime;

     [Description("Reason for most recent switch reboot.\n\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x"),
     MappingStrings{"API.Brocade | Switch | BootUpReason"}
    ]
    string RebootReason;

     [Write(true),
     Description("True if beacon is turned on, false if off.\n\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x."),
     MappingStrings{"API.Brocade | Switch | BeaconEnable"}
    ]
    boolean Beacon;

     [Description("Domain IDs are assigned by the principal switch at fabric configuration.  DomainIdConfirmed indicates whether the switch currently has a valid domain ID.\n\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x,7.3.x."),
     MappingStrings{"API.Brocade | Switch | DomainConfirmed"}
    ]
    boolean DomainIdConfirmed;

     [Write(true),
     Description("Each IP address specified should be the IP address of an NTP server.  The Time Server on the switch synchronizes fabric time by sending updates of the principal or primary FCS local switch time periodically to every switch in the fabric.  The Time Server runs on all switches in the fabric, but only the principal switch (when the Security feature not enabled) or the primary FCS switch (when the Security feature is enabled) connect to the NTP server and broadcast Time Service updates.\n\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x."),
     MappingStrings{"API.Brocade | Switch | SNTPAddressList"}
    ]
    string SNTPAddressList[];

     [Write(true),
     Description("Syslog daemon (syslogd) is a process available on most UNIX systems that reads and forwards system messages to the appropriate log files and users, depending on the system configuration.  When one or more IP addresses are configured, the switch forwards all error log entries to the syslogd on all the specified servers.  Up to six servers are supported.\n\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x."),
     MappingStrings{"API.Brocade | Switch | SysLogDIPSet"}
    ]
    string SysLogAddressList[];

     [Description("DNS-assigned domain for the switch.\n\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x."),
     MappingStrings{"API.Brocade | Switch | DNSInfo.DomainName"}
    ]
    string DomainName;

     [Description("Addresses of DNS Servers that can map between a connection endpoint address and the hostname of the switch.\n\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x."),
     MappingStrings{"API.Brocade | Switch | DNSInfo.NameServerAddrSet"}
    ]
    string DNSServerAddressList[];

    [Override("RequestStateChange"),
     Description("Requests that switch state be changed to one of the values from the input list.  When the requested state change takes place, the element\'s EnabledState and RequestedState will be the same.  The use of ConcreteJob (if the operation is performed asynchronously) is not supported and hence should always return NULL."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "32768"},
     Values{"Completed with No Error", "Not Supported", "Unknown/Unspecified Error", "Can NOT complete within Timeout Period", "Failed", "Invalid Parameter", "In Use", "Not_Found", "Already_Exists", "Insufficient_Resources", "Access_Denied"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}
    ]
    uint32 RequestStateChange([IN(true), Required(true), Description("The state requested for the element.  This information will be placed into the instance\'s RequestedState property if the RequestStateChange method\'s return code is 0, 3 (\'Completed with No Error\', \'Timeout\') respectively.  Refer to the description of the EnabledState property for the detailed meanings of the RequestedState Values. WarmBoot and ColdBoot states are deprecated. Only Enabled, Offline and Reboot states are supported. \'WarmBoot\' state is the same as Reboot. Attempting to set \'ColdBoot\' will return \'Not Supported\'. Setting \'Disabled\' state is equivalent to setting \'Offline\' state."), ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}, ValueMap{"2", "3", "6", "10", "32768", "32769"}, Values{"Enabled", "Disabled", "Offline", "Reboot", "ColdBoot", "WarmBoot"}] uint16 RequestedState, [OUT(true), IN(false), Description("Reference to the job (can be null if task completed).")] CIM_ConcreteJob REF Job, [IN(true), 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.\n\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")] datetime TimeoutPeriod);
     [Description("Configure the DNS Information viz. Domain Name and DNS Server AddressList.\nSupported by Proxy Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x.\nSupported by Target Firmware versions: 3.1.x,3.2.x,4.1.x,4.2.x,4.4.x,5.0.x."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},
     Values{"Completed with No Error", "Not Supported", "Unknown/Unspecified Error", "Can NOT complete within Timeout Period", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources"}
    ]
    uint32 ConfigureDNSParameters([IN(true), Required(true), Description("DNS-assigned domain for the switch"), ModelCorrespondence{"DomainName"}] string DomainName, [IN(true), Required(true), Description("Addresses of DNS Servers that can map between a connection endpoint address and the hostname of the switch"), ModelCorrespondence{"DNSServerAddressList"}] string DNSServerAddressList[]);
};

// Brocade_SwitchInFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchInFabric is a generic association used to establish membership relationships between the fabric and its switches."),
     Aggregation(true)
    ]
class Brocade_SwitchInFabric : CIM_Component {
    [Override("GroupComponent"),
     Description("The fabric that has interconnected switches."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Fabric REF GroupComponent;

     [Override("PartComponent"),
     Description("The interconnected switches in this fabric."),
     Key(true)
    ]
    Brocade_Switch REF PartComponent;

};

// CIM_Product

    [Version("2.7.0"),
     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.")
    ]
class CIM_Product : CIM_ManagedElement {
    [Key(true),
     Description("Commonly used Product name."),
     MaxLen(256),
     MappingStrings{"MIF.DMTF|ComponentID|001.2"},
     ModelCorrespondence{"PRS_Product.ProductName"}
    ]
    string Name;

     [Key(true),
     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."),
     MaxLen(64),
     MappingStrings{"MIF.DMTF|ComponentID|001.4"}
    ]
    string IdentifyingNumber;

     [Key(true),
     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."),
     MaxLen(256),
     MappingStrings{"MIF.DMTF|ComponentID|001.1"},
     ModelCorrespondence{"PRS_Product.Vendor"}
    ]
    string Vendor;

     [Key(true),
     Description("Product version information."),
     MaxLen(64),
     MappingStrings{"MIF.DMTF|ComponentID|001.3"},
     ModelCorrespondence{"PRS_Product.Version"}
    ]
    string Version;

     [Description("Product SKU (stock keeping unit) information."),
     MaxLen(64)
    ]
    string SKUNumber;

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

     [Description("If this Product is under warranty, the duration of the warranty in days."),
     Units("Days"),
     MappingStrings{"MIF.DMTF|FRU|002.10"},
     ModelCorrespondence{"CIM_Product.WarrantyStartDate"}
    ]
    uint32 WarrantyDuration;

};

// CIM_ProductPhysicalComponent

    [Association(true),
     Composition(true),
     Version("2.7.0"),
     Description("Indicates that the referenced PhysicalElement is acquired as part of a Product."),
     Aggregation(true)
    ]
class CIM_ProductPhysicalComponent : CIM_Component {
    [Override("GroupComponent"),
     Max(1),
     Description("The Product."),
     Key(true),
     Aggregate(true)
    ]
    CIM_Product REF GroupComponent;

     [Override("PartComponent"),
     Description("The PhysicalElement which is a part of the Product."),
     Key(true)
    ]
    CIM_PhysicalElement REF PartComponent;

};

// CIM_RemoteServiceAccessPoint

    [Version("2.8.0"),
     Description("RemoteServiceAccessPoint describes access and/or addressing information for a remote connection, that is known to a \'local\' network element. This information is scoped/contained by the \'local\' network element, since this is the context in which it is \'remote\'. \n\nWhy the remote access point is relevant and information on its use are described by subclassing RemoteService AccessPoint, or by associating to it.")
    ]
class CIM_RemoteServiceAccessPoint : CIM_ServiceAccessPoint {
    [Description("Access and/or addressing information for a remote connection. This can be a host name, network address or similar information."),
     ModelCorrespondence{"CIM_RemoteServiceAccessPoint.InfoFormat"}
    ]
    string AccessInfo;

     [Description("An enumerated integer describing the format and interpretation of the AccessInfo property."),
     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"},
     ModelCorrespondence{"CIM_RemoteServiceAccessPoint.OtherInfoFormatDescription"}
    ]
    uint16 InfoFormat;

     [Description("Describes the format when the property InfoFormat is set to 1 (\"Other\")."),
     ModelCorrespondence{"CIM_RemoteServiceAccessPoint.InfoFormat"}
    ]
    string OtherInfoFormatDescription;

};

// Brocade_SoftwareIdentityAccessPoint

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SoftwareIdentityAccessPoint represents the location of the bits for a software update as a URL.")
    ]
class Brocade_SoftwareIdentityAccessPoint : CIM_RemoteServiceAccessPoint {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s CreationClassName.  This is Brocade_ManagementServer."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_ManagementServer";

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

     [Override("CreationClassName"),
     MaxLen(256),
     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.It is set to Brocade_SoftwareIdentityAccessPoint"),
     Key(true)
    ]
    string CreationClassName = "Brocade_SoftwareIdentityAccessPoint";

     [Override("Name"),
     MaxLen(256),
     Description("The Name property uniquely identifies the ServiceAccessPoint.It will be a combination ofSoftware Identity Collection and Software Identity"),
     Key(true)
    ]
    string Name;

     [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")
    ]
    string ElementName = "SoftwareIdentityAccessPoint";

     [Override("AccessInfo"),
     Description("A URL for the firmware to be downloaded. The URL format must be <scheme>://<username:password@hostname>/<Path> where <scheme> is the access mechanism (e.g. ftp), username and password needed to access a host and path to firmware is either a fully qualified or a relative path name to the resource."),
     ModelCorrespondence{"CIM_RemoteServiceAccessPoint.InfoFormat"}
    ]
    string AccessInfo;

     [Override("InfoFormat"),
     Description("An enumerated integer describing the format and interpretation of the AccessInfo property. Only URL is supported."),
     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"},
     ModelCorrespondence{"CIM_RemoteServiceAccessPoint.OtherInfoFormatDescription"}
    ]
    uint16 InfoFormat = 200;

};

// Brocade_SoftwareIdentity

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This class represents the software element that is executed by a system, which could be a device or a switch. No instances of this class that are associated with a HBA are returned when the proxy switch firmware version is 2.6.x.")
    ]
class Brocade_SoftwareIdentity : CIM_SoftwareIdentity {
    [Override("InstanceID"),
     MaxLen(256),
     Description("The opaque identifier used to identify this software element.  The recommended approach is to use <OrgID>:<LocalID>."),
     Key(true)
    ]
    string InstanceID;

     [Override("VersionString"),
     MaxLen(64),
     Description("Version of the software element."),
     MappingStrings{"FC-GS-4 | FDMI | Firmware Version", "API.Brocade | CP | CPFirmwareVersion", "API.Brocade | Switch | FirmwareVersion"}
    ]
    string VersionString;

     [Override("Classifications"),
     Description("An array of enumerated integers that classify this software.  For example, the software MIGHT be instrumentation (value=5) or firmware and diagnostic software (10 and 7, respectively).  The use of value 6, Firmware/BIOS, is being deprecated.  Instead, use value 10 (Firmware) or 11 (BIOS/FCode)."),
     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"},
     ModelCorrespondence{"CIM_SoftwareIdentity.ClassificationDescriptions"},
     ArrayType("Indexed")
    ]
    uint16 Classifications[];

     [Override("ClassificationDescriptions"),
     Description("An array of free-form strings providing more detailed explanations for the entries in the Classifications array. Each entry in this array is related to the corresponding entry (the entry located at the same index) in the Classifications array."),
     ModelCorrespondence{"CIM_SoftwareIdentity.Classifications"},
     ArrayType("Indexed")
    ]
    string ClassificationDescriptions[];

     [Override("TargetOperatingSystems"),
     Description("Specifies the target operating systems of the software. Due to the variability in operating systems, this property is defined as a string array."),
     ModelCorrespondence{"CIM_OperatingSystem.OSType"},
     MappingStrings{"FC-GS-4 | FDMI | Operating System Name and Version"}
    ]
    string TargetOperatingSystems[];

     [Override("Manufacturer"),
     Description("Manufacturer of this software.")
    ]
    string Manufacturer;

};

// Brocade_SAPAvailableForSoftwareIdentity

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SAPAvailableForSoftwareIdentity conveys the semantics of a Service Access Point being available for a Brocade_SoftwareIdentity. A Brocade_SoftwareIdentity provides management access through a URL. This association allows the URL to be advertised for the Brocade_SoftwareIdentity.")
    ]
class Brocade_SAPAvailableForSoftwareIdentity : CIM_SAPAvailableForElement {
    [Override("AvailableSAP"),
     Description("The Service Access Point that is available."),
     Key(true)
    ]
    Brocade_SoftwareIdentityAccessPoint REF AvailableSAP;

     [Override("ManagedElement"),
     Description("The ManagedElement for which the SAP is available."),
     Key(true)
    ]
    Brocade_SoftwareIdentity REF ManagedElement;

};

// Brocade_WebGUIRemoteAccessPoint

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_WebGUIRemoteAccessPoint represents the URLused to launch WEBGUI application .")
    ]
class Brocade_WebGUIRemoteAccessPoint : CIM_RemoteServiceAccessPoint {
    [Override("CreationClassName"),
     MaxLen(256),
     Description("CreationClassName indicates the name of the class or the subclass used in the creation of an instance."),
     Key(true)
    ]
    string CreationClassName = "Brocade_WebGUIRemoteAccessPoint";

     [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("SystemCreationClassName indicates scoping systems creation class name The scoping system is Brocade_Switch instance."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_Switch";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s Name propertyThe scoping system is Brocade_Switch that the remote access point is part ofand this property represents the SwitchWWN."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("Name"),
     MaxLen(256),
     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. This property will have the IP address of the switch"),
     Key(true)
    ]
    string Name;

     [Override("ElementName"),
     write(true),
     Description("A user friendly name of the object The default value would be Management Access.")
    ]
    string ElementName = "Management Access";

     [Override("AccessInfo"),
     Description("This is the management address.For interoperabilitythis would be the URL which will be used for launching webtools."),
     ModelCorrespondence{"CIM_RemoteServiceAccessPoint.InfoFormat"}
    ]
    string AccessInfo;

     [Override("InfoFormat"),
     Description("This property represents the format of the Management AddressFor interoperability this must be an URL. The default value would be URL."),
     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"},
     ModelCorrespondence{"CIM_RemoteServiceAccessPoint.OtherInfoFormatDescription"}
    ]
    uint16 InfoFormat = 200;

};

// Brocade_SAPAvailableForSwitch

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SAPAvailableForSwitch associates Brocade_Switch with Brocade_WebGUIRemoteAccessPoint that identifies theelement serviced by Brocade_WebGUIRemoteAccessPoint.")
    ]
class Brocade_SAPAvailableForSwitch : CIM_SAPAvailableForElement {
    [Override("AvailableSAP"),
     Description("Identifies WebGUIRemoteAccessPoint service for a Switch."),
     Key(true)
    ]
    Brocade_WebGUIRemoteAccessPoint REF AvailableSAP;

     [Override("ManagedElement"),
     Description("Identifies switch serviced by WebGUIRemoteAccessPoint."),
     Key(true)
    ]
    Brocade_Switch REF ManagedElement;

};

// CIM_FCSwitchSettings

    [Experimental(true),
     Version("2.8.1000"),
     Description("A ComputerSystem that supports FC Switch capabilities may be configured via the FCSwitchConfig class.")
    ]
class CIM_FCSwitchSettings : CIM_SettingData {
    [Write(true),
     Description("The preferred domainID for the switch. If DomainIDLocked is TRUE, then this will be the required DomainID for the switch."),
     MinValue(1),
     MaxValue(239),
     MappingStrings{"FC-SWAPI.INCITS-T11|UcUnitConfigGetDomainID", "GC-GS.INCITS-T11|InterconnectElement|DomainIdentifier"},
     ModelCorrespondence{"CIM_FCSwitchSettings.DomainIDLocked"}
    ]
    uint8 PreferredDomainID;

     [Write(true),
     Description("Boolean indicating if the switch may negotiate a new domainID if the configured domainID is unavailable. If this value is TRUE, a domainID conflict will cause the fabric merge process to fail."),
     MappingStrings{"FC-SWAPI.INCITS-T11|UcUnitConfigGetDomainIDLocked"},
     ModelCorrespondence{"CIM_FCSwitchSettings.PreferredDomainID"}
    ]
    boolean DomainIDLocked;

     [Write(true),
     Description("This value affects the selection of a principal switch within the fabric. It indirectly corresponds to the FC-FS switch_priority value used during principal switch selection. \n- Principal: Attempt to become the principal switch in the fabric. \n- Subordinate: Attempt NOT to become the principal switch in the fabric. \n- Any: No preference."),
     ValueMap{"2", "3", "4"},
     Values{"Principal", "Subordinate", "Any"},
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_PRINCIPAL_PRIORITY_T"}
    ]
    uint16 PrincipalPriority = 3;

};

// Brocade_FCSwitchSettings

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("A ComputerSystem that supports FC Switch capabilities may be configured via the FCSwitchConfig class. In case of Non-BRCD or Phantom or Virtual Switches no instance of Settings will be created")
    ]
class Brocade_FCSwitchSettings : CIM_FCSwitchSettings {
    [Override("InstanceID"),
     Description("This will be the Switch WWN. "),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     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. (Note: Name does not have to be unique within a namespace.)"),
     Required(true)
    ]
    string ElementName = "FC Switch Settings";

     [Override("PreferredDomainID"),
     Write(true),
     Description("The preferred domainID for the switch. If DomainIDLocked is TRUE, then this will be the required DomainID for the switch."),
     MinValue(1),
     MaxValue(239),
     MappingStrings{"FC-SWAPI.INCITS-T11|UcUnitConfigGetDomainID", "GC-GS.INCITS-T11|InterconnectElement|DomainIdentifier"},
     ModelCorrespondence{"CIM_FCSwitchSettings.DomainIDLocked"}
    ]
    uint8 PreferredDomainID;

     [Override("DomainIDLocked"),
     Write(true),
     Description("Boolean indicating if the switch may negotiate a new domainID if the configured domainID is unavailable. If this value is TRUE, a domainID conflict will cause the fabric merge process to fail."),
     MappingStrings{"FC-SWAPI.INCITS-T11|UcUnitConfigGetDomainIDLocked"},
     ModelCorrespondence{"CIM_FCSwitchSettings.PreferredDomainID"}
    ]
    boolean DomainIDLocked;

     [Override("PrincipalPriority"),
     Write(true),
     Description("This value affects the selection of a principal switch within the fabric. It indirectly corresponds to the FC-FS switch_priority value used during principal switch selection. \n- Principal: Attempt to become the principal switch in the fabric. \n- Subordinate: Attempt NOT to become the principal switch in the fabric. \n- Any: No preference."),
     ValueMap{"2", "3", "4"},
     Values{"Principal", "Subordinate", "Any"},
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_PRINCIPAL_PRIORITY_T"}
    ]
    uint16 PrincipalPriority;

};

// Brocade_FCSwitchSettingsForSwitch

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_FCSwitchSettingsForSwitch associates the Brocade_FCSwitchSettingsinstance with the corresponding Brocade_Switch instance")
    ]
class Brocade_FCSwitchSettingsForSwitch : CIM_ElementSettingData {
    [Override("ManagedElement"),
     Description("Reference to Brocade_Switch instance."),
     Key(true)
    ]
    Brocade_Switch REF ManagedElement;

     [Override("SettingData"),
     Description("Reference to Brocade_FCSwitchSettings."),
     Key(true)
    ]
    Brocade_FCSwitchSettings REF SettingData;

};

// Brocade_PCSNetworkPort

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PCSNetworkPort represents the physical counterpart on the physicalcomputersystem of a switch port on a switch.")
    ]
class Brocade_PCSNetworkPort : CIM_NetworkPort {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is the Brocade_PhysicalComputerSystem of which this physicalport is a part."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_PhysicalComputerSystem";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s Name property. The scoping system is the Brocade_PhysicalComputerSystem of which this physicalport is a part. This property represents the name of the physicalcomputersystem."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     Description("CreationClassName indicates the name of the physicalport class that, when used with the other key properties of this class, uniquely identifies an instance."),
     Key(true)
    ]
    string CreationClassName = "Brocade_PCSNetworkPort";

     [Override("DeviceID"),
     MaxLen(64),
     Description("Identifying information to uniquely name the physicalport. This is opaque and will be the portwwn of the switch port equivalent."),
     Key(true)
    ]
    string DeviceID;

     [Override("PermanentAddress"),
     MaxLen(64),
     Description("The port ID of the port.  This is the WWN of the port."),
     MappingStrings{"API.Brocade | Port | WWN"}
    ]
    string PermanentAddress;

     [Override("LinkTechnology"),
     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."),
     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"},
     ModelCorrespondence{"CIM_NetworkPort.OtherLinkTechnology"}
    ]
    uint16 LinkTechnology = 4;

};

// CIM_LogicalPortSettings

    [Experimental(true),
     Version("2.8.1000"),
     Description("A LogicalPort may be configured via the LogicalPortSettings class. The configuration changes are expected to be stored to non-volatile memory.")
    ]
class CIM_LogicalPortSettings : CIM_SettingData {
    [Write(true),
     Description("The requested bandwidth of the Port in Bits per Second. The actual bandwidth is reported in LogicalPort.Speed."),
     Units("Bits per Second"),
     MappingStrings{"FC-SWAPI.INCITS-T11|UcPortConfigSetLinkSpeed"},
     ModelCorrespondence{"CIM_LogicalPort.Speed"}
    ]
    uint64 RequestedSpeed;

     [Write(true),
     Description("A boolean indicating whether the LogicalPort should automatically negotiate an optimal bandwidth (TRUE), or attempt to communicate only at the RequestedSpeed (FALSE). The actual bandwidth is reported in LogicalPort.Speed. Changing this value to (FALSE) may cause the OperationalStatus to change to [stopped] if the RequestedSpeed is not compatible with the attached device\n  Check LogicalPortCapabilities.AutoSenseSpeedConfigurable to see if this value may be changed."),
     MappingStrings{"FC-SWAPI.INCITS-T11|UcPortConfigSetLinkSpeed"},
     ModelCorrespondence{"CIM_LogicalPort.Speed", "CIM_LogicalPortCapabilities.AutoSenseSpeedConfigurable"}
    ]
    boolean AutoSenseSpeed;

};

// CIM_NetworkPortSettings

    [Experimental(true),
     Version("2.10.1000"),
     Description("A NetworkPort may be configured via the NetworkPortSettings class.  The requested configuration changes are expected to be stored to non-volatile memory.  NetworkPortCapailities defines which settings are configurable.")
    ]
class CIM_NetworkPortSettings : CIM_LogicalPortSettings {
    [Write(true),
     Description("An array of nework identifiers that specifiy which Networks the NetworkPort may belong to. The ability to set this property is defined in NetworkPortCapabilities.\n\nFor example, in Fibre Channel the NetworkIDs would be populated with Virtual Fabric IDs.")
    ]
    string NetworkIDs[];

     [Description("The requested LinkTechnology of the NetworkPort.  The list of supported LinkTechnologies of the NetworkPort is defined in the NetworkPortCapabilities."),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11"},
     Values{"Ethernet", "IB", "FC", "FDDI", "ATM", "Token Ring", "Frame Relay", "Infrared", "BlueTooth", "Wireless LAN"},
     ModelCorrespondence{"CIM_NetworkPortCapabilities.NetworkIDsConfigurable", "CIM_NetworkPort.LinkTechnology"}
    ]
    uint16 LinkTechnology;

};

// Brocade_PCSNetworkPortSettings

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("A port on the silkworm AP7420 switch can be configured as an EXport via this Settings.  To set the port to an EXPort , pass a valid Virtual Fabric ID (1..128). To set the port to an EPort , pass Virtual Fabric ID as (0) . To set the port to an EXPort  and to allocate a dynamic Fabric ID, pass an empty list ")
    ]
class Brocade_PCSNetworkPortSettings : CIM_NetworkPortSettings {
    [Override("InstanceID"),
     Description("This is an opaque key and will be a combination of LicenseWWN, CPNumber, and Port WWN in the format LicenseWWN;CPNumber;Port WWN"),
     Key(true)
    ]
    string InstanceID;

     [Write(true),
     Override("NetworkIDs"),
     Description("An array of nework identifiers that specify which Networks the NetworkPort may belong to. The ability to set this property is defined in NetworkPortCapabilities.\n\nFor example, in Fibre Channel the NetworkIDs would be populated with Virtual Fabric IDs.")
    ]
    string NetworkIDs[];

     [Description("The NetworkIDFormat property identifies how the PCSNetworkPort settings NetworkIDs is interpreted. "),
     ValueMap{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN", "NAA"}
    ]
    string NetworkIDFormat = "Other";

     [Override("LinkTechnology"),
     Description("The requested LinkTechnology of the NetworkPort.  The list of supported LinkTechnologies of the NetworkPort is defined in the NetworkPortCapabilities."),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11"},
     Values{"Ethernet", "IB", "FC", "FDDI", "ATM", "Token Ring", "Frame Relay", "Infrared", "BlueTooth", "Wireless LAN"},
     ModelCorrespondence{"CIM_NetworkPortCapabilities.NetworkIDsConfigurable", "CIM_NetworkPort.LinkTechnology"}
    ]
    uint16 LinkTechnology;

};

// Brocade_PortSettingsForPCSNetworkPort

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PortSettingsForPCSNetworkPort associates the Brocade_PCSNetworkPortSettings instance with the corresponding Brocade_PCSNetworkPort instance.")
    ]
class Brocade_PortSettingsForPCSNetworkPort : CIM_ElementSettingData {
    [Override("ManagedElement"),
     Description("Reference to Brocade_PCSNetworkPort instance."),
     Key(true)
    ]
    Brocade_PCSNetworkPort REF ManagedElement;

     [Override("SettingData"),
     Description("Reference to Brocade_PCSNetworkPortSettings."),
     Key(true)
    ]
    Brocade_PCSNetworkPortSettings REF SettingData;

};

// CIM_FCPortSettings

    [Experimental(true),
     Version("2.8.1000"),
     Description("A port that supports FibreChannel capabilities may be configured via the FCPortConfig class. The configuration changes are expected to be stored to non-volatile memory.")
    ]
class CIM_FCPortSettings : CIM_LogicalPortSettings {
    [Write(true),
     Description("RequestedType acts as a filter on the enabled port types that a port may negotiate after a connection is established.\nChanging this value may cause a port reset if the enabled port type doesn\'t fall within the boundaries of the new requested port type filter.  It may also cause the port to stay disabled if the new port type filter is incompatible with the attached device.\nAcceptable values for this property may be found in the FCPortCapabilities.RequestedTypesSupported array.\n\"G\" = Port may only act as an expansion port (E), or a fabric port (F). \"GL\" = Port may only act an an expansion port (E), a fabric port (F), or a fabric port supporting FC arbitrated loop (FL). \"E\" = Port may only act as an expansion port (E) connecting fabric elements. \"F\" = Port may only act as a fabric port (F). \"FX\" = Port may only act as a fabric port (F), or a fabric port supporting FC arbitrated loop (FL). \"B\" = Port may only act as a bridge port (B). \"NX\" = Port may only act as a node port (N) or a node port supporting FC arbitrated loop (NL). \"N\" = Port may only act as a Node port. \"NL\" = Port may only act as a Node Port supporting FC arbitrated loop."),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "..", "16000..65535"},
     Values{"G", "GL", "E", "F", "FX", "B", "NX", "N", "NL", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_FCPortCapabilities.RequestedTypesSupported", "CIM_FCPort.PortType"},
     MappingStrings{"FC-SWAPI.INCITS-T11|UcPortConfigSetType;"}
    ]
    uint16 RequestedType;

};

// Brocade_SwitchFCPortSettings

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("A port that supports FibreChannel capabilities may be configured via the FCPortConfig class. The configuration changes are expected to be stored to non-volatile memory. In case of Non-BRCD or phantom or virtual swithces or ports no instance of this class will be created")
    ]
class Brocade_SwitchFCPortSettings : CIM_FCPortSettings {
    [Override("InstanceID"),
     Description("This will be a combination of Switch WWN and Port WWN. The format would be Switch WWN;Port WWN"),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     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. (Note: Name does not have to be unique within a namespace.)"),
     Required(true)
    ]
    string ElementName = "FC Port Settings";

     [Override("RequestedSpeed"),
     Write(true),
     Description("The requested bandwidth of the Port in Bits per Second. The actual bandwidth is reported in LogicalPort.Speed."),
     Units("Bits per Second"),
     MappingStrings{"FC-SWAPI.INCITS-T11|UcPortConfigSetLinkSpeed"},
     ModelCorrespondence{"CIM_LogicalPort.Speed"}
    ]
    uint64 RequestedSpeed;

     [Override("AutoSenseSpeed"),
     Write(true),
     Description("A boolean indicating whether the LogicalPort should automatically negotiate an optimal bandwidth (TRUE), or attempt to communicate only at the RequestedSpeed (FALSE). The actual bandwidth is reported in LogicalPort.Speed. Changing this value to (FALSE) may cause the OperationalStatus to change to [stopped] if the RequestedSpeed is not compatible with the attached device\n  Check LogicalPortCapabilities.AutoSenseSpeedConfigurable to see if this value may be changed. Setting of AutoSenseSpeed to \'false\' is not supported on the switch. It can only be done by setting this field to \'false\' along with setting a different speed through RequestedSpeed property at the same time."),
     MappingStrings{"FC-SWAPI.INCITS-T11|UcPortConfigSetLinkSpeed"},
     ModelCorrespondence{"CIM_LogicalPort.Speed", "CIM_LogicalPortCapabilities.AutoSenseSpeedConfigurable"}
    ]
    boolean AutoSenseSpeed;

     [Override("RequestedType"),
     Write(true),
     Description("RequestedType acts as a filter on the enabled port types that a port may negotiate after a connection is established.\nChanging this value may cause a port reset if the enabled port type doesn\'t fall within the boundaries of the new requested port type filter.  It may also cause the port to stay disabled if the new port type filter is incompatible with the attached device.\nAcceptable values for this property may be found in the FCPortCapabilities.RequestedTypesSupported array.\n\"G\" = Port may only act as an expansion port (E), or a fabric port (F). \"GL\" = Port may only act an an expansion port (E), a fabric port (F), or a fabric port supporting FC arbitrated loop (FL). \"E\" = Port may only act as an expansion port (E) connecting fabric elements. \"F\" = Port may only act as a fabric port (F). \"FX\" = Port may only act as a fabric port (F), or a fabric port supporting FC arbitrated loop (FL). \"B\" = Port may only act as a bridge port (B). \"NX\" = Port may only act as a node port (N) or a node port supporting FC arbitrated loop (NL). \"N\" = Port may only act as a Node port. \"NL\" = Port may only act as a Node Port supporting FC arbitrated loop."),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "..", "16000..65535"},
     Values{"G", "GL", "E", "F", "FX", "B", "NX", "N", "NL", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_FCPortCapabilities.RequestedTypesSupported", "CIM_FCPort.PortType"},
     MappingStrings{"FC-SWAPI.INCITS-T11|UcPortConfigSetType;"}
    ]
    uint16 RequestedType;

};

// Brocade_SwitchFCPortSettingsForFCPort

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPortSettingsForFCPort associates the Brocade_SwitchFCPortSettingsinstance with the corresponding Brocade_SwitchFCPort instance")
    ]
class Brocade_SwitchFCPortSettingsForFCPort : CIM_ElementSettingData {
    [Override("ManagedElement"),
     Description("Reference to Brocade_SwitchFCPort instance."),
     Key(true)
    ]
    Brocade_SwitchFCPort REF ManagedElement;

     [Override("SettingData"),
     Description("Reference to Brocade_SwitchFCPortSettings."),
     Key(true)
    ]
    Brocade_SwitchFCPortSettings REF SettingData;

};

// CIM_ConnectivityCollection

    [Version("2.7.0"),
     Description("A ConnectivityCollection groups together a set of ProtocolEndpoints of the same \'type\' (i.e., class) which are able to communicate with each other. It may also group related Systems, users or other ManagedElements. A ConnectivityCollection represents the ability to send and/or receive data over a set of ProtocolEndpoints. The collection is defined in the context of an AdminDomain or scoping ComputerSystem. This is mandated by the Hosted Collection association on the SystemSpecificCollection superclass. Note that the entities aggregated into the Collection are specified using the association, MemberOfCollection.")
    ]
class CIM_ConnectivityCollection : CIM_SystemSpecificCollection {
    [Description("An enumeration describing the current or potential connectivity between endpoints in this collection. Connectivity may be provided or not, or may be in a degraded/partitioned state if one or more endpoints or links have failed. The latter would prevent full connectivity between all elements in the Collection, but would permit connectivity between subsets."),
     ValueMap{"0", "2", "3", "4"},
     Values{"Unknown", "Connectivity/Up", "No Connectivity/Down", "Partitioned"}
    ]
    uint16 ConnectivityStatus;

};

// CIM_Zone

    [Version("2.7.0"),
     Description("A zone is a group of Ports, Endpoints, Nodes, Zones, and/or NamedAddressCollections that are managed collectively by the same domain. The managing domain is indicated by the HostedCollection association. For Fibre Channel, a zone indicates a set of members that are participating together in the fabric.")
    ]
class CIM_Zone : CIM_ConnectivityCollection {
    [Required(true),
     Override("ElementName"),
     Write(true),
     Description("A user-friendly name for the Zone that is unique within the AdminDomain.")
    ]
    string ElementName;

     [Required(true),
     Description("Indicates that this Zone is currently active (i.e. under enforcement of a fabric). This property can be used to distinguish between a Zone that is currently active and a snapshot of a Zone (with the same InstanceName) that is for \"offline\" editing.")
    ]
    boolean Active;

     [Required(true),
     Description("The type of zoning to be enforced."),
     ValueMap{"0", "1", "2", "3", "..", "32768..65535"},
     Values{"Unknown", "Other", "Default", "Protocol", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_Zone.OtherZoneTypeDescription"}
    ]
    uint16 ZoneType;

     [Description("A string describing the ZoneType when the ZoneType value is 1 \"Other\"."),
     ModelCorrespondence{"CIM_Zone.ZoneType"}
    ]
    string OtherZoneTypeDescription;

     [Description("Specific clarification when necessary when the ProtocolType has an enumeration that requires it. Specifically, if ProtocolType is \"Protocol\", then SubType the Fibre Channel FC4 type."),
     ValueMap{"0", "1", "2", "3", "4", "..", "32768..65535"},
     Values{"Unknown", "Other", "SCSI", "VI", "IP", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_Zone.OtherZoneSubTypeDescription"}
    ]
    uint16 ZoneSubType;

     [Description("A string describing the ZoneSubType when the ZoneSubType value is 1 \"Other\"."),
     ModelCorrespondence{"CIM_Zone.ZoneSubType"}
    ]
    string OtherZoneSubTypeDescription;

};

// Brocade_Zone

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Zone includes Brocade-specific extensions to CIM_Zone, which include some Brocade-proprietary zoning types.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_Zone : CIM_Zone {
    [Override("InstanceID"),
     Description("InstanceID opaquely identifies a unique instance of Brocade_Zone that is scoped (contained) by a Brocade zone set. The instance ID must be unique within a namespace."),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     Description("A user-friendly name for the zone,Two Zones can have samename of which one may be active and other one will beinactive. Changing of this property is not supported."),
     Required(true),
     Write(true)
    ]
    string ElementName;

     [Override("Active"),
     Description("Indicates that this zone is currently active (that is, under enforcement of a fabric).  This property can be used to distinguish between a zone that is currently active and a snapshot of a zone (with the same InstanceName) that is for \"offline\" editing."),
     Required(true)
    ]
    boolean Active;

     [Override("ZoneType"),
     Description("The type of zone to be enforced, including Brocade-proprietary zone types.\n\n\"Default\" (or standard) port zoning allows traffic of any protocol.\n\n\"Protocol\" zoning allows traffic only of the specified FC4 protocol type (the FC4 protocol type is specified by ZoneSubType).\n\n\"QuickLoop\" zoning defines switches that are bound to each other as a QuickLoop.\n\n\"FabricAssist\" zoning defines devices to be build into an FA zone phantom ALPA table (optionally including fixed member-ALPA bindings).  Members may not include ZoneAliases.\n\n\"Other\" indicates a type that is not specified in the list of types."),
     Values{"Unknown", "Other", "Default", "Protocol", "DMTF_Reserved", "QuickLoop", "FabricAssist", "Vendor_Reserved"},
     ValueMap{"0", "1", "2", "3", "..", "0x8000", "0x8001", ".."},
     Required(true),
     ModelCorrespondence{"CIM_Zone.OtherZoneTypeDescription"}
    ]
    uint16 ZoneType;

     [Override("OtherZoneTypeDescription"),
     Description("A string describing the zone type when the value of the ZoneType property is 1 (\"Other\")."),
     ModelCorrespondence{"Brocade_Zone.ZoneType"}
    ]
    string OtherZoneTypeDescription;

     [Override("ZoneSubType"),
     Description("Specifies protocol type if the zone type requires more specificity.  If ZoneType is \"Protocol\", then, in the case of Fibre Channel, ZoneSubType specifies the FC4 type.\n\n\"SCSI\" is SCSI over Fibre Channel, which is the most commonly used in the case of Fibre Channel.\n\n\"VI\" (Virtual Interface) is a Cluster messaging protocol.\n\n\"IP\" indicates either TCP/IP or UDP/IP."),
     ValueMap{"0", "1", "2", "3", "4"},
     Values{"Unknown", "Other", "SCSI", "VI", "IP"},
     ModelCorrespondence{"Brocade_Zone.OtherZoneTypeDescription"}
    ]
    uint16 ZoneSubType;

     [Override("OtherZoneSubTypeDescription"),
     Description("A string describing the zone subtype when the value of the ZoneSubType property is 1 (\"Other\")."),
     ModelCorrespondence{"Brocade_Zone.ZoneSubType"}
    ]
    string OtherZoneSubTypeDescription;

     [Description("The access mode allowed for the zone. If ReadOnly, the zone configuration cannot be changed.")
    ]
    boolean ReadOnly;

};

// CIM_ConnectivityMembershipSettingData

    [Version("2.8.0"),
     Description("ConnectivityMembershipSettingData provides the identification criteria for possible members of a ConnectivityCollection.")
    ]
class CIM_ConnectivityMembershipSettingData : CIM_SettingData {
    [Required(true),
     Description("ConnectivityMemberType specifies the type of identification used in the ConnectivityMemberID field."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x8000.."},
     Values{"Unknown", "Other", "Permanent Address", "Network Address", "Switch Port ID", "Logical Port Group", "Connectivity Collection", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_ConnectivityMembershipSettingData.ConnectivityMemberID", "CIM_ConnectivityMembershipSettingData.OtherConnectivityMemberType"}
    ]
    uint16 ConnectivityMemberType;

     [Description("This property specifies the type of identification used in the ConnectivityMemberID field, when ConnectivityMemberType is 1, \"Other\"."),
     ModelCorrespondence{"CIM_ConnectivityMembershipSettingData.ConnectivityMemberType"}
    ]
    string OtherConnectivityMemberType;

     [Required(true),
     Description("The identification of the member, based on the type specified by ConnectivityMemberType."),
     ModelCorrespondence{"CIM_ConnectivityMembershipSettingData.ConnectivityMemberType"}
    ]
    string ConnectivityMemberID;

};

// CIM_ZoneMembershipSettingData

    [Version("2.8.0"),
     Description("ZoneMembershipSettingData provides the identification criteria for possible Zone and ZoneAlias members.")
    ]
class CIM_ZoneMembershipSettingData : CIM_ConnectivityMembershipSettingData {
    [Override("ConnectivityMemberType"),
     Description("ConnectivityMemberType specifies the type of identification used in the ConnectivityMemberID field. For Fibre Channel, several of the enumerated values require additional explanation: \n* A ConnectivityMemberType equal to 2 (Permanent Address) indicates that an NxPort WWN value should be specified in the related ConnectivityMemberID property \n* A ConnectivityMemberType of 3 (Network Address) indicates that an NxPort Address ID value should be specified in the related ConnectivityMemberID property \n* A ConnectivityMemberType of 4 (Switch Port ID) indicates that a Domain/Port Number value should be specified in the related ConnectivityMemberID property \n* A ConnectivityMemberType of 5 (Logical Port Group) indicates that a Node WWN value should be specified in the related ConnectivityMemberID property."),
     Required(true),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x8000.."},
     Values{"Unknown", "Other", "Permanent Address", "Network Address", "Switch Port ID", "Logical Port Group", "Connectivity Collection", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_ConnectivityMembershipSettingData.ConnectivityMemberID", "CIM_ConnectivityMembershipSettingData.OtherConnectivityMemberType"}
    ]
    uint16 ConnectivityMemberType;

};

// Brocade_ZoneMembershipSettingData

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneMembershipSettingData provides the identification criteria for possible zone and zone alias members.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_ZoneMembershipSettingData : CIM_ZoneMembershipSettingData {
    [Override("InstanceID"),
     Description("InstanceID opaquely identifies a unique instance of Brocade_ZoneMembershipSettingData.  The instance ID must be unique within a namespace."),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     Description("The user-friendly name for this instance of Brocade_ZoneMembershipSettingData.Two ZoneMembershipSettingDatacan have same name of which one may be active and other one will be inactive.This name can be used as an index property for a search of query.  Changing of this property is not supported."),
     Required(true)
    ]
    string ElementName;

     [Override("ConnectivityMemberType"),
     Description("ConnectivityMemberType specifies the type of identification used in the ConnectivityMemberID field.  For Fibre Channel, several of the enumerated values require additional explanation:\n\n* Permanent Address (2) indicates that an NxPort WWN value should be specified in the related ConnectivityMemberID property.\n\n* Network Address (3) indicates that an NxPort Address ID value should be specified in the related ConnectivityMemberID property.\n\n* Switch Port ID (4) indicates that a Domain/Port Number value should be specified in the related ConnectivityMemberID property.\n\n* Logical Port Group (5) indicates that a Node WWN value should be specified in the related ConnectivityMemberID property.\n\n* LUN (0x8000) indicates that a LUN ID should be specified in the related ConnectivityMemberID property.\n\n* ALPA (0x8001) indicates that an ALPA should be specified in the related ConnectivityMemberID property.\n\n* FabricAssistHost (0x8002) indicates that a FabricAssistHost address should be specified in the related ConnectivityMemberID property."),
     Required(true),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x8000.."},
     Values{"Unknown", "Other", "Permanent Address", "Network Address", "Switch Port ID", "Logical Port Group", "Connectivity Collection", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_ConnectivityMembershipSettingData.ConnectivityMemberID", "CIM_ConnectivityMembershipSettingData.OtherConnectivityMemberType"}
    ]
    uint16 ConnectivityMemberType;

     [Override("ConnectivityMemberID"),
     Description("The identification of the member based on the type specified by ConnectivityMemberType.  For example, if type is Switch Port ID (4), a domain,port format should be used for ConnectivityMemberID.  Changing of this property is not supported."),
     Required(true),
     ModelCorrespondence{"CIM_ConnectivityMembershipSettingData.ConnectivityMemberType"}
    ]
    string ConnectivityMemberID;

};

// Brocade_ZoneMembershipSettingDataInZone

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneMembershipSettingDataInZone associates a zone member with the zone with which it is associated.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_ZoneMembershipSettingDataInZone : CIM_ElementSettingData {
    [Override("ManagedElement"),
     Min(1),
     Max(1),
     Description("The zone that has zone member setttings."),
     Key(true)
    ]
    Brocade_Zone REF ManagedElement;

     [Override("SettingData"),
     Description("The zone member setting that is part of a zone."),
     MappingStrings{"API.Brocade | Fabric | ZoningCapabilitiesOID"},
     Key(true)
    ]
    Brocade_ZoneMembershipSettingData REF SettingData;

};

// CIM_NamedAddressCollection

    [Version("2.7.0"),
     Description("A NamedAddressCollection groups ProtocolEndpoints/addresses and other network identifiers for the purposes of assigning a single name (i.e., an alias). It is a subclass of SystemSpecificCollection to force the definition of the \'named collection\' in the context of a System (for example, either a ComputerSystem or an AdminDomain hosting a naming alias).")
    ]
class CIM_NamedAddressCollection : CIM_SystemSpecificCollection {
    [Required(true),
     Write(true),
     Description("A name (alias) for the NamedAddressCollection which is unique in the context of the hosting System.")
    ]
    string CollectionAlias;

};

// Brocade_ZoneAlias

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneAlias is a user-friendly name for a collection of zone members.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_ZoneAlias : CIM_NamedAddressCollection {
    [Override("InstanceID"),
     Description("InstanceID opaquely identifies a unique instance of Brocade_ZoneAlias that is scoped (contained) by a Brocade zone.  The instance ID must be unique within a namespace."),
     Key(true)
    ]
    string InstanceID;

     [Override("CollectionAlias"),
     Description("A user-friendly name for the zone alias that is unique within the fabric.  Zone aliases are composed of zone members and are contained within zone sets.  Changing of this property is not supported."),
     Required(true),
     Write(true)
    ]
    string CollectionAlias;

};

// Brocade_ZoneMembershipSettingDataInZoneAlias

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneMembershipSettingDataInZoneAlias associates a zone member and the zone alias with which it is associated.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_ZoneMembershipSettingDataInZoneAlias : CIM_ElementSettingData {
    [Override("ManagedElement"),
     Min(1),
     Max(1),
     Description("The zone alias that has zone member settings."),
     Key(true)
    ]
    Brocade_ZoneAlias REF ManagedElement;

     [Override("SettingData"),
     Description("The zone member setting that is part of a zone alias."),
     MappingStrings{"API.Brocade | Fabric | ZoningCapabilitiesOID"},
     Key(true)
    ]
    Brocade_ZoneMembershipSettingData REF SettingData;

};

// Brocade_OwningJobElement

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_OwningJobElementan association between a Brocade_ConcreteJob and the service responsible for the creation of the Job."),
     ModelCorrespondence{"CIM_Job.Owner"}
    ]
class Brocade_OwningJobElement : CIM_OwningJobElement {
    [Override("OwningElement"),
     Max(1),
     Description("The ManagedElement responsible for the creation of the Job."),
     Key(true)
    ]
    CIM_Service REF OwningElement;

     [Override("OwnedElement"),
     Description("The Job created by the ManagedElement."),
     Key(true)
    ]
    Brocade_ConcreteJob REF OwnedElement;

};

// CIM_SoftwareInstallationService

    [Experimental(true),
     Version("2.8.1000"),
     Description("A subclass of service which provides methods to install (or update) Software Identities in ManagedElements.")
    ]
class CIM_SoftwareInstallationService : CIM_Service {
    [Description("This method allows a client application to determine whether a specific SoftwareIdentity can be installed (or updated) on a ManagedElement. It also allows other characteristics to be determined such as whether install will require a reboot. In addition a client can check whether the SoftwareIdentity can be added simulataneously to a specified SofwareIndentityCollection. A client MAY specify either or both of the Collection and Target parameters. The Collection parameter is only supported if SoftwareInstallationService.CanAddToCollection is TRUE."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109..32767", "32768..65535"},
     Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Target In Use", "DMTF Reserved", "Method Reserved", "Unsupported TargetType", "Unattended/silent installation not supported", "Downgrade/reinstall not supported", "Not enough memory", "Not enough swap-space", "Unsupported version transition", "Not enough disk space", "Software and target operating system mismatch", "Missing dependencies", "Not applicable to target", "No supported path to image", "Cannot add to SoftwareIdentityCollection", "Method Reserved", "Vendor Specific"}
    ]
    uint32 CheckSoftwareIdentity([IN(true), Description("Reference to the SoftwareIdentity to be checked.")] CIM_SoftwareIdentity REF Source, [IN(true), Description("Reference to the ManagedElement that the Software Identity is going to be installed in (or updated).")] CIM_ManagedElement REF Target, [IN(true), Description("Reference to the SoftwareIdentityCollection to which the Software Identity will be added.")] CIM_SoftwareIdentityCollection REF Collection, [IN(false), OUT(true), Description("The parameter describes the characteristics of this installation/update: \nTarget automatic reset: The target element will automatically reset once the installation is complete. \nSystem automatic reset: The containing system of the target ManagedElement (normally a logical device or the system itself) will automatically reset/reboot once the installation is complete. \nSeparate target reset required: EnabledLogicalElement.RequestStateChange MUST be used to reset the target element after the SoftwareIdentity is installed. \nSeparate system reset required: EnabledLogicalElement.RequestStateChange MUST be used to reset/reboot the containing system of the target ManagedElement after the SoftwareIdentity is installed. \nManual Reboot Required: The system MUST be manually rebooted by the user. \nNo reboot required : No reboot is required after installation. \nUser Intervention Recomended : It is recommended that a user confirm installation of this SoftwareIdentity. Inappropriate application MAY have serious consequences. \nMAY be added to specified collection : The SoftwareIndentity MAY be added to specified SoftwareIdentityCollection."), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "..", "0x7FFF..0xFFFF"}, Values{"Target automatic reset", "System automatic reset", "Separate target reset Required", "Separate system reset Required", "Manual Reboot Required", "No Reboot Required", "User Intervention recommended", "MAY be added to specified Collection", "DMTF Reserved", "Vendor Specific"}] uint16 InstallCharacteristics[]);
     [Description("Start a job to install or update a SoftwareIdentity (Source) on a ManagedElement (Target). \nIn addition the method can be used to add the SoftwareIdentity simulataneously to a specified SofwareIndentityCollection. A client MAY specify either or both of the Collection and Target parameters. The Collection parameter is only supported if SoftwareInstallationService.CanAddToCollection is TRUE. \nIf 0 is returned, the function completed successfully and no ConcreteJob instance was required. If 4096/0x1000 is returned, a ConcreteJob will be started to perform the install. The Job\'s reference will be returned in the output parameter Job."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109..32767", "32768..65535"},
     Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Target In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Unsupported TargetType", "Unattended/silent installation not supported", "Downgrade/reinstall not supported", "Not enough memory", "Not enough swap-space", "Unsupported version transition", "Not enough disk space", "Software and target operating system mismatch", "Missing dependencies", "Not applicable to target", "No supported path to image", "Cannot add to SoftwareIdentityCollection", "Method Reserved", "Vendor Specific"}
    ]
    uint32 InstallFromSoftwareIdentity([IN(false), OUT(true), Description("Reference to the job (may be null if job completed).")] CIM_ConcreteJob REF Job, [IN(true), Description("Reference to the source of the install.")] CIM_SoftwareIdentity REF Source, [IN(true), Description("The installation target. If NULL then the SOftwareIdentity will be added to Collection only. The underlying implementation is expected to be able to obtain any necessary metadata from the Software Identity.")] CIM_ManagedElement REF Target, [IN(true), Description("Reference to the SoftwareIdentityCollection to which the Software Identity SHALL be added. If NULL then the SOftware Identity will not be added to a Collection.")] CIM_SoftwareIdentityCollection REF Collection);
     [Description("Start a job to download a series of bytes containing a software image to a ManagedElement. \nNote that this method is provided to support existing, alternative download mechanisms (such as used for firmware download). The \'normal\' mechanism will be to use the InstallFromSoftwareIdentity method. \nIf 0 is returned, the function completed successfully and no ConcreteJob instance was required. If 4096/0x1000 is returned, a ConcreteJob will be started to to perform the install. The Job\'s reference will be returned in the output parameter Job."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108..32767", "32768..65535"},
     Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Target In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Unsupported TargetType", "Unattended/silent installation not supported", "Downgrade/reinstall not supported", "Not enough memory", "Not enough swap-space", "Unsupported version transition", "Not enough disk space", "Software and target operating system mismatch", "Missing dependencies", "Not applicable to target", "No supported path to image", "Method Reserved", "Vendor Specific"}
    ]
    uint32 InstallFromByteStream([IN(false), OUT(true), Description("Reference to the job (may be null if job completed).")] CIM_ConcreteJob REF Job, [IN(true), Description("A array of bytes containing the install image."), OctetString(true)] uint8 Image[], [IN(true), Description("The installation target.")] CIM_ManagedElement REF Target);
     [Description("Start a job to install software from a specific URI in a ManagedElement. \nNote that this method is provided to support existing, alternative download mechanisms (such as used for firmware download). The \'normal\' mechanism will be to use the InstallFromSoftwareIdentity method. \nIf 0 is returned, the function completed successfully and no ConcreteJob instance was required. If 4096/0x1000 is returned, a ConcreteJob will be started to to perform the install. The Job\'s reference will be returned in the output parameter Job."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108..32767", "32768..65535"},
     Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Target In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Unsupported TargetType", "Unattended/silent installation not supported", "Downgrade/reinstall not supported", "Not enough memory", "Not enough swap-space", "Unsupported version transition", "Not enough disk space", "Software and target operating system mismatch", "Missing dependencies", "Not applicable to target", "URI not accessible", "Method Reserved", "Vendor Specific"}
    ]
    uint32 InstallFromURI([IN(false), OUT(true), Description("Reference to the job (may be null if job completed).")] CIM_ConcreteJob REF Job, [IN(true), Description("A URI for the software based on RFC 2079.")] string URI, [IN(true), Description("The installation target.")] CIM_ManagedElement REF Target);
};

// Brocade_SwitchSoftwareInstallationService

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchSoftwareInstallationService represents the service that enables firmware download operations to be performed on brocade switches.")
    ]
class Brocade_SwitchSoftwareInstallationService : CIM_SoftwareInstallationService {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping Systems\'s CreationClassName which is Brocade_ManagementServer."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_ManagementServer";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping Systems\'s Name, which is a unique numeric identifier for the ManagementServer."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

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

     [Override("Name"),
     MaxLen(256),
     Description("The Name property uniquely identifies the service and provides an indication of the functionality that is managed.This isSwitchSoftwareInstallationService"),
     Key(true)
    ]
    string Name = "SwitchSoftwareInstallationService";

     [Override("ElementName"),
     MaxLen(256),
     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. Note that ManagedSystemElement\'s Name property 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 MAY be present in both the Name and ElementName properties.")
    ]
    string ElementName = "SwitchFirmwareDownloadService";

    [Override("InstallFromSoftwareIdentity"),
     Description("Provides the functionality to download firmware to a Brocade_Switch given a specific Brocade_SoftwareIdentity. A ConcreteJob will be started to perform the download.The Job\'s reference will be returned in the output parameter Job.Not Supported by AP 7420 as Target or Proxy"),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109..32767", "32768..65535"},
     Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Target In Use", "DMTF Reserved", "Method Parameters Checked - Job Started", "Unsupported TargetType", "Unattended/silent installation not supported", "Downgrade/reinstall not supported", "Not enough memory", "Not enough swap-space", "Unsupported version transition", "Not enough disk space", "Software and target operating system mismatch", "Missing dependencies", "Not applicable to target", "No supported path to image", "Cannot add to SoftwareIdentityCollection", "Method Reserved", "Vendor Specific"}
    ]
    uint32 InstallFromSoftwareIdentity([IN(true), Required(true), Description("Reference to the source of the install.")] Brocade_SoftwareIdentity REF Source, [IN(true), Required(true), Description("The installation target which is a Switch.")] Brocade_Switch REF Target, [IN(true), Description("Reference to the SoftwareIdentityCollection of which the Software Identity is a member of.")] Brocade_SoftwareIdentityCollection REF Collection, [OUT(true), Description("Reference to the job.")] Brocade_ConcreteJob REF Job);
     [Override("CheckSoftwareIdentity"),
     Description("This method allows a client application to determine whether a specific SoftwareIdentity is present at the specified location.It can alsobe used to validate the image of the SoftwareIdentity.Not Supported by AP 7420 as Target or Proxy"),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109..32767", "32768..65535"},
     Values{"Job Completed with No Error", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Target In Use", "DMTF Reserved", "Method Reserved", "Unsupported TargetType", "Unattended/silent installation not supported", "Downgrade/reinstall not supported", "Not enough memory", "Not enough swap-space", "Unsupported version transition", "Not enough disk space", "Software and target operating system mismatch", "Missing dependencies", "Not applicable to target", "No supported path to image", "Cannot add to SoftwareIdentityCollection", "Method Reserved", "Vendor Specific"}
    ]
    uint32 CheckSoftwareIdentity([IN(true), Required(true), Description("Reference to the SoftwareIdentity to be checked.")] Brocade_SoftwareIdentity REF Source, [IN(true), Required(true), Description("Reference to the ManagedElement that the Software Identity is going to be installed in (or updated).")] Brocade_Switch REF Target, [IN(true), Description("Reference to the SoftwareIdentityCollection to of which the Software Identity is a part of.")] Brocade_SoftwareIdentityCollection REF Collection, [OUT(true), Description("The parameter describes the characteristics of this installation/update. Target automatic reset: The target element will automatically reset once the installation is complete. System automatic reset: The containing system of the target ManagedElement (normally a logical device or the system itself) will automatically reset/reboot once the installation is complete. Separate target reset required: EnabledLogicalElement.RequestStateChange MUST be used to reset the target element after the SoftwareIdentity is installed. Separate system reset required: EnabledLogicalElement.RequestStateChange MUST be used to reset/reboot the containing system of the target ManagedElement after the SoftwareIdentity is installed. Manual Reboot Required: The system MUST be manually rebooted by the user. No reboot required : No reboot is required after installation. User Intervention Recomended : It is recommended that a user confirm installation of this SoftwareIdentity. Inappropriate application MAY have serious consequences. MAY be added to specified collection : The SoftwareIndentity MAY be added to specified SoftwareIdentityCollection.This property will be null for Proxy and Target : AP 7420"), ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "..", "0x7FFF..0xFFFF"}, Values{"Target automatic reset", "System automatic reset", "Separate target reset Required", "Separate system reset Required", "Manual Reboot Required", "No Reboot Required", "User Intervention recommended", "MAY be added to specified Collection", "DMTF Reserved", "Vendor Specific"}] uint16 InstallCharacteristics[]);
};

// Brocade_SwitchSoftwareInstallationServiceAvailableToSwitch

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ServiceAvailableToElement represents an association between a Brocade_Switch and the Brocade_SwitchSoftwareInstallationService that may be affected by its execution.")
    ]
class Brocade_SwitchSoftwareInstallationServiceAvailableToSwitch : CIM_ServiceAvailableToElement {
    [Override("ServiceProvided"),
     Description("The Service that is available."),
     Key(true)
    ]
    Brocade_SwitchSoftwareInstallationService REF ServiceProvided;

     [Override("UserOfService"),
     Description("The ManagedElement that may use the Service."),
     Key(true)
    ]
    Brocade_Switch REF UserOfService;

};

// CIM_InstIndication

    [Indication(true),
     Abstract(true),
     Version("2.6.0"),
     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.")
    ]
class CIM_InstIndication : CIM_Indication {
    [Required(true),
     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)
    ]
    string SourceInstance;

};

// CIM_ProcessIndication

    [Indication(true),
     Abstract(true),
     Version("2.6.0"),
     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).")
    ]
class CIM_ProcessIndication : CIM_Indication {
};

// CIM_PowerSupply

    [Version("2.7.0"),
     Description("Capabilities and management of the PowerSupply LogicalDevice.")
    ]
class CIM_PowerSupply : CIM_LogicalDevice {
    [Description("Boolean indicating that the PowerSupply is a switching (vs linear) supply.")
    ]
    boolean IsSwitchingSupply;

     [Description("The low voltage of Input Voltage Range 1 for this Power Supply, in millivolts. A value of 0 denotes \'unknown\'."),
     Units("MilliVolts"),
     MappingStrings{"MIF.DMTF|Power Supply|004.7"}
    ]
    uint32 Range1InputVoltageLow;

     [Description("The high voltage of Input Voltage Range 1 for this Power Supply, in millivolts. A value of 0 denotes \'unknown\'."),
     Units("MilliVolts"),
     MappingStrings{"MIF.DMTF|Power Supply|004.8"}
    ]
    uint32 Range1InputVoltageHigh;

     [Description("The frequency (in Hertz) at the low end of this Power Supply\'s Input Frequency Range 1. A value of zero implies DC."),
     Units("Hertz"),
     MappingStrings{"MIF.DMTF|Power Supply|004.17"}
    ]
    uint32 Range1InputFrequencyLow;

     [Description("The frequency (in Hertz) at the high end of this Power Supply\'s Input Frequency Range 1. A value of zero implies DC."),
     Units("Hertz"),
     MappingStrings{"MIF.DMTF|Power Supply|004.18"}
    ]
    uint32 Range1InputFrequencyHigh;

     [Description("The low voltage of Input Voltage Range 2 for this Power Supply, in millivolts. A value of 0 denotes \'unknown\'."),
     Units("MilliVolts"),
     MappingStrings{"MIF.DMTF|Power Supply|004.11"}
    ]
    uint32 Range2InputVoltageLow;

     [Description("The high voltage of Input Voltage Range 2 for this Power Supply, in millivolts. A value of 0 denotes \'unknown\'."),
     Units("MilliVolts"),
     MappingStrings{"MIF.DMTF|Power Supply|004.12"}
    ]
    uint32 Range2InputVoltageHigh;

     [Description("The frequency (in Hertz) at the low end of this Power Supply\'s Input Frequency Range 2. A value of zero implies DC."),
     Units("Hertz"),
     MappingStrings{"MIF.DMTF|Power Supply|004.19"}
    ]
    uint32 Range2InputFrequencyLow;

     [Description("The frequency (in Hertz) at the high end of this Power Supply\'s Input Frequency Range 2. A value of zero implies DC."),
     Units("Hertz"),
     MappingStrings{"MIF.DMTF|Power Supply|004.20"}
    ]
    uint32 Range2InputFrequencyHigh;

     [Description("ActiveInputVoltage indicates which input voltage range is currently in use. Range 1, 2 or both can be specified using the values 3, 4 or 5, respectively. If the Supply is not currently drawing power, the value 6 (\"Neither\") can be specified. This information is necessary in the case of a UPS, a subclass of PowerSupply."),
     ValueMap{"1", "2", "3", "4", "5", "6"},
     Values{"Other", "Unknown", "Range 1", "Range 2", "Both", "Neither"},
     MappingStrings{"MIF.DMTF|Power Supply|004.15"}
    ]
    uint16 ActiveInputVoltage;

     [Description("TypeOfRangeSwitching describes the kind of input voltage range switching implemented in this PowerSupply. For example, autoswitching can be specified (value=4)."),
     ValueMap{"1", "2", "3", "4", "5", "6"},
     Values{"Other", "Unknown", "Manual", "Autoswitch", "Wide Range", "Not Applicable"},
     MappingStrings{"MIF.DMTF|Power Supply|004.16"}
    ]
    uint16 TypeOfRangeSwitching;

     [Description("Represents the total output power of the PowerSupply in milliWatts. 0 denotes \'unknown\'."),
     Units("MilliWatts"),
     MappingStrings{"MIF.DMTF|Power Supply|004.21"}
    ]
    uint32 TotalOutputPower;

};

// Brocade_PowerSupply

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The power supply supplies power to the system.  Note that for proxy firmware versions 3.0.x and 2.6.0, Brocade_Fan instances might not show up, even though they exist within the fabric.  This is a limitation of the 3.0.x and 2.6.0 firmware.")
    ]
class Brocade_PowerSupply : CIM_PowerSupply {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s CreationClassName, which, in this case, is Brocade_Switch."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName;

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name, which is the WWN of the license switch."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

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

     [Override("DeviceID"),
     MaxLen(64),
     Description("An address or other identifying information to uniquely name the logical device.  In this case, this value represents an index number of the power supply within the physical chassis."),
     Key(true)
    ]
    string DeviceID;

     [Override("OperationalStatus"),
     Description("The operational status.  \"No Contact\" (12) indicates that the power supply is missing."),
     ValueMap{"0", "1", "2", "3", "4", "6", "8", "9", "10", "12"},
     Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Error", "Starting", "Stopping", "Stopped", "No Contact"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

};

// CIM_PoweredStatisticalData

    [Experimental(true),
     Version("2.8.1000"),
     Description("Statistical information related to the powered on time of a Managed Element.")
    ]
class CIM_PoweredStatisticalData : CIM_StatisticalData {
    [Description("The amount of consecutive time that the managed element has been powered on.")
    ]
    datetime PowerOnHours;

     [Description("The total amount of time that the managed element has been powered on.")
    ]
    datetime TotalPowerOnHours;

};

// Brocade_PoweredStatisticalData

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Statistical information related to the powered on time of various physical packages.  This applies to fans, power supplies, blades, and CPs.")
    ]
class Brocade_PoweredStatisticalData : CIM_PoweredStatisticalData {
    [Override("InstanceID"),
     Description("Opaque identifier to uniquely identify this instance.  This property is a semicolon-separated string of the following fields: License WWN, a number indicating the type of FRU to which this instance belongs, and a number indicating the index of the FRU to which this instance belongs."),
     Key(true)
    ]
    string InstanceID;

     [Override("PowerOnHours"),
     Description("The amount of consecutive time that the managed element has been powered on."),
     MappingStrings{"API.Brocade | CP | TimeAlive", "API.Brocade | Blade | TimeAlive", "API.Brocade | PowerSupply | TimeAlive", "API.Brocade | SwitchBlower | TimeAlive"}
    ]
    datetime PowerOnHours;

     [Override("TotalPowerOnHours"),
     Description("The total amount of time that the managed element has been powered on."),
     MappingStrings{"API.Brocade | CP | TimeAwake", "API.Brocade | Blade | TimeAwake", "API.Brocade | PowerSupply | TimeAwake", "API.Brocade | SwitchBlower | TimeAwake"}
    ]
    datetime TotalPowerOnHours;

     [Description("The value of this attribute is used to compute the power consumption.  It is positive for power supply and negative for other elements that consume power."),
     Units("Watts"),
     MappingStrings{"API.Brocade | CP | PowerConsumeFactor", "API.Brocade | Blade | PowerConsumeFactor", "API.Brocade | PowerSupply | PowerConsumeFactor", "API.Brocade | SwitchBlower | PowerConsumeFactor"}
    ]
    sint16 PowerConsumeFactor;

};

// Brocade_PowerSupplyPoweredStatisticalData

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Association between a power supply and statistical data related to its power up.")
    ]
class Brocade_PowerSupplyPoweredStatisticalData : CIM_ElementStatisticalData {
    [Override("ManagedElement"),
     Description("The power supply."),
     Key(true),
     Min(1),
     Max(1)
    ]
    Brocade_PowerSupply REF ManagedElement;

     [Override("Stats"),
     Description("Statistics related to the power supply power up."),
     Key(true)
    ]
    Brocade_PoweredStatisticalData REF Stats;

};

// Brocade_PCSPoweredStatisticalData

    [Association(true),
Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Association between a Brocade_PhysicalComputerSystem and statistical data related to its power up.")
    ]
class Brocade_PCSPoweredStatisticalData : CIM_ElementStatisticalData {
    [Override("ManagedElement"),
     Description("The Brocade_PhysicalComputerSystem."),
     Key(true),
     Min(1),
     Max(1)
    ]
    Brocade_PhysicalComputerSystem REF ManagedElement;

     [Override("Stats"),
     Description("Statistics related to the PCS power up."),
     Key(true)
    ]
    Brocade_PoweredStatisticalData REF Stats;

};

// CIM_NetworkPortStatistics

    [Version("2.7.0"),
     Description("The NetworkPortStatistics class describes the statistics for the NetworkPort.")
    ]
class CIM_NetworkPortStatistics : CIM_StatisticalData {
    [Description("The total number of bytes transmitted, including framing characters."),
     Units("Bytes"),
     Counter(true),
     MappingStrings{"MIB.IETF|MIB-II.ifOutOctets", "MIF.DMTF|Network Adapter 802 Port|001.7"}
    ]
    uint64 BytesTransmitted;

     [Description("The total number of bytes received, including framing characters."),
     Units("Bytes"),
     Counter(true),
     MappingStrings{"MIB.IETF|MIB-II.ifInOctets", "MIF.DMTF|Network Adapter 802 Port|001.9"}
    ]
    uint64 BytesReceived;

     [Description("The total number of packets transmitted."),
     Counter(true)
    ]
    uint64 PacketsTransmitted;

     [Description("The total number of packets received."),
     Counter(true)
    ]
    uint64 PacketsReceived;

};

// CIM_FCPortStatistics

    [Version("2.8.0"),
     Description("FCPortStatistics is the statistics for the FCPort.")
    ]
class CIM_FCPortStatistics : CIM_NetworkPortStatistics {
    [Description("LIPCount is the number of LIP events that have occurred on an arbitrated loop."),
     Counter(true)
    ]
    uint64 LIPCount;

     [Description("NOSCount is the number of NOS events that have occurred on the switched fabric."),
     Counter(true)
    ]
    uint64 NOSCount;

     [Description("ErrorFrames is the number of frames that have been received in error."),
     Counter(true)
    ]
    uint64 ErrorFrames;

     [Description("DumpedFrames is the number of frames that were lost due to a lack of host buffers available."),
     Counter(true)
    ]
    uint64 DumpedFrames;

     [Description("LinkFailure is the number of times a link error has occurred. This count is part of the Link Error Status Block (LESB)."),
     Counter(true)
    ]
    uint64 LinkFailures;

     [Description("Number of times that signal is lost on the Port since last reset of the Device. This count is part of the Link Error Status Block (LESB)."),
     Counter(true)
    ]
    uint64 LossOfSignalCounter;

     [Description("Number of times that synchronization is lost on the Port since last reset of the Device. Synchronization is assumed lost after a timeout period (identified by the Receiver TransmitterTimeout property) is exceeded. This count is part of the Link Error Status Block (LESB)."),
     Counter(true)
    ]
    uint64 LossOfSyncCounter;

     [Description("Count of primitive sequence protocol errors detected at this port. This count is part of the Link Error Status Block (LESB)."),
     Counter(true)
    ]
    uint64 PrimitiveSeqProtocolErrCount;

     [Description("Number of times that the CRC in a frame does not match the CRC computed by the receiver. This count is part of the Link Error Status Block (LESB)."),
     Counter(true)
    ]
    uint64 CRCErrors;

     [Description("The number of transmission words that had an invalid character (8b10b code violation) in one or more of its characters, had a K28.5 (8b10b control) in its second, third or fourth character positions, and/or had an incorrect Beginning Running Disparity. This count is part of the Link Error Status Block (LESB)."),
     Counter(true)
    ]
    uint64 InvalidTransmissionWords;

     [Description("The number of frames received that were shorter than 28 octets. The value of 28 is calculated based on an assumption of 24 header bytes plus 4 CRC bytes. The count does not include SOF/EOF bytes which are not data."),
     Counter(true)
    ]
    uint64 FramesTooShort;

     [Description("The number of frames received that were longer than 2140 octets. The value of 2140 is calculated based on an assumption of 24 header bytes plus 4 CRC bytes and 2112 bytes of payload."),
     Counter(true)
    ]
    uint64 FramesTooLong;

     [Description("Count of frames received with unknown addressing. An example is an unknown SID or DID. The SID or DID is not known to the routing algorithm."),
     Counter(true)
    ]
    uint64 AddressErrors;

     [Description("Count of occurrences when all input buffers of a port were full and outbound buffer-to-buffer credit transitioned to zero. There is no credit to provide to other side."),
     Counter(true)
    ]
    uint64 BufferCreditNotProvided;

     [Description("Count of transitions in/out of BBcredit zero state. The other side is not providing any credit."),
     Counter(true)
    ]
    uint64 BufferCreditNotReceived;

     [Description("Count of invalid frame delimiters received at this port. An example is a frame with a class 2 start and a class 3 at the end."),
     Counter(true)
    ]
    uint64 DelimiterErrors;

     [Description("Count of disparity errors received at this port."),
     Counter(true)
    ]
    uint64 EncodingDisparityErrors;

     [Description("Count of Link resets. This is the number of LRs received."),
     Counter(true)
    ]
    uint64 LinkResetsReceived;

     [Description("Count of Link resets. This is the number of LRs transmitted."),
     Counter(true)
    ]
    uint64 LinkResetsTransmitted;

     [Description("Count of Multicast Frames or Packets received."),
     Counter(true)
    ]
    uint64 MulticastFramesReceived;

     [Description("Count of Multicast Frames or Packets transmitted."),
     Counter(true)
    ]
    uint64 MulticastFramesTransmitted;

     [Description("FBSYFrames is the count of times that FBSY was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|ErrorCounters|1.SWAPI_STATS_LBL_FBSY"}
    ]
    uint64 FBSYFrames;

     [Description("PBSYFrames is the count of times that PBSY was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|ErrorCounters|1.SWAPI_STATS_LBL_PBSY"}
    ]
    uint64 PBSYFrames;

     [Description("FRJTFrames is the count of times that FRJT was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|ErrorCounters|1.SWAPI_STATS_LBL_FRJT"}
    ]
    uint64 FRJTFrames;

     [Description("PRJTFrames is the count of times that PRJT was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|ErrorCounters|1.SWAPI_STATS_LBL_PRJT"}
    ]
    uint64 PRJTFrames;

     [Description("RXClass1Frames is the count of class 1 frames received."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C1RF"}
    ]
    uint64 RXClass1Frames;

     [Description("TXClass1Frames is the count of class 1 frames transmitted."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C1TF"}
    ]
    uint64 TXClass1Frames;

     [Description("Class1FBSY is the count of times that FBSY was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C1FB"}
    ]
    uint64 Class1FBSY;

     [Description("Class1PBSY is the count of times that PBSY was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C1PB"}
    ]
    uint64 Class1PBSY;

     [Description("Class1FRJT is the count of times that FRJT was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C1FR"}
    ]
    uint64 Class1FRJT;

     [Description("Class1PRJT is the count of times that PRJT was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C1PR"}
    ]
    uint64 Class1PRJT;

     [Description("RXClass2Frames is the count of class 2 frames received."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C2RF"}
    ]
    uint64 RXClass2Frames;

     [Description("TXClass2Frames is the count of class 2 frames transmitted."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C2LF"}
    ]
    uint64 TXClass2Frames;

     [Description("Class2FBSY is the count of times that FBSY was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C2FB"}
    ]
    uint64 Class2FBSY;

     [Description("Class2PBSY is the count of times that PBSY was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C2PB"}
    ]
    uint64 Class2PBSY;

     [Description("Class2FRJT is the count of times that FRJT was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C2FR"}
    ]
    uint64 Class2FRJT;

     [Description("Class2PRJT is the count of times that PRJT was returned to the port."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C2PR"}
    ]
    uint64 Class2PRJT;

     [Description("RXClass3Frames is the count of class 3 frames received."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C3RF"}
    ]
    uint64 RXClass3Frames;

     [Description("TXClass3Frames is the count of class 3 frames transmitted."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C3TF"}
    ]
    uint64 TXClass3Frames;

     [Description("Class3FramesDiscarded is the count of class 3 frames that were discarded upon reception."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_C3DC"}
    ]
    uint64 Class3FramesDiscarded;

     [Description("RXBroadcastFrames is the count of broadcast frames or packets received."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_RBCO"}
    ]
    uint64 RXBroadcastFrames;

     [Description("TXBroadcastFrames is the count of broadcast frames or packets transmitted."),
     Counter(true),
     MappingStrings{"FC-SWAPI.T11|PerformanceCounters|1.SWAPI_STATS_LBL_TBCO"}
    ]
    uint64 TXBroadcastFrames;

};

// Brocade_FCPortStats

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
Description("Brocade_FCPortStats contains error and performance counters for a specific FC port.  Note that certain counters might not be available from the switch, in which case those counter properties are not populated.  Refer to your switch documentation to learn which counters are available from the switch.")
    ]
class Brocade_FCPortStats : CIM_FCPortStatistics {
    [Override("InstanceID"),
     Description("InstanceID opaquely identifies a unique instance of Brocade_FCPortStats.  InstanceID must be unique within a namespace.  The format for this property is:\n\"Switch WWN;Port WWN\"."),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     Description("The user-friendly name for this instance of StatisticalData.  In addition, the user-friendly name can be used as an index property for a search of query.\n\n(Note: The name does not have to be unique within a namespace.  This property is always set to \"Undefined\" and cannot be changed.)"),
     Required(true)
    ]
    string ElementName = "Undefined";

     [Override("LinkFailures"),
     Description("LinkFailure is the number of times a link error has occurred.  This count is part of the Link Error Status Block (LESB).Not supported by Proxy firmware: 7.3.x."),
     MappingStrings{"API.Brocade | PortErrors | CntLinkFailures"},
     Counter(true)
    ]
    uint64 LinkFailures;

     [Override("CRCErrors"),
     Description("Number of frames received in which the CRC in a frame does not match the CRC computed by the receiver.  This count is part of the Link Error Status Block (LESB)."),
     MappingStrings{"API.Brocade | PortErrors | CntInvalidCRCErrors"},
     Counter(true)
    ]
    uint64 CRCErrors;

     [Override("InvalidTransmissionWords"),
     Description("The number of transmission words that had an 8b10b code violation in one or more of its characters; had a K28.5 in its second, third, or fourth character positions; and/or was an ordered set that had an incorrect Beginning Running Disparity.  This count is part of the Link Error Status Block (LESB)."),
     MappingStrings{"API.Brocade | PortErrors | CntInvalidTxWords"},
     Counter(true)
    ]
    uint64 InvalidTransmissionWords;

     [Override("PrimitiveSeqProtocolErrCount"),
     Description("Count of primitive sequence protocol errors detected at this port.  This count is part of the Link Error Status Block (LESB)."),
     MappingStrings{"API.Brocade | PortErrors | CntPrimeSeqProtoErrors"},
     Counter(true)
    ]
    uint64 PrimitiveSeqProtocolErrCount;

     [Override("LossOfSignalCounter"),
     Description("Number of times that the signal is lost on the port after the last reset of the device.  This count is part of the Link Error Status Block (LESB)."),
     MappingStrings{"API.Brocade | PortErrors | CntSignalLosses"},
     Counter(true)
    ]
    uint64 LossOfSignalCounter;

     [Override("LossOfSyncCounter"),
     Description("Number of times that synchronization is lost on the port after the last reset of the device.  Synchronization is assumed lost after a timeout period identified by the ReceiverTransmitterTimeout property.  This count is part of the Link Error Status Block (LESB)."),
     MappingStrings{"API.Brocade | PortErrors | CntSyncLosses"},
     Counter(true)
    ]
    uint64 LossOfSyncCounter;

     [Override("PacketsTransmitted"),
     Description("The total number of packets transmitted."),
     MappingStrings{"API.Brocade | PortStats | CntTxFrame"},
     Counter(true)
    ]
    uint64 PacketsTransmitted;

     [Override("PacketsReceived"),
     Description("The total number of packets received."),
     MappingStrings{"API.Brocade | PortStats | CntRxFrame"},
     Counter(true)
    ]
    uint64 PacketsReceived;

     [Description("Port word transmit counter value."),
     Counter(true),
     Units("Words")
    ]
    uint64 TxWords;

     [Description("Port word receive counter value."),
     Counter(true),
     Units("Words")
    ]
    uint64 RxWords;

    [Override("ResetSelectedStats"),
     Description("This method resets all of the instance\'s statistics.  The method returns 0 if successful, 1 if not supported, and other values if an error occurrs.  This method is specified so that the StatisticalInformation\'s provider instrumentation, which calculates the statistics, can reset its internal processing, counters, and so on.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\" (case insensitive). If one or more individual statistics should be reset, the corresponding property names are entered into the elements of the array. This method is not supported on virtual ports.Not supported by Proxy and target firmware : v7.3.x .\n"),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources"}
    ]
    uint32 ResetSelectedStats([IN(true), Description("Array of strings indicating which statistics to reset. Only ALL is supported.")] string SelectedStatistics[]);
};

// Brocade_SwitchFCPortStats

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPortStats contains error and performance counters for a specific SwitchFCPort.  Note that certain counter properties might not be available from the switch, in which case those counter properties are not populated. There will be a SwitchFCPortStats instance for a virtual port. Properties not obtained from firmware will be populated with 0 values.This class also represents the Historical Port Stats information along with Realtime Port Stats information.")
    ]
class Brocade_SwitchFCPortStats : Brocade_FCPortStats {
    [Override("LinkResetsReceived"),
     Description("Count of link resets.  This is the number of LRs received.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntRxLinkResets"},
     Counter(true)
    ]
    uint64 LinkResetsReceived;

     [Override("LinkResetsTransmitted"),
     Description("Count of link resets.  This is the number of LRs transmitted.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntTxLinkResets"},
     Counter(true)
    ]
    uint64 LinkResetsTransmitted;

     [Description("The total number of offline sequences transmitted.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntTxOfflineSequences"},
     Counter(true)
    ]
    uint64 TxOfflineSequences;

     [Description("The total number of offline sequences received.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntRxOfflineSequences"},
     Counter(true)
    ]
    uint64 RxOfflineSequences;

     [Description("The total number of invalid ordered sets received.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntInvalidOrderedSets"},
     Counter(true)
    ]
    uint64 InvalidOrderedSets;

     [Override("FramesTooLong"),
     Description("The number of frames received that were longer than 2140 octets.  The value of 2140 is calculated based on an assumption of 24 header bytes plus 4 CRC bytes plus 2112 bytes of payload.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntRxFramesTooLong"},
     Counter(true)
    ]
    uint64 FramesTooLong;

     [Description("The total number of truncated frames received.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntRxTruncFrames"},
     Counter(true)
    ]
    uint64 RxTruncFrames;

     [Override("AddressErrors"),
     Description("Count of frames received with unknown addressing.  An example is an unknown SID or DID.  The SID or DID is not known to the routing algorithm.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntAddressIdErrors"},
     Counter(true)
    ]
    uint64 AddressErrors;

     [Override("DelimiterErrors"),
     Description("Count of invalid frame delimiters received at this port.  An example is a frame with a class 2 start and a class 3 at the end.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntDelimiterErrors"},
     Counter(true)
    ]
    uint64 DelimiterErrors;

     [Override("EncodingDisparityErrors"),
     Description("Count of disparity errors received at this port.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntRxEncodingDisparityErr"},
     Counter(true)
    ]
    uint64 EncodingDisparityErrors;

     [Description("The number of times RDYs exceed frames received.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntTooManyRdys"},
     Counter(true)
    ]
    uint64 TooManyRdys;

     [Description("The number of CRC errors for all frames received.Not supported by Proxy firmware: 7.3.x"),
     Counter(true)
    ]
    uint64 RxCRCs;

     [Description("The number of bad EOF frames received.Not supported by Proxy firmware: 7.3.x"),
     Counter(true)
    ]
    uint64 RxBadEOFs;

     [Description("The number of encoding error or disparity error outside frames received.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntRxEncOutFrames"},
     Counter(true)
    ]
    uint64 RxEncOutFrames;

     [Description("The number of multicast frames that have timed out.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntMcastTimedOuts"},
     Counter(true)
    ]
    uint64 McastTimeouts;

     [Description("The number of link control frames received.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortErrors | CntRxLCs"},
     Counter(true)
    ]
    uint64 RxLCs;

     [Override("BytesTransmitted"),
     Description("Port byte transmit counter value."),
     MappingStrings{"API.Brocade | PortStats | CntTxByte"},
     Counter(true),
     Units("Bytes")
    ]
    uint64 BytesTransmitted;

     [Override("BytesReceived"),
     Description("Port byte receive counter value."),
     MappingStrings{"API.Brocade | PortStats | CntRxByte"},
     Counter(true),
     Units("Bytes")
    ]
    uint64 BytesReceived;

     [Description("Transitions in and out of BBcredit zero state.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | CntBBCreditZero"},
     Counter(true)
    ]
    uint64 BBCreditZero;

     [Description("Transitions in and out of Input Buffer Full state.\n\nSupported by Target Firmware versions: 4.1.x, 4.2.x., 4.4.x, 5.0.xNot supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | CntInputBuffersFull"},
     Counter(true)
    ]
    uint64 InputBuffersFull;

     [Override("FBSYFrames"),
     Description("Number of F_BSY frames generated."),
     MappingStrings{"API.Brocade | PortStats | CntFBSYFrames"},
     Counter(true)
    ]
    uint64 FBSYFrames;

     [Override("PBSYFrames"),
     Description("Number of P_BSY frames generated.\n\nSupported by Target Firmware versions: 4.1.x, 4.2.x., 4.4.x, 5.0.xNot supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | CntPBSYFrames"},
     Counter(true)
    ]
    uint64 PBSYFrames;

     [Override("FRJTFrames"),
     Description("Number of F_RJT frames generated.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | CntFRJTFrames"},
     Counter(true)
    ]
    uint64 FRJTFrames;

     [Override("PRJTFrames"),
     Description("Number of P_RJT frames generated.\n\nSupported by Target Firmware versions: 4.1.x, 4.2.x., 4.4.x, 5.0.xNot supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | CntPRJTFrames"},
     Counter(true)
    ]
    uint64 PRJTFrames;

     [Override("RxClass1Frames"),
     Description("Number of Class 1 frames received.\n\nSupported by Target Firmware versions: 4.1.x, 4.2.x., 4.4.x, 5.0.xNot supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | CntRxClass1Frames"},
     Counter(true)
    ]
    uint64 RxClass1Frames;

     [Override("RxClass2Frames"),
     Description("Number of Class 2 frames received.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | CntRxClass2Frames"},
     Counter(true)
    ]
    uint64 RxClass2Frames;

     [Override("RxClass3Frames"),
     Description("Number of Class 3 frames received."),
     MappingStrings{"API.Brocade | PortStats | CntRxClass3Frames"},
     Counter(true)
    ]
    uint64 RxClass3Frames;

     [Override("Class3FramesDiscarded"),
     Description("Class3FramesDiscarded is the count of class 3 frames that were discarded upon reception."),
     MappingStrings{"API.Brocade | PortStats | CntClass3Discards"},
     Counter(true)
    ]
    uint64 Class3FramesDiscarded;

     [Override("MulticastFramesReceived"),
     Description("Count of multicast frames or packets received at this port.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | CntRxMcastFrames"},
     Counter(true)
    ]
    uint64 MulticastFramesReceived;

     [Override("MulticastFramesTransmitted"),
     Description("Count of multicast frames or packets transmitted from this port.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | CntTxMcastFrames"},
     Counter(true)
    ]
    uint64 MulticastFramesTransmitted;

     [Override("StartStatisticTime"),
     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;

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

     [Override("SampleInterval"),
     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 ;

};

// Brocade_PortStatsForSwitchFCPort

    [Association(true),
     Experimental(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PortStatsForSwitchFCPort is an association used to establish a relationship between a port and its statistics.")
    ]
class Brocade_PortStatsForSwitchFCPort : CIM_ElementStatisticalData {
    [Override("ManagedElement"),
     Min(1),
     Max(1),
     Description("The port for which statistical and error data is defined."),
     Key(true)
    ]
    Brocade_SwitchFCPort REF ManagedElement;

     [Override("Stats"),
     Description("The statistic security information/object."),
     MappingStrings{"API.Brocade | Port | PortStatsOID", "API.Brocade | Port | PortErrorsOID"},
     Key(true)
    ]
    Brocade_SwitchFCPortStats REF Stats;

};

// Brocade_CPPoweredStatisticalData

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Deprecated{"Brocade_PCSPoweredStatisticalData"},
     Description("Association between a CP and statistical data related to its power up.")
    ]
class Brocade_CPPoweredStatisticalData : CIM_ElementStatisticalData {
    [Override("ManagedElement"),
     Description("The control processor."),
     Key(true),
     Min(1),
     Max(1)
    ]
    Brocade_CP REF ManagedElement;

     [Override("Stats"),
     Description("Statistics related to the CP power up."),
     Key(true)
    ]
    Brocade_PoweredStatisticalData REF Stats;

};

// CIM_FCPortRateStatistics

    [Version("2.8.0"),
     Description("FCPortRateStatistics is the performance rates for the FCPort. The Frame and Byte rates report the average of a counter change per second and the maximum counter change per second over a specified interval, the SampleInterval, which is defined in the parent class, StatisticalData.")
    ]
class CIM_FCPortRateStatistics : CIM_StatisticalData {
    [Description("TxFrameRate is the instantaneous transmit frame rate."),
     MappingStrings{"FC-SWAPI.T11|PerformanceRates|1.SWAPI_STATS_LBL_TFRR"},
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 TxFrameRate;

     [Description("RxFrameRate is the instantaneous receive frame rate."),
     MappingStrings{"FC-SWAPI.T11|PerformanceRates|1.SWAPI_STATS_LBL_RFRR"},
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 RxFrameRate;

     [Description("MaxTxFrameRate is the maximum transmit frame rate achieved."),
     MappingStrings{"FC-SWAPI.T11|PerformanceRates|1.SWAPI_STATS_LBL_TFPR"},
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 MaxTxFrameRate;

     [Description("MaxRxFrameRate is the maximum receive frame rate achieved."),
     MappingStrings{"FC-SWAPI.T11|PerformanceRates|1.SWAPI_STATS_LBL_RFPR"},
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 MaxRxFrameRate;

     [Description("TxRate is the instantaneous transmit byte rate."),
     MappingStrings{"FC-SWAPI.T11|PerformanceRates|1. SWAPI_STATS_LBL_TBYR"},
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 TxRate;

     [Description("RxRate is the instantaneous receive byte rate."),
     MappingStrings{"FC-SWAPI.T11|PerformanceRates|1.SWAPI_STATS_LBL_RBYR"},
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 RxRate;

     [Description("PeakTxRate is the maximum transmit byte rate achieved."),
     MappingStrings{"FC-SWAPI.T11|PerformanceRates|1. SWAPI_STATS_LBL_TBPR"},
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 PeakTxRate;

     [Description("PeakRxRate is the maximum receive byte rate achieved."),
     MappingStrings{"FC-SWAPI.T11|PerformanceRates|1. SWAPI_STATS_LBL_RBPR"},
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 PeakRxRate;

};

// Brocade_FCPortRateStats

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
Description("Brocade_FCPortRateStats contains rate counters for a specific FC port.  Note that certain counters might not be available from the switch, in which case those counter properties are not populated.  Refer to your switch documentation to learn which counters are available from the switch.")
    ]
class Brocade_FCPortRateStats : CIM_FCPortRateStatistics {
    [Override("InstanceID"),
     Description("InstanceID opaquely identifies a unique instance of Brocade_FCPortRateStats.  InstanceID must be unique within a namespace.  The format for this property is:\n\"Switch WWN;Port WWN\"."),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     Description("The user-friendly name for this instance of StatisticalData.  In addition, the user-friendly name can be used as an index property for a search of query.\n\n(Note: The name does not have to be unique within a namespace.  This property is always set to \"Undefined\" and cannot be changed.)"),
     Required(true)
    ]
    string ElementName = "Undefined";

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

     [Override("SampleInterval"),
     Required(true),
     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 ;

    [Override("ResetSelectedStats"),
     Description("This method resets all of the instance\'s statistics.  The method returns 0 if successful, 1 if not supported, and other values if an error occurrs.  This method is specified so that the StatisticalInformation\'s provider instrumentation, which calculates the statistics, can reset its internal processing, counters, and so on.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\" (case insensitive). If one or more individual statistics should be reset, the corresponding property names are entered into the elements of the array. This method is not supported on virtual ports.Not supported by proxy and target firmware : v7.3.x .\n"),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources"}
    ]
    uint32 ResetSelectedStats([IN(true), Description("Array of strings indicating which statistics to reset. Only ALL is supported.")] string SelectedStatistics[]);
};

// Brocade_SwitchFCPortRateStats

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPortRateStats contains rate counters for a specific SwitchFCPort.  Note that certain counter properties might not be available from the switch, in which case those counter properties are not populated. There will be a SwitchFCPortRateStats instance for a virtual port. Properties not obtained from firmware are populated with 0 values.")
    ]
class Brocade_SwitchFCPortRateStats : Brocade_FCPortRateStats {
    [Override("TxFrameRate"),
     Description("The instantaneous frame transmit rate.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | RateTxFrame"},
     Counter(true),
     Units("Frames/sec"),
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 TxFrameRate;

     [Override("RxFrameRate"),
     Description("The instantaneous frame receive rate.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | RateRxFrame"},
     Counter(true),
     Units("Frames/sec"),
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 RxFrameRate;

     [Override("MaxTxFrameRate"),
     Description("The maximum frame transmit rate since last reset.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | RateTxPeakFrame"},
     Counter(true),
     Units("Frames/sec"),
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 MaxTxFrameRate;

     [Override("MaxRxFrameRate"),
     Description("The maximum frame receive rate since last reset.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | RateRxPeakFrame"},
     Counter(true),
     Units("Frames/sec"),
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 MaxRxFrameRate;

     [Override("TxRate"),
     Description("The instantaneous byte transmit rate.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | RateTxByte"},
     Counter(true),
     Units("Byte/sec"),
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 TxRate;

     [Override("RxRate"),
     Description("The instantaneous byte receive rate.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | RateRxByte"},
     Counter(true),
     Units("Byte/sec"),
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 RxRate;

     [Override("PeakTxRate"),
     Description("The peak byte transmit rate.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | RateTxPeakByte"},
     Counter(true),
     Units("Byte/sec"),
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 PeakTxRate;

     [Override("PeakRxRate"),
     Description("The peak byte receive rate.Not supported by Proxy firmware: 7.3.x"),
     MappingStrings{"API.Brocade | PortStats | RateRxPeakByte"},
     Counter(true),
     Units("Byte/sec"),
     ModelCorrespondence{"CIM_StatisticalData.SampleInterval"}
    ]
    uint64 PeakRxRate;

};

// Brocade_PortRateStatsForSwitchFCPort

    [Association(true),
     Experimental(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PortRateStatsForSwitchFCPort is an association used to establish a relationship between a port and its rate statistics.")
    ]
class Brocade_PortRateStatsForSwitchFCPort : CIM_ElementStatisticalData {
    [Override("ManagedElement"),
     Min(1),
     Max(1),
     Description("The port for which rate statistical data is defined."),
     Key(true)
    ]
    Brocade_SwitchFCPort REF ManagedElement;

     [Override("Stats"),
     Description("The statistic security information/object."),
     MappingStrings{"API.Brocade | Port | PortStatsOID"},
     Key(true)
    ]
    Brocade_SwitchFCPortRateStats REF Stats;

};

// CIM_CoolingDevice

    [Version("2.6.0"),
     Description("Capabilities and management of CoolingDevices.")
    ]
class CIM_CoolingDevice : CIM_LogicalDevice {
    [Description("ActiveCooling is a boolean indicating that the Cooling Device provides active (as opposed to passive) cooling.")
    ]
    boolean ActiveCooling;

};

// CIM_Fan

    [Version("2.6.0"),
     Description("Capabilities and management of a Fan CoolingDevice.")
    ]
class CIM_Fan : CIM_CoolingDevice {
    [Description("Indication of whether the fan supports variable speeds.")
    ]
    boolean VariableSpeed;

     [Description("DesiredSpeed is the currently requested fan speed, defined in Revolutions per Minute, when a variable speed fan is supported (VariableSpeed boolean = TRUE). The current speed is determined via a sensor (CIM_Tachometer) that is associated with the Fan using the CIM_AssociatedSensor relationship."),
     Units("Revolutions per Minute")
    ]
    uint64 DesiredSpeed;

    [Description("Requests that the Fan speed be set to the value specified in the method\'s input parameter. 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 SetSpeed([IN(true), Description("The desired speed for the fan.")] uint64 DesiredSpeed);
};

// Brocade_Fan

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Fan describes a fan that cools components enclosed within the chassis.  Note that for proxy firmware versions 3.0.x and 2.6.0, Brocade_Fan instances might not show up, even though they exist within the fabric.  This is a limitation of the 3.0.x and 2.6.0 firmware.")
    ]
class Brocade_Fan : CIM_Fan {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s CreationClassName, which, in this case, is Brocade_Switch."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName;

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name, which is the WWN of the license switch."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

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

     [Override("DeviceID"),
     MaxLen(64),
     Description("An address or other identifying information to uniquely name the logical device.  In this case, this value represents the index number of the fan within the physical chassis."),
     Key(true)
    ]
    string DeviceID;

     [Description("Current FAN speed, in RPM."),
     Units("RPM"),
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchBlower | FanRPM "}
    ]
    uint16 Speed;

     [Override("OperationalStatus"),
     Description("The operational status of the fan.  \"Error\" indicates that the fan is faulty.\"No Contact\" indicates that the fan is missing."),
     ValueMap{"0", "1", "2", "3", "4", "6", "8", "9", "10", "12"},
     Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Error", "Starting", "Stopping", "Stopped", "No Contact"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

};

// Brocade_FanPoweredStatisticalData

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Association between a fan and statistical data related to its power up.")
    ]
class Brocade_FanPoweredStatisticalData : CIM_ElementStatisticalData {
    [Override("ManagedElement"),
     Description("The fan."),
     Key(true),
     Min(1),
     Max(1)
    ]
    Brocade_Fan REF ManagedElement;

     [Override("Stats"),
     Description("Statistics related to the fan power up."),
     Key(true)
    ]
    Brocade_PoweredStatisticalData REF Stats;

};

// Brocade_BladePoweredStatisticalData

    [Association(true),
Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Association between a blade and statistical data related to its power up.")
    ]
class Brocade_BladePoweredStatisticalData : CIM_ElementStatisticalData {
    [Override("ManagedElement"),
     Description("The blade."),
     Key(true),
     Min(1),
     Max(1)
    ]
    Brocade_Blade REF ManagedElement;

     [Override("Stats"),
     Description("Statistics related to the blade power up."),
     Key(true)
    ]
    Brocade_PoweredStatisticalData REF Stats;

};

// CIM_PhysicalElementLocation

    [Association(true),
     Version("2.7.0"),
     Description("PhysicalElementLocation associates a PhysicalElement with a Location object for inventory or replacement purposes.")
    ]
class CIM_PhysicalElementLocation : CIM_ElementLocation {
    [Override("Element"),
     Description("The PhysicalElement whose Location is specified."),
     Key(true)
    ]
    CIM_PhysicalElement REF Element;

     [Override("PhysicalLocation"),
     Max(1),
     Description("The PhysicalElement\'s Location."),
     Key(true)
    ]
    CIM_Location REF PhysicalLocation;

};

// Brocade_Product

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Product identifies the vendor-specific details of the product (hardware and firmware).  The vendor can represent the OEM that is reselling the Brocade product or the manufacturer itself (e.g. Brocade).\n\nNote that for 3.0.x and 2.6.0 proxy firmware versions, certain switches might show up as being a separate product even though they are part of the same product.  This is particularly evident with SilkWorm 12000 switches, for which each switch in the chassis appears as a separate product if the proxy switch has versions 2.6.0 or 3.0.x firmware.  This is due to a limitation of the 2.6.0 and 3.0.x firmwares.")
    ]
class Brocade_Product : CIM_Product {
    [Override("Vendor"),
     MaxLen(256),
     Description("The name of the product\'s supplier or entity selling the product (for example, the manufacturer, reseller, or OEM).  This property corresponds to the Vendor property in the Product object in the DMTF Solution Exchange Standard. Note that for Brocade switches, there can be two instances of this class per chassis: one instance representing the manufacturer information and one instance representing OEM information. If the OEM serial number is not available or left blank, an OEM instance will not be returned and only the manufacturer instance will be returned."),
     MappingStrings{"API.Brocade | Switch | VendorName"},
     Key(true),
     ModelCorrespondence{"PRS_Product.Vendor"}
    ]
    string Vendor;

     [Override("ElementName"),
     Description("Same as \'Name\' property."),
     MappingStrings{"API.Brocade | Switch | Model"}
    ]
    string ElementName;

     [Override("Name"),
     MaxLen(64),
     Description("Descriptive product name."),
     Key(true),
     MappingStrings{"MIF.DMTF|ComponentID|001.2"},
     ModelCorrespondence{"PRS_Product.ProductName"}
    ]
    string Name;

     [Override("IdentifyingNumber"),
     Description("Vendor serial number.\n\nSupported by Proxy Firmware versions: 2.6.1, 2.6.2, 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x,5.0.x,7.3.x\nSupported by Target Firmware versions: 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x,7.3.x\nFor all other cases, this property represents the chassis license WWN on product instances representing the manufacturer information. Also, in all other cases, no instances will be returned which represent OEM information. Finally note that no instances will be returned representing OEM information for 7.x target firmware versions."),
     MappingStrings{"API.Brocade |SwitchEnclosure | VendorSerialNumber"},
     Key(true),
     MaxLen(64)
    ]
    string IdentifyingNumber;

     [Override("Version"),
     MaxLen(64),
     Description("Product version information.\n\nSupported by Proxy Firmware versions: 2.6.1, 2.6.2, 3.1.x,3.2.x, 4.0.x, 4.1.x, 4.2.x,4.4.x,5.0.x,7.3.x.\nSupported by Target Firmware versions: 4.0.x, 4.1.x, 4.2.x,4.4.x,5.0.x,7.3.x\nFor all other switches, this property defaults to a value of \"Unknown\"."),
     MappingStrings{"API.Brocade | SwitchEnclosure | VendorRevision"},
     Key(true),
     ModelCorrespondence{"PRS_Product.Version"}
    ]
    string Version;

     [Override("SKUNumber"),
     Description("Vendor part number.\n\nSupported by Proxy Firmware versions: 2.6.1, 2.6.2, 3.1.x, 3.2.x,4.0.x, 4.1.x, 4.2.x,4.4.x,5.0.x,7.3.x\nSupported by Target Firmware versions: 4.0.x, 4.1.x, 4.2.x,4.4.x,5.0.x,7.3.x."),
     MappingStrings{"API.Brocade | SwitchEnclosure | VendorPartNumber"},
     MaxLen(64)
    ]
    string SKUNumber;

};

// Brocade_LogicalIdentity

    [Association(true),
     Aggregation(true),
     Composition(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("CIM_LogicalIdentity is an abstract and generic association, indicating that two ManagedElements represent different aspects of the same underlying entity. In some cases for Brocade switches, up to two product instances can be associated with each physical chassis: one representing the manufacturer product information and the other representing the OEM product information. Under these conditions this association will be created between the two product instances.")
    ]
class Brocade_LogicalIdentity : CIM_LogicalIdentity {
    [Override("SystemElement"),
     Aggregate(true),
     Description("SystemElement represents one aspect of the Managed Element.This instance contains contains manufacturer information."),
     Key(true)
    ]
    Brocade_Product REF SystemElement;

     [Override("SameElement"),
     Description("SameElement represents an alternate aspect of the ManagedElement. This instance contains OEM information."),
     Key(true)
    ]
    Brocade_Product REF SameElement;

};

// CIM_ConcreteIdentity

    [Association(true),
     Version("2.7.0"),
     Description("CIM_ConcreteIdentity associates two elements representing 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 - i.e., that do not clarify the type of identity, update cardinalities, or add/remove qualifiers. Note -that when defining additional semantics for LogicalIdentity that this class should not be subclassed. Specifc 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.")
    ]
class CIM_ConcreteIdentity : CIM_LogicalIdentity {
    [Override("SystemElement"),
     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)
    ]
    CIM_ManagedElement REF SystemElement;

     [Override("SameElement"),
     Description("Another aspect of the ManagedElement."),
     Key(true)
    ]
    CIM_ManagedElement REF SameElement;

};

// CIM_ZoneSet

    [Version("2.7.0"),
     Description("A ZoneSet is a group of zones that are managed collectively by the same domain. The managing domain is indicated by the HostedCollection association. For example, for Fibre Channel, this would indicate a set of zones that are part of a fabric. The zones are only under zone enforcement by the fabric, if the zoneset is set to active.")
    ]
class CIM_ZoneSet : CIM_ConnectivityCollection {
    [Required(true),
     Override("ElementName"),
     Write(true),
     Description("A user-friendly name for the ZoneSet that is unique within the AdminDomain.")
    ]
    string ElementName;

     [Required(true),
     Write(true),
     Description("Indicates that this ZoneSet is currently active (i.e. under enforcement of a fabric). This property can be used to distinguish between a ZoneSet that is currently active and a snapshot of a ZoneSet (with the same InstanceName) that is for \"offline\" editing.")
    ]
    boolean Active;

};

// Brocade_ZoneSet

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneSet is a container of zones.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_ZoneSet : CIM_ZoneSet {
    [Override("InstanceID"),
     Description("InstanceID opaquely identifies a unique instance of Brocade_ZoneSet that is scoped (contained) by a Brocade fabric.  The instance ID must be unique within a namespace."),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     Description("A user-friendly name for Zonesets ,Two Zonesets can have samename of which one may be active and other one will beinactive.Zone sets contain zones.\n\nChanging of this property is not supported."),
     Required(true),
     Write(true)
    ]
    string ElementName;

     [Override("Active"),
     Description("Indicates that this zone set is currently active (that is, under enforcement of a fabric).  This property can be used to distinguish between a zone set that is currently active and a snapshot of a zone set (with the same InstanceName) that is for \"offline\" editing."),
     Required(true),
     Write(true)
    ]
    boolean Active;

};

// Brocade_ZoneInZoneSet

    [Association(true),
Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneInZoneSet is an aggregation used to establish membership of zones in a zone set.It will not return references to undefined zone objects even if they exist in the zoneset. \n\nInstances of this class can be deleted by a client."),
     Aggregation(true)
    ]
class Brocade_ZoneInZoneSet : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("The collection that aggregates members."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_ZoneSet REF Collection;

     [Override("Member"),
     Description("The aggregated member of the collection."),
     Key(true)
    ]
    Brocade_Zone REF Member;

};

// Brocade_Trunk

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Trunk groups together a set of Brocade_SwitchFCPort instances that form a trunk. Not supported for proxy versions less than 3.1.x and 4.1.x and hence no instances will be returned")
    ]
class Brocade_Trunk : CIM_RedundancySet {
    [Override("InstanceID"),
     Description("Within the scope of the instantiating namespace, InstanceID opaquely and uniquely identifies an instance of Brocade_Trunk.  This is equivalent to the combination of TrunkMaster WWNs involved in trunking. The format should be TrunkMaster1WWN:TrunkMaster2WWN."),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     Description("A user-friendly name for the object. The value for this properywill be set to \'Link Aggregation\'")
    ]
    string ElementName = "Link Aggregation";

     [Override("TypeOfSet"),
     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."),
     ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x8000.."},
     Values{"Unknown", "Other", "N+1", "Load Balanced", "Sparing", "Limited Sparing", "DMTF Reserved", "Vendor Reserved"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_RedundancySet.OtherTypeOfSet"}
    ]
    uint16 TypeOfSet[];

     [Override("RedundancyStatus"),
     Description("RedundancyStatus provides information on the state of the RedundancySet. \n- Redundant (=2) means that there is no single point of failure. It is possible that some elements in the set have failed leaving greater than the minimum required (\'MinNumberNeeded\' ) to have Redundancy. This \'Partial Redundancy\' can be determined by evaluating the number of failed members in the set. When calculating this number, failed members with a Spared relationship SHOULD NOT be included as each has another member that was added to the set when it failed. \n- Redundancy Lost (=3) means that a single point of failure exists. It is possible that some aspects are redundant."),
     ValueMap{"0", "1", "2", "3", "..", "0x8000.."},
     Values{"Unknown", "Other", "Redundant", "Redundancy Lost", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_RedundancySet.MinNumberNeeded"}
    ]
    uint16 RedundancyStatus;

     [Override("LoadBalanceAlgorithm"),
     Write(true),
     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."),
     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"},
     ModelCorrespondence{"CIM_RedundancySet.OtherLoadBalanceAlgorithm"}
    ]
    uint16 LoadBalanceAlgorithm = 2;

     [Override("OtherTypeOfSet"),
     Description("When the corresponding array entry in TypeOfSet[] is \'Other\', this entry provides a string describing the type of set."),
     ModelCorrespondence{"CIM_RedundancySet.TypeOfSet"},
     ArrayType("Indexed")
    ]
    string OtherTypeOfSet[];

     [Override("OtherLoadBalanceAlgorithm"),
     Description("When LoadBalanceAlgorithm is Other, this property describes the algorithm."),
     ModelCorrespondence{"CIM_RedundancySet.LoadBalanceAlgorithm"},
     Write(true)
    ]
    string OtherLoadBalanceAlgorithm;

};

// Brocade_SwitchFCPortInTrunk

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPortInTrunk associates the Brocade_Trunkinstance with the corresponding Brocade_SwitchFCPort instances. Not supported for proxy versions less than 3.1.x and 4.1.x and hence no instances will be returned"),
     Aggregation(true)
    ]
class Brocade_SwitchFCPortInTrunk : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("Reference to Brocade_Trunk instance grouping the Brocade_SwitchFCPort.instance"),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Trunk REF Collection;

     [Override("Member"),
     Description("Reference to Brocade_SwitchFCPort part of Brocade_Trunk instance."),
     Key(true)
    ]
    Brocade_SwitchFCPort REF Member;

};

// CIM_SoftwareIdentityCollection

    [Experimental(true),
     Version("2.8.1000"),
     Description("A subclass of SystemSpecificCollection which collects together Software Identities for a single system, to be managed or manipulated together. The collection MAY be populated as software is downloaded using the SoftwareInstallationService or MAY be automatically populated by the management system from, say, a web service.")
    ]
class CIM_SoftwareIdentityCollection : CIM_SystemSpecificCollection {
};

// Brocade_SoftwareIdentityCollection

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("A collection of Software Identities for a single system, to be managed or manipulated together.It basically refers to the FTP Serverwhich has Software Identity")
    ]
class Brocade_SoftwareIdentityCollection : CIM_SoftwareIdentityCollection {
    [Override("InstanceID"),
     Description("Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class.This is the IP address ofthe FTP Server"),
     Key(true)
    ]
    string InstanceID;

     [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")
    ]
    string ElementName = "SoftwareIdentityCollection";

};

// Brocade_MemberOfSoftwareIdentityCollection

    [Association(true),
    Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("CIM_MemberOfCollection is an aggregation used to establish membership of Brocade_SoftwareIdentityCollectionand Brocade_SoftwareIdentity."),
     Aggregation(true)
    ]
class Brocade_MemberOfSoftwareIdentityCollection : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("The Collection that aggregates members."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_SoftwareIdentityCollection REF Collection;

     [Override("Member"),
     Description("The aggregated member of the Collection."),
     Key(true)
    ]
    Brocade_SoftwareIdentity REF Member;

};

// Brocade_LogicalNetwork

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_LogicalNetwork groups together a set of Brocade_SANProtocolEndpoints that can communicate with each other directly within a fabric.")
    ]
class Brocade_LogicalNetwork : CIM_ConnectivityCollection {
    [Override("InstanceID"),
     Description("Within the scope of the instantiating namespace, InstanceID opaquely and uniquely identifies an instance of Brocade_LogicalNetwork.  This is equivalent to the proxy switch WWN of the fabric."),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     Write(true),
     Description("A user-friendly name for Logical Network.")
    ]
    string ElementName;

     [Description("Type of logical network, in terms of the type protocol used for communication between protocol end points."),
     ValueMap{"0", "1", "17", "18"},
     Values{"Unknown", "Other", "Infiniband", "Fibre Channel"},
     ModelCorrespondence{"OtherTypeDescription"}
    ]
    uint16 NetworkType;

     [MaxLen(64),
     Description("When the NetworkType property is 1 (\"Other\"), this property is a string describing the type of protocol that is being run by this logical network.  This property is set to NULL when the NetworkType property is any value other than 1."),
     ModelCorrespondence{"NetworkType"}
    ]
    string OtherTypeDescription;

};

// CIM_ProtocolEndpoint

    [Version("2.8.0"),
     Description("A communication point from which data may be sent or received. ProtocolEndpoints link system/computer interfaces to LogicalNetworks.")
    ]
class CIM_ProtocolEndpoint : CIM_ServiceAccessPoint {
    [Override("Description"),
     MappingStrings{"MIB.IETF|IF-MIB.ifDescr"},
     Description("The Description property provides a textual description of the object.")
    ]
    string Description;

     [Override("OperationalStatus"),
     MappingStrings{"MIB.IETF|IF-MIB.ifOperStatus"},
     Description("Indicates the current status(es) of the element. Various health and operational statuses are defined. Many of the enumeration\'s values are self- explanatory. However, a few are not and are described in more detail. \n\"Stressed\" indicates that the element is functioning, but needs attention. Examples of \"Stressed\" states are overload, overheated, etc. \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 element\'s state and configuration may need to be updated. \n\"Dormant\" indicates that the element is inactive or quiesced. \n\"Supporting Entity in Error\" describes that this element may 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 the element has completed its operation. This value should be combined with either OK, Error, or Degraded so that a client can till if the complete operation passed (Completed with OK), and failure (Completed with Error). Completed with Degraded would imply the operation finished, but did not complete OK or report an error. \n\"Power Mode\" indicates 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 since it required the DEPRECATED qualifier. Due to the widespread use of the existing Status property in management applications, it is strongly RECOMMENDED that providers/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 (since it is single-valued) SHOULD also provide the primary status of the element."),
     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"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

     [Override("EnabledState"),
     MappingStrings{"MIB.IETF|IF-MIB.ifAdminStatus"},
     Description("EnabledState is an integer enumeration that indicates the enabled/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/disabled states: \nEnabled (2) indicates that the element is/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 doesn\'t support being enabled/disabled. \nEnabled but Offline (6) indicates that the element may 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 may be completing commands, but will queue any new requests. \nQuiesce (9) indicates that the element is enabled but in a restricted mode. The element\'s behavior is similar to the Enabled state, but it only processes 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."),
     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"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.OtherEnabledState"}
    ]
    uint16 EnabledState;

     [Override("TimeOfLastStateChange"),
     MappingStrings{"MIB.IETF|IF-MIB.ifLastChange"},
     Description("The date/time when the element\'s EnabledState 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;

     [Override("Name"),
     Description("A string which 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 chosen is described in the NameFormat property of this class."),
     MaxLen(256),
     Key(true)
    ]
    string Name;

     [Description("NameFormat contains the naming heuristic that is chosen to ensure that the value of the Name property is unique. For example, one might choose to prepend the name of the port or interface with the Type of ProtocolEndpoint that this instance is (e.g., IPv4) followed by an underscore."),
     MaxLen(256)
    ]
    string NameFormat;

     [Deprecated{"CIM_ProtocolEndpoint.ProtocolIFType"},
     Description("ProtocolType is an enumeration providing information to categorize and classify different instances of this class. For most instances, information in this enumeration and the subclass\' definition 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). Hence, this property is needed to define the type of Endpoint. \n\nThis property is deprecated in lieu of the ProtocolIFType enumeration. This is done to have better alignment between the IETF\'s IF-MIB and this CIM class."),
     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"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}
    ]
    uint16 ProtocolType;

     [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. 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."),
     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", "..4095", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109", "4110", "4111", "4112", "4113", "4114", "4115", "..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", "DMTF Reserved", "Vendor Reserved"},
     MappingStrings{"MIB.IETF|IF-MIB.ifType"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}
    ]
    uint16 ProtocolIFType;

     [Description("A string describing the type of ProtocolEndpoint when the Type property of this class (or any of its subclasses) is set to 1 (i.e., \"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;

     [Experimental(true),
     Description("A boolean indicating whether the instrumentation supports the BroadcastReset method."),
     ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastReset"}
    ]
    boolean BroadcastResetSupported;

    [Experimental(true),
     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."),
     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"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastResetSupported"}
    ]
    uint32 BroadcastReset();
};

// Brocade_SANProtocolEndPoint

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The access point of a switch or node port into the storage area network.")
    ]
class Brocade_SANProtocolEndPoint : CIM_ProtocolEndPoint {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system in this case is Brocade_Switch or Brocade_Platform.  Note that Brocade_Node can be used in cases where Brocade_Platform is not available."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName;

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name.  The scoping system in this case is Brocade_Switch or Brocade_Platform.  Brocade_Node can be used in cases where Brocade_Platform is not available."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     Description("CreationClassName indicates the name of the Brocade_FCPort or its subclasses 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)
    ]
    string CreationClassName;

     [Override("Name"),
     MaxLen(256),
     Description("The Name property is an opaque property that uniquely identifies the protocol endpoint and provides an indication of the functionality that is managed.  Name should be scoped by the Brocade_FCPort name that it is associated with."),
     Key(true)
    ]
    string Name;

     [Override("NameFormat"),
     MaxLen(256),
     Description("NameFormat contains the naming heuristic that is chosen to ensure that the value of the Name property is unique. For example, one might choose to prepend the name of the port or interface with the Type of ProtocolEndpoint that this instance is (e.g., IPv4) followed by an underscore.")
    ]
    string NameFormat = "WWN";

     [Override("ProtocolIFType"),
     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. 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."),
     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", "..4095", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109", "4110", "4111", "4112", "4113", "4114", "4115", "..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", "DMTF Reserved", "Vendor Reserved"},
     MappingStrings{"MIB.IETF|IF-MIB.ifType"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}
    ]
    uint16 ProtocolIFType = 56;

     [Required(true),
     Override("BroadcastResetSupported"),
     Description("A boolean indicating whether the instrumentation supports the BroadcastReset method."),
     ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastReset"}
    ]
    boolean BroadcastResetSupported = false;

};

// Brocade_InLogicalNetwork

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association defines Brocade_SANProtocolEndPoint as a member of a specific Brocade logical network."),
     Aggregation(true)
    ]
class Brocade_InLogicalNetwork : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("The logical network that groups ProtocolEndpoint instances."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_LogicalNetwork REF Collection;

     [Override("Member"),
     Description("The protocol endpoints that are components of LogicalNetwork."),
     Key(true)
    ]
    Brocade_SANProtocolEndPoint REF Member;

};

// Brocade_UndefinedZoningObject

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_UndefinedZoningObject is used to address a quirk in the switch whereby it is possible to create references (via names) to zones and zone aliases that do not yet exist in the zoning database.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_UndefinedZoningObject : CIM_SystemSpecificCollection {
    [Override("InstanceID"),
     Description("InstanceID opaquely identifies a unique instance of Brocade_UndefinedZoningObject that is scoped (contained) by a Brocade fabric.  The instance ID must be unique within a namespace."),
     Key(true)
    ]
    string InstanceID;

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

};

// Brocade_UndefinedZoningObjectInZone

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_UndefinedZoningObjectInZone is an aggregation that establishes membership of zone aliases in a zone in cases where the zone alias references exist, but the zone aliases themselves do not exist.\n\nInstances of this class can be deleted by a client."),
     Aggregation(true)
    ]
class Brocade_UndefinedZoningObjectInZone : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("The zone that aggregates \'dangling\' zone aliases."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Zone REF Collection;

     [Override("Member"),
     Description("The aggregated member of the collection."),
     Key(true)
    ]
    Brocade_UndefinedZoningObject REF Member;

};

// Brocade_UndefinedZoningObjectInZoneSet

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_UndefinedZoningObjectInZoneSet is an aggregation that establishes membership of zones in a zone set in cases where the zone references exist but the zones themselves do not exist.\n\nInstances of this class can be deleted by a client."),
     Aggregation(true)
    ]
class Brocade_UndefinedZoningObjectInZoneSet : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("The zone set that aggregates \'dangling\' zone references."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_ZoneSet REF Collection;

     [Override("Member"),
     Description("The aggregated member of the collection."),
     Key(true)
    ]
    Brocade_UndefinedZoningObject REF Member;

};

// CIM_StatisticsCollection

    [Experimental(true),
     Version("2.8.1000"),
     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).")
    ]
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("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.")
    ]
    datetime ClockTickInterval;

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

};

// Brocade_SwitchFCPortStatisticsCollection

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("A subclass of SystemSpecificCollection which collects together Realtime 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).")
    ]
class Brocade_SwitchFCPortStatisticsCollection : CIM_StatisticsCollection {
    [Override("InstanceID"),
     Description("This will be a combination of Switch WWN and Port WWN. The format would be Switch WWN:Port WWN"),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     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 ManagedSystemElement\'s Name property 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 MAY be present in both the Name and ElementName properties.")
    ]
    string ElementName;

     [Override("SampleInterval"),
     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. Since this class represents the Realtime statisitcs, SampleInterval will always be set to \'00000000000000.000000000\'")
    ]
    datetime SampleInterval ;

     [Override("TimeLastSampled"),
     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. TimeLastSampled will not be populated for Realtime statistics collection")
    ]
    datetime TimeLastSampled;

};

// Brocade_SwitchFCPortStatsInSwitchFCPortStatisticsCollection

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPortStatsInSwitchFCPortStatisticsCollection associates the Brocade_SwitchFCPortStatisticsCollection with the corresponding Brocade_SwitchFCPortStats instances"),
     Aggregation(true)
    ]
class Brocade_SwitchFCPortStatsInSwitchFCPortStatisticsCollection : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("Reference to Brocade_SwitchFCPortStatisticsCollection instance."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_SwitchFCPortStatisticsCollection REF Collection;

     [Override("Member"),
     Description("Reference to Brocade_SwitchFCPortStats instance."),
     Key(true)
    ]
    Brocade_SwitchFCPortStats REF Member;

};

// Brocade_PCSRedundancySet

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("A class derived from RedundancySet 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.")
    ]
class Brocade_PCSRedundancySet : CIM_RedundancySet {
    [Required(true),
     Override("InstanceID"),
     Description("InstanceID opaquely identifies a unique instance of Brocade_PCSRedundancySet that is scoped (contained) by a Brocade_Fabric.  The instance ID is unique within a namespace."),
     Key(true)
    ]
    string InstanceID;

     [Required(true),
     Override("ElementName"),
     Description("The user friendly name for this instance of Brocade_PCSRedundancySet. In addition, the user friendly name can be used as a property for a search or query. (Note: ElementName does not have to be unique within a namespace.)")
    ]
    string ElementName = "PhysicalComputerSystem_RedundancySet";

     [Required(true),
     Override("RedundancyStatus"),
     Description("RedundancyStatus provides information on the state of the RedundancySet. \n- Redundant (=2) means that there is no single point of failure. It is possible that some elements in the set have failed leaving greater than the minimum required (\'MinNumberNeeded\' ) to have Redundancy. This \'Partial Redundancy\' can be determined by evaluating the number of failed members in the set. When calculating this number, failed members with a Spared relationship SHOULD NOT be included as each has another member that was added to the set when it failed. \n- Redundancy Lost (=3) means that a single point of failure exists. It is possible that some aspects are redundant."),
     ValueMap{"0", "1", "2", "3", "..", "0x8000.."},
     Values{"Unknown", "Other", "Redundant", "Redundancy Lost", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_RedundancySet.MinNumberNeeded"}
    ]
    uint16 RedundancyStatus;

     [Required(true),
     Override("TypeOfSet"),
     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."),
     ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x8000.."},
     Values{"Unknown", "Other", "N+1", "Load Balanced", "Sparing", "Limited Sparing", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_RedundancySet.OtherTypeOfSet"},
     ArrayType("Indexed")
    ]
    uint16 TypeOfSet[] = {2};

     [Override("MinNumberNeeded"),
     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 = 1;

     [Override("MaxNumberSupported"),
     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 = 2;

    [Override("Failover"),
     Description("This method forces a failover from one Brocade_PhysicalComputerSystem to another. There are two parameters to the Failover method.\n- FailoverFrom is a reference to an \'active\' Brocade_PhysicalComputerSystem that will become dormant after the method. This element is part of the Brocade_PCSRedundancySet via a Brocade_PCSInRedundancySet relationship.\n- FailoverTo is a reference to the Brocade_PhysicalComputerSystem that that will take over for the FailoverFrom element. This element is associated with the Brocade_PCSRedundancySet via a Brocade_PCSIsSpare relationship.\nOnce the failover has occurred, the Brocade_PCSInRedundancySet and Brocade_PCSIsSpare associations are updated to reflect the current state. For example, the Brocade_PCSInRedundancySet association for the FailoverFrom element is deleted. The Brocade_PCSIsSpare association for the FailoverTo element is replaced with Brocade_PCSInRedundancySet."),
     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([IN(true), Description("The primary ManagedSystemElement that will become inactive after the method.")] Brocade_PhysicalComputerSystem REF FailoverFrom, [IN(true), Description("The ManagedSystemElement that will take over from the primary MSE.")] Brocade_PhysicalComputerSystem REF FailoverTo);
};

// Brocade_PCSInRedundancySet

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PCSInRedundancySet is an aggregation used to establish membership of Brocade_PhysicalComputerSystem in a Brocade_PCSRedundancySet."),
     Aggregation(true)
    ]
class Brocade_PCSInRedundancySet : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("The Collection that aggregates members."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_PCSRedundancySet REF Collection;

     [Override("Member"),
     Description("The aggregated member of the Collection."),
     Key(true)
    ]
    Brocade_PhysicalComputerSystem REF Member;

};

// Brocade_NodeFCPort

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_NodeFCPort represents a single Fibre Channel port on a node.")
    ]
class Brocade_NodeFCPort : Brocade_FCPort {
    [Override("ElementName"),
     Description("Symbolic name of the port.  This property can be persisted."),
     MappingStrings{"API.Brocade | Port | PortSymbolicName", "FC-GS-4 | FDMI | Port Symbolic Name"}
    ]
    string ElementName;

     [Override("ActiveFC4Types"),
     Description("An array of integers indicating the Fibre Channel FC-4 protocols currently running.  A list of all protocols supported is indicated in the SupportedFC4Types 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"},
     MappingStrings{"API.Brocade | Port | FC4Protocol", "FC-GS-4 | FDMI | Active FC4 Types"},
     ModelCorrespondence{"CIM_FCPort.SupportedFC4Types"}
    ]
    uint16 ActiveFC4Types[];

     [Override("ActiveCOS"),
     Description("An array of integers indicating the classes of service active for this port."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6"},
     Values{"Unknown", "1", "2", "3", "4", "6", "F"},
     MappingStrings{"API.Brocade | Port | ClassOfService"},
     ModelCorrespondence{"CIM_FCPort.SupportedCOS"}
    ]
    uint16 ActiveCOS[];

     [Override("SupportedFC4Types"),
     Description("An array of integers indicating the Fibre Channel FC-4 protocols supported.  The protocols that are active and running are indicated in the ActiveFC4Types property.  To obtain this property the device for this port must be FDMI-enabled and attached to a switch with version 3.1.x, 4.1.x, or greater firmware.\n\nSupported by Proxy Firmware versions: 3.1.x, 4.1.x, or greater and not 7.3.x"),
     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"},
     MappingStrings{"FC-GS-4 | Port Attributes | Supported FC4 Types"}
    ]
    uint16 SupportedFC4Types[];

     [Override("SupportedMaximumTransmissionUnit"),
     Description("The maximum frame size.  To obtain this property the device for this port must be FDMI-enabled and attached to a switch with version 3.1.x, 4.1.x, or greater firmware.\n\nSupported by Proxy Firmware versions: 3.1.x, 4.1.x, or greater and not 7.3.x"),
     Units("Bytes"),
     MappingStrings{"FC-GS-4 | Port Attributes | Maximum Frame Size"}
    ]
    uint64 SupportedMaximumTransmissionUnit;

     [Override("OperationalStatus"),
     Description("Indicates the current status of the switch port.  Various health and operational statuses and the mappings to Brocade statuses are defined.  Many of the enumeration values are self-explanatory; however, a few are not and are described in more detail.\n\n\"Stressed\" indicates that the element is functioning, but needs attention.  Some examples of \"Stressed\" states are overload, overheated, and so on.\n\n\"Predictive Failure\" indicates that an element is functioning normally but predicting a failure in the near future.\n\n\"In Service\" indicates the element is being configured, maintained, cleaned, or otherwise administered.\n\n\"No Contact\" indicates that the monitoring system has knowledge of this element, but has never been able to establish communications with it.\n\n\"Lost Communication\" indicates that the ManagedSystemElement is known to exist and has been contacted successfully in the past, but is currently unreachable.\n\n\"Stopped\" and \"Aborted\" are similar, although the former implies a clean and orderly stop, while the latter implies an abrupt stop where the element\'s state and configuration might need to be updated.\n\n\"Dormant\" indicates that the element is inactive or quiesced.\n\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\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 operation passed (Completed with OK), failed (Completed with Error), or finished, but did not complete OK or report an error (Completed with Degraded).\n\n\"Power Mode\" indicates that the element has additional power model information contained in the AssociatedPowerManagementService association.\n\nThe following mappings must be made to these status values from the status values defined in Brocade API:\n\"Warning\" maps to \"Stressed\",\n\"Faulty\" maps to \"Error\",\n\"No_Card\" and \"No_Module\" map to \"No Contact\"."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"},
     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"},
     MappingStrings{"API.Brocade | Port | PortStatus"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[] = {2};

     [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is the Brocade switch or Brocade node of which this port is a part."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_Node";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s Name property. The scoping system is the Brocade switch or Brocade node of which this port is part.  This property represents the WWN of the switch or node."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     Description("CreationClassName indicates the name of the FCPort class that, when used with the other key properties of this class, uniquely identifies an instance of the port class."),
     Key(true)
    ]
    string CreationClassName = "Brocade_NodeFCPort";

     [Override("DeviceID"),
     MaxLen(64),
     Description("An address or identifying information to uniquely name the port.  This is the N_Port WWN in the case of an N_Port and the switch port WWN in the case of a switch port."),
     Key(true)
    ]
    string DeviceID;

     [Override("PortType"),
     Description("The specific mode currently enabled for the Port. The values are:\n\n\"N\" = Node port\n\"NL\" = Node port supporting FC arbitrated loop\n\"E\" = Expansion port connecting fabric elements (for example, FC switches)\n\"F\" = Fabric (element) port\n\"FL\" = Fabric (element) port supporting FC arbitrated loop\n\"B\" = Bridge port\n\"G\" = Generic port\n\"LB\" = Loopback port\n\"PL\"= Private loop port"),
     Values{"Unknown", "Other", "N", "NL", "F/NL", "Nx", "E", "F", "FL", "B", "G", "LB", "PL"},
     ValueMap{"0", "1", "10", "11", "12", "13", "14", "15", "16", "17", "18", "32768", "32769"},
     MappingStrings{"API.Brocade | Port | PortType", "FC-GS-4 | FDMI | Port Type"},
     ModelCorrespondence{"CIM_NetworkPort.OtherNetworkPortType"}
    ]
    uint16 PortType;

     [Override("PermanentAddress"),
     MaxLen(64),
     Description("The port ID of the port.  This is the WWN of the port."),
     MappingStrings{"API.Brocade | Port | WWN"}
    ]
    string PermanentAddress;

     [Override("PortNumber"),
     Description("The logical port number of the user port.  There is no assumption of any relation to the physical location of a port within a chassis."),
     MappingStrings{"API.Brocade | Port | PortNumber"}
    ]
    uint16 PortNumber;

     [Override("NetworkAddresses"),
     MaxLen(64),
     Description("The FC port ID of the port."),
     MappingStrings{"API.Brocade | Port | PortId", "FC-GS-4 | FDMI | Fibre Channel Identifier"}
    ]
    string NetworkAddresses[];

     [Override("Speed"),
     Description("Actual speed at which the port is currently operating. If the value is 0, the speed is unknown or cannot be determined.  To obtain this property for Brocade_NodeFCPort instances, the device for the port must be FDMI-enabled and attached to a switch with 3.1.x, 4.1.x, or greater firmware and with proxy firmware version of 3.1.x, 4.1.x, or greater and not 7.3.x"),
     Units("Bits per Second"),
     MappingStrings{"API.Brocade | Port | PortSpeed", "FC-GS-4 | FDMI | Current Port Speed"}
    ]
    uint64 Speed;

     [Override("MaxSpeed"),
     Description("The maximum speed the port is capable of supporting, in bits per second.  For example, the maximum port speed for a port on a 2 Gb switch is 2 Gb.  To obtain this property for Brocade_NodeFCPort instances, the device for the port must be FDMI-enabled and attached to a switch with version 3.1.x, 4.1.x, or greater firmware and with proxy firmware version of 3.1.x, 4.1.x, or greater and not 7.3.x"),
     Units("Bits per Second"),
     MappingStrings{"FC-GS-4 | FDMI | Supported Speed"}
    ]
    uint64 MaxSpeed;

};

// Brocade_PortInNode

    [Association(true),
Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PortInNode is a generic association used to establish membership relationships between a node and ports contained within that node."),
     Aggregation(true)
    ]
class Brocade_PortInNode : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("The node that contains ports."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Node REF Collection;

     [Override("Member"),
     Description("The ports contained in this node."),
     MappingStrings{"API.Brocade | Device | OwnerOID "},
     Key(true)
    ]
    Brocade_NodeFCPort REF Member;

};

// Brocade_ZoneAliasInZone

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneAliasInZone expresses the containment relationship of a zone alias in a zone.\n\nInstances of this class can be deleted by a client."),
     Aggregation(true)
    ]
class Brocade_ZoneAliasInZone : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("The collection that aggregates members."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Zone REF Collection;

     [Override("Member"),
     Description("The aggregated member of the collection."),
     Key(true)
    ]
    Brocade_ZoneAlias REF Member;

};

// Brocade_SwitchFCPortHistoricalStatisticsCollection

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("A subclass of SystemSpecificCollection which collects together historical 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).")
    ]
class Brocade_SwitchFCPortHistoricalStatisticsCollection : CIM_StatisticsCollection {
    [Override("InstanceID"),
     Description("This will be a combination of Switch WWN and Port WWN. The format would be Switch WWN:Port WWN"),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     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 ManagedSystemElement\'s Name property 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 MAY be present in both the Name and ElementName properties.")
    ]
    string ElementName;

     [Override("SampleInterval"),
     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. This property will be set to the minimum value of all the Brocade_SwitchFCPortStats.SampleInterval corresponding to the Port WWN")
    ]
    datetime SampleInterval ;

     [Override("TimeLastSampled"),
     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. This property will be set to the latest Brocade_SwitchFCPortStats.StatisticsTime corresponding to the Port WWN")
    ]
    datetime TimeLastSampled;

};

// Brocade_SwitchFCPortStatsInSwitchFCPortHistoricalStatisticsCollection

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPortStatsInSwitchFCPortHistoricalStatisticsCollection associates the Brocade_SwitchFCPortHistoricalStatisticsCollection with the corresponding Brocade_SwitchFCPortStats instances"),
     Aggregation(true)
    ]
class Brocade_SwitchFCPortStatsInSwitchFCPortHistoricalStatisticsCollection : CIM_MemberOfCollection {
    [Override("Collection"),
     Description("Reference to Brocade_SwitchFCPortStatisticsCollection instance."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_SwitchFCPortHistoricalStatisticsCollection REF Collection;

     [Override("Member"),
     Description("Reference to Brocade_SwitchFCPortStats instance."),
     Key(true)
    ]
    Brocade_SwitchFCPortStats REF Member;

};

// Brocade_ConnectionMonitor

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ConnectionMonitor monitors a fabric connection.")
    ]
class Brocade_ConnectionMonitor : CIM_Service {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is the server on which the service is hosted."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_ConnectionMonitoringService";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name.  The scoping system is the server on which the agent is hosted."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_ConnectionMonitor";

     [Override("Name"),
     MaxLen(256),
     Description("The Name property uniquely identifies the agent 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)
    ]
    string Name;

     [Write(true),
     Description("Number of times for the monitor to try revive a dead connection")
    ]
    uint16 MaxRetryCount;

     [Write(true),
     Description("Time, in seconds, to wait between retries in revive a dead connection")
    ]
    uint16 WaitTimeBetweenRetries;

     [Write(true),
     Description("Time, in minutes, to wait to restart to revive a dead connection again after all alternate connections have been tried, 0xFFFF means not retry")
    ]
    uint16 WaitTimeToRestartRetry;

     [Write(true),
     Description("Whether this monitor is enabled or not. The monitor is automatically disabled after trying to revive the connection for maximum retry count and still failing")
    ]
    boolean Enabled;

    [Description("This method create an alternate access point to use in the case of the primary connection to the fabric becomes inactive.\n\n If successful, the Brocade_AlternateLogin objects is created, along with the association between it and Brocade_Identity."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 AddAlternateLogin([IN(true), Required(true), Description("A reference to use access into a fabric.")] Brocade_Identity REF Identity, [IN(true), Required(true), Description("RemoteID is the name by which the user is known at the remote secret key authentication service.  The user ID should match the user ID of one of the accounts on the switch for access to be permitted.")] string RemoteID, [IN(true), Required(true), Octetstring(true), MaxLen(256), Description("The secret known by the user\'s access.")] string Secret, [IN(true), Description("The priority represents an ordering of which alternate login to attempt among multiple alternate login instances. The higher priority one will be attempted first.")] uint16 Priority, [OUT(true), IN(false), Description("A reference to the newly created login.")] Brocade_AlternateLogin REF Login);
};

// Brocade_MonitoredConnection

    [Association(true),
Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This is an association between a connection monitor and the connection.")
    ]
class Brocade_MonitoredConnection : CIM_ServiceAffectsElement {
    [Override("AffectingElement"),
     Description("The monitor."),
     Key(true)
    ]
    Brocade_ConnectionMonitor REF AffectingElement;

     [Override("AffectedElement"),
     Description("Reference to the fabric whose connection is monitored by Brocade_ConnectionMonitor."),
     Key(true)
    ]
    Brocade_Fabric REF AffectedElement;

};

// Brocade_ZoneSetAffectedJob

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneSetAffectedJob represents an association between a Brocade_ConcreteJob and the Brocade_ZoneSet that may be affected by its execution.")
    ]
class Brocade_ZoneSetAffectedJob : CIM_AffectedJobElement {
    [Override("AffectedElement"),
     Description("ZoneSet affected by the execution of the Job."),
     Key(true)
    ]
    Brocade_ZoneSet REF AffectedElement;

     [Override("AffectingElement"),
     Description("The Job that is affecting the ManagedElement."),
     Key(true)
    ]
    Brocade_ConcreteJob REF AffectingElement;

};

// Brocade_SwitchAffectedJob

    [Association(true),
Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchAffectedJob represents an association between a Brocade_ConcreteJob and the Brocade_Switch that may be affected by its execution.")
    ]
class Brocade_SwitchAffectedJob : CIM_AffectedJobElement {
    [Override("AffectedElement"),
     Description("Switch affected by the execution of the Job."),
     Key(true)
    ]
    Brocade_Switch REF AffectedElement;

     [Override("AffectingElement"),
     Description("The Job that is affecting the ManagedElement."),
     Key(true)
    ]
    Brocade_ConcreteJob REF AffectingElement;

};

// CIM_ZoneService

    [Version("2.8.0"),
     Description("The ZoneService if responsible for managing the zone enforcement for the fabric. The ZoneService is hosted on an AdminDomain. This is depicted by the HostedService association.")
    ]
class CIM_ZoneService : CIM_Service {
    [Description("SessionState is an integer enumeration indicating whether the session is currently starting (value = 2), or ended (value = 3). It is possible that a particular instance of a ZoneService may not support sessions. If this occurs, the value 4 (\"Not Applicable\") is used."),
     ValueMap{"0", "2", "3", "4"},
     Values{"Unknown", "Starting", "Ended", "Not Applicable"}
    ]
    uint16 SessionState = 4;

     [Description("RequestedSessionState is an integer enumeration indicating whether the ZoneService session has been requested to start (value = 2), end (3), or terminate (4). Note that when RequestedSessionState is set to 4 (\"Not Applicable\"), then this property is not used. By default, the element\'s RequestedSessionState is 5 (\"No Change\")."),
     ValueMap{"2", "3", "4", "5"},
     Values{"Start", "End", "Terminate", "No Change"},
     ModelCorrespondence{"CIM_ZoneService.SessionState", "CIM_ZoneService.SessionControl()"}
    ]
    uint16 RequestedSessionState = 5;

     [Experimental(true),
     Description("DefaultZoningState indicates whether fabric members (devices) not in any other active zones can access each other. In particular, if no zones are active, a DefaultZoningState \"Allow\" indicates that all fabric members can access each other."),
     ValueMap{"0", "2", "3"},
     Values{"Unknown", "Allow", "Deny"}
    ]
    uint16 DefaultZoningState;

    [Description("The method creates a ZoneSet and the association HostedCollection. The newly created association, HostedCollection, associates the Zone to the same AdminDomain the ZoneService is hosted to. For the newly created ZoneSet, the Active property is always set to false. \n\nThis method maybe deprecated in the future in lieu of intrinsics once limitations in the CIM Operations are addressed."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 CreateZoneSet([Required(true), IN(true), Description("A user-friendly name for the ZoneSet that is unique within the AdminDomain."), ModelCorrespondence{"CIM_ZoneSet.ElementName"}] string ZoneSetName, [IN(false), OUT(true), Description("A reference to the newly created Zone.")] CIM_ZoneSet REF ZoneSet);
     [Description("The method creates a Zone and the association HostedCollection. The newly created association, HostedCollection, associates the Zone to the same AdminDomain the ZoneService is hosted to. For the newly created Zone, the Active property is always set to false. \n\nThis method maybe deprecated in the future in lieu of intrinsics once limitations in the CIM Operations are addressed."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 CreateZone([Required(true), IN(true), Description("A user-friendly name for the Zone that is unique within the AdminDomain."), ModelCorrespondence{"CIM_Zone.ElementName"}] string ZoneName, [IN(true), Description("The type of zoning to be enforced."), ValueMap{"2", "3"}, Values{"Default", "Protocol"}, ModelCorrespondence{"CIM_Zone.ZoneType"}] uint16 ZoneType, [IN(true), Description("Specific clarification when necessary when the ZoneType has an enumeration that requires it. Specifically, if ZoneType is \"Protocol\", then SubType is the Fibre Channel FC4 type."), ValueMap{"2", "3", "4"}, Values{"SCSI", "VI", "IP"}, ModelCorrespondence{"CIM_Zone.ZoneSubType"}] uint16 ZoneSubType, [IN(false), OUT(true), Description("A reference to the newly created Zone.")] CIM_Zone REF Zone);
     [Description("The method creates a ZoneAlias and the association HostedCollection. The newly created association, HostedCollection, associates the ZoneAlias to the same AdminDomain the ZoneService is hosted to. For the newly created ZoneAlias, the Active property is always set to false. \n\nThis method maybe deprecated in the future in lieu of intrinsics once limitations in the CIM Operations are addressed."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 CreateZoneAlias([Required(true), IN(true), Description("A name (alias) for the ZoneAlias which is unique in the context of the hosting System."), ModelCorrespondence{"CIM_ZoneAlias.CollectionAlias"}] string CollectionAlias, [IN(false), OUT(true), Description("A reference to the newly created ZoneAlias.")] CIM_NamedAddressCollection REF ZoneAlias);
     [Description("CreateZoneMembershipSettingData creates a ZoneMembershipSettingData and adds it to the specified Zone or ZoneAlias by creating a MemberOfCollection association. \n\nThis method maybe deprecated in the future in lieu of intrinsics once limitations in the CIM Operations are addressed."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 CreateZoneMembershipSettingData([Required(true), IN(true), Description("Identifies the type of identification placed in ConnectivityMemberID."), ValueMap{"0", "1", "2", "3", "4", "5", "..", "0x8000.."}, Values{"Unknown", "Other", "PermanentAddress", "NetworkAddress", "SwitchPortID", "LogicalPortGroup", "DMTF_Reserved", "Vendor_Reserved"}, ModelCorrespondence{"CIM_ZoneMembershipSettingData.ZoneMemberType"}] uint16 ConnectivityMemberType, [Required(true), IN(true), Description("This specifies the type of identification used in the ConnectivityMemberID field. For Fibre Channel: \n* A ConnectivityMemberType of \'PermanentAddress\', the ConnectivityMemberID is the NxPort WWN; \n* A ConnectivityMemberType of \'NetworkAddress\', the ConnectivityMemberID is the NXPort Address ID; \n* A ConnectivityMemberType of \'SwitchPortID\', the ConnectivityMemberID is \'Domain:PortNumber\'."), ModelCorrespondence{"CIM_ZoneMembershipSettingData.ConnectivityMemberID"}] string ConnectivityMemberID, [Required(true), IN(true), Description("The collection that the ZoneMembershipSettingData should be added to. The collection is either a Zone or ZoneAlias.")] CIM_SystemSpecificCollection REF SystemSpecificCollection, [IN(false), OUT(true), Description("A reference to the newly created ZoneMembershipSettingData.")] CIM_ZoneMembershipSettingData REF ZoneMembershipSettingData);
     [Description("Adds to the ZoneSet the specified Zone. Adding a Zone to a ZoneSet, extends the zone enforcement definition of the ZoneSet to include the members of that Zone. If adding the Zone is, successful, the Zone should be associated to the ZoneSet by MemberOfCollection. \n\nThis method maybe deprecated in the future in lieu of intrinsics once limitations in the CIM Operations are addressed."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 AddZone([Required(true), IN(true), Description("A reference to the ZoneSet the Zone is added to.")] CIM_ZoneSet REF ZoneSet, [IN(true), Description("A reference to the Zone to be added to the ZoneSet.")] CIM_Zone REF Zone);
     [Description("Adds to the Zone or ZoneAlias the specified ZoneMembershipSettingData. If adding the ZoneMembershipSettingData is successful, an ElementSettingData association will be created between the ZoneMembershipSettingData and either the Zone or ZoneAlias. \n\nThis method maybe deprecated in the future in lieu of intrinsics once limitations in the CIM Operations are addressed."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 AddZoneMembershipSettingData([Required(true), IN(true), Description("A reference to the Zone or ZoneAlias the ZoneMembershipSettingData is to be added.")] CIM_SystemSpecificCollection REF SystemSpecificCollection, [IN(true), Description("A reference to the ZoneMembershipSettingData to be added to the Zone or ZoneAlias.")] CIM_ZoneMembershipSettingData REF ZoneMembershipSettingData);
     [Description("Adds to the Zone the specified ZoneAlias. \n\nThis method maybe deprecated in the future in lieu of intrinsics once limitations in the CIM Operations are addressed."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 AddZoneAlias([Required(true), IN(true), Description("A reference to the Zone the ZoneAlias is to be added.")] CIM_Zone REF Zone, [IN(true), Description("A reference to the ZoneAlias to be added to the Zone.")] CIM_NamedAddressCollection REF ZoneAlias);
     [Description("Activates the specified ZoneSet. Once the ZoneSet in activated, the ZoneSet and associatiated Zone, ZoneAliases, and ZoneMembershipSettingData instances will have the active flag set to true. \n\nThis method maybe deprecated in the future in lieu of intrinsics once limitations in the CIM Operations are addressed."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 ActivateZoneSet([Required(true), IN(true), Description("A reference to the ZoneSet to be activated.")] CIM_ZoneSet REF ZoneSet, [Required(true), IN(true), Description("Activate indicates whether the references ZoneSet should be activated (Active=true) or deactivated (Active=false).")] boolean Activate);
     [Description("SessionControl requests that a session start (value = 2), end (3), or terminate (4)."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "9", "10..0x0FFF", "0x1000..0x7777", "0x8000.."},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Insufficient_Resources", "DMTF_Reserved", "Method_Reserved", "Vendor_Reserved"}
    ]
    uint32 SessionControl([IN(true), Description("RequestedSessionState is an integer enumeration indicating whether the ZoneService session has been requested to start (value = 2), end (3), or terminate (4)."), ValueMap{"2", "3", "4"}, Values{"Start", "End", "Terminate"}, ModelCorrespondence{"CIM_ZoneService.RequestedSessionState"}] uint16 RequestedSessionState);
};

// Brocade_ZoneService

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The Brocade_ZoneService adds support for client-initiated transactions and provides the ability to monitor transaction status.")
    ]
class Brocade_ZoneService : CIM_ZoneService {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is the Brocade fabric on which this service is hosted."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_Fabric";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name, which is the name of the Brocade fabric on which this service is hosted."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     Description("The name of the class or the subclass used in the creation of an instance such that 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)
    ]
    string CreationClassName = "Brocade_ZoneService";

     [Override("Name"),
     MaxLen(256),
     Description("The Name property is an opaque property used to uniquely identify the service and provides an indication of the functionality that is managed."),
     Key(true)
    ]
    string Name = "BrocadeZoneService";

     [Write(true),
     Deprecated{"CIM_ZoneService.DefaultZoningState"},
     Description("Defines behavior if zoning is disabled.\n\nNoAccess indicates that if zoning is disabled, device ports cannot communicate with any other device ports.\n\nFullAccess indicates that if zoning is disabled, device ports can communicate with all other device ports.\n\nThis property can be changed only when all the switches in the fabric have firmware version 2.6.x.This property is deprecated in lieu of the DefaultZoningStateproperty inherited from CIM_ZoneService, which addresses the same semantics.Use of the Deprecated qualifier allows the maintenance of the existing property, but also permits an improved, clarified definition using DefaultZoningState."),
     ValueMap{"0", "1"},
     Values{"NoAccess", "FullAccess"}
    ]
    uint16 DefaultZoningBehavior;

     [Write(true),
     Description("Defines a timeout value for operations within a zoning session.  The default timeout period is 180 seconds.  This default can be changed."),
     Units("Seconds")
    ]
    uint16 Timeout;

     [Override("SessionState"),
     Description("SessionState is an integer enumeration indicating the status when inquiring about transaction status.\n\nUnknown (0) indicates that the transaction state is not known.\n\nStarting (2) indicates that a transaction is in progress.\n\nEnded (3) indicates that the transaction has not started or has been terminated.\n\nThe Not Applicable (4) state is not supported."),
     ValueMap{"0", "2", "3", "4"},
     Values{"Unknown", "Starting", "Ended", "Not Applicable"}
    ]
    uint16 SessionState;

     [Override("RequestedSessionState"),
     Description("RequestedSessionState is an integer enumeration indicating whether the ZoneService session has been requested to be started (value = 2), ended (3), or terminated (4).\n\nEnded (3) indicates that all changes in the transaction should be committed.\n\nTerminated (4) indicates that all changes in the transaction be rolled back and the transaction should be ended.\n\nThe default value is No Change (5)."),
     ValueMap{"2", "3", "4", "5"},
     Values{"Start", "End", "Terminate", "No Change"},
     ModelCorrespondence{"CIM_ZoneService.SessionState", "CIM_ZoneService.SessionControl()"}
    ]
    uint16 RequestedSessionState = 5;

     [Description("The checksum of the active zone database.  The checksum can be used to determine whether the contents of the active zone database have changed.\n\nSupported by Target Firmware versions: 3.1.x, 4.1.x, 4.2.x, and greater.")
    ]
    uint32 ActiveZoneDBChecksum;

     [Description("The checksum of the full zone database.  The checksum can be used to determine whether the contents of the full zone database have changed.\n\nSupported by Target Firmware versions: 3.1.x, 4.1.x, 4.2.x, and greater.")
    ]
    uint32 DefinedZoneDBChecksum;

     [Override("StartMode"),
     Deprecated{"CIM_Service.EnabledDefault"},
     Description("StartMode is a string value indicating whether the Service is automatically started by a System, Operating System, etc. or only started upon request. This property is deprecated in lieu of the EnabledDefault property inherited from EnabledLogicalElement, which 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 and did not want to modify their code. Therefore, 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."),
     ValueMap{"Automatic", "Manual"},
     MaxLen(10)
    ]
    string StartMode;

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

     [Override("OperationalStatus"),
     Description("Indicates the current status(es) of the element. Various health and operational statuses are defined. Many of the enumeration\'s values are self- explanatory. However, a few are not and are described in more detail. \n\"Stressed\" indicates that the element is functioning, but needs attention. Examples of \"Stressed\" states are overload, overheated, etc. \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 element\'s state and configuration may need to be updated. \n\"Dormant\" indicates that the element is inactive or quiesced. \n\"Supporting Entity in Error\" describes that this element may 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 the element has completed its operation. This value should be combined with either OK, Error, or Degraded so that a client can till if the complete operation passed (Completed with OK), and failure (Completed with Error). Completed with Degraded would imply the operation finished, but did not complete OK or report an error. \n\"Power Mode\" indicates 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 since it required the DEPRECATED qualifier. Due to the widespread use of the existing Status property in management applications, it is strongly RECOMMENDED that providers/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 (since it is single-valued) SHOULD also provide the primary status of the element."),
     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"},
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"},
     ArrayType("Indexed")
    ]
    uint16 OperationalStatus[];

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

     [Override("Status"),
     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: 1) Status is more correctly defined as an array. This overcomes the limitation of describing status via a single value, when it is really a multi-valued property (for example, an element may be OK AND Stopped. 2) A MaxLen of 10 is too restrictive and leads to unclear enumerated values. And, 3) 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."),
     ValueMap{"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service", "Stressed", "NonRecover", "No Contact", "Lost Comm", "Stopped"},
     MaxLen(10)
    ]
    string Status;

     [Override("Caption"),
     Description("The Caption property is a short textual description (one- line string) of the object."),
     MaxLen(64)
    ]
    string Caption;

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

// Brocade_ZoneServiceAffectedJob

    [Association(true),
Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneServiceAffectedJob represents an association between a Brocade_ConcreteJob and the Brocade_ZoneService that may be affected by its execution.")
    ]
class Brocade_ZoneServiceAffectedJob : CIM_AffectedJobElement {
    [Override("AffectedElement"),
     Description("ZoneService affected by the execution of the Job."),
     Key(true)
    ]
    Brocade_ZoneService REF AffectedElement;

     [Override("AffectingElement"),
     Description("The Job that is affecting the ManagedElement."),
     Key(true)
    ]
    Brocade_ConcreteJob REF AffectingElement;

};

// CIM_OrganizationalEntity

    [Abstract(true),
     Version("2.6.0"),
     Description("OrganizationalEntity is an abstract class from which classes that fit into an organizational structure are derived.")
    ]
class CIM_OrganizationalEntity : CIM_ManagedElement {
};

// CIM_EnabledLogicalElementCapabilities

    [Experimental(true),
     Version("2.8.1000"),
     Description("EnabledStateCapabilities describes the capabilities supported for changing the state OF THE ASSOCIATED EnabledLogicalElement.")
    ]
class CIM_EnabledLogicalElementCapabilities : CIM_Capabilities {
    [Description("Boolean indicating whether the ElementName can be modified."),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|EditName"},
     ModelCorrespondence{"CIM_ManagedElement.ElementName"}
    ]
    boolean ElementNameEditSupported;

     [Description("Maximum supported ElementName length."),
     MaxValue(256),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|MaxNameChars"},
     ModelCorrespondence{"CIM_FCSwitchCapabilities.ElementNameEditSupported"}
    ]
    uint16 MaxElementNameLen;

     [Description("RequestedStatesSupported indicates the possible states that can be requested when using the method RequestStateChange on the EnabledLogicalElement."),
     ValueMap{"2", "3", "4", "6", "7", "8", "9", "10", "11"},
     Values{"Enabled", "Disabled", "Shut Down", "Offline", "Test", "Defer", "Quiesce", "Reboot", "Reset"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.RequestStateChange"}
    ]
    uint16 RequestedStatesSupported[];

};

// CIM_FCSwitchCapabilities

    [Experimental(true),
     Version("2.8.1000"),
     Description("FibreChannel switch control and configuration capabilities.")
    ]
class CIM_FCSwitchCapabilities : CIM_EnabledLogicalElementCapabilities {
    [Description("Boolean indicating whether the DomainID setting can be modified."),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|EditDomainID"},
     ModelCorrespondence{"CIM_FCSwitchSettings.PreferredDomainID"}
    ]
    boolean DomainIDConfigureable;

     [Description("Minimum DomainID value supported by the switch."),
     MinValue(1),
     MaxValue(239),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|MinDomainID"},
     ModelCorrespondence{"CIM_FCSwitchSettings.PreferredDomainID"}
    ]
    uint8 MinDomainID;

     [Description("Maximum DomainID value supported by the switch. This value must be greater than or equal to MinDomainID."),
     MinValue(1),
     MaxValue(239),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|MaxDomainID"},
     ModelCorrespondence{"CIM_FCSwitchSettings.PreferredDomainID"}
    ]
    uint8 MaxDomainID;

     [Description("Boolean indicating whether the DomainIDLocked setting can be modified."),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|EditDomainIDLocked"},
     ModelCorrespondence{"CIM_FCSwitchSettings.DomainIDLocked"}
    ]
    boolean DomainIDLockedSupported;

     [Description("This array contains the principal priority settings supported by the switch."),
     ValueMap{"2", "3", "4", "5"},
     Values{"Principal", "Subordinate", "Any", "Not Applicable"},
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|SupportedSwitchPriorities"},
     ModelCorrespondence{"CIM_FCSwitchSettings.PrincipalPriority"}
    ]
    uint16 PrincipalPrioritiesSupported[];

};

// Brocade_FCSwitchCapabilities

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("FibreChannel switch control and configuration capabilities. In case of Non-BRCD switches or Phantom or Virtual switches the capabilities will be set to either FALSE or NULL or Empty list based on the type of attribute")
    ]
class Brocade_FCSwitchCapabilities : CIM_FCSwitchCapabilities {
    [Override("InstanceID"),
     Description("This will be the Switch WWN. "),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     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.)"),
     Required(true)
    ]
    string ElementName = "FC Switch Capabilities";

     [Override("ElementNameEditSupported"),
     Description("Boolean indicating whether the ElementName can be modified. "),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|EditName"},
     ModelCorrespondence{"CIM_ManagedElement.ElementName"}
    ]
    boolean ElementNameEditSupported;

     [Override("MaxElementNameLen"),
     Description("Maximum supported ElementName length."),
     MaxValue(32),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|MaxNameChars"},
     ModelCorrespondence{"CIM_FCSwitchCapabilities.ElementNameEditSupported"}
    ]
    uint16 MaxElementNameLen;

     [Override("RequestedStatesSupported"),
     Description("RequestedStatesSupported indicates the possible states that can be requested when using the method RequestStateChange on the EnabledLogicalElement. Only setting of \'Enabled\'  \'Disabled\', \'Offline\' and \'Reboot\' states are supported. Reboot state means Reboot without diagnostics. \'Disabled\' state is equivalent to \'Offline\' state"),
     ValueMap{"2", "3", "4", "6", "7", "8", "9", "10", "11"},
     Values{"Enabled", "Disabled", "Shut Down", "Offline", "Test", "Defer", "Quiesce", "Reboot", "Reset"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.RequestStateChange"}
    ]
    uint16 RequestedStatesSupported[];

     [Override("DomainIDConfigureable"),
     Description("Boolean indicating whether the DomainID setting can be modified."),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|EditDomainID"},
     ModelCorrespondence{"CIM_FCSwitchSettings.PreferredDomainID"}
    ]
    boolean DomainIDConfigureable;

     [Override("MinDomainID"),
     Description("Minimum DomainID value supported by the switch."),
     MinValue(1),
     MaxValue(239),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|MinDomainID"},
     ModelCorrespondence{"CIM_FCSwitchSettings.PreferredDomainID"}
    ]
    uint8 MinDomainID;

     [Override("MaxDomainID"),
     Description("Maximum DomainID value supported by the switch. This value must be greater than or equal to MinDomainID."),
     MinValue(1),
     MaxValue(239),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|MaxDomainID"},
     ModelCorrespondence{"CIM_FCSwitchSettings.PreferredDomainID"}
    ]
    uint8 MaxDomainID;

     [Override("DomainIDLockedSupported"),
     Description("Boolean indicating whether the DomainIDLocked setting can be modified."),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|EditDomainIDLocked"},
     ModelCorrespondence{"CIM_FCSwitchSettings.DomainIDLocked"}
    ]
    boolean DomainIDLockedSupported;

     [Override("PrincipalPrioritiesSupported"),
     Description("This array contains the principal priority settings supported by the switch."),
     ValueMap{"2", "3", "4", "5"},
     Values{"Principal", "Subordinate", "Any", "Not Applicable"},
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|SupportedSwitchPriorities"},
     ModelCorrespondence{"CIM_FCSwitchSettings.PrincipalPriority"}
    ]
    uint16 PrincipalPrioritiesSupported[];

};

// Brocade_FCSwitchCapabilitiesForSwitch

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_FCSwitchCapabilitiesForSwitch associates the Brocade_FCSwitchCapabilitiesinstance with the corresponding Brocade_Switch instance")
    ]
class Brocade_FCSwitchCapabilitiesForSwitch : CIM_ElementCapabilities {
    [Override("ManagedElement"),
     Description("Reference to Brocade_Switch instance."),
     Key(true),
     Min(1),
     Max(1)
    ]
    Brocade_Switch REF ManagedElement;

     [Override("Capabilities"),
     Description("Reference to Brocade_FCSwitchCapabilities."),
     Key(true)
    ]
    Brocade_FCSwitchCapabilities REF Capabilities;

};

// CIM_LogicalPortCapabilities

    [Experimental(true),
     Version("2.8.1000"),
     Description("LogicalPortCapabilities describes the configuration capabilities for properties in LogicalPortSettings.")
    ]
class CIM_LogicalPortCapabilities : CIM_EnabledLogicalElementCapabilities {
    [Description("List of supported port speeds that can be configured on LogicalPortSettings.RequestedSpeed."),
     ModelCorrespondence{"CIM_NetworkPort.Speed"}
    ]
    uint64 RequestedSpeedsSupported[];

     [Description("A boolean indicating whether the value in LogicalPortSettings.AutoSenseSpeed may be changed (TRUE), or may only be viewed (FALSE)."),
     ModelCorrespondence{"CIM_NetworkPort.Speed"}
    ]
    boolean AutoSenseSpeedConfigurable;

};

// CIM_NetworkPortCapabilities

    [Experimental(true),
     Version("2.8.1000"),
     Description("NetworkPortCapabilities describes the capabilities supported for properties that are configurable in NetworkPort.")
    ]
class CIM_NetworkPortCapabilities : CIM_LogicalPortCapabilities {
    [Description("Boolean indicating whether the Speed can be configured."),
     ModelCorrespondence{"CIM_EnabledLogicalElementCapabilities.SupportedPortSpeeds"}
    ]
    boolean SpeedConfigurable = false;

     [Description("List of supported port speeds that can be configured on NetworkPort.Speed."),
     ModelCorrespondence{"CIM_NetworkPort.Speed"}
    ]
    uint64 PortSpeedsSupported[];

     [Description("Boolean indicating whether the NetworkPort can be configured to connect to specific Networks."),
     ModelCorrespondence{"CIM_NetworkPortSettings.NetworkIDs"}
    ]
    boolean NetworkIDsConfigurable;

     [Description("List of the LinkTechnologies supported by the the NetworkPort."),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11"},
     Values{"Ethernet", "IB", "FC", "FDDI", "ATM", "Token Ring", "Frame Relay", "Infrared", "BlueTooth", "Wireless LAN"},
     ModelCorrespondence{"CIM_NetworkPortSettings.NetworkIDs", "CIM_NetworkPort.LinkTechnology"}
    ]
    uint16 LinkTechnologiesSupported[];

};

// CIM_FCPortCapabilities

    [Experimental(true),
     Version("2.8.1000"),
     Description("FibreChannel port control and configuration capabilities.")
    ]
class CIM_FCPortCapabilities : CIM_NetworkPortCapabilities {
    [Description("List of supported port types that can be configured on FCPortConfig.RequestedType.\nRequestedType acts as a filter on the enabled port types that a port may auto-negotiate during port login.\n\"G\" = Port may only act as an expansion port (E), or a fabric port (F). \"GL\" = Port may only act an an expansion port (E), a fabric port (F), or a fabric port supporting FC arbitrated loop (FL). \"E\" = Port may only act as an expansion port (E) connecting fabric elements. \"F\" = Port may only act as a fabric port (F). \"FX\" = Port may only act as a fabric port (F), or a fabric port supporting FC arbitrated loop (FL). \"B\" = Port may only act as a bridge port (B). \"NX\" = Port may only act as a node port (N) or a node port supporting FC arbitrated loop (NL). \"N\" = Port may only act as a Node port. \"NL\" = Port may only act as a Node Port supporting FC arbitrated loop. \"NX\" = Port may only act as a node port (N) or a node port supporting FC arbitrated loop (NL)."),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "..", "16000..65535"},
     Values{"G", "GL", "E", "F", "FX", "B", "NX", "N", "NL", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_FCPortConfig.RequestedTypes"},
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_PORT_CONFIG_CAPS_T.ConfigurablePortTypes"}
    ]
    uint16 RequestedTypesSupported[];

};

// Brocade_SwitchFCPortCapabilities

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("FibreChannel port control and configuration capabilities. In case of Non-BRCD switches or Phantom or Virtual Switches or ports the capabilites will be populated as either false or NULL or empty list based on the type of attribute")
    ]
class Brocade_SwitchFCPortCapabilities : CIM_FCPortCapabilities {
    [Override("InstanceID"),
     Description("This will be a combination of Switch WWN and Port WWN. The format would be Switch WWN:Port WWN"),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     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.)"),
     Required(true)
    ]
    string ElementName = "FC Port Capabilities";

     [Override("ElementNameEditSupported"),
     Description("Boolean indicating whether the ElementName can be modified. Not supported on proxy/target firmware versions less than 3.1.x. If the proxy firmware version is less than 3.1.x, then this property will be set to FALSE for all the swithces present in the fabric irrespective of their firmware versions"),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|EditName"},
     ModelCorrespondence{"CIM_ManagedElement.ElementName"}
    ]
    boolean ElementNameEditSupported;

     [Override("MaxElementNameLen"),
     Description("Maximum supported ElementName length."),
     MaxValue(36),
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|MaxNameChars"},
     ModelCorrespondence{"CIM_FCSwitchCapabilities.ElementNameEditSupported"}
    ]
    uint16 MaxElementNameLen;

     [Override("RequestedStatesSupported"),
     Description("RequestedStatesSupported indicates the possible states that can be requested when using the method RequestStateChange on the EnabledLogicalElement. Only Setting of \'Enabled\' and \'Disabled\' states are supported on all Firmware versions. These two states correspond to non-permanent states since that is what is currently supported through RequestStateChange method. Since 7.3.x supports only setting of Permanent Enabled and Disabled States, these states will be set using Brocade_SwitchFCPort.EnabledDefault property"),
     ValueMap{"2", "3", "4", "6", "7", "8", "9", "10", "11"},
     Values{"Enabled", "Disabled", "Shut Down", "Offline", "Test", "Defer", "Quiesce", "Reboot", "Reset"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.RequestStateChange"}
    ]
    uint16 RequestedStatesSupported[];

     [Override("SpeedConfigurable"),
     Description("Boolean indicating whether the Speed can be configured."),
     ModelCorrespondence{"CIM_EnabledLogicalElementCapabilities.SupportedPortSpeeds"}
    ]
    boolean SpeedConfigurable = false;

     [Override("RequestedSpeedsSupported"),
     Description("List of supported port speeds that can be configured on LogicalPortSettings.RequestedSpeed.For Silkworm 48000 switches proxy firmware version should be 4.4.x and above."),
     ValueMap{"1062500000", "2125000000", "4250000000"},
     Values{"1GBPS", "2GBPS", "4GBPS"},
     ModelCorrespondence{"CIM_NetworkPort.Speed"}
    ]
    uint64 RequestedSpeedsSupported[];

     [Override("AutoSenseSpeedConfigurable"),
     Description("A boolean indicating whether the value in LogicalPortSettings.AutoSenseSpeed may be changed (TRUE), or may only be viewed (FALSE)."),
     ModelCorrespondence{"CIM_NetworkPort.Speed"}
    ]
    boolean AutoSenseSpeedConfigurable;

     [Override("RequestedTypesSupported"),
     Description("List of supported port types that can be configured on FCPortConfig.RequestedType.\nRequestedType acts as a filter on the enabled port types that a port may auto-negotiate during port login.\nRequestedType acts as a filter on the enabled port types that a port may auto-negotiate during port login.\n\"G\" = Port may only act as an expansion port (E), or a fabric port (F). \"GL\" = Port may only act an an expansion port (E), a fabric port (F), or a fabric port supporting FC arbitrated loop (FL). \"E\" = Port may only act as an expansion port (E) connecting fabric elements. \"F\" = Port may only act as a fabric port (F). \"FX\" = Port may only act as a fabric port (F), or a fabric port supporting FC arbitrated loop (FL). \"B\" = Port may only act as a bridge port (B). \"NX\" = Port may only act as a node port (N) or a node port supporting FC arbitrated loop (NL). \"N\" = Port may only act as a Node port. \"NL\" = Port may only act as a Node Port supporting FC arbitrated loop. \"NX\" = Port may only act as a node port (N) or a node port supporting FC arbitrated loop (NL). This property corresponds to Brocade_SwitchFCPort.PortLock since only locking of the ports is supported on the switch. Locking of port as \'G\' or \'FL\' or \'PL\' is supported on all Firware versions except 7.3.x. In case of 7.3.x, locking of port as \'G\' or \'FL\' is supported. Unlocking of port \'None\' is supported on all Firmware versions except 7.3.x. Not supported on Proxy/target firmware version less than 3.1.x. If the proxy firmware version is less than 3.1.x then this property will be set to Empty List for all the swithces present in the fabric irrespective of their firmware versions"),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "16000", "16001", "16002", "..", "16000..65535"},
     Values{"G", "GL", "E", "F", "FX", "B", "NX", "N", "NL", "FL", "PL", "None", "DMTF Reserved", "Vendor Reserved"},
     ModelCorrespondence{"CIM_FCPortConfig.RequestedTypes"},
     MappingStrings{"FC-SWAPI.INCITS-T11|SWAPI_PORT_CONFIG_CAPS_T.ConfigurablePortTypes"}
    ]
    uint16 RequestedTypesSupported[];

};

// Brocade_SwitchFCPortCapabilitiesForFCPort

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPortCapabilitiesForFCPort associates the Brocade_SwitchFCPortCapabilitiesinstance with the corresponding Brocade_SwitchFCPort instance")
    ]
class Brocade_SwitchFCPortCapabilitiesForFCPort : CIM_ElementCapabilities {
    [Override("ManagedElement"),
     Description("Reference to Brocade_SwitchFCPort instance."),
     Key(true),
     Min(1),
     Max(1)
    ]
    Brocade_SwitchFCPort REF ManagedElement;

     [Override("Capabilities"),
     Description("Reference to Brocade_SwitchFCPortCapabilities."),
     Key(true)
    ]
    Brocade_SwitchFCPortCapabilities REF Capabilities;

};

// Brocade_PCSNetworkPortCapabilities

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("FibreChannel port control and configuration capabilities.")
    ]
class Brocade_PCSNetworkPortCapabilities : CIM_NetworkPortCapabilities {
    [Override("InstanceID"),
     Description("This is an opaque key and will be a will be a combination of LicenseWWN, CPNumber, and Port WWN in the format LicenseWWN;CPNumber;Port WWN"),
     Key(true)
    ]
    string InstanceID;

     [Override("NetworkIDsConfigurable"),
     Description("Boolean indicating whether the NetworkPort can be configured to connect to specific Networks."),
     ModelCorrespondence{"CIM_NetworkPortSettings.NetworkIDs"}
    ]
    boolean NetworkIDsConfigurable;

     [Override("LinkTechnologiesSupported"),
     Description("List of the LinkTechnologies supported by the the NetworkPort."),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11"},
     Values{"Ethernet", "IB", "FC", "FDDI", "ATM", "Token Ring", "Frame Relay", "Infrared", "BlueTooth", "Wireless LAN"},
     ModelCorrespondence{"CIM_NetworkPortSettings.NetworkIDs", "CIM_NetworkPort.LinkTechnology"}
    ]
    uint16 LinkTechnologiesSupported[];

};

// Brocade_PortCapabilitiesForPCSNetworkPort

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PortCapabilitiesForPCSNetworkPort associates the Brocade_PCSNetworkPortCapabilities instance with the corresponding Brocade_PCSNetworkPort instance.")
    ]
class Brocade_PortCapabilitiesForPCSNetworkPort : CIM_ElementCapabilities {
    [Override("ManagedElement"),
     Description("Reference to Brocade_PCSNetworkPort instance."),
     Key(true),
     Min(1),
     Max(1)
    ]
    Brocade_PCSNetworkPort REF ManagedElement;

     [Override("Capabilities"),
     Description("Reference to Brocade_PCSNetworkPortCapabilities."),
     Key(true)
    ]
    Brocade_PCSNetworkPortCapabilities REF Capabilities;

};

// Brocade_SwitchServiceCapabilities

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchServiceCapabilities describes the availability of service capabilities (which might be hardware or firmware dependent) of a switch in the fabric and whether the service is enabled or disabled.  An attribute is populated with a value only if the corresponding capability is available.  Some of the service capabilities can be enabled or disabled by the client.  If the property type is boolean, the value \"true\" indicates that the property is set to Enabled.  Some of the services require a license before they can be enabled.")
    ]
class Brocade_SwitchServiceCapabilities : CIM_Capabilities {
    [Override("InstanceID"),
     Description("Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class."),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     Description("The user-friendly name for this instance of Capabilities.  In addition, the user-friendly name can be used as an index property for a search of query.  (Note:  Name does not have to be unique within a namespace.)"),
     Required(true)
    ]
    string ElementName;

     [Description("TrunkingCapable is true, means that trunking is supported on the hardware and is enabled with a valid license.  This is false, means trunking is supported on the hardware, but is not enabled.  This is not populated means, trunking is not supported on the hardware at all.\n\nThe exception to this rule is in v3.0 firmware, where this property is not populated even if the switch hardware supports trunking.\n\nSupported by Proxy Firmware versions: 2.6.x, 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x , 5.0.x, 7.3.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x"),
     MappingStrings{"API.Brocade | Switch | TrunkingCapable "}
    ]
    boolean TrunkingCapable;

     [Description("QLSwitchEnabled is true, means that QuickLoop is supported on the hardware and is enabled.  This is false, means QuickLoop is supported on the hardware, but is not enabled.  This is not populated means, QuickLoop enabling or disabling is not supported on the hardware at all.\n\nSupported by Proxy Firmware versions: 2.6.x, 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 2.6.x, 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x"),
     MappingStrings{"API.Brocade | Switch | QLSwitchEnabled "}
    ]
    boolean QLSwitchEnabled;

     [Write(true),
     Description("Enable or disable the read link error status block (RLS) service on this switch.  The RLS service command is used to request that the destination N_Port or F_Port return the current contents of the link error status block associated with the designated N_Port.  The link error status block contains information regarding the number of link errors, link failures, loss-of-sync, loss of signal, and invalid characters that have been detected.\n\nIf RLSServiceEnable is true, it means that this is supported on the hardware and is enabled.  This is false, means this is supported on the hardware, but is not enabled.  This is not populated means, RLS enabling or disabling is not supported on the hardware at all.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x."),
     MappingStrings{"API.Brocade | Switch | RLSServiceEnable"}
    ]
    boolean RLSServiceEnable;

     [Write(true),
     Description("Enable or disable port error log for all ports on this switch.\n\n  If PortLogEnable is true, it means that this is supported on the hardware and is enabled.  This is false, means this is supported on the hardware, but is not enabled.  This is not populated means, port error log is not supported on the hardware at all.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x."),
     MappingStrings{"API.Brocade | Switch | PortLogEnable"}
    ]
    boolean PortLogEnable;

     [Description("Indicates the capabilities of the switch that are interesting from a managment perspective.\n\n\"Basic Configuration Service\" is a way for a management application to configure a fabric.\n\n\"Platform Configuration Service\" provides the ability to associate one or more nodes to a single platform for discovery and management.\n\n\"Topology Discovery Configuration Service\" provides the ability to discover Fibre Channel fabric topology.\n\n\"Unzoned Name Server Service\" gives a management application access to the Name Server database without zone constraints.\n\n\"Fabric Zone Service\" provides a mechanism to expose selected views of Name Server information to clients, similar to virtual private networks.\n\n\"Fabric Lock Service\" gives the ability to enforce locking.\n\n\"Basic Timer Service\" enables the switch to carry date and time information.\n\n\"Name Server RSCN Small\" is the ability for NS to send device RSCNs.\n\n\"Reliable Commit Service\" is a four-phase commit process that is used to enforce fabric-wide consistency when performing updates during zoning or security transactions.\n\nIf ManagementServiceCapabilities is not populated, it means that this is not supported by the hardware at all.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"},
     Values{"Unknown", "Other", "Basic Configuration Service", "Platform Configuration Service", "Topology Discovery Configuration Service", "Unzoned Name Server Service", "Fabric Zone Service", "Fabric Lock Service", "Basic Timer Service", "Name Server RSCN Small", "Reliable Commit Service"},
     MappingStrings{"API.Brocade | Switch | MSCapability"}
    ]
    uint16 ManagementServiceCapabilities[];

     [Write(true),
     Description("Enable or disable high availability of this switch.  Failover to a redundant CP is permitted only if high availability is enabled.  If this property is \'true,\'  HA is supported on the hardware and is enabled; if this property is \'false,\'  HA is supported on the hardware but is disabled; and if this property is not populated, HA is not supported on the hardware at all.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x , 5.0.x.\nSupported by Target Firmware versions: 4.1.x, 4.2.x, 4.4.x, 5.0.x"),
     MappingStrings{"API.Brocade | Switch | CPHAState"}
    ]
    boolean HighAvailabilityEnable;

};

// Brocade_SwitchCapabilities

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchCapabilities associates a switch instance with its service capabilities.")
    ]
class Brocade_SwitchCapabilities : CIM_ElementCapabilities {
    [Override("ManagedElement"),
     Min(1),
     Max(1),
     Description("The switch that has capabilities."),
     Key(true)
    ]
    Brocade_Switch REF ManagedElement;

     [Override("Capabilities"),
     Description("The capabilities associated with the switch."),
     Key(true)
    ]
    Brocade_SwitchServiceCapabilities REF Capabilities;

};

// CIM_SoftwareInstallationServiceCapabilities

    [Experimental(true),
     Version("2.8.1000"),
     Description("A subclass of capabilities that defines the capabilities of a SoftwareInstallationService. A single instance of SoftwareInstallationServiceCapabilities is associated with a SoftwareInstallationService using ElementCapabilities.")
    ]
class CIM_SoftwareInstallationServiceCapabilities : CIM_Capabilities {
    [Required(true),
     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. If a Job is created, then the methods in SoftwareInstallationService return a reference to that Job as the Job parameter."),
     ValueMap{"2", "3", "4", "5"},
     Values{"None supported", "Install From Software Identity", "Install from ByteStream", "Install from URI"},
     ModelCorrespondence{"CIM_SoftwareInstallationServiceCapabilities.SupportedSynchronousActions"}
    ]
    uint16 SupportedAsynchronousActions[];

     [Required(true),
     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."),
     ValueMap{"2", "3", "4", "5"},
     Values{"None supported", "Install From Software Identity", "Install from ByteStream", "Install from URI"},
     ModelCorrespondence{"CIM_SoftwareInstallationServiceCapabilities.SupportedAsynchronousActions"}
    ]
    uint16 SupportedSynchronousActions[];

     [Required(true),
     Description("An array containing a list of SoftwareIdentity.TargetType properties that this service \'knows\' how to install. TargetType is an application specific string which is invariant across version or name changes of the SoftwareIdentity and so can be used by a client to select Software Identities compatible with this service."),
     ModelCorrespondence{"CIM_SoftwareIdentity.TargetType"}
    ]
    string SupportedTargetTypes[];

     [Required(true),
     Description("This property indicates whether SoftwareInstallationService.InstallFromSoftwareIdentity supports adding a SoftwareIdentity to a SoftwareIdentityCollection.")
    ]
    boolean CanAddToCollection;

};

// Brocade_SwitchSoftwareInstallationServiceCapabilities

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Capabilities of Brocade_SwitchSoftwareInstallationService. A single instance of Brocade_SwitchSoftwareInstallationServiceCapabilities is associated to a Brocade_SwitchSoftwareInstallationService using Brocade_SwitchSoftwareInstallationServiceElementCapabilities.")
    ]
class Brocade_SwitchSoftwareInstallationServiceCapabilities : CIM_SoftwareInstallationServiceCapabilities {
    [Override("InstanceID"),
     Description("Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class."),
     Key(true)
    ]
    string InstanceID;

     [Override("SupportedAsynchronousActions"),
     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. If a Job is created, then the methods in SoftwareInstallationService return a reference to that Job as the Job parameter.Thisis set to Install From Software Identity"),
     ValueMap{"2", "3", "4", "5"},
     Values{"None supported", "Install From Software Identity", "Install from ByteStream", "Install from URI"},
     ModelCorrespondence{"CIM_SoftwareInstallationServiceCapabilities.SupportedSynchronousActions"},
     Required(true)
    ]
    uint16 SupportedAsynchronousActions[] = {3};

     [Override("SupportedSynchronousActions"),
     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.Since the Install From Software Identityis an Asynchronous operation it is set to None Supported"),
     ValueMap{"2", "3", "4", "5"},
     Values{"None supported", "Install From Software Identity", "Install from ByteStream", "Install from URI"},
     ModelCorrespondence{"CIM_SoftwareInstallationServiceCapabilities.SupportedAsynchronousActions"},
     Required(true)
    ]
    uint16 SupportedSynchronousActions[] = {2};

     [Override("SupportedTargetTypes"),
     Description("An array containing a list of SoftwareIdentity.TargetType properties that this service \'knows\' how to install."),
     Required(true),
     ModelCorrespondence{"CIM_SoftwareIdentity.TargetType"}
    ]
    string SupportedTargetTypes[] = {"Brocade_Switch"};

     [Override("CanAddToCollection"),
     Description("This property indicates whether SoftwareInstallationService.InstallFromSoftwareIdentity supports adding a SoftwareIdentity to a SoftwareIdentityCollection. "),
     Required(true)
    ]
    boolean CanAddToCollection = false;

};

// Brocade_SwitchSoftwareInstallationServiceElementCapabilities

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchSoftwareInstallationServiceElementCapabilities represents the association between Brocade_SwitchSoftwareInstallationService and Brocade_SwitchSoftwareInstallationServiceCapabilities. Note that the cardinality of the Brocade_SwitchSoftwareInstallationService reference is Min(1), Max(1). ElementCapabilities describes the existence requirements and context for the referenced instance of Brocade_SwitchSoftwareInstallationService. Specifically, the Brocade_SwitchSoftwareInstallationService MUST exist and provides the context for the Brocade_SwitchSoftwareInstallationServiceCapabilities.")
    ]
class Brocade_SwitchSoftwareInstallationServiceElementCapabilities : CIM_ElementCapabilities {
    [Override("ManagedElement"),
     Min(1),
     Max(1),
     Description("The Brocade_SwitchSoftwareInstallationService element."),
     Key(true)
    ]
    Brocade_SwitchSoftwareInstallationService REF ManagedElement;

     [Override("Capabilities"),
     Description("The Brocade_SwitchSoftwareInstallationServiceCapabilities object associated with the Brocade_SwitchSoftwareInstallationService ."),
     Key(true)
    ]
    Brocade_SwitchSoftwareInstallationServiceCapabilities REF Capabilities;

};

// CIM_ZoneCapabilities

    [Version("2.8.0"),
     Description("ZoneCapabilities exposes the capabilities for zoning of an AdminDomain.")
    ]
class CIM_ZoneCapabilities : CIM_Capabilities {
    [Description("The maximum length for the Zone Name that the AdminDomain is capable of supporting.")
    ]
    uint32 ZoneNameMaxLen;

     [Description("The ZoneNameFormat supported by the AdminDomain."),
     ValueMap{"0", "2", "3", "..", "0x8000.."},
     Values{"Unknown", "Numeric", "Alpha Numeric", "DMTF Reserved", "Vendor Reserved"}
    ]
    uint16 ZoneNameFormat;

     [Description("The maximum number of ZoneSets that the AdminDomain is capable of supporting.")
    ]
    uint32 MaxNumZoneSets;

     [Description("The maximum number of Zones that the AdminDomain is capable of supporting.")
    ]
    uint32 MaxNumZone;

     [Description("The maximum number of ZoneMembers that the AdminDomain is capable of supporting.")
    ]
    uint32 MaxNumZoneMembers;

     [Description("The maximum number of Zones per ZoneSet that the AdminDomain is capable of supporting.")
    ]
    uint32 MaxNumZonesPerZoneSet;

     [Description("The maximum number of ZoneAliases that the AdminDomain is capable of supporting.")
    ]
    uint32 MaxNumZoneAliases;

     [Description("The maximum number of ZoneMembers per ZoneAlias.")
    ]
    uint32 MaxNumZoneMembersPerZoneAlias;

     [Description("The maximum number of ZoneAliases per Zone.")
    ]
    uint32 MaxNumZoneAliasesPerZone;

     [Description("An array of enumerated integers that describe the supported Zone Member Types. For example, a vendor supporting only Permanent Address and Network Address as Zone Member Types would need to return an array of 2 elements, with the values 2 & 3"),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x8000.."},
     Values{"Unknown", "Other", "Permanent Address", "Network Address", "Switch Port ID", "Logical Port Group", "Connectivity Collection", "DMTF Reserved", "Vendor Reserved"},
     ArrayType("Indexed")
    ]
    uint16 SupportedConnectivityMemberTypes[];

     [Description("In case one of the array elements for SupportedConnectivityMemberTypes  has a value of 1, i.e Other, then this array lists the Other Supported Connectivity Member Types ")
    ]
    string OtherSupportedConnectivityMemberTypes[];

};

// Brocade_ZoneCapabilities

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This class contains constraints on the sizes and lengths allowed.  These are not implemented by Brocade.")
    ]
class Brocade_ZoneCapabilities : CIM_ZoneCapabilities {
    [Override("InstanceID"),
     Description("InstanceID opaquely identifies a unique instance of Brocade_ZoneCapabilities. The instance ID must be unique within a namespace."),
     Key(true)
    ]
    string InstanceID;

     [Override("ElementName"),
     Description("The user-friendly name for this instance of Brocade_ZoneCapabilities. This name can be used as an index property for a search of query."),
     Required(true)
    ]
    string ElementName;

     [Override("ZoneNameMaxLen"),
     Description("The maximum length for the zone name that the Brocade fabric is capable of supporting.")
    ]
    uint32 ZoneNameMaxLen;

     [Override("ZoneNameFormat"),
     Description("The zone name format supported by the Brocade fabric.  Brocade does not support this."),
     ValueMap{"0", "2", "3", "..", "0x8000.."},
     Values{"Unknown", "Numeric", "Alpha Numeric", "DMTF Reserved", "Vendor Reserved"}
    ]
    uint16 ZoneNameFormat = 3;

     [Override("MaxNumZoneSets"),
     Description("The maximum number of zone sets a Brocade fabric zone database is capable of supporting.  Brocade does not impose any limitation on the number of zoning members; this number is limited only by the size of the zone database.")
    ]
    uint32 MaxNumZoneSets;

     [Override("MaxNumZone"),
     Description("The maximum number of zones a Brocade fabric zone database is capable of supporting.  Brocade does not impose any limitation on the number of zoning members; this number is limited only by the size of the zone database.")
    ]
    uint32 MaxNumZone;

     [Override("MaxNumZoneMembers"),
     Description("The maximum number of zone members that the Brocade fabric zone database is capable of supporting.  Brocade does not impose any limitation on the number of zoning members; this number is limited only by the size of the zone database.")
    ]
    uint32 MaxNumZoneMembers;

     [Override("MaxNumZonesPerZoneSet"),
     Description("The maximum number of zones per zone set that the Brocade fabric is capable of supporting.  Brocade does not impose any limitation on the number of zoning members; this number is limited only by the size of the zone database.")
    ]
    uint32 MaxNumZonesPerZoneSet;

     [Description("The capacity of the zone database (in bytes) in the Brocade Fabric.\n\nSupported by Target Firmware versions: 3.1.x, 4.1.x, 4.2.x, and greater.")
    ]
    uint32 ZoneDbCapacity;

     [Description("The size of the zone database (in bytes) that is available for use.\n\nSupported by Target Firmware versions: 3.1.x, 4.1.x, 4.2.x, and greater.")
    ]
    uint32 AvailableZoneDbSize;

     [Description("This value specifies if Zoning is supported or not.")
    ]
    boolean isZoningSupported;

     [Override("SupportedConnectivityMemberTypes"),
     Description("An array of enumerated integers that describe the supported Zone Member Types. For example, a vendor supporting only Permanent Address and Network Address as Zone Member Types would need to return an array of 2 elements, with the values 2 & 3"),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "..", "0x8000.."},
     Values{"Unknown", "Other", "Permanent Address", "Network Address", "Switch Port ID", "Logical Port Group", "Connectivity Collection", "DMTF Reserved", "Vendor Reserved"},
     ArrayType("Indexed")
    ]
    uint16 SupportedConnectivityMemberTypes[] = {2, 4};

};

// Brocade_ZoneCapabilitiesInFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneCapabilitiesInFabric associates a fabric with its zoning capabilities.")
    ]
class Brocade_ZoneCapabilitiesInFabric : CIM_ElementCapabilities {
    [Override("ManagedElement"),
     Min(1),
     Max(1),
     Description("The fabric that has zoning capabilities."),
     Key(true)
    ]
    Brocade_Fabric REF ManagedElement;

     [Override("Capabilities"),
     Description("The zoning capabilities object associated with the fabric."),
     MappingStrings{"API.Brocade | Fabric | ZoningCapabilitiesOID"},
     Key(true)
    ]
    Brocade_ZoneCapabilities REF Capabilities;

};

// Brocade_FabricServiceCapabilities

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_FabricServiceCapabilities defines the fabric\'s capabilities, some of which are license-enabled.")
    ]
class Brocade_FabricServiceCapabilities : CIM_Capabilities {
    [Override("InstanceID"),
     Description("Within the scope of the instantiating Namespace, InstanceID opaquely and uniquely identifies an instance of this class."),
     Key(true)
    ]
    string InstanceID;

     [Description("Secure Fabric enables switches and devices in the fabric to form a zone of trust and performs policy-based enforcement of access control for switch, device, and management connections.  This capability requires a security license.\n\nSupported by Proxy Firmware versions: 2.6.x, 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x\n\nSecurity is not supported on firmware versions 3.0.x , 4.0.x and 7.3.x; this property returns a \"false\" value when they are used as proxies. "),
     MappingStrings{"API.Brocade | SecurityCapabilities | SecureModeEnabled"}
    ]
    boolean SecureModeEnabled;

};

// Brocade_FabricServiceCapabilitiesOfFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_FabricServiceCapabilitiesOfFabric associates a fabric with its service capabilities.")
    ]
class Brocade_FabricServiceCapabilitiesOfFabric : CIM_ElementCapabilities {
    [Override("ManagedElement"),
     Min(1),
     Max(1),
     Description("The fabric that has capabilities."),
     Key(true)
    ]
    Brocade_Fabric REF ManagedElement;

     [Override("Capabilities"),
     Description("The capabilities associated with the fabric."),
     Key(true)
    ]
    Brocade_FabricServiceCapabilities REF Capabilities;

};

// Brocade_SoftwareInstalledOnPlatform

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The SofwareInstalledOnPlatform relationship allows the identification of the platform on which HBA driver is installed and this association can return multiple instances.")
    ]
class Brocade_SoftwareInstalledOnPlatform : CIM_InstalledSoftwareIdentity {
    [Override("System"),
     Max(1),
     Description("Reference to the platform hosting a particular SoftwareIdentity."),
     Key(true)
    ]
    Brocade_Platform REF System;

     [Override("InstalledSoftware"),
     Description("Reference to the driver that is installed on the platform."),
     Key(true)
    ]
    Brocade_SoftwareIdentity REF InstalledSoftware;

};

// Brocade_SoftwareInstalledOnSwitch

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association represents the firmware that is installed on a switch.")
    ]
class Brocade_SoftwareInstalledOnSwitch : CIM_InstalledSoftwareIdentity {
    [Override("InstalledSoftware"),
     Description("Reference to the firmware that is installed."),
     Key(true)
    ]
    Brocade_SoftwareIdentity REF InstalledSoftware;

     [Override("System"),
     Description("Reference to the switch hosting a particular firmware."),
     Key(true)
    ]
    Brocade_Switch REF System;

};

// Brocade_SoftwareInstalledOnPCS

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association represents the firmware that is installed on a Brocade_PhysicalComputerSystem.")
    ]
class Brocade_SoftwareInstalledOnPCS : CIM_InstalledSoftwareIdentity {
    [Override("InstalledSoftware"),
     Description("Reference to the firmware that is installed."),
     Key(true)
    ]
    Brocade_SoftwareIdentity REF InstalledSoftware;

     [Override("System"),
     Description("Reference to the PCS hosting a particular firmware."),
     Key(true)
    ]
    Brocade_PhysicalComputerSystem REF System;

};

// CIM_NumericSensor

    [Version("2.8.0"),
     Description("A Numeric Sensor is capable of returning numeric readings and optionally supports thresholds settings.")
    ]
class CIM_NumericSensor : CIM_Sensor {
    [Description("The base unit of the values returned by this Sensor. All the values returned by this Sensor are represented in the units obtained by (BaseUnits * 10 raised to the power of the UnitModifier). For example, if BaseUnits is Volts and the UnitModifier is -6, then the units of the values returned are MicroVolts. However, if the RateUnits property is set to a value other than \"None\", then the units are further qualified as rate units. In the above example, if RateUnits is set to \"Per Second\", then the values returned by the Sensor are in MicroVolts/Second. The units apply to all numeric properties of the Sensor, unless explicitly overridden by the Units qualifier."),
     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"},
     Values{"Unknown", "Other", "Degrees C", "Degrees F", "Degrees K", "Volts", "Amps", "Watts", "Joules", "Coulombs", "VA", "Nits", "Lumens", "Lux", "Candelas", "kPa", "PSI", "Newtons", "CFM", "RPM", "Hertz", "Seconds", "Minutes", "Hours", "Days", "Weeks", "Mils", "Inches", "Feet", "Cubic Inches", "Cubic Feet", "Meters", "Cubic Centimeters", "Cubic Meters", "Liters", "Fluid Ounces", "Radians", "Steradians", "Revolutions", "Cycles", "Gravities", "Ounces", "Pounds", "Foot-Pounds", "Ounce-Inches", "Gauss", "Gilberts", "Henries", "Farads", "Ohms", "Siemens", "Moles", "Becquerels", "PPM (parts/million)", "Decibels", "DbA", "DbC", "Grays", "Sieverts", "Color Temperature Degrees K", "Bits", "Bytes", "Words (data)", "DoubleWords", "QuadWords", "Percentage"},
     ModelCorrespondence{"CIM_NumericSensor.UnitModifier", "CIM_NumericSensor.RateUnits"}
    ]
    uint16 BaseUnits;

     [Description("The unit multiplier for the values returned by this Sensor. All the values returned by this Sensor are represented in the units obtained by (BaseUnits * 10 raised to the power of the UnitModifier). For example, if BaseUnits is Volts and the Unit Modifier is -6, then the units of the values returned are MicroVolts. However, if the RateUnits property is set to a value other than \"None\", then the units are further qualified as rate units. In the above example, if RateUnits is set to \"Per Second\", then the values returned by the Sensor are in MicroVolts/Second. The units apply to all numeric properties of the Sensor, unless explicitly overridden by the Units qualifier."),
     ModelCorrespondence{"CIM_NumericSensor.BaseUnits", "CIM_NumericSensor.RateUnits"}
    ]
    sint32 UnitModifier;

     [Description("Specifies if the units returned by this Sensor are rate units. All the values returned by this Sensor are represented in the units obtained by (BaseUnits * 10 raised to the power of the UnitModifier). This is true unless this property (RateUnits) has a value different than \"None\". For example, if BaseUnits is Volts and the UnitModifier is -6, then the units of the values returned are MicroVolts. But, if the RateUnits property is set to a value other than \"None\", then the units are further qualified as rate units. In the above example, if RateUnits is set to \"Per Second\", then the values returned by the Sensor are in MicroVolts/Second. The units apply to all numeric properties of the Sensor, unless explicitly overridden by the Units qualifier. Any implementation of CurrentReading should be qualified with either a Counter or a Gauge qualifier, depending on the characteristics of the sensor being modeled."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},
     Values{"None", "Per MicroSecond", "Per MilliSecond", "Per Second", "Per Minute", "Per Hour", "Per Day", "Per Week", "Per Month", "Per Year"},
     ModelCorrespondence{"CIM_NumericSensor.UnitModifier", "CIM_NumericSensor.BaseUnits"}
    ]
    uint16 RateUnits;

     [Description("The current value indicated by the Sensor."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.5", "MIF.DMTF|Electrical Current Probe|001.5", "MIF.DMTF|Voltage Probe|001.5"}
    ]
    sint32 CurrentReading;

     [Description("NominalReading indicates the \'normal\' or expected value for the NumericSensor."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.6", "MIF.DMTF|Electrical Current Probe|001.6", "MIF.DMTF|Voltage Probe|001.6"}
    ]
    sint32 NominalReading;

     [Description("NormalMax provides guidance for the user as to the normal maximum range for the NumericSensor."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.7", "MIF.DMTF|Electrical Current Probe|001.7", "MIF.DMTF|Voltage Probe|001.7"}
    ]
    sint32 NormalMax;

     [Description("NormalMin provides guidance for the user as to the normal minimum range for the NumericSensor."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.8", "MIF.DMTF|Electrical Current Probe|001.8", "MIF.DMTF|Voltage Probe|001.8"}
    ]
    sint32 NormalMin;

     [Description("MaxReadable indicates the largest value of the measured property that can be read by the NumericSensor."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.9", "MIF.DMTF|Electrical Current Probe|001.9", "MIF.DMTF|Voltage Probe|001.9"}
    ]
    sint32 MaxReadable;

     [Description("MinReadable indicates the smallest value of the measured property that can be read by the NumericSensor."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.10", "MIF.DMTF|Electrical Current Probe|001.10", "MIF.DMTF|Voltage Probe|001.10"}
    ]
    sint32 MinReadable;

     [Description("Resolution indicates the ability of the Sensor to resolve differences in the measured property. The units for this measurement are determined by BaseUnit*UnitModifier/RateUnit."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.17", "MIF.DMTF|Electrical Current Probe|001.17", "MIF.DMTF|Voltage Probe|001.17"}
    ]
    uint32 Resolution;

     [Deprecated{"CIM_NumericSensor.Resolution", "CIM_NumericSensor.Accuracy"},
     Description("This property is being deprecated in lieu of using the Resolution and Accuracy properties. \nIndicates the tolerance of the Sensor for the measured property. Tolerance, along with Resolution and Accuracy, is used to calculate the actual value of the measured physical property. Tolerance may vary depending on whether the Device is linear over its dynamic range.")
    ]
    sint32 Tolerance;

     [Description("Indicates the accuracy of the Sensor for the measured property. Its value is recorded as plus/minus hundredths of a percent. Accuracy, along with Resolution, is used to calculate the actual value of the measured physical property. Accuracy may vary depending on whether the Device is linear over its dynamic range."),
     Units("Hundredths of Percent"),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.19", "MIF.DMTF|Electrical Current Probe|001.19", "MIF.DMTF|Voltage Probe|001.19"}
    ]
    sint32 Accuracy;

     [Description("Indicates that the Sensor is linear over its dynamic range.")
    ]
    boolean IsLinear;

     [Description("Indicates the margin built around the thresholds. This margin prevents unnecessary state changes when the Sensor reading may fluctuate very close to its thresholds. This could be due to the Sensor\'s tolerance/accuracy/resolution or due to environmental factors. Once a threshold is crossed, the state of the Sensor should change. However, the state should not fluctuate between the old and new states unless the Sensor\'s change in the reading exceeds the hysteresis value. The units for this measurement are determined by BaseUnit*UnitModifier/RateUnit.")
    ]
    uint32 Hysteresis;

     [Description("The Sensor\'s threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If Current Reading is between LowerThresholdNonCritical and Upper ThresholdNonCritical, then the Sensor is reporting a normal value. If CurrentReading is between LowerThresholdNonCritical and LowerThresholdCritical, then the CurrentState is NonCritical."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.11", "MIF.DMTF|Electrical Current Probe|001.11", "MIF.DMTF|Voltage Probe|001.11"}
    ]
    sint32 LowerThresholdNonCritical;

     [Description("The Sensor\'s threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If the CurrentReading is between LowerThresholdNonCritical and UpperThresholdNonCritical, then the Sensor is reporting a normal value. If the CurrentReading is between UpperThreshold NonCritical and UpperThresholdCritical, then the CurrentState is NonCritical."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.12", "MIF.DMTF|Electrical Current Probe|001.12", "MIF.DMTF|Voltage Probe|001.12"}
    ]
    sint32 UpperThresholdNonCritical;

     [Description("The Sensor\'s threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If the CurrentReading is between LowerThresholdCritical and Lower ThresholdFatal, then the CurrentState is Critical."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.13", "MIF.DMTF|Electrical Current Probe|001.13", "MIF.DMTF|Voltage Probe|001.13"}
    ]
    sint32 LowerThresholdCritical;

     [Description("The Sensor\'s threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If the CurrentReading is between UpperThresholdCritical and Upper ThresholdFatal, then the CurrentState is Critical."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.14", "MIF.DMTF|Electrical Current Probe|001.14", "MIF.DMTF|Voltage Probe|001.14"}
    ]
    sint32 UpperThresholdCritical;

     [Description("The Sensor\'s threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If the CurrentReading is below LowerThresholdFatal, then the Current State is Fatal."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.15", "MIF.DMTF|Electrical Current Probe|001.15", "MIF.DMTF|Voltage Probe|001.15"}
    ]
    sint32 LowerThresholdFatal;

     [Description("The Sensor\'s threshold values specify the ranges (min and max values) for determining whether the Sensor is operating under Normal, NonCritical, Critical or Fatal conditions. If the CurrentReading is above UpperThresholdFatal, then the Current State is Fatal."),
     MappingStrings{"MIF.DMTF|Temperature Probe|002.16", "MIF.DMTF|Electrical Current Probe|001.16", "MIF.DMTF|Voltage Probe|001.16"}
    ]
    sint32 UpperThresholdFatal;

     [Description("An array representing the thresholds supported by this Sensor."),
     ValueMap{"0", "1", "2", "3", "4", "5"},
     Values{"LowerThresholdNonCritical", "UpperThresholdNonCritical", "LowerThresholdCritical", "UpperThresholdCritical", "LowerThresholdFatal", "UpperThresholdFatal"}
    ]
    uint16 SupportedThresholds[];

     [Description("An array representing the thresholds that are currently enabled for this Sensor."),
     ValueMap{"0", "1", "2", "3", "4", "5"},
     Values{"LowerThresholdNonCritical", "UpperThresholdNonCritical", "LowerThresholdCritical", "UpperThresholdCritical", "LowerThresholdFatal", "UpperThresholdFatal"}
    ]
    uint16 EnabledThresholds[];

     [Description("An array representing the writable thresholds supported by Sensor."),
     ValueMap{"0", "1", "2", "3", "4", "5"},
     Values{"LowerThresholdNonCritical", "UpperThresholdNonCritical", "LowerThresholdCritical", "UpperThresholdCritical", "LowerThresholdFatal", "UpperThresholdFatal"}
    ]
    uint16 SettableThresholds[];

    [Description("This method resets the values of the thresholds to hardware defaults. This method returns 0 if successful, 1 if unsupported and any 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 RestoreDefaultThresholds();
     [Deprecated{"No Value"},
     Description("The use of this method is being deprecated, since Current senor reading can be retrieved through the GetInstance operation. \nFor a non-linear Sensor, the resolution, accuracy, tolerance and hysteresis vary as the current reading moves. This method can be used to get these factors for a given reading. It returns 0 if successful, 1 if unsupported, and any 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 GetNonLinearFactors([IN(true), Description("The sensor reading to get information for.")] sint32 SensorReading, [IN(false), OUT(true), Description("The accuracy of the reading.")] sint32 Accuracy, [IN(false), OUT(true), Description("The resolution of the reading.")] uint32 Resolution, [IN(false), OUT(true), Description("The tolerance of the reading.")] sint32 Tolerance, [IN(false), OUT(true), Description("The Hysteresis of the reading.")] uint32 Hysteresis);
};

// Brocade_TemperatureSensor

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_TemperatureSensor defines the properties of a sensor.  The sensor monitors the temperature of other components.  Note that for proxy firmware versions 3.0.x and 2.6.0, Brocade_TemperatureSensor instances might not show up, even though they exist within the fabric.  This is a limitation of the 3.0.x and 2.6.0 firmware.")
    ]
class Brocade_TemperatureSensor : CIM_NumericSensor {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name, which, in this case, is Brocade_Switch."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName;

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name, which is the WWN of the license switch."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

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

     [Override("DeviceID"),
     MaxLen(64),
     Description("An address or other identifying information to uniquely name the logical device.  In this case this value represents an index number of the sensor within the physical chassis."),
     Key(true)
    ]
    string DeviceID;

     [Override("SensorType"),
     Description("The type of the sensor, (for example, voltage or temperature sensor).  If the type is set to \"Other,\" the OtherSensorType description can be used to further identify the type. If the sensor has numeric readings, then the type of the sensor can be implicitly determined by the units.  A description of the different sensor types is as follows:\n\n* A Temperature Sensor measures the environmental temperature.\n\n* Voltage and Current Sensors measure electrical voltage and current readings.\n\n* A Tachometer measures speed/revolutions of a Device.  For example, a Fan Device can have an associated Tachometer that measures its speed.\n\n* A Counter is a general-purpose sensor that measures some numerical property of a device.  A Counter value can be cleared, but it never decreases.\n\n* A Switch Sensor has states like Open/Close, On/Off, or Up/Down.\n\nA Lock has states of Locked and Unlocked.\n\n* Humidity, Smoke Detection, and Air Flow Sensors measure the equivalent environmental characteristics.\n\n* A Presence Sensor detects the presence of a PhysicalElement."),
     ValueMap{"0", "1", "2"},
     Values{"Unknown", "Other", "Temperature"},
     ModelCorrespondence{"CIM_Sensor.OtherSensorTypeDescription"}
    ]
    uint16 SensorType;

     [Override("CurrentReading"),
     Description("Temperature sensor value, in Celsius.  This value might not be populated if the sensor is unreadable by the switch."),
     MappingStrings{"API.Brocade | PortModule | PortModuleTempSensorValueSet", "API.Brocade | SwitchEnclosure | SwitchTempSensorSet", "API.Brocade | SwitchEnclosure | SwitchTemperature | SensorValue"}
    ]
    sint32 CurrentReading;

     [Override("OperationalStatus"),
     Description("The operational status of the temperature sensor.  \"No Contact\" indicates that the sensor is missing."),
     ValueMap{"0", "1", "2", "3", "4", "6", "8", "9", "10", "12", "15"},
     Values{"Unknown", "Other", "OK", "Degraded", "Stressed", "Error", "Starting", "Stopping", "Stopped", "No Contact", "Dormant"},
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchTemperature | SensorState"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

};

// Brocade_PhysicalChassisComponent

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PhysicalChassisComponent is a concrete class that describes the physical characteristics of units (such as fans, sensors, and power supplies) that are contained within the chassis of the system.")
    ]
class Brocade_PhysicalChassisComponent : Brocade_PhysicalPackage {
    [Override("Manufacturer"),
     MaxLen(256),
     Description("The name of the organization responsible for producing the PhysicalChassisComponent."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalMfgName"}
    ]
    string Manufacturer = "Brocade Communications, Inc.";

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

     [Override("Tag"),
     MaxLen(256),
     Description("An arbitrary string that uniquely identifies the physical element and serves as the element\'s key.  The Tag property can contain information such as asset tag or serial number data.  This value varies depending on the type of physical package."),
     Key(true)
    ]
    string Tag;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_PhysicalChassisComponent";

     [Override("PartNumber"),
     MaxLen(256),
     Description("Part number of this package.  The part number is assigned by the organization (Brocade) responsible for producing or manufacturing the part.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade| SwitchEnclosure | SwitchBlower | FanPartNumber", "API.Brocade| PortModule | PortModulePartNumber", "API.Brocade| Blade | BladePartNumber", "API.Brocade| WWNCard | PartNumber", "API.Brocade| SwitchEnclosure|SwitchPowerSupply|PartNumber"}
    ]
    string PartNumber;

     [Override("SerialNumber"),
     MaxLen(64),
     Description("Brocade-assigned serial number.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchBlower | FanSerialNumber", "API.Brocade | SwitchEnclosure | SwitchPowerSupply| PSSerialNumber", "API.Brocade | PortModule | PortModuleSN", "API.Brocade | Blade | BladeSerialNumber", "API.Brocade | WWNCard | SerialNumber"}
    ]
    string SerialNumber;

     [Override("VendorPartNumber"),
     MaxLen(256),
     Description("Vendor-assigned part number of this package.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchBlower | VendorPartNumber", "API.Brocade | SwitchEnclosure | SwitchPowerSupply | VendorPartNumber", "API.Brocade| PortModule | VendorPartNumber", "API.Brocade| WWNCard | VendorPartNumber", "API.Brocade| Blade | VendorPartNumber"}
    ]
    string VendorPartNumber;

     [Override("VendorSerialNumber"),
     MaxLen(64),
     Description("Vendor-assigned serial number.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | SwitchEnclosure | SwitchBlower | FanSerialNumber", "API.Brocade | SwitchEnclosure | SwitchPowerSupply| PSSerialNumber", "API.Brocade| PortModule | PortModuleSN", "API.Brocade| Blade | BladeSerialNumber", "API.Brocade| WWNCard | VendorSerialNumber"}
    ]
    string VendorSerialNumber;

     [Override("SlotNumber"),
     Description("Slot number of the element.  This property can be null if the blade is in a fixed slot."),
     MappingStrings{"API.Brocade | Blade | BladeSlotNumber", "API.Brocade | SwitchEnclosure | SwitchTemperature | SensorSlotNumber"}
    ]
    uint16 SlotNumber;

     [Override("ManufactureDate"),
     Description("Date that this physical package was manufactured.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade| PowerSupply | PSMfgDate", "API.Brocade| CP | CPMfgDate", "API.Brocade| PortModule | PortModuleManufactureDate", "API.Brocade| SwitchEnclosure | SwitchBlower | FanMfgDate", "API.Brocade| WWNCard | WWNCardMfgDate", "API.Brocade| Blade | BladeMfgDate"}
    ]
    datetime ManufactureDate;

     [Override("UpdateDate"),
     Description("Date that this physical package was last updated.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade| PowerSupply | PSUpdateDate", "API.Brocade| SwitchEnclosure| SwitchBlower | FanUpdateDate", "API.Brocade| WWNCard| WWNCardUpdateDate", "API.Brocade| Blade | BladeUpdateDate", "API.Brocade| CP | CPUpdateDate"}
    ]
    datetime UpdateDate;

     [Override("Version"),
     MaxLen(64),
     Description("The OEM/vendor-assigned version number.  This property is not populated for Brocade_PhysicalChassisComponent subclass instances that represent temperature sensors."),
     MappingStrings{"API.Brocade | PortModule | PortModuleRevision", "API.Brocade | Blade | VendorRevision", "API.Brocade | SwitchEnclosure | SwitchBlower | VendorRevision", "API.Brocade | SwitchEnclosure | SwitchPowerSupply | VendorRevision", "API.Brocade | WWNCard | VendorRevision"}
    ]
    string Version;

};

// Brocade_TemperatureSensorPhysicalChassisComponent

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The sensor associated with its physical properties.")
    ]
class Brocade_TemperatureSensorPhysicalChassisComponent : CIM_PackageDependency {
    [Override("Antecedent"),
     Description("The temperature sensor."),
     Key(true)
    ]
    Brocade_TemperatureSensor REF Antecedent;

     [Override("Dependent"),
     Description("The physical properties of the temperature sensor."),
     Key(true)
    ]
    Brocade_PhysicalChassisComponent REF Dependent;

};

// Brocade_BladeSensor

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Sensors are installed on blades in the chassis, to measure temperature and evaluate the efficacy of the cooling system.  This association indicates that relationship.")
    ]
class Brocade_BladeSensor : CIM_PackageDependency {
    [Override("Antecedent"),
     Description("The sensor."),
     Key(true)
    ]
    Brocade_TemperatureSensor REF Antecedent;

     [Override("Dependent"),
     Description("The blade for which information is measured by the sensor."),
     Key(true)
    ]
    Brocade_Blade REF Dependent;

};

// Brocade_RemoteServiceMgmtAccessPoint

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_RemoteServiceMgmtAccessPoint represents the access point for out-of-band access (via IP) from a management agent to a Brocade_MgmtAccessPoint of a switch in the fabric.")
    ]
class Brocade_RemoteServiceMgmtAccessPoint : CIM_RemoteServiceAccessPoint {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s CreationClassName.  This is Brocade_ManagementServer."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_ManagementServer";

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

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_RemoteServiceMgmtAccessPoint";

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

     [Override("AccessInfo"),
     Description("IP address of Ethernet port."),
     MappingStrings{"API.Brocade | Switch | OutBandAddr", "API.Brocade | Switch | EmbSwBaseIPAddr"},
     ModelCorrespondence{"CIM_RemoteServiceAccessPoint.InfoFormat"}
    ]
    string AccessInfo;

     [Override("InfoFormat"),
     Description("An enumerated integer describing the format and interpretation of the AccessInfo property."),
     ValueMap{"1", "2", "3", "4", "32768..65535"},
     Values{"Other", "Host Name", "IPv4 Address", "IPv6 Address", "Vendor Reserved"},
     ModelCorrespondence{"CIM_RemoteServiceAccessPoint.OtherInfoFormatDescription"}
    ]
    uint16 InfoFormat;

     [Description("An enumeration that defines the application-layer protocol that is used to connect to the target switch."),
     ValueMap{"0", "1", "2", "3", "4"},
     Values{"RPC", "HTTP", "Secure RPC", "HTTPS", "Other"}
    ]
    uint16 ProtocolType;

};

// Brocade_SwitchAccessServiceMgmtAccessPoint

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This is an association between a SwitchAccessService and a SwitchAccessPoint, indicating that the referenced SAP is utilized by the service.")
    ]
class Brocade_SwitchAccessServiceMgmtAccessPoint : CIM_ServiceSAPDependency {
    [Override("Antecedent"),
     Description("The access point used by the agent to connect to a switch."),
     Key(true)
    ]
    Brocade_RemoteServiceMgmtAccessPoint REF Antecedent;

     [Override("Dependent"),
     Description("The access point on the switch that is used for management access."),
     Key(true)
    ]
    Brocade_SwitchAccessService REF Dependent;

};

// CIM_ProtocolControllerForPort

    [Association(true),
     Version("2.8.0"),
     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.")
    ]
class CIM_ProtocolControllerForPort : CIM_ProtocolControllerForDevice {
    [Override("Antecedent"),
     Description("The ProtocolController."),
     Key(true)
    ]
    CIM_ProtocolController REF Antecedent;

     [Override("Dependent"),
     Description("The LogicalPort \'behind\' the ProtocolController."),
     Key(true)
    ]
    CIM_LogicalPort REF Dependent;

};

// Brocade_PCSIsSpare

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The IsSpare association indicates an element that can spare or replace any of the elements in the referenced RedundancySet. If the \'spare\' is itself a Collection, this indicates that each of the \'spare\' members can replace any of the elements in the RedundancySet. In the case of a collection all of the values in the properties of this association MUST apply to all members of the Collection. \nIn the case of a collection, all of the values in the properties of this association (such as FailoverSupported) MUST apply to all members. If this is not true, then the Collection SHOULD be broken down into smaller sets (and the IsSpare association defined for each of these smallar sets), such that the properties of this association apply to all collected members.")
    ]
class Brocade_PCSIsSpare : CIM_IsSpare {
    [Override("Antecedent"),
     Description("A ManagedElement or Collection of elements acting as a spare."),
     Key(true)
    ]
    Brocade_PhysicalComputerSystem REF Antecedent;

     [Override("Dependent"),
     Description("The set of elements that ARE spared."),
     Key(true)
    ]
    Brocade_PCSRedundancySet REF Dependent;

     [Override("SpareStatus"),
     Description("Indicates that state of the \'spare\'. \n- Hot Standby. The element is available \'immediately\' to become a functioning member of the set. Such an element is powered on and has been initialized for it\'s role as a spare. \n- Cold Standby. The element is not available to join the set without action to prepare it."),
     ValueMap{"0", "2", "3"},
     Values{"Unknown", "Hot Standby", "Cold Standby"},
     MappingStrings{"MOF.DMTF|CIM_IsSpare.HotStandby|2.7.1000"}
    ]
    uint8 SpareStatus = 2;

     [Override("FailoverSupported"),
     Description("Indicates whether or not the failover to the spare is a manual or automatic."),
     ValueMap{"0", "2", "3", "4"},
     Values{"Unknown", "Automatic", "Manual", "Both Manual and Automatic"}
    ]
    uint8 FailoverSupported = 4;

};

// CIM_HostedAccessPoint

    [Association(true),
     Version("2.8.0"),
     Description("CIM_HostedAccessPoint is an association between a Service AccessPoint and the System on which it is provided. The cardinality of this association is 1-to-many and is weak with respect to the System. Each System may 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 hosting the ServiceAccessPoint.")
    ]
class CIM_HostedAccessPoint : CIM_HostedDependency {
    [Override("Antecedent"),
     Min(1),
     Max(1),
     Description("The hosting System."),
     Key(true)
    ]
    CIM_System REF Antecedent;

     [Override("Dependent"),
     Weak(true),
     Description("The SAP(s) that are hosted on this System."),
     Key(true)
    ]
    CIM_ServiceAccessPoint REF Dependent;

};

// Brocade_SwitchFCPortOfPCSNetworkPort

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPortOfPCSNetworkPort defines a Brocade_SwitchFCPort associated to a Brocade_PCSNetworkPort.")
    ]
class Brocade_SwitchFCPortOfPCSNetworkPort : CIM_HostedDependency {
    [Override("Antecedent"),
     Max(1),
     Description("The scoping ManagedElement."),
     Key(true)
    ]
    Brocade_PCSNetworkPort REF Antecedent;

     [Override("Dependent"),
     Description("The hosted ManagedElement."),
     Key(true)
    ]
    Brocade_SwitchFCPort REF Dependent;

};

// CIM_HostedService

    [Association(true),
     Version("2.8.0"),
     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.")
    ]
class CIM_HostedService : CIM_HostedDependency {
    [Override("Antecedent"),
     Min(1),
     Max(1),
     Description("The hosting System."),
     Key(true)
    ]
    CIM_System REF Antecedent;

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

};

// Brocade_SwitchInPCS

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchInPCS defines a Brocade_Switch within a Brocade_PhysicalComputerSystem.")
    ]
class Brocade_SwitchInPCS : CIM_HostedDependency {
    [Override("Antecedent"),
     Max(1),
     Description("The scoping ManagedElement."),
     Key(true)
    ]
    Brocade_PhysicalComputerSystem REF Antecedent;

     [Override("Dependent"),
     Description("The hosted ManagedElement."),
     Key(true)
    ]
    Brocade_Switch REF Dependent;

};

// Brocade_AlternateLoginInMonitor

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This is an association between a connection monitor and the alternate login.")
    ]
class Brocade_AlternateLoginInMonitor : CIM_HostedDependency {
    [Override("Antecedent"),
     Min(1),
     Max(1),
     Description("The monitor."),
     Key(true)
    ]
    Brocade_ConnectionMonitor REF Antecedent;

     [Override("Dependent"),
     Description("The alternate login used by the monitor."),
     Key(true)
    ]
    Brocade_AlternateLogin REF Dependent;

};

// CIM_HostedCollection

    [Association(true),
     Version("2.7.0"),
     Description("HostedCollection defines a SystemSpecificCollection in the context of a scoping System. It represents a Collection that only has meaning in the context of a System, and/or whose elements are restricted by the definition of the System.")
    ]
class CIM_HostedCollection : CIM_HostedDependency {
    [Override("Antecedent"),
     Min(1),
     Max(1),
     Description("The scoping system."),
     Key(true)
    ]
    CIM_System REF Antecedent;

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

};

// Brocade_FCPortSANProtocolEndPoint

    [Association(true),
     Aggregation(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_FCPortSANProtocolEndPoint represents an association between a port and the end point a port uses to access the storage area network.")
    ]
class Brocade_FCPortSANProtocolEndPoint : CIM_DeviceSAPImplementation {
    [Override("Antecedent"),
     Aggregate(true),
     Description("The port."),
     Key(true)
    ]
    Brocade_FCPort REF Antecedent;

     [Override("Dependent"),
     Description("The protocol end point."),
     Key(true)
    ]
    Brocade_SANProtocolEndPoint REF Dependent;

};

// CIM_ProtocolEndpoint

    [Version("2.8.0"),
     Description("A communication point from which data may be sent or received. ProtocolEndpoints link system/computer interfaces to LogicalNetworks.")
    ]
class CIM_ProtocolEndpoint : CIM_ServiceAccessPoint {
    [Override("Description"),
     MappingStrings{"MIB.IETF|IF-MIB.ifDescr"},
     Description("The Description property provides a textual description of the object.")
    ]
    string Description;

     [Override("OperationalStatus"),
     MappingStrings{"MIB.IETF|IF-MIB.ifOperStatus"},
     Description("Indicates the current status(es) of the element. Various health and operational statuses are defined. Many of the enumeration\'s values are self- explanatory. However, a few are not and are described in more detail. \n\"Stressed\" indicates that the element is functioning, but needs attention. Examples of \"Stressed\" states are overload, overheated, etc. \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 element\'s state and configuration may need to be updated. \n\"Dormant\" indicates that the element is inactive or quiesced. \n\"Supporting Entity in Error\" describes that this element may 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 the element has completed its operation. This value should be combined with either OK, Error, or Degraded so that a client can till if the complete operation passed (Completed with OK), and failure (Completed with Error). Completed with Degraded would imply the operation finished, but did not complete OK or report an error. \n\"Power Mode\" indicates 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 since it required the DEPRECATED qualifier. Due to the widespread use of the existing Status property in management applications, it is strongly RECOMMENDED that providers/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 (since it is single-valued) SHOULD also provide the primary status of the element."),
     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"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

     [Override("EnabledState"),
     MappingStrings{"MIB.IETF|IF-MIB.ifAdminStatus"},
     Description("EnabledState is an integer enumeration that indicates the enabled/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/disabled states: \nEnabled (2) indicates that the element is/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 doesn\'t support being enabled/disabled. \nEnabled but Offline (6) indicates that the element may 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 may be completing commands, but will queue any new requests. \nQuiesce (9) indicates that the element is enabled but in a restricted mode. The element\'s behavior is similar to the Enabled state, but it only processes 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."),
     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"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.OtherEnabledState"}
    ]
    uint16 EnabledState;

     [Override("TimeOfLastStateChange"),
     MappingStrings{"MIB.IETF|IF-MIB.ifLastChange"},
     Description("The date/time when the element\'s EnabledState 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;

     [Override("Name"),
     Description("A string which 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 chosen is described in the NameFormat property of this class."),
     MaxLen(256),
     Key(true)
    ]
    string Name;

     [Description("NameFormat contains the naming heuristic that is chosen to ensure that the value of the Name property is unique. For example, one might choose to prepend the name of the port or interface with the Type of ProtocolEndpoint that this instance is (e.g., IPv4) followed by an underscore."),
     MaxLen(256)
    ]
    string NameFormat;

     [Deprecated{"CIM_ProtocolEndpoint.ProtocolIFType"},
     Description("ProtocolType is an enumeration providing information to categorize and classify different instances of this class. For most instances, information in this enumeration and the subclass\' definition 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). Hence, this property is needed to define the type of Endpoint. \n\nThis property is deprecated in lieu of the ProtocolIFType enumeration. This is done to have better alignment between the IETF\'s IF-MIB and this CIM class."),
     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"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}
    ]
    uint16 ProtocolType;

     [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. 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."),
     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", "..4095", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109", "4110", "4111", "4112", "4113", "4114", "4115", "..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", "DMTF Reserved", "Vendor Reserved"},
     MappingStrings{"MIB.IETF|IF-MIB.ifType"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}
    ]
    uint16 ProtocolIFType;

     [Description("A string describing the type of ProtocolEndpoint when the Type property of this class (or any of its subclasses) is set to 1 (i.e., \"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;

     [Experimental(true),
     Description("A boolean indicating whether the instrumentation supports the BroadcastReset method."),
     ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastReset"}
    ]
    boolean BroadcastResetSupported;

    [Experimental(true),
     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."),
     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"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastResetSupported"}
    ]
    uint32 BroadcastReset();
};

// Brocade_MgmtAccessPoint

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("A communication point from which management data can be sent or received.  One instance of Brocade_MgmtAccessPoint exists for every in-band or out-of-band access to Brocade_Switch and provides information about the access point into Brocade_Switch.\n\nIf a connection to a fabric becomes inactive, only the instance of Brocade_MgmtAccessPoint to the fabric\'s proxy is shown; otherwise, instances from all switches in the fabric are shown.  Only the instance from the proxy switch has an association with the Brocade_RemoteServiceMgmtAccessPoint instance, via the the Brocade_SwitchConnection association class. In case of 7.3.x or 7.4.x, there will be three instances of MgmtAccessPoints, one for MGMT1 Ethernet Port, one for MGMT2 Ethernet Port and the other one for Virtual Mgmt port. If all the three have the same IP address then the MgmtAccessPoint corresponding to Virtual Mgmt port will be associated to Brocade_RemoteServiceMgmtAccessPoint through Brocade_SwitchConnection. If the connection is inactive, there will be only one instance of MgmtAccessPoint corresponding to the IP address used to connect to the fabric")
    ]
class Brocade_MgmtAccessPoint : CIM_ProtocolEndPoint {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s CreationClassName."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName;

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

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_MgmtAccessPoint";

     [Override("Name"),
     MaxLen(256),
     Description("A string that identifies this ProtocolEndpoint with either a port or an interface on a device.  The IP address should be specified here.  To ensure uniqueness, the Name property should be prepended or appended with information from the Type or OtherTypeDescription properties.  The method chosen is described in the NameFormat property of this class (for example, IPv4;10.32.123.12). In case of 7.3.x or7.4.x, this property will be a combination of <ProtocolIFType>;<IPaddress>;<MgmtPortIndex>;<Type(Virtual/Real)>. provided, if the connection is activeFor eg 6;10.32.123.12;1;1. Type \'1\' stands for Real Mgmt Port and \'0\' stands for Virtual Mgmt Port."),
     MappingStrings{"API.Brocade | Switch | InBandAddr", "API.Brocade | Switch | OutBandAddr", "API.Brocade | Switch | EmbSwBaseIPAddr", "API.Brocade | CP | IPAddress"},
     Key(true)
    ]
    string Name;

     [Override("NameFormat"),
     MaxLen(256),
     Description("NameFormat contains the naming heuristic that is chosen 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 this instance (IPv4 or FCIP), followed by a semicolon. In case of 7.3.x or or 7.4.x, NameFormat will be as follows, <ProtocolIFType>;<IPaddress>;<MgmtPortIndex>;<Type(Virtual/Real)>provided, if the connection is active")
    ]
    string NameFormat;

     [Override("ProtocolIFType"),
     Description("ProtocolIFType is the type of interface of this endpoint.\nIf the interface is an out-of-band access interface, ProtocolIfType is \"Ethernet CSMA/CD\".  If the interface is an in-band access interface, ProtocolIfType is \"Fibre Channel\"."),
     ValueMap{"0", "1", "6", "55", "4096", "4097", "4098", "32768"},
     Values{"Unknown", "Other", "Ethernet CSMA/CD", "Fibre Channel", "IPv4", "IPv6", "IPv4/v6", "FCIP"},
     MappingStrings{"MIB.IETF|IF-MIB.ifType"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}
    ]
    uint16 ProtocolIFType;

     [Write(true),
     Description("The in-band or out-of-band address of the switch or address of the CP, formatted in dot notation.  If no IP address is present, an empty string is returned for this value.\n\nThis property is NOT writeable for instances associated with a CP.  Also the reserved value of 0.0.0.0 (\'default route\') is not allowed.\nThis property is NOT writeable for instances associated with proxy and target switches with 7.3.x firmware if ProtocolIFType = 55\n"),
     MappingStrings{"API.Brocade | Switch | InBandAddr", "API.Brocade | Switch | OutBandAddr", "API.Brocade | Switch | EmbSwBaseIPAddr", "API.Brocade | CP | IPAddress"}
    ]
    string Address;

     [Write(true),
     Description("IP subnet mask of Ethernet interface.  If no IP address is present, an empty string is returned for this value.  This is the mask for the starting IP address of the IPSubnet, formatted in dot notation (for example, \'255.255.252.0\').  This property is NOT writeable for instances associated with a CP.\nThis property is NOT writeable for instances associated with proxy and target switches with 7.3.x firmware if ProtocolIFType = 55\n"),
     MappingStrings{"API.Brocade | Switch | OutBandNetMask", "API.Brocade | Switch | InBandNetMask", "API.Brocade | CP | NetMask"}
    ]
    string NetMask;

     [Write(true),
     Description("IP address of default gateway, formatted in dot notation.  If no IP address is present, an empty string is returned for this value.\n\nWhen the in-band gateway IP address is changed, the out-of-band gateway IP address is also updated with the same value, as they both share the same IP adddress.  This property is NOT writeable for instances associated with a CP.  The reserved value of 0.0.0.0 (\'default route\') is not allowed.Setting gateway on switches running on a chassis with multiple chassis instances is not supported"),
     MappingStrings{"API.Brocade | Switch | IPGateway", "API.Brocade | CP | IPGateway"}
    ]
    string Gateway;

     [Required(true),
     Override("BroadcastResetSupported"),
     Description("A boolean indicating whether the instrumentation supports the BroadcastReset method."),
     ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastReset"}
    ]
    boolean BroadcastResetSupported = false;

};

// Brocade_CPMgmtAccessPoint

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Deprecated{"Brocade_PCSMgmtAccessPoint"},
     Description("An association between a CP MgmtAccessPoint and the CP that provides that access point for management access.")
    ]
class Brocade_CPMgmtAccessPoint : CIM_DeviceSAPImplementation {
    [Override("Antecedent"),
     Description("The CP."),
     Key(true)
    ]
    Brocade_CP REF Antecedent;

     [Override("Dependent"),
     Description("The management access point implemented using the logical device."),
     Key(true)
    ]
    Brocade_MgmtAccessPoint REF Dependent;

};

// Brocade_FanSensor

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Sensors are installed near fans in the chassis, to measure temperature and evaluate the efficacy of the cooling system.  This association indicates that relationship.")
    ]
class Brocade_FanSensor : CIM_AssociatedSensor {
    [Override("Antecedent"),
     Description("The sensor."),
     Key(true)
    ]
    Brocade_TemperatureSensor REF Antecedent;

     [Override("Dependent"),
     Description("The logical device for which information is measured by the sensor."),
     Key(true)
    ]
    Brocade_Fan REF Dependent;

};

// Brocade_PowerSupplySensor

    [Association(true),
    Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Power supply units have sensors installed nearby, to measure temperature.  This association indicates that relationship.")
    ]
class Brocade_PowerSupplySensor : CIM_AssociatedSensor {
    [Override("Antecedent"),
     Description("The sensor."),
     Key(true)
    ]
    Brocade_TemperatureSensor REF Antecedent;

     [Override("Dependent"),
     Description("The logical device for which information is measured by the sensor."),
     Key(true)
    ]
    Brocade_PowerSupply REF Dependent;

};

// CIM_Slot

    [Version("2.8.0"),
     Description("The Slot class represents Connectors into which Packages are inserted. For example, a PhysicalPackage that is a DiskDrive may be inserted into an SCA \'Slot\'. As another example, a Card (subclass of PhysicalPackage) may be inserted into a 16-, 32-, or 64-bit expansion \'Slot\' on a HostingBoard. PCI or PCMCIA Type III Slots are examples of the latter.")
    ]
class CIM_Slot : CIM_PhysicalConnector {
    [Override("ConnectorType"),
     MappingStrings{"MIF.DMTF|System Slot|005.2"},
     Description("An array of integers defining the type of PhysicalConnector. An array is specified to allow the description of \'combinations\' of Connector information. For example, one array entry could specify RS-232 (value=25), another DB-25 (value=23) and a third entry define the Connector as \"Male\" (value=2). \nThis single property is being deprecated in lieu of using separate properties to describe the various aspects of the connector. The separation allows for a more generic means of describing the connectors. Obsolete connectors were intentionally removed from the new list."),
     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"},
     Values{"Unknown", "Other", "Male", "Female", "Shielded", "Unshielded", "SCSI (A) High-Density (50 pins)", "SCSI (A) Low-Density (50 pins)", "SCSI (P) High-Density (68 pins)", "SCSI SCA-I (80 pins)", "SCSI SCA-II (80 pins)", "Fibre Channel (DB-9, Copper)", "Fibre Channel (Optical Fibre)", "Fibre Channel SCA-II (40 pins)", "Fibre Channel SCA-II (20 pins)", "Fibre Channel BNC", "ATA 3-1/2 Inch (40 pins)", "ATA 2-1/2 Inch (44 pins)", "ATA-2", "ATA-3", "ATA/66", "DB-9", "DB-15", "DB-25", "DB-36", "RS-232C", "RS-422", "RS-423", "RS-485", "RS-449", "V.35", "X.21", "IEEE-488", "AUI", "UPT Category 3", "UPT Category 4", "UPT Category 5", "BNC", "RJ11", "RJ45", "Fiber MIC", "Apple AUI", "Apple GeoPort", "PCI", "ISA", "EISA", "VESA", "PCMCIA", "PCMCIA Type I", "PCMCIA Type II", "PCMCIA Type III", "ZV Port", "CardBus", "USB", "IEEE 1394", "HIPPI", "HSSDC (6 pins)", "GBIC", "DIN", "Mini-DIN", "Micro-DIN", "PS/2", "Infrared", "HP-HIL", "Access.bus", "NuBus", "Centronics", "Mini-Centronics", "Mini-Centronics Type-14", "Mini-Centronics Type-20", "Mini-Centronics Type-26", "Bus Mouse", "ADB", "AGP", "VME Bus", "VME64", "Proprietary", "Proprietary Processor Card Slot", "Proprietary Memory Card Slot", "Proprietary I/O Riser Slot", "PCI-66MHZ", "AGP2X", "AGP4X", "PC-98", "PC-98-Hireso", "PC-H98", "PC-98Note", "PC-98Full", "SSA SCSI", "Circular", "On Board IDE Connector", "On Board Floppy Connector", "9 Pin Dual Inline", "25 Pin Dual Inline", "50 Pin Dual Inline", "68 Pin Dual Inline", "On Board Sound Connector", "Mini-jack", "PCI-X", "Sbus IEEE 1396-1993 32 bit", "Sbus IEEE 1396-1993 64 bit", "MCA", "GIO", "XIO", "HIO", "NGIO", "PMC", "MTRJ", "VF-45", "Future I/O", "SC", "SG", "Electrical", "Optical", "Ribbon", "GLM", "1x9", "Mini SG", "LC", "HSSC", "VHDCI Shielded (68 pins)", "InfiniBand", "AGP8X"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_PhysicalConnector.OtherTypeDescription"}
    ]
    uint16 ConnectorType[];

     [Override("PoweredOn"),
     MappingStrings{"MIF.DMTF|System Slot|005.13"},
     Description("Boolean indicating that the PhysicalElement is powered on (TRUE), or is currently off (FALSE).")
    ]
    boolean PoweredOn;

     [Description("Boolean indicating whether the Slot supports hot-plug of adapter Cards.")
    ]
    boolean SupportsHotPlug;

     [Description("Maximum height of an adapter Card that can be inserted into the Slot, in inches."),
     Units("Inches")
    ]
    real32 HeightAllowed;

     [Description("Maximum length of an adapter Card that can be inserted into the Slot, in inches."),
     Units("Inches")
    ]
    real32 LengthAllowed;

     [Description("Maximum bus width of adapter Cards that can be inserted into this Slot, in bits. If the value is \'unknown\', enter 0. If the value is other than 8, 16, 32, 64 or 128, enter 1."),
     Units("Bits"),
     ValueMap{"0", "1", "8", "16", "32", "64", "128"},
     MappingStrings{"MIF.DMTF|System Slot|005.3"}
    ]
    uint16 MaxDataWidth;

     [Description("An array of enumerated integers indicating the Vcc voltage supported by this Slot."),
     ValueMap{"0", "1", "2", "3"},
     Values{"Unknown", "Other", "3.3V", "5V"},
     MappingStrings{"MIF.DMTF|System Slot|005.9"}
    ]
    uint16 VccMixedVoltageSupport[];

     [Description("An array of enumerated integers indicating the Vpp voltage supported by this Slot."),
     ValueMap{"0", "1", "2", "3", "4"},
     Values{"Unknown", "Other", "3.3V", "5V", "12V"},
     MappingStrings{"MIF.DMTF|System Slot|005.10"}
    ]
    uint16 VppMixedVoltageSupport[];

     [Description("Maximum thermal dissipation of the Slot in milliwatts."),
     Units("MilliWatts"),
     MappingStrings{"MIF.DMTF|System Slot|005.11"}
    ]
    uint32 ThermalRating;

     [Description("Boolean indicating that this Slot is physically unique and may hold special types of hardware, e.g. a graphics processor slot. If set to TRUE, then the property, Special PurposeDescription (a string), should specify the nature of the uniqueness or purpose of the Slot."),
     ModelCorrespondence{"CIM_Slot.PurposeDescription"}
    ]
    boolean SpecialPurpose;

     [Description("A free-form string describing that this Slot is physically unique and may hold special types of hardware. This property only has meaning when the corresponding boolean property, SpecialPurpose, is set to TRUE."),
     ModelCorrespondence{"CIM_Slot.SpecialPurpose"}
    ]
    string PurposeDescription;

     [Description("The Number property indicates the physical slot number, which can be used as an index into a system slot table, whether or not that slot is physically occupied."),
     MappingStrings{"MIF.DMTF|System Slot|005.1"}
    ]
    uint16 Number;

     [Deprecated{"CIM_PhysicalElement.PoweredOn"},
     Description("A boolean indicating whether the Slot is currently powered (TRUE) or not (FALSE)."),
     MappingStrings{"MIF.DMTF|System Slot|005.13"}
    ]
    boolean Powered;

     [Description("A boolean indicating whether the switch state of the Slot is currently open (TRUE) or closed (FALSE). This switch state determines whether the contents of the Slot can be hot-plugged."),
     MappingStrings{"MIF.DMTF|System Slot|005.15"}
    ]
    boolean OpenSwitch;

};

// CIM_PackageInSlot

    [Association(true),
     Version("2.6.0"),
     Description("Complex networking devices often are Chassis-based. These Chassis allow for enhancement and/or augmentation of their base functionality by accepting additional Chassis devices, similar to accepting functionality in the form of adding Cards. This association models this capability.")
    ]
class CIM_PackageInSlot : CIM_PackageInConnector {
    [Override("Antecedent"),
     Description("The Slot into which the PhysicalPackage is inserted."),
     Key(true)
    ]
    CIM_Slot REF Antecedent;

     [Override("Dependent"),
     Max(1),
     Description("The Package in the Slot."),
     Key(true)
    ]
    CIM_PhysicalPackage REF Dependent;

};

// CIM_ActiveConnection

    [Association(true),
     Version("2.7.0"),
     Description("This association defines a connection that is currently communicating, or is configured to communicate, between two ServiceAccessPoints. It is used when the connection is not treated as a ManagedElement itself (i.e., with Status, statistics, etc.), but its existence is known. The SAPs that are connected are typically at the same networking or application layer.")
    ]
class CIM_ActiveConnection : CIM_SAPSAPDependency {
    [Override("Antecedent"),
     Description("A ServiceAccessPoint that is configured to communicate and/or is actively communicating with the Dependent SAP. In a unidirectional connection, this is the SAP which is transmitting."),
     Key(true)
    ]
    CIM_ServiceAccessPoint REF Antecedent;

     [Override("Dependent"),
     Description("A second SeriveAccessPoint that is/can communicate with the Antecedent SAP. In a unidirectional connection, this is the SAP that is receiving the communication."),
     Key(true)
    ]
    CIM_ServiceAccessPoint REF Dependent;

     [Deprecated{"No value"},
     Description("The type of traffic that is carried over this connection. This property is deprecated since it is incorrectly placed on the association. Unicast, broadcast or other traffic types are not a function of the connection between the referenced endpoints, but on the addressing, protocol, and basic functionality of the endpoints."),
     ValueMap{"0", "1", "2", "3", "4", "5"},
     Values{"Unknown", "Other", "Unicast", "Broadcast", "Multicast", "Anycast"},
     ModelCorrespondence{"CIM_ActiveConnection.OtherTrafficDescription"}
    ]
    uint16 TrafficType;

     [Deprecated{"No value"},
     Description("A string describing the type of traffic that is being carried over this instance when its Type property is set to 1 (e.g., \'Other\'). This property is deprecated since it is incorrectly placed on the association. Unicast, broadcast or other traffic types are not a function of the connection between the referenced endpoints, but on the addressing, protocol, and basic functionality of the endpoints."),
     MaxLen(64),
     ModelCorrespondence{"CIM_ActiveConnection.TrafficType"}
    ]
    string OtherTrafficDescription;

     [Description("TRUE means that this connection is uni-directional; FALSE means that this connection is bi-directional. When the connection is unidirectional, the \'speaker\' should be defined as the Antecedent reference. In a bidirectional connection, the selection of which AccessPoint is the Antecedent or Dependent is immaterial.")
    ]
    boolean IsUnidirectional;

};

// CIM_ControlledBy

    [Association(true),
     Version("2.8.0"),
     Description("The ControlledBy relationship indicates which Devices are controlled by a CIM_Controller.")
    ]
class CIM_ControlledBy : CIM_DeviceConnection {
    [Override("Antecedent"),
     Description("The Controller."),
     Key(true)
    ]
    CIM_Controller REF Antecedent;

     [Override("Dependent"),
     Description("The controlled Device."),
     Key(true)
    ]
    CIM_LogicalDevice REF Dependent;

     [Description("The State property indicates whether the Controller is actively commanding or accessing the Device (value=1) or not (value=2). Also, the value, \"Unknown\" (0), can be defined. This information is necessary when a LogicalDevice can be commanded by, or accessed through, multiple Controllers."),
     ValueMap{"0", "1", "2"},
     Values{"Unknown", "Active", "Inactive"}
    ]
    uint16 AccessState;

     [Description("The time that the downstream Device was last reset by the Controller.")
    ]
    datetime TimeOfDeviceReset;

     [Description("Number of hard resets issued by the Controller. A hard reset returns the Device to its initialization or \'boot-up\' state. All internal Device state information and data are lost."),
     Counter(true)
    ]
    uint32 NumberOfHardResets;

     [Description("Number of soft resets issued by the Controller. A soft reset does not completely clear current Device state and/or data. Exact semantics are dependent on the Device, and on the protocols and mechanisms used to communicate to it."),
     Counter(true)
    ]
    uint32 NumberOfSoftResets;

     [Description("Address of associated Device in context of the antecedent Controller.")
    ]
    string DeviceNumber;

     [Description("This property describes the accessibility of the device thru the antedecent controller."),
     ValueMap{"2", "3", "4"},
     Values{"ReadWrite", "ReadOnly", "NoAccess"}
    ]
    uint16 AccessMode;

     [Description("The property describes the priority given to accesses of the device thru this controller. The highest priority path will have the lowest value for this parameter.")
    ]
    uint16 AccessPriority;

};

// Brocade_PowerSupplyPhysicalChassisComponent

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The power supply units associated with their physical properties.")
    ]
class Brocade_PowerSupplyPhysicalChassisComponent : CIM_Realizes {
    [Override("Antecedent"),
     Description("The power supply as a FRU."),
     Key(true)
    ]
    Brocade_PhysicalChassisComponent REF Antecedent;

     [Override("Dependent"),
     Description("The power supply unit."),
     Key(true)
    ]
    Brocade_PowerSupply REF Dependent;

};

// Brocade_PhysicalTransceiver

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PhysicalTransceiver represents the physical aspects of a GBIC/SFP on a port.  Instances of this class are shown only if the physical transceiver is used by a switch that is \'reachable\' by the CIM agent.  A switch is considered \'reachable\' if it is contained within a fabric to which the agent has connectivity.")
    ]
class Brocade_PhysicalTransceiver : CIM_PhysicalConnector {
    [Override("Tag"),
     MaxLen(256),
     Description("A unique identifier for the connector.  This property has the following format:\nSwitch WWN;Port WWN;\"Brocade_Switch\"."),
     Key(true)
    ]
    string Tag;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_PhysicalTransceiver";

     [Description("Physical transceiver type."),
     ValueMap{"0", "1", "2", "3", "4", "5"},
     Values{"Unknown", "Short Wave", "Long Wave", "Copper", "Active Copper", "Extended Long Wave"},
     MappingStrings{"API.Brocade | Port | GBICType"}
    ]
    uint16 PhysicalTransceiverType;

     [Override("ConnectorGender"),
     Experimental(true),
     Description("Describes the gender of the connector."),
     ValueMap{"0", "2", "3"},
     Values{"Unknown", "Male", "Female"}
    ]
    uint16 ConnectorGender;

     [Override("ConnectorElectricalCharacteristics"),
     Experimental(true),
     Description("Describes the electrical characteristic for this connector.  Only those electrical characteristics that can be determined are populated."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8"},
     Values{"Unknown", "Other", "Single Ended", "Differential", "Low Voltage Differential", "Optical", "Copper", "Shielded", "Unshielded"},
     ModelCorrespondence{"CIM_PhysicalConnector.OtherElectricalCharacteristics"},
     ArrayType("Indexed")
    ]
    uint16 ConnectorElectricalCharacteristics[];

     [Override("NumPhysicalPins"),
     Experimental(true),
     Description("Describes the number of physical pins (male/female) that are present on this connector.  This property is not populated if the number of pins cannot be determined.  Currently, the number of pins cannot be determined for copper and active copper transceivers."),
     ModelCorrespondence{"CIM_PhysicalConnector.ConnectorPinout"}
    ]
    uint32 NumPhysicalPins;

     [Override("Manufacturer"),
     MaxLen(256),
     Description("The name of the manufacturer of this component."),
     MappingStrings{"API.Brocade | Port | GBICVendor"}
    ]
    string Manufacturer;

     [Override("SerialNumber"),
     MaxLen(64),
     Description("Serial number of the transceiver.  In cases where the information is not available, no value is assigned to this property."),
     MappingStrings{"API.Brocade | Port | GBICSerialNumber"}
    ]
    string SerialNumber;

};

// Brocade_TransceiverRealizes

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_TransceiverRealizes associates the transceiver units with their physical properties.")
    ]
class Brocade_TransceiverRealizes : CIM_Realizes {
    [Override("Antecedent"),
     Description("The physical aspects of a transceiver (GBIC/SFP)."),
     Key(true)
    ]
    Brocade_PhysicalTransceiver REF Antecedent;

     [Override("Dependent"),
     Description("The logical aspects of a transceiver (GBIC/SFP)."),
     Key(true)
    ]
    Brocade_Transceiver REF Dependent;

};

// Brocade_FanPhysicalChassisComponent

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The fan associated with its physical properties.")
    ]
class Brocade_FanPhysicalChassisComponent : CIM_Realizes {
    [Override("Antecedent"),
     Description("The physical properties of the fan."),
     Key(true)
    ]
    Brocade_PhysicalChassisComponent REF Antecedent;

     [Override("Dependent"),
     Description("The fan."),
     Key(true)
    ]
    Brocade_Fan REF Dependent;

};

// Brocade_PhysicalHBA

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This class represents FDMI enabled physical HBA card attached to a switch with 3.1.x,4.1.x, or greater firmware.No instances of this class are returned when the proxy switch firmware version is 7.3.x or 4.0.x or less than 3.1.x.No instances of this class that are associated with a HBA are returned when the proxy/target switch firmware version is 2.6.x.")
    ]
class Brocade_PhysicalHBA : CIM_PhysicalPackage {
    [Override("Tag"),
     MaxLen(256),
     Description("A unique physical identifier that serves as the key for the HBA.  The HBA serial number could be used as a tag.\nSupported by Target Firmware: 3.1.x, 3.2.x ,4.1.x, 4.2.x , 4.4.x, 5.0.x"),
     Key(true)
    ]
    string Tag;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_PhysicalHBA";

     [Override("Manufacturer"),
     MaxLen(256),
     Description("The name of the organization responsible for manufacturing the HBA."),
     MappingStrings{"FC-GS-4 | FDMI | Manufacturer"}
    ]
    string Manufacturer;

     [Override("Model"),
     MaxLen(64),
     Description("The name by which the HBA is generally known."),
     MappingStrings{"FC-GS-4 | FDMI | Model"}
    ]
    string Model;

     [Description("The detailed description of the model of the HBA. The value might provide a more detailed identification of the HBA than the Model property does."),
     MaxLen(256),
     MappingStrings{"FC-GS-4 | FDMI | Model Description"}
    ]
    string ModelDescription;

     [Override("SerialNumber"),
     MaxLen(64),
     Description("A manufacturer-allocated number used to identify the HBA. This value SHOULD match a serial number engraved or printed in the HBA."),
     MappingStrings{"FC-GS-4 | FDMI | Serial Number"}
    ]
    string SerialNumber;

     [Override("Version"),
     MaxLen(64),
     Description("A string indicating the version of the HBA card."),
     MappingStrings{"FC-GS-4 | FDMI | Version"}
    ]
    string Version;

};

// Brocade_DeviceRealizes

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_DeviceRealizes is the association that defines the mapping between devices and the physical elements that implement them.")
    ]
class Brocade_DeviceRealizes : CIM_Realizes {
    [Override("Antecedent"),
     Description("The physical HBA that implements the Device."),
     Key(true)
    ]
    Brocade_PhysicalHBA REF Antecedent;

     [Override("Dependent"),
     Description("The Device."),
     Key(true)
    ]
    Brocade_Device REF Dependent;

};

// Brocade_PortModule

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PortModule describes a plug-in port module in a modular switch.  Fixed port count switches (such as the SilkWorm 2000 and 3000 series) contain a single port module. For Silkworm 48000 switches, proxy firmware versionshould be 4.4.x and above.")
    ]
class Brocade_PortModule : CIM_LogicalModule {
    [Override("ElementName"),
     Description("A user-friendly name for the object.")
    ]
    string ElementName = "Undefined";

     [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is a Brocade_Switch instance."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_Switch";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s Name property.  The scoping system is the Brocade_Switch that this port module is part of, and this property represents the switch WWN."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     Description("CreationClassName indicates the name of the port module class that, when used with the other key properties of this class, uniquely identifies an instance of the port module class."),
     Key(true)
    ]
    string CreationClassName = "Brocade_PortModule";

     [Override("DeviceID"),
     MaxLen(64),
     Description("An address or other identifying information to uniquely name the port module or blade.  In the case of nonbladed switches, which return only one PortModule, a value of -1 is returned (this includes all non-4.x firmware."),
     Key(true)
    ]
    string DeviceID;

     [Override("ModuleNumber"),
     Description("The module number of this port module.  In the case of nonbladed switches, which return only one PortModule, this property will be filled in with 0 (this includes all non-4.x firmware."),
     MappingStrings{"API.Brocade | PortModule | ModuleSlotNumber"}
    ]
    uint16 ModuleNumber;

     [Description("Number of ports within this module."),
     MappingStrings{"API.Brocade | PortModule | ModulePortCount"}
    ]
    uint16 NumPorts;

     [Description("Starting switch logical port number for ports in this port module. This will not be populated for Silkworm 48000 switches since the ports are not contiguous"),
     MappingStrings{"API.Brocade | PortModule | StartSwitchPortIndex"}
    ]
    uint16 StartSwitchPortIndex;

     [Override("OperationalStatus"),
     Description("Indicates the current status of the portmodule.  Various health and operational statuses and the mappings to Brocade statuses are defined.  Many of the enumeration\'s values are self-explanatory.  A few are not, and are described here in more detail.\n\n\"Stressed\" indicates that the element is functioning, but needs attention.  Examples of \"Stressed\" states are overload, overheated, and so on.\n\n\"Predictive Failure\" indicates that an element is functioning normally but predicting a failure in the near future.\n\n\"In Service\" indicates that an element is being configured, maintained, cleaned, or otherwise administered.\n\n\"No Contact\" indicates that the monitoring system has knowledge of this element, but has never been able to establish communication with it.\n\n\"Lost Communication\" indicates that the ManagedSystemElement is known to exist and has been contacted successfully in the past, but is currently unreachable.\n\n\"Stopped\" and \"Aborted\" are similar, although the former implies a clean and orderly stop, while the latter implies an abrupt stop where the element\'s state and configuration might need to be updated.\n\n\"Dormant\" indicates that the element is inactive or quiesced.\n\n\"Supporting Entity in Error\" indicates that this element may 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\n\"Completed\" indicates that the element has completed its operation.  This value is combined with either OK, Error, or Degraded so that a client can tell if the operation passed (Completed with OK), failed (Completed with Error), or finished, but did not complete OK or report an error (Completed with Degraded).\n\n\"Power Mode\" indicates the element has additional power model information contained in the AssociatedPowerManagementService association.\n\nThe following mappings must be made to these status values from the status values defined in Brocade API:\n\"Warning\" maps to \"Stressed\",\n\"Faulty\" maps to \"Error\",\n\"Missing\" maps to \"No Contact\".\n\nThis property will default to contain a single value of \"Unknown\" if the proxy or target switch contains a firmware version of 3.0.x."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"},
     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"},
     MappingStrings{"API.Brocade | PortModule | PortModuleStatus"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

     [Override("EnabledState"),
     Description("EnabledState is an integer enumeration that indicates the enabled and disabled states of the portmodule.  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 summarizes the various states:\n\nEnabled (2) indicates that the element is or could be executing commands, processes any queued commands, and queues new requests.\n\nDisabled (3) indicates that the element will not execute commands and drops any new requests.\n\nShutting Down (4) indicates that the element is in the process of going to a Disabled state.\n\nNot Applicable (5) indicates the element does not support being enabled or disabled.\n\nEnabled but Offline (6) indicates that the element might be completing commands, but drops any new requests.\n\nTest (7) indicates that the element is in a test state.\n\nDeferred (8) indicates that the element might be completing commands, but queues any new requests.\n\nQuiesce (9) indicates that the element is enabled but in a restricted mode.  The element\'s behavior is similar to the Enabled state, but it processes only a restricted set of commands.  All other requests are queued.\n\nStarting (10) indicates that the element is in the process of going to an Enabled state.  New requests are queued.\n\n\"In Test\" maps to the Brocade API \"Testing\", and \"Not Applicable\" maps to the Brocade API \'Not Supported.\n\nThis property defaults to \"Unknown\" if the proxy or target switch has version 3.0.x firmware."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11..32767"},
     Values{"Unknown", "Other", "Enabled", "Disabled", "Shutting Down", "Not Applicable", "Enabled but Offline", "In Test", "Deferred", "Quiesce", "Starting", "DMTF Reserved"},
     MappingStrings{"API.Brocade | PortModule | PortModuleState"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.OtherEnabledState"}
    ]
    uint16 EnabledState = 5;

     [Override("RequestedState"),
     Description("RequestedState is an integer enumeration indicating the new requested state for the PortModule.  The actual state of the element is represented by EnabledState.  This property is provided to get the current requested state of the PortModule during the state change.  After the state change is done the EnabledState property will have the new value and RequestedState will be set back to 5.\n\nNote that when EnabledState is set to 5 (\"Not Applicable\"), then this property has no meaning.\n\nBy default, the RequestedState is 5 (\"No Change\").  Refer to the EnabledState property description for explanations of the values in the RequestedState enumeration."),
     ModelCorrespondence{"CIM_EnabledLogicalElement.EnabledState"},
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10..32767"},
     Values{"Enabled", "Disabled", "Shut Down", "No Change", "Offline", "Test", "Deferred", "Quiesce", "DMTF Reserved"}
    ]
    uint16 RequestedState = 5;

     [Write(true),
     Description("True if beacon is turned on, false if off.\n\nSupported by Proxy Firmware versions: 4.0.x,4.1.x,4.2.x,4.4.x,3.1.x, 3.2.x, 2.6.x,5.0.x.\nThis property is writeable only if target switch is a SilkWorm 12000 or SilkWorm 24000 switch and if the switch associated with the given blade belongs to a fabric managed by the CIM agent (that is, if the switch is \'reachable\')."),
     MappingStrings{"API.Brocade | PortModule | PortModuleBeaconEnable"}
    ]
    boolean Beacon;

    [Override("RequestStateChange"),
     Description("The method requests that the port module state be changed to one of the values from the input list.  When the requested state change takes place, the elements EnabledState and RequestedState will be the same.  The use of ConcreteJob (if the operation is performed asynchronously) is not supported and hence always returns NULL.Not supported by Proxy and Target firmwares: 7.3.x,2.6.x and 3.x target firmwares."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "32768"},
     Values{"Completed with No Error", "Not Supported", "Unknown/Unspecified Error", "Can NOT complete within Timeout Period", "Failed", "Invalid Parameter", "In Use", "Not_Found", "Already_Exists", "Insufficient_Resources", "Access_Denied"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}
    ]
    uint32 RequestStateChange([IN(true), Required(true), Description("The state requested for the element.  This information will be placed into the instance\'s RequestedState property if the RequestStateChange method\'s return code is 0, 3 (\'Completed with No Error\', \'Timeout\') respectively.\n\nRefer to the description of the EnabledState property for the detailed meanings of the RequestedState Values."), ModelCorrespondence{"CIM_EnabledLogicalElement.RequestedState"}, ValueMap{"2", "6"}, Values{"Enabled", "Offline"}] uint16 RequestedState, [OUT(true), IN(false), Description("Reference to the job (may be null if task completed).")] CIM_ConcreteJob REF Job, [IN(true), 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.\n\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.")] datetime TimeoutPeriod);
};

// Brocade_PortModuleRealizes

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PortModuleRealizes is the association that defines the mapping between a logical port module and a physical blade.")
    ]
class Brocade_PortModuleRealizes : CIM_Realizes {
    [Override("Antecedent"),
     Max(1),
     Min(1),
     Description("The physical package that contains one or more instances of the logical system."),
     Key(true)
    ]
    Brocade_Blade REF Antecedent;

     [Override("Dependent"),
     Max(1),
     Min(1),
     Description("Instances of a logical system."),
     Key(true)
    ]
    Brocade_PortModule REF Dependent;

};

// Brocade_DeviceSoftwareIdentity

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The DeviceSoftwareIdentity relationship identifies any software that is associated with the device and this association can return multiple instances.")
    ]
class Brocade_DeviceSoftwareIdentity : CIM_ElementSoftwareIdentity {
    [Override("Antecedent"),
     Description("The SoftwareIdentity on the device."),
     Key(true)
    ]
    Brocade_SoftwareIdentity REF Antecedent;

     [Override("Dependent"),
     Description("The logical device that requires or uses the software."),
     Key(true)
    ]
    Brocade_Device REF Dependent;

};

// CIM_ServiceServiceDependency

    [Association(true),
     Version("2.7.0"),
     Description("CIM_ServiceServiceDependency is an association between a Service and another Service, indicating that the latter is required to be present, required to have completed, or must be absent for the former Service to provide its functionality. For example, Boot Services may be dependent upon underlying system initialization Services. In the case of the initialization Services, the Boot Service may be dependent on the init Services completing. \nExamining the ServiceServiceDependency class definition, note that its superclass ProvidesServiceToElement is deprecated. Unfortunately, ProvidesServiceToElement cannot be removed from the object hierarchy without a major Schema release. When/if this occurs, the ProvidesServiceToElement superclass will be removed, and ServiceServiceDependency will subclass from CIM_Dependency directly.")
    ]
class CIM_ServiceServiceDependency : CIM_ProvidesServiceToElement {
    [Override("Antecedent"),
     Description("The required Service."),
     Key(true)
    ]
    CIM_Service REF Antecedent;

     [Override("Dependent"),
     Description("The Service that is dependent on an underlying Service."),
     Key(true)
    ]
    CIM_Service REF Dependent;

     [Description("The nature of the Service to Service dependency. This property describes that the associated Service must have completed (value=2), must be started (3) or must not be started (4) in order for the Service to function."),
     ValueMap{"0", "1", "2", "3", "4"},
     Values{"Unknown", "Other", "Service Must Have Completed", "Service Must Be Started", "Service Must Not Be Started"}
    ]
    uint16 TypeOfDependency;

     [Description("This property describes that the Antecedent Service must be restarted after the Dependent operation is complete.")
    ]
    boolean RestartService;

};

// CIM_ComputerSystemPackage

    [Association(true),
     Version("2.7.0"),
     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.")
    ]
class CIM_ComputerSystemPackage : CIM_SystemPackaging {
    [Override("Antecedent"),
     Description("The PhysicalPackage(s) that realize a Unitary ComputerSystem."),
     Key(true)
    ]
    CIM_PhysicalPackage REF Antecedent;

     [Override("Dependent"),
     Description("The UnitaryComputerSystem."),
     Key(true)
    ]
    CIM_ComputerSystem REF Dependent;

     [Description("A Gloabally Unique Identifier for the System\'s Package.")
    ]
    string PlatformGUID;

};

// Brocade_ConnectionMonitoringService

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ConnectionMonitoringService is a service that allows for better control over how connections are maintained to the fabric.")
    ]
class Brocade_ConnectionMonitoringService : CIM_Service {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is the server on which the service is hosted."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_ManagementServer";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name.  The scoping system is the server on which the agent is hosted."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_ConnectionMonitoringService";

     [Override("Name"),
     MaxLen(256),
     Description("The Name property uniquely identifies the agent 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)
    ]
    string Name;

     [Write(true),
     Description("Whether whenever a new connection is created a new monitor is also created by default to monitor the connection")
    ]
    boolean DefaultMonitor;

     [Write(true),
     Description("Default value for the MaxRetryCount property when a new monitor is created")
    ]
    uint16 DefaultMaxRetryCount;

     [Write(true),
     Description("Default value for the WaitTimeBetweenRetries property when a new monitor is created")
    ]
    uint16 DefaultWaitTimeBetweenRetries;

     [Write(true),
     Description("Whether this service is enabled or not")
    ]
    boolean Enabled;

};

// Brocade_MonitorsInMonitoringService

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This is an association between the connection monitor service and connection monitors."),
     Aggregation(true)
    ]
class Brocade_MonitorsInMonitoringService : CIM_ServiceComponent {
    [Override("PartComponent"),
     Description("The monitoring Service."),
     Key(true)
    ]
    Brocade_ConnectionMonitoringService REF PartComponent;

     [Override("GroupComponent"),
     Description("Monitors in the service."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_ConnectionMonitor REF GroupComponent;

};

// CIM_SystemDevice

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

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

};

// Brocade_AccountOnSwitch

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("A system (for example, ApplicationSystem, ComputerSystem, or AdminDomain) aggregates accounts and scopes the uniqueness of the account names (that is, user IDs)."),
     Aggregation(true)
    ]
class Brocade_AccountOnSwitch : CIM_SystemComponent {
    [Override("GroupComponent"),
     Min(1),
     Max(1),
     Description("The aggregating system provides name scoping for the account."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Switch REF GroupComponent;

     [Override("PartComponent"),
     Weak(true),
     Description("The subordinate account."),
     Key(true)
    ]
    Brocade_Account REF PartComponent;

};

// CIM_ContainedDomain

    [Association(true),
     Version("2.6.0"),
     Description("A relationship that aggregates one or more lower-level AdminDomain instances into a higher-level AdminDomain."),
     Aggregation(true)
    ]
class CIM_ContainedDomain : CIM_SystemComponent {
    [Override("GroupComponent"),
     Description("An AdminDomain that aggregates other AdminDomains."),
     Key(true),
     Aggregate(true)
    ]
    CIM_AdminDomain REF GroupComponent;

     [Override("PartComponent"),
     Description("An AdminDomain aggregated by another AdminDomain."),
     Key(true)
    ]
    CIM_AdminDomain REF PartComponent;

};

// Brocade_ModulePort

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ModulePort associates ports with their hosting modules."),
     Aggregation(true)
    ]
class Brocade_ModulePort : CIM_ModulePort {
    [Max(1),
     Override("GroupComponent"),
     Description("A module that has ports."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_PortModule REF GroupComponent;

     [Override("PartComponent"),
     Description("A port that is associated with a module."),
     Key(true)
    ]
    Brocade_SwitchFCPort REF PartComponent;

};

// CIM_PhysicalFrame

    [Version("2.7.0"),
     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.")
    ]
class CIM_PhysicalFrame : CIM_PhysicalPackage {
    [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("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."),
     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"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_PhysicalFrame.ServiceDescriptions"}
    ]
    uint16 ServicePhilosophy[];

     [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."),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_PhysicalFrame.ServicePhilosophy"}
    ]
    string ServiceDescriptions[];

     [Description("Boolean indicating whether the Frame is protected with a lock.")
    ]
    boolean LockPresent;

     [Description("Boolean indicating whether the Frame is equipped with an audible alarm.")
    ]
    boolean AudibleAlarm;

     [Description("Boolean indicating that the equipment includes a visible alarm.")
    ]
    boolean VisibleAlarm;

     [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."),
     ValueMap{"1", "2", "3", "4", "5"},
     Values{"Other", "Unknown", "No Breach", "Breach Attempted", "Breach Successful"},
     MappingStrings{"MIF.DMTF|Physical Container Global Table|004.12"},
     ModelCorrespondence{"CIM_PhysicalFrame.BreachDescription"}
    ]
    uint16 SecurityBreach;

     [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("Boolean indicating that the Frame is currently locked.")
    ]
    boolean IsLocked;

};

// CIM_Chassis

    [Version("2.8.0"),
     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.")
    ]
class CIM_Chassis : CIM_PhysicalFrame {
    [Description("Integer indicating the number of power cords which must be connected to the Chassis, for all the componentry to operate.")
    ]
    uint16 NumberOfPowerCords;

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

     [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."),
     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"},
     MappingStrings{"MIF.DMTF|Physical Container Global Table|004.1"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_Chassis.TypeDescriptions"}
    ]
    uint16 ChassisTypes[];

     [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."),
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_Chassis.ChassisTypes"}
    ]
    string TypeDescriptions[];

     [Description("ChassisPackageType indicates the physical form factor for the type of Chassis."),
     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"},
     MappingStrings{"MIF.DMTF|Physical Container Global Table|004.1"},
     ModelCorrespondence{"CIM_Chassis.ChassisTypeDescription"}
    ]
    uint16 ChassisPackageType;

     [Description("A string providing more information on the ChassisPackageType."),
     ModelCorrespondence{"CIM_Chassis.ChassisPackageType"}
    ]
    string ChassisTypeDescription;

     [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("RackMountable indicates whether or not the chassis is Rack Mountable."),
     ValueMap{"0", "1", "2"},
     Values{"Unknown", "True", "False"}
    ]
    uint16 RackMountable;

};

// CIM_PackageInChassis

    [Association(true),
     Version("2.6.0"),
     Description("A Chassis can contain other Packages, such as other Chassis and Cards.  The PackageInChassis association makes explicit this relationship."),
     Aggregation(true)
    ]
class CIM_PackageInChassis : CIM_Container {
    [Override("GroupComponent"),
     Max(1),
     Description("The Chassis that contains other PhysicalPackages."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalContainedIn"},
     Key(true),
     Aggregate(true)
    ]
    CIM_Chassis REF GroupComponent;

     [Override("PartComponent"),
     Description("The PhysicalPackage which is contained in the Chassis."),
     Key(true)
    ]
    CIM_PhysicalPackage REF PartComponent;

};

// CIM_ConnectorOnPackage

    [Association(true),
     Version("2.6.0"),
     Description("PhysicalPackages contain Connectors as well as other PhysicalElements. The ConnectorOnPackage association makes explicit the containment relationship between Connectors and Packages."),
     Aggregation(true)
    ]
class CIM_ConnectorOnPackage : CIM_Container {
    [Override("GroupComponent"),
     Max(1),
     Description("The PhysicalPackage that has a Connector."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalContainedIn"},
     Key(true),
     Aggregate(true)
    ]
    CIM_PhysicalPackage REF GroupComponent;

     [Override("PartComponent"),
     Description("The PhysicalConnector."),
     Key(true)
    ]
    CIM_PhysicalConnector REF PartComponent;

};

// Brocade_Chassis

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Chassis corresponds to an enclosure for various components of a system.  Note that for proxy firmware versions 3.0.x and 2.6.0, certain switches might show as being in separate chassis even though they are part of the same chassis.  This is particularly evident with SilkWorm 12000 directors, where each switch in the appears as if it has its own chassis (if the proxy switch has version 2.6.0 or 3.0.x firmware).  This is due to a limitation of the 2.6.0 and 3.0.x firmware.")
    ]
class Brocade_Chassis : CIM_Chassis {
    [Override("Tag"),
     MaxLen(256),
     Description("An arbitrary string that uniquely identifies the chassis and serves as its physical key.  The Tag property contains the WWN of the license switch (LicenseWWN)."),
     Key(true)
    ]
    string Tag;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_Chassis";

     [Write(true),
     Maxlen(15),
     Override("ElementName"),
     Description("The user-settable symbolic name of the chassis.\n\nSupported by Proxy Firmware versions: 3.1.x, 3.2.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 4.1.x, 4.2.x, 4.4.x, 5.0.x."),
     MappingStrings{"API.Brocade | SwitchEnclosure | ChassisName"}
    ]
    string ElementName;

     [Description("WWN associated with the chassis, which is used for licensing.  This value is the same for all logical switch instances in a given chassis.\n\nSupported by Proxy Firmwareversions: 2.6.1, 2.6.2, 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x.\nSupported by Target Firmware versions: 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x."),
     MappingStrings{"API.Brocade | SwitchEnclosure | LicenseWWN"}
    ]
    string LicenseWWN;

     [Override("ChassisPackageType"),
     Description("A value indicating the type of chassis."),
     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", "..", "32768", "32769", "32770", "32771", "32772", "32773", "32774", "32775", "32776", "32777", "32778", "32779", "32780", "32781", "32782", "32783", "32784", "32785", "32786", "32787", "32788"},
     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", "Silkworm 1600", "Silkworm 2800", "Silkworm 2400", "Silkworm 20x0", "Silkworm Spider", "Silkworm 3800", "Silkworm 3900", "Silkworm 3200", "Silkworm 12000", "Silkworm 22x0", "Silkworm 24000", "Silkworm 3850", "Silkworm 3250", "Silkworm 3016", "Silkworm AP7420", "Silkworm 4100", "Silkworm 200E", "Silkworm 48000", "Silkworm 4012", "Silkworm 3014", "Silkworm 3000"},
     MappingStrings{"API.Brocade | SwitchEnclosure | EnclosureType"},
     ModelCorrespondence{"CIM_Chassis.ChassisTypeDescription"}
    ]
    uint16 ChassisPackageType;

     [Override("SerialNumber"),
     Description("Serial number of the chassis.\n\nSupported by Proxy Firmware versions: 2.6.1, 2.6.2, 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x.\nSupported by Target Firmware versions: 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x."),
     MappingStrings{"API.Brocade | SwitchEnclosure | ChassisSerialNumber"},
     MaxLen(256)
    ]
    string SerialNumber;

     [Override("Manufacturer"),
     MaxLen(256),
     Description("The name of the organization responsible for producing the chassis.  This might be different from the vendor if the product is shipped by an OEM with a private label.  This property is filled in by the provider to \"Brocade Communications, Inc.\" for switches with firmware version 3.0.x."),
     MappingStrings{"API.Brocade | Switch | MfgName"}
    ]
    string Manufacturer;

     [Override("Model"),
     MaxLen(256),
     Description("The name by which the chassis is generally known."),
     MappingStrings{"API.Brocade | Switch | MfgModel"}
    ]
    string Model;

     [Override("PartNumber"),
     MaxLen(256),
     Description("The part number assigned by the organization responsible for producing or manufacturing the PhysicalElement.\n\nSupported by Proxy Firmware versions: 2.6.1, 2.6.2, 3.1.x, 3.2.x 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x.\nSupported by Target Firmware versions: 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x."),
     MappingStrings{"API.Brocade | SwitchEnclosure | ChassisPartNumber"}
    ]
    string PartNumber;

     [Description("Maximum number of blades that can fit in this physical chassis.  This includes port-module blades, WWN blades, CP blades, and any internal or nonremoveable blades.")
    ]
    uint16 MaxNumberOfBlades;

     [Override("ManufactureDate"),
     Description("Date that this chassis was manufactured.\n\nSupported by Proxy Firmware versions: 2.6.1, 2.6.2, 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x.\nSupported by Target Firmware versions: 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x."),
     MappingStrings{"API.Brocade | SwitchEnclosure | ChassisMfgDate"}
    ]
    datetime ManufactureDate;

     [Override("Version"),
     MaxLen(64),
     Description("A string indicating the version of the PhysicalElement.\n\nSupported by Proxy Firmware versions: 2.6.1, 2.6.2, 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x, 7.3.x.\nSupported by Target Firmware versions: 4.0.x, 4.1.x, 4.2.x, 5.0.x."),
     MappingStrings{"API.Brocade | SwitchEnclosure | VendorRevision"}
    ]
    string Version;

     [Description("Update date of the chassis.\n\nSupported by Proxy Firmware versions: 2.6.1, 2.6.2, 3.1.x, 3.2.x, 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x.\nSupported by Target Firmware versions: 4.0.x, 4.1.x, 4.2.x, 4.4.x, 5.0.x."),
     MappingStrings{"API.Brocade | SwitchEnclosure | ChassisUpdateDate"}
    ]
    datetime UpdateDate;

};

// Brocade_ChassisProduct

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The chassis is shipped to the customer by a third party (OEM/reseller) to the customer.  This class associates the chassis with the product."),
     Composition(true),
     Aggregation(true)
    ]
class Brocade_ChassisProduct : CIM_ProductPhysicalComponent {
    [Override("GroupComponent"),
     Description("The product."),
     Max(1),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Product REF GroupComponent;

     [Override("PartComponent"),
     Description("The chassis that is shipped as a product."),
     Key(true)
    ]
    Brocade_Chassis REF PartComponent;

};

// Brocade_PhysicalChassisComponentProduct

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This class associates the various chassis components with the product."),
     Composition(true),
     Aggregation(true)
    ]
class Brocade_PhysicalChassisComponentProduct : CIM_ProductPhysicalComponent {
    [Override("GroupComponent"),
     Description("The product."),
     Max(1),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Product REF GroupComponent;

     [Override("PartComponent"),
     Description("The chassis components within the product."),
     Key(true)
    ]
    Brocade_PhysicalChassisComponent REF PartComponent;

};

// Brocade_HBAProduct

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This class represents product information of FDMI enabled physical HBA card attached to a switch with 3.1.x,4.1.x, or greater firmware.No instances of this class are returned when the proxy switch firmware version is 7.3.x or 4.0.x or less than 3.1.x.No instances of this class that are associated with a HBA are returned when the proxy/target switch firmware version is 2.6.x.")
    ]
class Brocade_HBAProduct : CIM_Product {
    [Override("Name"),
     Description("Commonly used Product name."),
     MaxLen(256),
     Key(true),
     MappingStrings{"MIF.DMTF|ComponentID|001.2"},
     ModelCorrespondence{"PRS_Product.ProductName"}
    ]
    string Name;

     [Override("IdentifyingNumber"),
     Description("A manufacturer-allocated number used to identify the HBA. This value SHOULD match a serial number engraved or printed in the HBA."),
     MaxLen(64),
     MappingStrings{"FC-GS-4 | FDMI | IdentifyingNumber "},
     Key(true)
    ]
    string IdentifyingNumber;

     [Override("Vendor"),
     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."),
     MaxLen(256),
     MappingStrings{"FC-GS-4 | FDMI | Manufacturer"},
     Key(true),
     ModelCorrespondence{"PRS_Product.Vendor"}
    ]
    string Vendor;

     [Override("Version"),
     Description("A string indicating the version of the HBA card."),
     MaxLen(64),
     MappingStrings{"FC-GS-4 | FDMI | Version"},
     Key(true),
     ModelCorrespondence{"PRS_Product.Version"}
    ]
    string Version;

     [Override("ElementName"),
     Description("The detailed description of the model of the HBA. The value might provide a more detailed identification of the HBA than the Model property does "),
     MappingStrings{"FC-GS-4 | FDMI | Model Description"}
    ]
    string ElementName;

};

// Brocade_ProductPhysicalHBA

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The HBA is shipped to the customer by a third party (OEM/reseller) to the customer.  This class associates the HBA with the product."),
     Composition(true),
     Aggregation(true)
    ]
class Brocade_ProductPhysicalHBA : CIM_ProductPhysicalComponent {
    [Override("GroupComponent"),
     Description("The product."),
     Max(1),
     Key(true),
     Aggregate(true)
    ]
    Brocade_HBAProduct REF GroupComponent;

     [Override("PartComponent"),
     Description("The HBA that is shipped as a product."),
     Key(true)
    ]
    Brocade_PhysicalHBA REF PartComponent;

};

// CIM_InstDeletion

    [Indication(true),
     Version("2.6.0"),
     Description("CIM_InstDeletion notifies when an existing instance is deleted.")
    ]
class CIM_InstDeletion : CIM_InstIndication {
};

// CIM_InstModification

    [Indication(true),
     Version("2.6.0"),
     Description("CIM_InstModification notifies when an instance is modified.")
    ]
class CIM_InstModification : CIM_InstIndication {
    [Required(true),
     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_InstCreation

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

// CIM_InstMethodCall

    [Indication(true),
     Version("2.8.1000"),
     Description("CIM_InstMethodCall notifies when an instance\'s method is invoked.")
    ]
class CIM_InstMethodCall : CIM_InstIndication {
    [Required(true),
     Description("The name of the method invoked.")
    ]
    string MethodName;

     [Description("The parameters of the method, formatted as an EmbeddedObject (with a predefined class name of \"__MethodParameters\"."),
     EmbeddedObject(true)
    ]
    string MethodParameters;

     [Description("ReturnValue\'s data is dependent on the PreCall property. When PreCall is TRUE, this property is NULL describing that there is no method return value (since the method has not yet executed). When PreCall is FALSE, ReturnValue contains a string representation of the method\'s return value."),
     ModelCorrespondence{"CIM_InstMethodCall.PreCall", "CIM_InstMethodCall.ReturnValueType", "CIM_InstMethodCall.Error"}
    ]
    string ReturnValue;

     [Experimental(true),
     Description("The type of the method return value."),
     ValueMap{"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", ".."},
     Values{"boolean", "string", "char16", "uint8", "sint8", "uint16", "sint16", "uint32", "sint32", "uint64", "sint64", "datetime", "real32", "real64", "reference", "DMTF Reserved"},
     ModelCorrespondence{"CIM_InstMethodCall.ReturnValue"}
    ]
    uint16 ReturnValueType;

     [Experimental(true),
     Description("Error\'s data is dependent on the PreCall property. When PreCall is TRUE, this property is NULL describing that there is no method Error instances (since the method has not yet executed). When PreCall is FALSE, Error contains an array of zero or more entries containing CIM_ERROR instances represented as an array of Embedded Instances."),
     ModelCorrespondence{"CIM_InstMethodCall.PreCall", "CIM_InstMethodCall.ReturnValue"},
     EmbeddedInstance("CIM_Error")
    ]
    string Error[];

     [Required(true),
     Description("Boolean indicating whether the Indication is sent before the method begins executing (TRUE) or when the method completes (FALSE). When TRUE, the inherited property SourceInstance contains the value of the instance (the properties defined by the Filter\'s Query clause), before execution of the method. When PreCall is FALSE, SourceInstance embeds the instance as it appears after the completion of the method.")
    ]
    boolean PreCall;

};

// CIM_AlertIndication

    [Indication(true),
     Version("2.8.0"),
     Description("A concrete superclass for CIM Alert notifications. An AlertIndication is a specialized type of CIM_Indication that contains information about the severity, cause, recommended actions and other data of a real world event. This event and its data may or may not be modeled in the CIM class hierarchy.")
    ]
class CIM_AlertIndication : CIM_ProcessIndication {
    [Description("A short description of the Indication."),
     MappingStrings{"Recommendation.ITU|X733.Additional text"}
    ]
    string Description;

     [Description("The identifying information of the entity (ie, the instance) for which this Indication is generated. The property contains the path of an instance, encoded as a string parameter - if the instance is modeled in the CIM Schema. If not a CIM instance, the property contains some identifying string that names the entity for which the Alert is generated. The path or identifying string is formatted per the AlertingElementFormat property."),
     ModelCorrespondence{"CIM_AlertIndication.AlertingElementFormat"}
    ]
    string AlertingManagedElement;

     [Description("The format of the AlertingManagedElement property is interpretable based upon the value of this property. Values are defined as: \n0 - Unknown. The format is unknown or not meaningfully interpretable by a CIM client application. \n1 - Other. The format is defined by the value of the OtherAlertingElementFormat property. \n2 - CIMObjectPath. The format is a CIMObjectPath, with format <NamespacePath>:<ClassName>.<Prop1>=\"<Value1>\", <Prop2>=\"<Value2>\", . . . specifying an instance in the CIM Schema."),
     ValueMap{"0", "1", "2"},
     Values{"Unknown", "Other", "CIMObjectPath"},
     ModelCorrespondence{"CIM_AlertIndication.AlertingManagedElement", "CIM_AlertIndication.OtherAlertingElementFormat"}
    ]
    uint16 AlertingElementFormat = 0;

     [Description("A string defining \"Other\" values for AlertingElementFormat. This value MUST be set to a non NULL value when AlertingElementFormat is set to a value of 1 (\"Other\"). For all other values of AlertingElementFormat, the value of this string must be set to NULL."),
     ModelCorrespondence{"CIM_AlertIndication.AlertingElementFormat"}
    ]
    string OtherAlertingElementFormat;

     [Required(true),
     Description("Primary classification of the Indication. The following values are defined: \n1 - Other. The Indication\'s OtherAlertType property conveys its classification. Use of \"Other\" in an enumeration is a standard CIM convention. It means that the current Indication does not fit into the categories described by this enumeration. \n2 - Communications Alert. An Indication of this type is principally associated with the procedures and/or processes required to convey information from one point to another. \n3 - Quality of Service Alert. An Indication of this type is principally associated with a degradation or errors in the performance or function of an entity. \n4 - Processing Error. An Indication of this type is principally associated with a software or processing fault. \n5 - Device Alert. An Indication of this type is principally associated with an equipment or hardware fault. \n6 - Environmental Alert. An Indication of this type is principally associated with a condition relating to an enclosure in which the hardware resides, or other environmental considerations. \n7 - Model Change. The Indication addresses changes in the Information Model. For example, it may embed a Lifecycle Indication to convey the specific model change being alerted. \n8 - Security Alert. An Indication of this type is associated with security violations, detection of viruses, and similar issues."),
     ValueMap{"1", "2", "3", "4", "5", "6", "7", "8"},
     Values{"Other", "Communications Alert", "Quality of Service Alert", "Processing Error", "Device Alert", "Environmental Alert", "Model Change", "Security Alert"},
     MappingStrings{"Recommendation.ITU|X733.Event type"}
    ]
    uint16 AlertType;

     [Description("A string describing the Alert type - used when the AlertType property is set to 1, \"Other State Change\"."),
     ModelCorrespondence{"CIM_AlertIndication.AlertType"}
    ]
    string OtherAlertType;

     [Required(true),
     Description("An enumerated value that describes the severity of the Alert 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 AlertIndication is purely informational or its severity is simply unknown."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"},
     Values{"Unknown", "Other", "Information", "Degraded/Warning", "Minor", "Major", "Critical", "Fatal/NonRecoverable"},
     MappingStrings{"Recommendation.ITU|X733.Perceived severity"}
    ]
    uint16 PerceivedSeverity;

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

     [Required(true),
     Description("An enumerated value that describes the probable cause of the situation which resulted in the AlertIndication."),
     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"},
     Values{"Unknown", "Other", "Adapter/Card Error", "Application Subsystem Failure", "Bandwidth Reduced", "Connection Establishment Error", "Communications Protocol Error", "Communications Subsystem Failure", "Configuration/Customization Error", "Congestion", "Corrupt Data", "CPU Cycles Limit Exceeded", "Dataset/Modem Error", "Degraded Signal", "DTE-DCE Interface Error", "Enclosure Door Open", "Equipment Malfunction", "Excessive Vibration", "File Format Error", "Fire Detected", "Flood Detected", "Framing Error", "HVAC Problem", "Humidity Unacceptable", "I/O Device Error", "Input Device Error", "LAN Error", "Non-Toxic Leak Detected", "Local Node Transmission Error", "Loss of Frame", "Loss of Signal", "Material Supply Exhausted", "Multiplexer Problem", "Out of Memory", "Output Device Error", "Performance Degraded", "Power Problem", "Pressure Unacceptable", "Processor Problem (Internal Machine Error)", "Pump Failure", "Queue Size Exceeded", "Receive Failure", "Receiver Failure", "Remote Node Transmission Error", "Resource at or Nearing Capacity", "Response Time Excessive", "Retransmission Rate Excessive", "Software Error", "Software Program Abnormally Terminated", "Software Program Error (Incorrect Results)", "Storage Capacity Problem", "Temperature Unacceptable", "Threshold Crossed", "Timing Problem", "Toxic Leak Detected", "Transmit Failure", "Transmitter Failure", "Underlying Resource Unavailable", "Version MisMatch", "Previous Alert Cleared", "Login Attempts Failed", "Software Virus Detected", "Hardware Security Breached", "Denial of Service Detected", "Security Credential MisMatch", "Unauthorized Access", "Alarm Received", "Loss of Pointer", "Payload Mismatch", "Transmission Error", "Excessive Error Rate", "Trace Problem", "Element Unavailable", "Element Missing", "Loss of Multi Frame", "Broadcast Channel Failure", "Invalid Message Received", "Routing Failure", "Backplane Failure", "Identifier Duplication", "Protection Path Failure", "Sync Loss or Mismatch", "Terminal Problem", "Real Time Clock Failure", "Antenna Failure", "Battery Charging Failure", "Disk Failure", "Frequency Hopping Failure", "Loss of Redundancy", "Power Supply Failure", "Signal Quality Problem", "Battery Discharging", "Battery Failure", "Commercial Power Problem", "Fan Failure", "Engine Failure", "Sensor Failure", "Fuse Failure", "Generator Failure", "Low Battery", "Low Fuel", "Low Water", "Explosive Gas", "High Winds", "Ice Buildup", "Smoke", "Memory Mismatch", "Out of CPU Cycles", "Software Environment Problem", "Software Download Failure", "Element Reinitialized", "Timeout", "Logging Problems", "Leak Detected", "Protection Mechanism Failure", "Protecting Resource Failure", "Database Inconsistency", "Authentication Failure", "Breach of Confidentiality", "Cable Tamper", "Delayed Information", "Duplicate Information", "Information Missing", "Information Modification", "Information Out of Sequence", "Key Expired", "Non-Repudiation Failure", "Out of Hours Activity", "Out of Service", "Procedural Error", "Unexpected Information"},
     MappingStrings{"Recommendation.ITU|X733.Probable cause", "Recommendation.ITU|M3100.probableCause", "ITU-IANA-ALARM-TC"},
     ModelCorrespondence{"CIM_AlertIndication.ProbableCauseDescription", "CIM_AlertIndication.EventID", "CIM_AlertIndication.EventTime"}
    ]
    uint16 ProbableCause;

     [Description("Provides additional information related to the ProbableCause."),
     ModelCorrespondence{"CIM_AlertIndication.ProbableCause"}
    ]
    string ProbableCauseDescription;

     [Description("Provides information on trending - trending up, down or no change."),
     ValueMap{"0", "1", "2", "3", "4"},
     Values{"Unknown", "Not Applicable", "Trending Up", "Trending Down", "No Change"},
     MappingStrings{"Recommendation.ITU|X733.TrendIndication"}
    ]
    uint16 Trending;

     [Description("Free form descriptions of the recommended actions to take to resolve the cause of the notification."),
     MappingStrings{"Recommendation.ITU|X733.Proposed repair actions"}
    ]
    string RecommendedActions[];

     [Description("An instrumentation or provider specific value that describes the underlying \"real-world\" event represented by the Indication. Two Indications with the same, non NULL EventID value are considered, by the creating entity, to represent the same event. The comparison of two EventID values is only defined for Alert Indications with identical, non NULL values of SystemCreateClassName, SystemName and ProviderName."),
     ModelCorrespondence{"CIM_AlertIndication.ProbableCause"}
    ]
    string EventID;

     [Description("The time and date the underlying event was first detected. If specified, this property MUST be set to NULL if the creating entity is not capable of providing this information. This value is based on the notion of local date and time of the Managed System Element generating the Indication."),
     ModelCorrespondence{"CIM_AlertIndication.ProbableCause"}
    ]
    datetime EventTime;

     [Description("The scoping System\'s CreationClassName for the Provider generating this Indication."),
     MaxLen(256)
    ]
    string SystemCreationClassName;

     [Description("The scoping System\'s Name for the Provider generating this Indication."),
     MaxLen(256)
    ]
    string SystemName;

     [Description("The name of the Provider generating this Indication."),
     MaxLen(256)
    ]
    string ProviderName;

};

// Brocade_FCPortConcreteIdentity

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This concrete identity associates zone member settings of node and switch ports with the actual node object.")
    ]
class Brocade_FCPortConcreteIdentity : CIM_ConcreteIdentity {
    [Override("SystemElement"),
     Description("ConcreteIdentity ties ZoneMembershipSettingData to the actual port zone member object."),
     Key(true)
    ]
    Brocade_ZoneMembershipSettingData REF SystemElement;

     [Override("SameElement"),
     Description("Another aspect of the managed element."),
     Key(true)
    ]
    Brocade_FCPort REF SameElement;

};

// Brocade_NodeConcreteIdentity

    [Association(true),
    Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This concrete identity associates zone member settings of nodes with the actual node object.")
    ]
class Brocade_NodeConcreteIdentity : CIM_ConcreteIdentity {
    [Override("SystemElement"),
     Description("ConcreteIdentity ties ZoneMembershipSettingData to the actual node zone member object."),
     Key(true)
    ]
    Brocade_ZoneMembershipSettingData REF SystemElement;

     [Override("SameElement"),
     Description("Another aspect of the managed element."),
     Key(true)
    ]
    Brocade_Node REF SameElement;

};

// CIM_UserEntity

    [Abstract(true),
     Version("2.6.0"),
     Description("UserEntity is an abstract class that represents users - their names, contact data and similar information.")
    ]
class CIM_UserEntity : CIM_OrganizationalEntity {
};

// CIM_IndicationHandler

    [Deprecated{"CIM_ListenerDestination"},
     Abstract(true),
     Version("2.8.0"),
     Provider("internal:cim_indicationhandler"),
     Description("CIM_IndicationHandler is an abstract superclass describing how an Indication is to be processd/delivered/\'handled\'. This may define a destination and protocol for delivering Indications, or it may define a process to invoke. This class is derived from CIM_ManagedElement to allow modeling the dependency of the Handler on a specific service.")
    ]
class CIM_IndicationHandler : CIM_ListenerDestination {
    [Deprecated{"No value"},
     Description("The name of the entity that created and/or maintains this Handler.")
    ]
    string Owner;

};

// WBEMSolutions_ListenerDestinationCIMRMI

    [Provider("java:org.wbemservices.wbem.cimom.adapters.client.rmi.WBEMSolutions_ListenerDestinationCIMRMI"),
     Version("1.0.0"),
     Description("WBEMSolutions_ListenerDestinationCIMRMI describes the destination for CIM Export Messages to be delivered via CIM-RMI.")
    ]
class WBEMSolutions_ListenerDestinationCIMRMI : CIM_ListenerDestination {
    [Description("The name of the entity that created and/or maintains this Handler.")
    ]
    string Owner;

};

// CIM_ListenerDestinationCIMXML

    [Version("2.8.0"),
     Description("CIM_ListenerDestinationCIMXML describes the destination for CIM Export Messages to be delivered via CIM-XML.")
    ]
class CIM_ListenerDestinationCIMXML : CIM_ListenerDestination {
    [Required(true),
     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.")
    ]
    string Destination;

};

// Brocade_SwitchHostedSANAccessPoint

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_HostedSANAccessPoint is an association between a protocol endpoint and the switch on which it is provided.  The cardinality of this association is one-to-many and is weak with respect to the switch.  Each switch can host many protocol endpoints.")
    ]
class Brocade_SwitchHostedSANAccessPoint : CIM_HostedAccessPoint {
    [Override("Antecedent"),
     Max(1),
     Min(1),
     Description("The hosting system."),
     Key(true)
    ]
    Brocade_Switch REF Antecedent;

     [Override("Dependent"),
     Description("The SAPs that are hosted on this system."),
     Weak(true),
     Key(true)
    ]
    Brocade_SANProtocolEndPoint REF Dependent;

};

// Brocade_PCSMgmtAccessPoint

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This is an association between a Brocade_PhysicalComputerSystem and a Brocade_MgmtAccessPoint that is hosted on it.")
    ]
class Brocade_PCSMgmtAccessPoint : CIM_HostedAccessPoint {
    [Override("Antecedent"),
     Max(1),
     Min(1),
     Description("The hosting system."),
     Key(true)
    ]
    Brocade_PhysicalComputerSystem REF Antecedent;

     [Override("Dependent"),
     Description("The management SAP that is hosted on this system."),
     Weak(true),
     Key(true)
    ]
    Brocade_MgmtAccessPoint REF Dependent;

};

// Brocade_PlatformHostedSANAccessPoint

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PlatformHostedSANAccessPoint is an association between a ProtocolEndPoint and the platform on which it is provided.  The cardinality of this association is one-to-many and is weak with respect to the platform.  Each platform can host many ProtocolEndPoints.")
    ]
class Brocade_PlatformHostedSANAccessPoint : CIM_HostedAccessPoint {
    [Override("Antecedent"),
     Max(1),
     Min(1),
     Description("The hosting system."),
     Key(true)
    ]
    Brocade_Platform REF Antecedent;

     [Override("Dependent"),
     Description("The SAPs that are hosted on this system."),
     Weak(true),
     Key(true)
    ]
    Brocade_SANProtocolEndPoint REF Dependent;

};

// Brocade_SwitchHostedMgmtAccessPoint

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This is an association between a switch and a management access point that is hosted on it.")
    ]
class Brocade_SwitchHostedMgmtAccessPoint : CIM_HostedAccessPoint {
    [Override("Antecedent"),
     Max(1),
     Min(1),
     Description("The hosting system."),
     Key(true)
    ]
    Brocade_Switch REF Antecedent;

     [Override("Dependent"),
     Description("The management SAP that is hosted on this system."),
     Weak(true),
     Key(true)
    ]
    Brocade_MgmtAccessPoint REF Dependent;

};

// Brocade_FabricHostedSANAccessPoint

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_FabricHostedSANAccessPoint is an association between ProtocolEndPoint and the fabric on which it is provided.  The cardinality of this association is one-to-many and is weak with respect to the fabric.\n\nEach platform can host many ProtocolEndPoints.  This association is created ONLY if the Brocade_Device cannot be scoped within Brocade_Platform.  This can happen if the scoping platform cannot be determined for some reason: for example, if it was not registered in the platform database.")
    ]
class Brocade_FabricHostedSANAccessPoint : CIM_HostedAccessPoint {
    [Override("Antecedent"),
     Max(1),
     Min(1),
     Description("The hosting system."),
     Key(true)
    ]
    Brocade_Fabric REF Antecedent;

     [Override("Dependent"),
     Description("The SAPs hosted on this system."),
     Weak(true),
     Key(true)
    ]
    Brocade_SANProtocolEndPoint REF Dependent;

};

// Brocade_SwitchHostedRemoteAccessPoint

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchHostedRemoteAccessPoint associates Brocade_Switch with Brocade_WebGUIRemoteAccessPoint that represents the URLfor launching the Webtools application.")
    ]
class Brocade_SwitchHostedRemoteAccessPoint : CIM_HostedAccessPoint {
    [Override("Antecedent"),
     Description("A switch that is hosting WebGUIRemoteAccessPoint"),
     Min(1),
     Max(1),
     Key(true)
    ]
    Brocade_Switch REF Antecedent;

     [Override("Dependent"),
     Description("A WebGUIRemoteAccessPoint hosted by Switch"),
     Weak(true),
     Key(true)
    ]
    Brocade_WebGUIRemoteAccessPoint REF Dependent;

};

// Brocade_ManagementServer

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ManagementServer is a host that runs one or more Brocade_Agent instances.")
    ]
class Brocade_ManagementServer : CIM_ComputerSystem {
    [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_ManagementServer";

     [Override("Name"),
     MaxLen(256),
     Description("The management server host name or IP address that uniquely identifies this host."),
     Key(true)
    ]
    string Name;

     [Override("Dedicated"),
     Description("Indicates that the computer system is a management server."),
     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"},
     MappingStrings{"MIB.IETF|MIB-II.sysServices"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ComputerSystem.OtherDedicatedDescriptions"}
    ]
    uint16 Dedicated[] = {14};

     [Override("ElementName"),
     Description("Management Server symbolic name.")
    ]
    string ElementName;

     [Override("NameFormat"),
     Description("The ComputerSystem object and its derivatives are top-level CIM objects.  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 a name that better suits a business can be assigned and used for ComputerSystem, using the inherited ElementName property."),
     ValueMap{"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI", "WWN"},
     MaxLen(64)
    ]
    string NameFormat = "Other";

};

// Brocade_HostedSwitchSoftwareInstallationService

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_HostedSwitchSoftwareInstallationService is an association between a Service and the System on which the functionality resides.Here the service isBrocade_SwitchSoftwareInstallationService and the Systemis Brocade_ManagementServer")
    ]
class Brocade_HostedSwitchSoftwareInstallationService : CIM_HostedService {
    [Override("Antecedent"),
     Min(1),
     Max(1),
     Description("The hosting System."),
     Key(true)
    ]
    Brocade_ManagementServer REF Antecedent;

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

};

// Brocade_HostedConnectionMonitoringService

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This is an association between the connection monitoring service and the management server hosting it.")
    ]
class Brocade_HostedConnectionMonitoringService : CIM_HostedService {
    [Override("Antecedent"),
     Description("The hosting system."),
     Min(1),
     Max(1),
     Key(true)
    ]
    Brocade_ManagementServer REF Antecedent;

     [Override("Dependent"),
     Description("The monitoring service hosted on the system."),
     Weak(true),
     Key(true)
    ]
    Brocade_ConnectionMonitoringService REF Dependent;

};

// Brocade_FabricAdminService

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_FabricAdminService represents the service that enables administrative operations to be performed on fabric elements (switches and end devices, such as HBAs.")
    ]
class Brocade_FabricAdminService : CIM_Service {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping fabric\'s CreationClassName."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_Fabric";

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

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_FabricAdminService";

     [Override("Name"),
     MaxLen(256),
     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 object\'s Description property."),
     Key(true)
    ]
    string Name;

    [Description("This method downloads a configuration file to a managed element (for example, a switch) within a fabric.\n\nSupported by Target Firmware versions: 2.6.x, 3.1.x, 3.2.x, 4.1.x, 4.0.x, 4.2.x, 4.4.x, 5.0.x."),
     ValueMap{"0", "1", "3", "4", "5", "32778", "32780"},
     Values{"Success", "Not Supported", "Timeout", "Failed", "Invalid Parameter", "Not Downloadable", "Not Primary FCS"}
    ]
    uint32 ConfigDownload([IN(true), Required(true), Description("The configuration that is to be downloaded.  Currently, only a blob interface is supported.")] uint8 config_data[], [IN(true), Description("The name of the file to which the configuration is to be persisted on the target.")] string target_file_name, [IN(true), Required(true), Description("The system to which the configuration is to be downloaded.")] CIM_ManagedSystemElement REF ManagedElement);
     [Description("This method uploads a configuration file from a managed element (for example, a switch) within a fabric.\n\nSupported by Target Firmware versions: 2.6.x, 3.1.x, 3.2.x, 4.1.x, 4.0.x, 4.2.x , 4.4.x, 5.0.x."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "32780"},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "Not Primary FCS"}
    ]
    uint32 ConfigUpload([OUT(true), Description("The configuration that is uploaded.")] uint8 config_data[], [IN(true), Required(true), Description("The system to which the configuration is to be uploaded.")] CIM_ManagedSystemElement REF ManagedElement);
     [Description("This method uploads the constraints on configuration data that can be downloaded into the switch.  Returns a list of prefixes of data that cannot be downloaded and data that requires reboot."),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "32780"},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "Not Primary FCS"}
    ]
    uint32 GetConfigConstraints([OUT(true), Description("A list of prefixes of data that cannot be downloaded and data that does not require reboot.\n\nSupported by Target Firmware versions: 2.6.x, 3.1.x, 3.2.x,4.1.x, 4.0.x, 4.2.x, 4.4.x, 5.0.x.")] uint8 config_keyword_data[], [IN(true), Required(true), Description("The system from which the constraints are to be uploaded.")] CIM_ManagedSystemElement REF ManagedElement);
     [Description("This method is used to get SCSI response using SCSI command from the target SCSI devices connected to the switch.Supported SCSI commands are GSCSI_STD_INQ,GSCSI_UNIT_NUMBER_PAGE AND GSCSI_DEVICE-ID-PAGE  Supported by Proxy Firmware versions: , 3.1.x,3.2.x,4.1.x, 4.2.x,4.3.x,4.4.x,5.0.x\nSupported by Target Firmware versions: 3.2.x,4.4.x,5.0.x\n"),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources"}
    ]
    uint32 GetSCSIResponse([OUT(true), Description("The SCSI Response returned from the switch for the given SCSI Command.\n\n")] uint8 SCSI_Response[], [IN(true), Required(true), Description("The WWN of the target SCSI device for SCSI Response.")] CIM_ManagedSystemElement REF ManagedElement, [IN(true), Required(true), Description("The SCSI Command for target SCSI device to get SCSI Response."), ValueMap{"1", "2", "3"}, Values{"GSCSI_STD_INQ", "GSCSI_UNIT_NUMBER_PAGE", "GSCSI_DEVICE-ID-PAGE"}] uint8 SCSIcmd);
     [Description("This method retrieves the support show information of particular switch in the fabric.Supported by Proxy Firmware versions: 3.1.x,3.2.x,4.2.x,4.4.x,5.0.x,7.3.xSupported by Target Firmware versions: 3.1.x,3.2.x,4.2.x,4.4.x,5.0.x,7.3.x"),
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "4096", "4099"},
     Values{"Success", "Not Supported", "Unspecified Error", "Timeout", "Failed", "Invalid Parameter", "Access_Denied", "Not_Found", "Already_Exists", "Insufficient_Resources", "ConcreteJob_Created", "ConcreteJob_Busy"}
    ]
    uint32 GetSupportShowInfo([IN(true), Required(true), Description("The system from which the support show information needs to be retrieved.")] CIM_ManagedSystemElement REF ManagedElement, [OUT(true), IN(false), Description("Reference to the job (can be null if task completed).")] CIM_ConcreteJob REF Job);
};

// Brocade_HostedFabricAdminService

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_HostedFabricAdminService is an association between the admin service and the fabric on which the functionality resides.")
    ]
class Brocade_HostedFabricAdminService : CIM_HostedService {
    [Override("Antecedent"),
     Max(1),
     Min(1),
     Description("The hosting fabric."),
     Key(true)
    ]
    Brocade_Fabric REF Antecedent;

     [Override("Dependent"),
     Description("The service hosted on the fabric."),
     Weak(true),
     Key(true)
    ]
    Brocade_FabricAdminService REF Dependent;

};

// Brocade_ZoneServiceInFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneServiceInFabric associates a zone service with the fabric on which it is hosted.")
    ]
class Brocade_ZoneServiceInFabric : CIM_HostedService {
    [Override("Antecedent"),
     Max(1),
     Min(1),
     Description("The hosting system."),
     Key(true)
    ]
    Brocade_Fabric REF Antecedent;

     [Override("Dependent"),
     Description("The service hosted on the system."),
     Weak(true),
     Key(true)
    ]
    Brocade_ZoneService REF Dependent;

};

// CIM_WBEMService

    [Abstract(true),
     Version("2.6.0"),
     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.")
    ]
class CIM_WBEMService : CIM_Service {
};

// Brocade_Agent

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_Agent is an agent that accesses a switch for management purposes.")
    ]
class Brocade_Agent : CIM_WBEMService {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system is the server on which the agent is hosted.  The scoping system class is Brocade_ManagementServer."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName = "Brocade_ManagementServer";

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name.  The scoping system is the server on which the agent is hosted.  This property represents the canonical host name."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_Agent";

     [Override("Name"),
     MaxLen(256),
     Description("The Name property uniquely identifies the agent and provides an indication of the functionality that is managed.  This property is the same as SystemName followed by \"_Agent\"."),
     Key(true)
    ]
    string Name;

     [Override("ElementName"),
     Write(true),
     Description("A user-friendly name for the agent.  This is by default the same as the SystemName property followed by the word \"Agent\".")
    ]
    string ElementName;

     [Description("The version of the CIMAgent.")
    ]
    string Version;

     [Description("The date of build of the CIMAgent, in the format YYYYMMDD_HHMMSS.")
    ]
    string Date;

     [Override("Description"),
     Write(true),
     Description("The Description property provides a textual description of the agent.  This is by default an empty string.")
    ]
    string Description;

     [Description("Default number of RPC handles that will becreated for a connection when the user does notspecify any requested number of RPC handles whencreating Brocade_Identity class. The value is 5.")
    ]
    uint16 DefaultNumOfRPCHandles;

     [Write(true),
     Description("The PortTrendingDataSource property provides the mechanism to configure AccessInfo for FM DataBase.The format should be <Type of Data Source>:<Version of Data Source>:<Data Source Identifier>. In the case of getting data from an FM Server,this string would be as follows... FMServerJDBC;<FM Server DB Schema Version>;<JDBC URI String>. The following is a sample string FMServerJDBC;com.sybase.jdbc2.jdbc.SybDriver;jdbc:sybase:Tds:localhost:2638/fabman,dba,sql")
    ]
    string PortTrendingDataSource;

     [Write(true),
     Description("Port to be used by the SMI Agent to listen for asynchronus reponse packets from the switch. If not specified, a random port assigned by OS will be used.")
    ]
    uint16 ARRPort;

     [Write(true),
     Description("Port to be used by the SMI Agent to listen for eventing responses from the switch")
    ]
    uint16 EventingPort;

     [Write(true),
     Description("The minimum number of threads in the thread pool at any given instant of time.")
    ]
    uint16 MinimumThreadCount;

     [Write(true),
     Description("The maximum number of threads in the thread pool at any given instant of time.")
    ]
    uint16 MaximumThreadCount;

};

// Brocade_HostedAgent

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This is an association between an agent and the management server hosting it.")
    ]
class Brocade_HostedAgent : CIM_HostedService {
    [Override("Antecedent"),
     Description("The hosting system."),
     Min(1),
     Max(1),
     Key(true)
    ]
    Brocade_ManagementServer REF Antecedent;

     [Override("Dependent"),
     Description("The agent hosted on the system."),
     Weak(true),
     Key(true)
    ]
    Brocade_Agent REF Dependent;

};

// Brocade_HostedSwitchAccessService

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This is an association between an access service and the management server hosting it.")
    ]
class Brocade_HostedSwitchAccessService : CIM_HostedService {
    [Override("Antecedent"),
     Max(1),
     Min(1),
     Description("The hosting system."),
     Key(true)
    ]
    Brocade_ManagementServer REF Antecedent;

     [Override("Dependent"),
     Description("The service hosted on the system."),
     Weak(true),
     Key(true)
    ]
    Brocade_SwitchAccessService REF Dependent;

};

// Brocade_NodeInFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_NodeInFabric defines a Brocade node scoped within a fabric.  This association is created ONLY if Brocade_Node cannot be scoped within Brocade_Platform.  This can happen if the scoping platform cannot be determined for some reason: for example, if it was not registered in the platform database.")
    ]
class Brocade_NodeInFabric : CIM_HostedCollection {
    [Override("Antecedent"),
     Description("The scoping fabric."),
     Min(1),
     Max(1),
     Key(true)
    ]
    Brocade_Fabric REF Antecedent;

     [Override("Dependent"),
     Description("The node being scoped to the fabric."),
     Key(true)
    ]
    Brocade_Node REF Dependent;

};

// Brocade_SwitchFCPortHistoricalStatisticsCollectionForSwitch

    [Association(true),
     Aggregation(true),
    Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPortHistoricalStatisticsCollectionForSwitch associates the Brocade_SwitchFCPortStatisticsCollection with the corresponding Brocade_Switch instance")
    ]
class Brocade_SwitchFCPortHistoricalStatisticsCollectionForSwitch : CIM_HostedCollection {
    [Override("Antecedent"),
     Description("Reference to Brocade_Switch instance."),
     Min(1),
     Max(1),
     Key(true)
    ]
    Brocade_Switch REF Antecedent;

     [Override("Dependent"),
     Description("Reference to Brocade_SwitchFCPortHistoricalStatisticsCollection instance."),
     Key(true)
    ]
    Brocade_SwitchFCPortHistoricalStatisticsCollection REF Dependent;

};

// Brocade_NodeInPlatform

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_NodeInPlatform defines a SystemSpecificCollection in the context of a scoping system.  Only nodes that are present in the platform database and also present in the Name Server are considered.Instances of this class can be created and deleted intrinsically.If the Platform is a HBA host and if the HBA host information is got through FDMI call then the createInstance or deleteInstance will not be supported.")
    ]
class Brocade_NodeInPlatform : CIM_HostedCollection {
    [Override("Antecedent"),
     Description("A platform hosts a collection of nodes."),
     MappingStrings{"API.Brocade | Platform | PlatformNodeSet "},
     Min(1),
     Max(1),
     Key(true)
    ]
    Brocade_Platform REF Antecedent;

     [Override("Dependent"),
     Description("The nodes that are hosted on a platform."),
     Key(true)
    ]
    Brocade_Node REF Dependent;

};

// Brocade_ZoneSetInFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneSetInFabric associates a zone set with the fabric on which the zone set is configured.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_ZoneSetInFabric : CIM_HostedCollection {
    [Override("Antecedent"),
     Min(1),
     Max(1),
     Description("The scoping system."),
     Key(true)
    ]
    Brocade_Fabric REF Antecedent;

     [Override("Dependent"),
     Description("The collection defined in the context of a system."),
     Key(true)
    ]
    Brocade_ZoneSet REF Dependent;

};

// Brocade_HostedSoftwareIdentityCollection

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("It represents an association between the instance of a Brocade_SoftwareIdentityCollection and the Brocade_ManagementServer.")
    ]
class Brocade_HostedSoftwareIdentityCollection : CIM_HostedCollection {
    [Override("Antecedent"),
     Min(1),
     Max(1),
     Description("The scoping system, Brocade_ManagementServer. "),
     Key(true)
    ]
    Brocade_ManagementServer REF Antecedent;

     [Override("Dependent"),
     Description("The collection defined in the context of a system."),
     Key(true)
    ]
    Brocade_SoftwareIdentityCollection REF Dependent;

};

// Brocade_ZoneInFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneInFabric associates a zone with the fabric on which the zone is configured.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_ZoneInFabric : CIM_HostedCollection {
    [Override("Antecedent"),
     Min(1),
     Max(1),
     Description("The scoping system."),
     Key(true)
    ]
    Brocade_Fabric REF Antecedent;

     [Override("Dependent"),
     Description("The collection defined in the context of a system."),
     Key(true)
    ]
    Brocade_Zone REF Dependent;

};

// Brocade_ZoneAliasInFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_ZoneAliasInFabric associates a ZoneAlias to the fabric on which it is configured.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_ZoneAliasInFabric : CIM_HostedCollection {
    [Override("Antecedent"),
     Min(1),
     Max(1),
     Description("The scoping system."),
     Key(true)
    ]
    Brocade_Fabric REF Antecedent;

     [Override("Dependent"),
     Description("The collection defined in the context of a system."),
     Key(true)
    ]
    Brocade_ZoneAlias REF Dependent;

};

// Brocade_SwitchFCPortStatisticsCollectionForSwitch

    [Association(true),
     Aggregation(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchFCPortStatisticsCollectionForSwitch associates the Brocade_SwitchFCPortStatisticsCollection with the corresponding Brocade_Switch instance")
    ]
class Brocade_SwitchFCPortStatisticsCollectionForSwitch : CIM_HostedCollection {
    [Override("Antecedent"),
     Description("Reference to Brocade_Switch instance."),
     Min(1),
     Max(1),
     Key(true)
    ]
    Brocade_Switch REF Antecedent;

     [Override("Dependent"),
     Description("Reference to Brocade_SwitchFCPortStatisticsCollection instance."),
     Key(true)
    ]
    Brocade_SwitchFCPortStatisticsCollection REF Dependent;

};

// Brocade_LogicalNetworkInFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association is used to associate the logical network with the fabric.  Each logical network is part of a single fabric.  In general, each fabric is an administrative domain, and the same administrative policy and actions are applied to all of the elements in the fabric.")
    ]
class Brocade_LogicalNetworkInFabric : CIM_HostedCollection {
    [Override("Antecedent"),
     Min(1),
     Max(1),
     Description("The fabric that hosts LogicalNetwork."),
     Key(true)
    ]
    Brocade_Fabric REF Antecedent;

     [Override("Dependent"),
     Weak(true),
     Description("The logical networks that are hosted by the fabric."),
     Key(true)
    ]
    Brocade_LogicalNetwork REF Dependent;

};

// Brocade_BladeSlot

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_BladeSlot slots on a chassis backplane for which Blades get be inserted.")
    ]
class Brocade_BladeSlot : CIM_Slot {
    [Override("Tag"),
     MaxLen(256),
     Description("An arbitrary string that uniquely identifies the Blade Slotand serves as its physical key.  The Tag property contains the WWN of the license switch (LicenseWWN) and the Slot Index."),
     Key(true)
    ]
    string Tag;

     [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName = "Brocade_BladeSlot";

     [Override("Number"),
     Description("Number represents the FRU number of the blade which is inserted in the slot."),
     MappingStrings{"MIF.DMTF|System Slot|005.1"}
    ]
    uint16 Number;

     [Override("SpecialPurpose"),
     Description("Boolean indicating that this Slot is physically unique and may hold special types of hardware, e.g. a graphics processor slot. If set to TRUE, then the property, Special PurposeDescription (a string), should specify the nature of the uniqueness or purpose of the Slot."),
     ModelCorrespondence{"CIM_Slot.PurposeDescription"}
    ]
    boolean SpecialPurpose;

     [Override("PurposeDescription"),
     Description("A free-form string describing that this Slot is physically unique and may hold special types of hardware. This property only has meaning when the corresponding boolean property, SpecialPurpose, is set to TRUE."),
     ModelCorrespondence{"CIM_Slot.SpecialPurpose"}
    ]
    string PurposeDescription;

};

// Brocade_BladeInSlot

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_BladeInSlot is the association that defines the mapping between BrocadeBlade and the slot in which Blade is inserted.  The cardinality of this association is one-to-one.")
    ]
class Brocade_BladeInSlot : CIM_PackageInSlot {
    [Override("Antecedent"),
     Description("The Slot into which the PhysicalPackage is inserted."),
     Key(true)
    ]
    Brocade_BladeSlot REF Antecedent;

     [Override("Dependent"),
     Description("The Package in the Slot."),
     Max(1),
     Key(true)
    ]
    Brocade_Blade REF Dependent;

};

// Brocade_SwitchConnection

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association represents a connection between two management access points.  It is created only if the authentication via LoginAsUser is successful.\n\nInstances of this class can be deleted by a client.")
    ]
class Brocade_SwitchConnection : CIM_ActiveConnection {
    [Override("Antecedent"),
     Description("A service access point (SAP) that is configured to communicate or is actively communicating with the dependent SAP.  In a unidirectional connection, this is the SAP that is transmitting."),
     Key(true)
    ]
    Brocade_RemoteServiceMgmtAccessPoint REF Antecedent;

     [Override("Dependent"),
     Description("A second ServiceAccessPoint that can communicate with the Antecedent SAP.  In a unidirectional connection, this is the SAP that is receiving the communication."),
     Key(true)
    ]
    Brocade_MgmtAccessPoint REF Dependent;

     [Description("The status of the connection."),
     ValueMap{"0", "1", "2"},
     Values{"Unknown", "Active", "Inactive"}
    ]
    uint16 Status;

     [Write(true),
     Description("The connection timeout value.  A value greater than 0 must be specified when setting this property.")
    ]
    uint16 Timeout;

     [Description("Number of RPC handles successfully created for this switch connection.")
    ]
    uint16 NumOfRPCHandles;

};

// CIM_ProtocolEndpoint

    [Version("2.8.0"),
     Description("A communication point from which data may be sent or received. ProtocolEndpoints link system/computer interfaces to LogicalNetworks.")
    ]
class CIM_ProtocolEndpoint : CIM_ServiceAccessPoint {
    [Override("Description"),
     MappingStrings{"MIB.IETF|IF-MIB.ifDescr"},
     Description("The Description property provides a textual description of the object.")
    ]
    string Description;

     [Override("OperationalStatus"),
     MappingStrings{"MIB.IETF|IF-MIB.ifOperStatus"},
     Description("Indicates the current status(es) of the element. Various health and operational statuses are defined. Many of the enumeration\'s values are self- explanatory. However, a few are not and are described in more detail. \n\"Stressed\" indicates that the element is functioning, but needs attention. Examples of \"Stressed\" states are overload, overheated, etc. \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 element\'s state and configuration may need to be updated. \n\"Dormant\" indicates that the element is inactive or quiesced. \n\"Supporting Entity in Error\" describes that this element may 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 the element has completed its operation. This value should be combined with either OK, Error, or Degraded so that a client can till if the complete operation passed (Completed with OK), and failure (Completed with Error). Completed with Degraded would imply the operation finished, but did not complete OK or report an error. \n\"Power Mode\" indicates 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 since it required the DEPRECATED qualifier. Due to the widespread use of the existing Status property in management applications, it is strongly RECOMMENDED that providers/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 (since it is single-valued) SHOULD also provide the primary status of the element."),
     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"},
     ArrayType("Indexed"),
     ModelCorrespondence{"CIM_ManagedSystemElement.StatusDescriptions"}
    ]
    uint16 OperationalStatus[];

     [Override("EnabledState"),
     MappingStrings{"MIB.IETF|IF-MIB.ifAdminStatus"},
     Description("EnabledState is an integer enumeration that indicates the enabled/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/disabled states: \nEnabled (2) indicates that the element is/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 doesn\'t support being enabled/disabled. \nEnabled but Offline (6) indicates that the element may 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 may be completing commands, but will queue any new requests. \nQuiesce (9) indicates that the element is enabled but in a restricted mode. The element\'s behavior is similar to the Enabled state, but it only processes 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."),
     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"},
     ModelCorrespondence{"CIM_EnabledLogicalElement.OtherEnabledState"}
    ]
    uint16 EnabledState;

     [Override("TimeOfLastStateChange"),
     MappingStrings{"MIB.IETF|IF-MIB.ifLastChange"},
     Description("The date/time when the element\'s EnabledState 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;

     [Override("Name"),
     Description("A string which 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 chosen is described in the NameFormat property of this class."),
     MaxLen(256),
     Key(true)
    ]
    string Name;

     [Description("NameFormat contains the naming heuristic that is chosen to ensure that the value of the Name property is unique. For example, one might choose to prepend the name of the port or interface with the Type of ProtocolEndpoint that this instance is (e.g., IPv4) followed by an underscore."),
     MaxLen(256)
    ]
    string NameFormat;

     [Deprecated{"CIM_ProtocolEndpoint.ProtocolIFType"},
     Description("ProtocolType is an enumeration providing information to categorize and classify different instances of this class. For most instances, information in this enumeration and the subclass\' definition 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). Hence, this property is needed to define the type of Endpoint. \n\nThis property is deprecated in lieu of the ProtocolIFType enumeration. This is done to have better alignment between the IETF\'s IF-MIB and this CIM class."),
     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"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}
    ]
    uint16 ProtocolType;

     [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. 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."),
     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", "..4095", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109", "4110", "4111", "4112", "4113", "4114", "4115", "..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", "DMTF Reserved", "Vendor Reserved"},
     MappingStrings{"MIB.IETF|IF-MIB.ifType"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}
    ]
    uint16 ProtocolIFType;

     [Description("A string describing the type of ProtocolEndpoint when the Type property of this class (or any of its subclasses) is set to 1 (i.e., \"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;

     [Experimental(true),
     Description("A boolean indicating whether the instrumentation supports the BroadcastReset method."),
     ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastReset"}
    ]
    boolean BroadcastResetSupported;

    [Experimental(true),
     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."),
     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"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastResetSupported"}
    ]
    uint32 BroadcastReset();
};

// Brocade_SANProtocolEndPoint

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("The access point of a switch or node port into the storage area network.")
    ]
class Brocade_SANProtocolEndPoint : CIM_ProtocolEndPoint {
    [Override("SystemCreationClassName"),
     MaxLen(256),
     Description("The scoping system\'s creation class name.  The scoping system in this case is Brocade_Switch or Brocade_Platform.  Note that Brocade_Node can be used in cases where Brocade_Platform is not available."),
     Key(true),
     Propagated("CIM_System.CreationClassName")
    ]
    string SystemCreationClassName;

     [Override("SystemName"),
     MaxLen(256),
     Description("The scoping system\'s name.  The scoping system in this case is Brocade_Switch or Brocade_Platform.  Brocade_Node can be used in cases where Brocade_Platform is not available."),
     Key(true),
     Propagated("CIM_System.Name")
    ]
    string SystemName;

     [Override("CreationClassName"),
     MaxLen(256),
     Description("CreationClassName indicates the name of the Brocade_FCPort or its subclasses 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)
    ]
    string CreationClassName;

     [Override("Name"),
     MaxLen(256),
     Description("The Name property is an opaque property that uniquely identifies the protocol endpoint and provides an indication of the functionality that is managed.  Name should be scoped by the Brocade_FCPort name that it is associated with."),
     Key(true)
    ]
    string Name;

     [Override("NameFormat"),
     MaxLen(256),
     Description("NameFormat contains the naming heuristic that is chosen to ensure that the value of the Name property is unique. For example, one might choose to prepend the name of the port or interface with the Type of ProtocolEndpoint that this instance is (e.g., IPv4) followed by an underscore.")
    ]
    string NameFormat = "WWN";

     [Override("ProtocolIFType"),
     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. 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."),
     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", "..4095", "4096", "4097", "4098", "4099", "4100", "4101", "4102", "4103", "4104", "4105", "4106", "4107", "4108", "4109", "4110", "4111", "4112", "4113", "4114", "4115", "..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", "DMTF Reserved", "Vendor Reserved"},
     MappingStrings{"MIB.IETF|IF-MIB.ifType"},
     ModelCorrespondence{"CIM_ProtocolEndpoint.OtherTypeDescription"}
    ]
    uint16 ProtocolIFType = 56;

     [Required(true),
     Override("BroadcastResetSupported"),
     Description("A boolean indicating whether the instrumentation supports the BroadcastReset method."),
     ModelCorrespondence{"CIM_ProtocolEndpoint.BroadcastReset"}
    ]
    boolean BroadcastResetSupported = false;

};

// Brocade_SANActiveConnection

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association defines a connection that is currently carrying traffic between two protocol endpoints.")
    ]
class Brocade_SANActiveConnection : CIM_ActiveConnection {
    [Override("Antecedent"),
     Description("A protocol endpoint in active communication with the dependent ProtocolEndpoint."),
     Key(true)
    ]
    Brocade_SANProtocolEndpoint REF Antecedent;

     [Override("Dependent"),
     Description("A second protocol endpoint communicating with the antecedent protocol endpoint."),
     MappingStrings{"API.Brocade | Port | ConnectedPortSet "},
     Key(true)
    ]
    Brocade_SANProtocolEndPoint REF Dependent;

};

// Brocade_NodeFCPortControlledBy

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association represents the relationship between a device and ports.")
    ]
class Brocade_NodeFCPortControlledBy : CIM_ControlledBy {
    [Override("Antecedent"),
     Description("The device that controls the port."),
     Key(true)
    ]
    Brocade_Device REF Antecedent;

     [Override("Dependent"),
     Description("The port being controlled."),
     Key(true)
    ]
    Brocade_NodeFCPort REF Dependent;

     [Override("DeviceNumber"),
     MaxLen(255),
     Description("Address of associated port in context of the antecedent device. This may be a comma-separated list in case there are multiple adresses."),
     MappingStrings{"FC-GS-4 | FDMI | OS Device Name"}
    ]
    string DeviceNumber;

};

// Brocade_AgentUsesSwitchAccessService

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_AgentUsesSwitchAccessService is an association between an agent and the switch access service that it uses to access a switch.")
    ]
class Brocade_AgentUsesSwitchAccessService : CIM_ServiceServiceDependency {
    [Override("Antecedent"),
     Description("The access service."),
     Key(true)
    ]
    Brocade_SwitchAccessService REF Antecedent;

     [Override("Dependent"),
     Description("The agent that is dependent on an access service."),
     Key(true)
    ]
    Brocade_Agent REF Dependent;

};

// Brocade_PlatformPackage

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association denotes one or more physical HBAs that realize a Platform.")
    ]
class Brocade_PlatformPackage : CIM_ComputerSystemPackage {
    [Override("Antecedent"),
     Description("The physical HBA that realizes a Platform."),
     Key(true)
    ]
    Brocade_PhysicalHBA REF Antecedent;

     [Override("Dependent"),
     Description("The Platform."),
     Key(true)
    ]
    Brocade_Platform REF Dependent;

};

// Brocade_SwitchInChassis

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SwitchInChassis is the association that defines the mapping between multiple Brocade switch instances in a single chassis.  The cardinality of this association is one-to-many.  For example, a single SilkWorm 12000 chassis maps to two logical switch instances.  Note that \'unreachable\' switches will not be returned when traversing this association from a chassis.  An \'unreachable\' switch is a switch that might be running within the chassis but is not accessible due to not being in any of the fabrics that the CIM agent is managing.")
    ]
class Brocade_SwitchInChassis : CIM_ComputerSystemPackage {
    [Override("Antecedent"),
     Max(1),
     Min(1),
     Description("The chassis associated with one or more switch instances."),
     Key(true)
    ]
    Brocade_Chassis REF Antecedent;

     [Override("Dependent"),
     Description("Instances of a switch that are associated with the chassis."),
     Key(true)
    ]
    Brocade_Switch REF Dependent;

};

// Brocade_DeviceInFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_DeviceInFabric defines a SystemSpecificCollection in the context of a scoping system.  This association is created ONLY if Brocade_Device cannot be scoped within Brocade_Platform.  This can happen if the scoping platform cannot be determined for some reason: for example, if it was not registered in the platform database."),
     Composition(true),
     Aggregation(true)
    ]
class Brocade_DeviceInFabric : CIM_SystemDevice {
    [Override("GroupComponent"),
     Description("A platform hosts a collection of devices."),
     Min(1),
     Max(1),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Fabric REF GroupComponent;

     [Override("PartComponent"),
     Description("The devices hosted on a platform."),
     Weak(true),
     Key(true)
    ]
    Brocade_Device REF PartComponent;

};

// Brocade_PortInPCS

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PortInPCS is a generic association used to establish membership relationships between a physicalcomputersystem and physicalports contained within that physicalcomputersystem."),
     Composition(true),
     Aggregation(true)
    ]
class Brocade_PortInPCS : CIM_SystemDevice {
    [Override("GroupComponent"),
     Description("The physicalcomputersystem that has contained physicalports."),
     Min(1),
     Max(1),
     Key(true),
     Aggregate(true)
    ]
    Brocade_PhysicalComputerSystem REF GroupComponent;

     [Override("PartComponent"),
     Description("The physicalport contained in the physicalcomputersystem."),
     Weak(true),
     Key(true)
    ]
    Brocade_PCSNetworkPort REF PartComponent;

};

// Brocade_NodePortInFabric

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_NodePortInFabric is a generic association used to establish membership relationships between a fabric and node ports contained within that fabric.  This association is created ONLY if Brocade_NodeFCPort cannot be scoped within Brocade_Platform.  This can happen if the scoping platform cannot be determined for some reason: for example, if it was not registered in the platform database."),
     Composition(true),
     Aggregation(true)
    ]
class Brocade_NodePortInFabric : CIM_SystemDevice {
    [Override("GroupComponent"),
     Description("The fabric that contains the node ports."),
     Min(1),
     Max(1),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Fabric REF GroupComponent;

     [Override("PartComponent"),
     Description("The node ports contained in this platform."),
     Weak(true),
     Key(true)
    ]
    Brocade_NodeFCPort REF PartComponent;

};

// Brocade_NodePortInPlatform

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_NodePortInPlatform is a generic association used to establish membership relationships between a platform and the node ports contained within that platform."),
     Composition(true),
     Aggregation(true)
    ]
class Brocade_NodePortInPlatform : CIM_SystemDevice {
    [Override("GroupComponent"),
     Description("The platform that has contained node ports."),
     Min(1),
     Max(1),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Platform REF GroupComponent;

     [Override("PartComponent"),
     Description("The node ports contained in this platform."),
     Weak(true),
     Key(true)
    ]
    Brocade_NodeFCPort REF PartComponent;

};

// Brocade_DeviceInPlatform

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_DeviceInPlatform defines a SystemSpecificCollection in the context of a scoping system.  The node registered in the platform database must also be registered in the Name Server."),
     Composition(true),
     Aggregation(true)
    ]
class Brocade_DeviceInPlatform : CIM_SystemDevice {
    [Override("GroupComponent"),
     Description("A platform hosts a collection of devices."),
     MappingStrings{"API.Brocade | Platform | PlatformNodeSet "},
     Min(1),
     Max(1),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Platform REF GroupComponent;

     [Override("PartComponent"),
     Description("The devices hosted on a platform."),
     Weak(true),
     Key(true)
    ]
    Brocade_Device REF PartComponent;

};

// Brocade_PortModuleInSwitch

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PortModuleInSwitch is a generic association used to establish membership relationships between a switch and the port modules contained within that switch."),
     Composition(true),
     Aggregation(true)
    ]
class Brocade_PortModuleInSwitch : CIM_SystemDevice {
    [Override("GroupComponent"),
     Description("The switch that has contained port modules."),
     Min(1),
     Max(1),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Switch REF GroupComponent;

     [Override("PartComponent"),
     Description("The port modules contained in this switch."),
     MappingStrings{"API.Brocade | Switch | PortModuleSet"},
     Weak(true),
     Key(true)
    ]
    Brocade_PortModule REF PartComponent;

};

// Brocade_PortInSwitch

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_PortInSwitch is a generic association used to establish membership relationships between a switch and ports contained within that switch."),
     Composition(true),
     Aggregation(true)
    ]
class Brocade_PortInSwitch : CIM_SystemDevice {
    [Override("GroupComponent"),
     Description("The switch that has contained ports."),
     Min(1),
     Max(1),
     Key(true),
     Aggregate(true)
    ]
    Brocade_Switch REF GroupComponent;

     [Override("PartComponent"),
     Description("The ports contained in this switch."),
     Weak(true),
     Key(true)
    ]
    Brocade_SwitchFCPort REF PartComponent;

};

// Brocade_SAN

    [Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_SAN represents a storage area network with switches and storage elements connected using a set of protocols.")
    ]
class Brocade_SAN : CIM_AdminDomain {
    [Override("CreationClassName"),
     MaxLen(256),
     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)
    ]
    string CreationClassName;

     [Override("Name"),
     Description("An opaque key that identifies the SAN.  This is equivalent to the WWN of the proxy switch to the SAN."),
     Key(true),
     MaxLen(256)
    ]
    string Name;

     [Override("ElementName"),
     Write(true),
     Description("This is a descriptive name to identify the SAN.  It has a default value of \"Brocade SAN\".")
    ]
    string ElementName;

     [Override("NameFormat"),
     Description("The NameFormat property identifies how the name of the Brocade_SAN is generated, using the heuristic specified in the CIM V2 System Model specification.  It assumes that the documented rules are traversed in order, to determine and assign a name.  The NameFormat Values list defines the precedence order for assigning the name of the Brocade_SAN.\n\n\"FC\" has been deprecated and replaced by \"WWN\" to be consistent with the other ValueMaps."),
     ValueMap{"Other", "WWN"},
     Values{"Other", "Fibre Channel Worldwide Name"},
     ModelCorrespondence{"Brocade_SAN.Name"},
     MaxLen(64)
    ]
    string NameFormat;

};

// Brocade_FabricInSAN

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("Brocade_FabricInSAN is a generic association used to establish membership relationships between the SAN and its fabrics."),
     Aggregation(true)
    ]
class Brocade_FabricInSAN : CIM_ContainedDomain {
    [Override("GroupComponent"),
     Description("The SAN that has fabrics."),
     Key(true),
     Aggregate(true)
    ]
    Brocade_SAN REF GroupComponent;

     [Override("PartComponent"),
     Description("The fabrics in this SAN."),
     Key(true)
    ]
    Brocade_Fabric REF PartComponent;

};

// Brocade_PhysicalChassisComponentInChassis

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association represents the containment relationship of various components (such as fans, power supply, and WWN card) and the chassis containing them."),
     Aggregation(true)
    ]
class Brocade_PhysicalChassisComponentInChassis : CIM_PackageInChassis {
    [Override("PartComponent"),
     Description("The physical components (such as fan or power supply) within a chassis."),
     Key(true)
    ]
    Brocade_PhysicalChassisComponent REF PartComponent;

     [Override("GroupComponent"),
     Description("The chassis that contains the components."),
     Max(1),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalContainedIn"},
     Key(true),
     Aggregate(true)
    ]
    Brocade_Chassis REF GroupComponent;

};

// Brocade_BladeInChassis

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association represents the containment relationship between blades and the chassis containing them."),
     Aggregation(true)
    ]
class Brocade_BladeInChassis : CIM_PackageInChassis {
    [Override("PartComponent"),
     Description("A blade contained in the chassis."),
     Key(true)
    ]
    Brocade_Blade REF PartComponent;

     [Override("GroupComponent"),
     Description("The chassis that contains blades."),
     Max(1),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalContainedIn"},
     Key(true),
     Aggregate(true)
    ]
    Brocade_Chassis REF GroupComponent;

};

// Brocade_BladeSlotInChassis

    [Association(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This association represents the containment relationship of slot and the chassis containing them."),
     Aggregation(true)
    ]
class Brocade_BladeSlotInChassis : CIM_ConnectorOnPackage {
    [Override("GroupComponent"),
     Max(1),
     Description("The PhysicalPackage that has a Connector."),
     MappingStrings{"MIB.IETF|Entity-MIB.entPhysicalContainedIn"},
     Key(true),
     Aggregate(true)
    ]
    Brocade_Chassis REF GroupComponent;

     [Override("PartComponent"),
     Description("The PhysicalConnector."),
     Key(true)
    ]
    Brocade_BladeSlot REF PartComponent;

};

// Brocade_AlertIndication

    [Indication(true),
     Provider("java:org.eclipse.aperi.simulator.cimom.sunwbem.provider.Provider"),
     Description("This indication is an asynchronous notification generated from switches or providers due to state changes that could be switch specific or fabric wide. These indications do not pertain to specific objects, rather they pertain to changes that affect one or more related classes of objects. For example, a zone change indication indicates that changes have taken place in the fabric zoning configuration and may affect all zoning related objects. Note:: it is possible to receive multiple indications for some specific fabric events. This is because the fabric may generate multiple events for the same cause. For example, during a fabric change, the fabric generates multiple events. An alert indication is delivered for each such fabric event. These redundant events are due to legacy code. In the case of error during enumerateInstances or enumerateInstanceNames this indication is delivered with the AlertingManagedElements containing 2 strings, the first is the method name and the second is the objectpath in error. For enumerateInstanceNames (on all classes except associations), the objectpath is that of fabric and for association classes it is the path in error. And for enumerateInstances, it is the path in error. Not Supported by Proxy Firmware: 3.0.x. Not Supported by Target Firmware: 3.0.x. Alert Indications from a silkworm AP7420 switch can only be received with silkworm AP7420 as proxy.Alert Indications for zone database changes such as session status changes, config enabled, config disabled etc, are Not Supported by Proxy Firmware: 2.6.x, 3.0.x, 4.0.x, 7.3.x. Firmware download indications are Supported by Target Firmware versions: 2.6.x, 3.1.x. HA Alert/Failover Completed is the only HA indication that is delivered. ")
    ]
class Brocade_AlertIndication : CIM_AlertIndication {
    [Override("IndicationIdentifier"),
     Description("Unique numeric identifier for indication."),
     MappingStrings{"Recommendation.ITU|X733.Notification identifier"}
    ]
    string IndicationIdentifier;

     [Override("IndicationTime"),
     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;

     [Override("AlertType"),
     Description("Primary classification of the Indication. The following values are defined: \n1 - Other. The Indication\'s OtherAlertType property conveys its classification. Use of \"Other\" in an enumeration is a standard CIM convention. It means that the current Indication does not fit into the categories described by this enumeration. \n2 - Communications Alert. An Indication of this type is principally associated with the procedures and/or processes required to convey information from one point to another. \n3 - Quality of Service Alert. An Indication of this type is principally associated with a degradation or errors in the performance or function of an entity. \n4 - Processing Error. An Indication of this type is principally associated with a software or processing fault. This is the AlertType generated for failures during enumerateInstanceNames or enumerateInstances. \n5 - Device Alert. An Indication of this type is principally associated with an equipment or hardware fault. \n6 - Environmental Alert. An Indication of this type is principally associated with a condition relating to an enclosure in which the hardware resides, or other environmental considerations. \n7 - Model Change. The Indication addresses changes in the Information Model. For example, it may embed a Lifecycle Indication to convey the specific model change being alerted. \n8 - Security Alert. An Indication of this type is associated with security violations, detection of viruses, and similar issues."),
     ValueMap{"1", "2", "3", "4", "5", "6", "7", "8"},
     Values{"Other", "Communications Alert", "Quality of Service Alert", "Processing Error", "Device Alert", "Environmental Alert", "Model Change", "Security Alert"},
     Required(true),
     MappingStrings{"Recommendation.ITU|X733.Event type"}
    ]
    uint16 AlertType;

     [Override("OtherAlertType"),
     Description("A string describing the Alert type - used when the AlertType property is set to 1, \"Other\". Other Alert types include notifications that are intended as state change notifications for fabric/switch/port/device/connection, etc."),
     ModelCorrespondence{"Brocade_AlertIndication.AlertType"},
     ValueMap{"Switch Alert", "Port Alert", "Fabric Alert", "Device Alert", "Zone Alert", "Platform Alert", "Firmware Alert", "Connection Alert", "HA Alert", "Agent Alert"}
    ]
    string OtherAlertType;

     [Description("A string describing the Alert subtype. The Alert Subtypes are: New Login - Login was attempted. Failed Login - Login attempt failed. Not Supported by Proxy Firmware: 7.3.x. Logout - Logout occurred. Config Changed - Configuration changed. Track Change On - SNMP traps were turned on to alert user of login/logout attempts into switch and configuration changes. Not Supported by Proxy Firmware: 7.3.x. Track Change Off - SNMP traps turned on by \'Track Change On\' were turned off. Not Supported by Proxy Firmware: 7.3.x. Up -The element identified by AlertingManagedElements is up. Down - The element identified by AlertingManagedElements is Down. Fabric Changed - Fabric either segmented or fabrics have merged. Connected Area Online - Multiple Devices (typically within a loop) came online. Not Supported by Proxy Firmware: 4.4.x and 5.0.x. Connected Area Offline - Multiple Devices (typically within a loop) went offline. Not Supported by Proxy Firmware: 4.4.x and 5.0.x. Connected Area State Unknown - State changes were detected for multiple devices but current state is unknown. Not Supported by Proxy Firmware: 7.3.x. Connected Port Online - A single device came online. Connected Port Offline - A single device went offline. Connected Port State Unknown - State changes were detected for a single device but current state of device is unknown. Not Supported by Proxy Firmware: 7.3.x. Database Merge Completed - Database merge for a fabric service was completed. Currently not implemented. This indication will be provided in later firmwares. Not Supported by Proxy Firmware: 7.3.x. Database Change Completed - Database changes for a fabric service were completed. Not Supported by Proxy Firmware: 7.3.x. Config Enabled - Configuration was enabled and from now on this configuration will be the active configuration. Config Disabled - Configuration was disabled and from now on the previously active configuration will be inactive. Config Saved - Configuration was saved into persistent store. Config Committed - Configuration changes made were committed. This indication is not guaranteed when a zone configuration is committed. Session aborted - A session(transaction) was aborted and all changes made within that transaction were discarded. Not Supported by Proxy Firmware: 7.3.x. Session Status Changed - A change in session status occurred (see EnabledStatus for change). Not Supported by Proxy Firmware: 7.3.x. Registered - Registration of this managed element with the admin domain was completed. Not Supported by Proxy Firmware: 7.3.x. Deregistration - Deregistration of this managed element with the admin domain was completed. Not Supported by Proxy Firmware: 7.3.x. State Changed - State change occured, see OperationalStatus of ManagedElement for details. Not Supported by Proxy Firmware: 7.3.x. Download Started - Download of firmware to the element was initiated, and corresponding \'Download Completed\' will indicate that this process is completed. Not Supported by Proxy Firmware: 7.3.x. Download Completed - Download of firmware was completed. Not Supported by Proxy Firmware: 7.3.x. Connection Merged - Two connections have merged. Not Supported by Proxy Firmware: 7.3.x. Connection Deactivated - An active connection went inactive. Connection Reactivated - An inactive connection was activated. Persistence Failure - Failed to persist connections. Initialization Failure - Failed to initialize switch data. Event Registration Failure - This connection failed to register for events. Provider cache will not get updated. This alert is fired approx every 1 minute on all connections which have no fabric eventing support.\nTo get the following alerts, TrackChanges must be set on the switch\nNew Login, Failed Login, Logout, Config Changed, Track Change On,Track Change Off, Up, Down, Fabric Changed."),
     MappingStrings{"API.Brocade | Event | EventType"},
     ModelCorrespondence{"Brocade_AlertIndication.OtherAlertType"},
     ValueMap{"New Login", "Failed Login", "Logout", "Config Changed", "Track Change On", "Track Change Off", "Up", "Down", "Fabric Changed", "Connected Area Online", "Connected Area Offline", "Connected Area State Unknown", "Connected Port Online", "Connected Port Offline", "Connected Port State Unknown", "Database Merge Completed", "Database Change Completed", "Config Enabled", "Config Disabled", "Config Saved", "Config Committed", "Session Aborted", "Session Status Changed", "Registered", "Deregistered", "State Changed", "Download Started", "Download Completed", "Connection Merged", "Connection Deactivated", "Connection Reactivated", "Failover Completed", "Persistence Failure", "Initialization Failure", "Event Registration Failure"}
    ]
    string AlertSubType;

     [Description("The identifying information for the admin domain (Fabric) for which this indication is generated. The property is the path of the Fabric instance encoded as a string. The entity within this domain for which the indication is generated is the called the AlertingManagedElement.")
    ]
    string AlertingAdminDomain;

     [Description("The identifying information of the entity (ie. the instance) for which this Indication is generated. The property contains the path of an instance, encoded as a string parameter, if the instance is modeled in the CIM Schema. If not a CIM instance, the property contains some identifying string that names the entity for which the Alert is generated e.g. Zone. In case there are multiple AlertingManagedElements the identifying information of all instances for which this Indication is generated is returned in the form of a string array (vector). e.g. events generated by loop devices coming online or going offline.")
    ]
    string AlertingManagedElements[];

     [Override("PerceivedSeverity"),
     Description("The severity of the event. The values are: 1 - 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 AlertIndication is purely informational or its severity is simply unknown."),
     Values{"Unknown", "Other", "Information", "Degraded/Warning", "Minor", "Major", "Critical", "Fatal/NonRecoverable"},
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7"},
     Required(true),
     MappingStrings{"Recommendation.ITU|X733.Perceived severity"}
    ]
    uint16 PerceivedSeverity = 0;

     [Override("ProbableCause"),
     Description("An enumerated value that describes the probable cause of the situation which resulted in the AlertIndication."),
     Values{"Unknown", "Other"},
     ValueMap{"0", "1"},
     Required(true),
     MappingStrings{"Recommendation.ITU|X733.Probable cause", "Recommendation.ITU|M3100.probableCause", "ITU-IANA-ALARM-TC"},
     ModelCorrespondence{"CIM_AlertIndication.ProbableCauseDescription", "CIM_AlertIndication.EventID", "CIM_AlertIndication.EventTime"}
    ]
    uint16 ProbableCause = 0;

     [Description("The debug level of this event."),
     Values{"Level_0", "Level_1", "Level_2", "Level_3", "Level_4", "Level_5", "Level_6", "Level_7", "Level_8", "Level_9"},
     ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
    ]
    uint16 DebugLevel = 0;

     [Override("Description"),
     Description("Textual (ASCII) description of indication."),
     MappingStrings{"Recommendation.ITU|X733.Additional text"}
    ]
    string Description;

};

// CIM_AlertInstIndication

    [Indication(true),
     Version("2.6.0"),
     Description("A subclass of CIM_AlertIndication that embeds a CIM_Inst Indication. It is used when adding AlertIndication data to a LifeCycle Indication.")
    ]
class CIM_AlertInstIndication : CIM_AlertIndication {
    [Override("AlertType"),
     Description("The primary classification of the Indication, defaulted to 7, \"Model Change\", for this class. This is done because: 1) the primary purpose of AlertInstIndication is to add Alert data to a LifeCycle Indication; and 2) LifeCycle Indications deal with \'model changes\'."),
     Required(true),
     ValueMap{"1", "2", "3", "4", "5", "6", "7", "8"},
     Values{"Other", "Communications Alert", "Quality of Service Alert", "Processing Error", "Device Alert", "Environmental Alert", "Model Change", "Security Alert"},
     MappingStrings{"Recommendation.ITU|X733.Event type"}
    ]
    uint16 AlertType = 7;

     [Required(true),
     Description("Embeds the InstIndication that is part of this Alert Indication. Only the properties selected by the Indication Filter\'s Query are included."),
     EmbeddedObject(true)
    ]
    string IndObject;

};

// CIM_IndicationHandlerCIMXML

    [Deprecated{"CIM_ListenerDestinationCIMXML"},
     Version("2.8.0"),
     Description("CIM_IndicationHandlerCIMXML describes the destination for Indications to be delivered via CIM-XML."),
     Provider("internal:cim_indicationhandler")
    ]
class CIM_IndicationHandlerCIMXML : CIM_IndicationHandler {
    [Deprecated{"CIM_ListenerDestinationCIMXML.Destination"},
     Required(true),
     Description("The destination URL to which CIM-XML Indication 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.")
    ]
    string Destination;

};

// WBEMSolutions_ListenerDestinationCIMXML

    [Version("1.0.0"),
     Description("WBEMSolutions_ListenerDestinationCIMXML describes the destination for CIM Export Messages to be delivered via CIM-XML.")
    ]
class WBEMSolutions_ListenerDestinationCIMXML : CIM_ListenerDestinationCIMXML {
    [Description("The name of the entity that created and/or maintains this Handler.")
    ]
    string Owner;

};

// CIM_ServiceAccessURI

    [Version("2.7.0"),
     Description("CIM_ServiceAccessURI represents the ability to utilize or invoke a Service via a uniform resource identifier. RFC 1738 describes the Uniform Resource Locator which is a more specific form of a URI, and RFC 2396 describes the broader, inclusive URI. Quoting from the RFC, \'A Uniform Resource Identifier (URI) is a compact string of characters for identifying an abstract or physical resource.\' In the context of a ServiceAccessPoint, a URI contains the information necessary to access an associated service (associated via ServiceAccessBySAP), using a syntax specific to that service.")
    ]
class CIM_ServiceAccessURI : CIM_ServiceAccessPoint {
    [Required(true),
     Description("The LabeledURI property is based on RFC 2079 and its value and syntax is service specific."),
     MaxLen(256)
    ]
    string LabeledURI;

};

// CIM_SCSIProtocolController

    [Version("2.8.0"),
     Description("SCSIProtocolController is a type of ProtocolController, managing a SCSI interface.")
    ]
class CIM_SCSIProtocolController : CIM_ProtocolController {
};
