(file) Return to Device_ProtocolController.mof CVS log (file) (dir) Up to [Pegasus] / pegasus / Schemas / CIMPrelim291

  1 a.dunfey 1.1 // ===================================================================
  2              // Title:  Device Protocol Controller
  3              // $State: Preliminary $
  4              // $Date: 2005/01/05 00:54:00 $
  5              // $Source: /home/dmtf2/dotorg/var/cvs/repositories/dev/Schema/MOF/Device_ProtocolController.mof,v $
  6              // $Revision: 1.17 $
  7              // ===================================================================
  8              //#pragma inLine ("Includes/copyright.inc")
  9              // Copyright 1998-2005 Distributed Management Task Force, Inc. (DMTF).
 10              // All rights reserved.
 11              // DMTF is a not-for-profit association of industry members dedicated
 12              // to promoting enterprise and systems management and interoperability.
 13              // DMTF specifications and documents may be reproduced for uses
 14              // consistent with this purpose by members and non-members,
 15              // provided that correct attribution is given.
 16              // As DMTF specifications may be revised from time to time,
 17              // the particular version and release date should always be noted.
 18              // 
 19              // Implementation of certain elements of this standard or proposed
 20              // standard may be subject to third party patent rights, including
 21              // provisional patent rights (herein "patent rights"). DMTF makes
 22 a.dunfey 1.1 // no representations to users of the standard as to the existence
 23              // of such rights, and is not responsible to recognize, disclose, or
 24              // identify any or all such third party patent right, owners or
 25              // claimants, nor for any incomplete or inaccurate identification or
 26              // disclosure of such rights, owners or claimants. DMTF shall have no
 27              // liability to any party, in any manner or circumstance, under any
 28              // legal theory whatsoever, for failure to recognize, disclose, or
 29              // identify any such third party patent rights, or for such party's
 30              // reliance on the standard or incorporation thereof in its product,
 31              // protocols or testing procedures. DMTF shall have no liability to
 32              // any party implementing such standard, whether such implementation
 33              // is foreseeable or not, nor to any patent owner or claimant, and shall
 34              // have no liability or responsibility for costs or losses incurred if
 35              // a standard is withdrawn or modified after publication, and shall be
 36              // indemnified and held harmless by any party implementing the
 37              // standard from any and all claims of infringement by a patent owner
 38              // for such implementations.
 39              // 
 40              // For information about patents held by third-parties which have
 41              // notified the DMTF that, in their opinion, such patent may relate to
 42              // or impact implementations of DMTF standards, visit
 43 a.dunfey 1.1 // http://www.dmtf.org/about/policies/disclosures.php.
 44              //#pragma inLine
 45              // ===================================================================
 46              // Description: The Device Model extends the management concepts that
 47              //              are related to LogicalDevices. This file defines
 48              //              the concepts and classes for Protocol Controllers.
 49              // 
 50              //              The object classes below are listed in an order that
 51              //              avoids forward references. Required objects, defined
 52              //              by other working groups, are omitted.
 53              // ==================================================================
 54              // Change Log for v2.9 Preliminary Company Review
 55              // CR1448 - Add a capability property and return value to ExposePaths
 56              //          method
 57              // CR1429 - Clarify description and values of
 58              //          ProtocolControllerForDevice.AccessState
 59              // 
 60              // Change Log for v2.9 preliminary
 61              // CR1202 - Add iSCSI related values to
 62              //    CIM_ProtocolControllerMaskingCapabilities.ValidHardwareIdTypes[]
 63              // CR1294 - Add NameFormat to ScsiProtocolController.
 64 a.dunfey 1.1 // CR1350 - New method & updates for LUN Masking and Mapping
 65              // CR1335 - Add DeviceAccess property to ProtocolControllerForUnit and
 66              //          ProtocolControllerAccessesUnit
 67              // CR1351 - Add iSCSI names to Values/ValueMap list in
 68              //          ProtocolControllerMaskingCapabilities
 69              // 
 70              // Change Log for v2.8 Final
 71              // CR1202 - Experimental to Final for Device
 72              // CR1201 - Fix use of Privilege/Identity in
 73              // CreateProtocolControllerWithPorts()
 74              // CR1223 - Fix ambiguity in ProtocolControllerMaskingCapabilities
 75              // 
 76              // Change Log for v2.8 Preliminary
 77              // CR1015 - Initial ProtocolController definition
 78              // CR1007 - Addition of ControllerConfigurationService and
 79              //          StorageMaskingService
 80              // CR1040 - Improves CreateProtocolController by allowing
 81              //          atomic creation with permissions.
 82              // CR1055 - Remove ConnectionRole from ProtocolController
 83              //          Add UsageRestriction to NetworkPort
 84              // CR1082 - Change StorageMaskingCapabilities to be
 85 a.dunfey 1.1 //          ProtocolControllerMaskingCapabilities
 86              // CR1108 - Change CreatePortProtocolController to
 87              //          CreateProtocolControllerWithPorts
 88              // 
 89              // ==================================================================
 90              
 91              #pragma locale ("en_US")
 92              
 93              
 94              // ===================================================================
 95              // ProtocolController
 96              // ===================================================================
 97                 [Abstract, Version ( "2.8.0" ), Description (
 98                     "ProtocolController is a superclass for grouping controllers "
 99                     "that are used to control the operation and function of "
100                     "sophisticated devices that instantiate a protocol such as "
101                     "SCSI. Simpler 'bus' and device controllers are modeled using "
102                     "the CIM_Controller class.")]
103              class CIM_ProtocolController : CIM_LogicalDevice {
104              
105                    [Description (
106 a.dunfey 1.1           "Maximum number of Units that can be controlled by or "
107                        "accessed through this ProtocolController.")]
108                 uint32 MaxUnitsControlled;
109              };
110              
111              // ===================================================================
112              // SCSIProtocolController
113              // ===================================================================
114                 [Version ( "2.8.1000" ), Description (
115                     "SCSIProtocolController is a type of ProtocolController, "
116                     "managing a SCSI interface.")]
117              class CIM_SCSIProtocolController : CIM_ProtocolController {
118              
119                    [Experimental, Description (
120                        "The NameFormat property identifies how the Name of the "
121                        "SCSIProtocolController is selected. \n"
122                        "For Fibre Channel, the NameFormat is 'FC Port WWN'. \n"
123                        "For iSCSI, Name can use any of the 3 iSCSI formats (iqn, "
124                        "eui, naa) which include the iSCSI format as as a prefix in "
125                        "the name, so they are not ambiguous."), 
126                     ValueMap { "0", "1", "2", "3" }, 
127 a.dunfey 1.1        Values { "Unknown", "Other", "FC Port WWN", "iSCSI Name" }, 
128                     ModelCorrespondence { "CIM_SCSIProtocolController.Name",
129                        "CIM_SCSIProtocolController.OtherNameFormat" }]
130                 uint16 NameFormat;
131              
132                    [Experimental, Description (
133                        "A string describing how the ProtocolController is "
134                        "identified when the NameFormat is \"Other\"."), 
135                     ModelCorrespondence { "CIM_SCSIProtocolController.Name",
136                        "CIM_SCSIProtocolController.NameFormat" }]
137                 string OtherNameFormat;
138              };
139              
140              // ===================================================================
141              // ProtocolControllerForDevice
142              // ===================================================================
143                 [Association, Abstract, Version ( "2.8.1000" ), Description (
144                     "This association indicates a subclass of LogicalDevice (for "
145                     "example a Storage Volume) is connected through a specific "
146                     "ProtocolController. In many situations (for example storage "
147                     "LUN masking), there may be many of these associations used to "
148 a.dunfey 1.1        "relate to different objects. Therefore subclasses have been "
149                     "defined to optimize enumeration of the associations.")]
150              class CIM_ProtocolControllerForDevice : CIM_Dependency {
151              
152                    [Override ( "Antecedent" ), Description (
153                        "The ProtocolController.")]
154                 CIM_ProtocolController REF Antecedent;
155              
156                    [Override ( "Dependent" ), Description (
157                        "The controlled Device.")]
158                 CIM_LogicalDevice REF Dependent;
159              
160                    [Description (
161                        "Address of the associated Device in the context of the "
162                        "Antecedent Controller.")]
163                 string DeviceNumber;
164              
165                    [Description (
166                        "This property describes the priority given to accesses of "
167                        "the device through this Controller. The highest priority "
168                        "path will have the lowest value for this parameter.")]
169 a.dunfey 1.1    uint16 AccessPriority;
170              
171                    [Description (
172                        "The AccessState property describes the accessibility of the "
173                        "LogicalDevice through the ProtocolController. \n"
174                        "Unknown (0) indicates the instrumentation does not know "
175                        "whether access is or is not functioning. \n"
176                        "Active (2) indicates normal access. \n"
177                        "Inactive (3) indicates the instrumentation knows this path "
178                        "is not active, and one of the other values (below) does not "
179                        "apply. \n"
180                        "Replication in Progress (4) indicates that the path is "
181                        "temporarily inactive due to a replication activity. \n"
182                        "Mapping Inconsistency (5) indicates the instrumentation has "
183                        "detected that this path is inactive due to an inconsistency "
184                        "in the DeviceNumber/DeviceAccess configuration."), 
185                     ValueMap { "0", "2", "3", "4", "5" }, 
186                     Values { "Unknown", "Active", "Inactive",
187                        "Replication In Progress", "Mapping Inconsistency" }]
188                 uint16 AccessState;
189              
190 a.dunfey 1.1 };
191              
192              // ===================================================================
193              // AssociatedProtocolController
194              // ===================================================================
195                 [Association, Version ( "2.8.0" ), Description (
196                     "This association is used to define a hierarchy relationship "
197                     "between ProtocolControllers. This subclass is provided so that "
198                     "an enumeration of related ProtocolControllers can be performed "
199                     "without retrieving any connected StorageVolumes, "
200                     "MediaAccessDevices or LogicalPorts.")]
201              class CIM_AssociatedProtocolController : CIM_ProtocolControllerForDevice {
202              
203                    [Override ( "Antecedent" ), Description (
204                        "The 'upstream', Antecedent ProtocolController.")]
205                 CIM_ProtocolController REF Antecedent;
206              
207                    [Override ( "Dependent" ), Description (
208                        "The 'downstream' Dependent ProtocolController.")]
209                 CIM_ProtocolController REF Dependent;
210              };
211 a.dunfey 1.1 
212              // ===================================================================
213              // ProtocolControllerForPort
214              // ===================================================================
215                 [Association, Version ( "2.8.0" ), Description (
216                     "This association is used to define a relationship between a "
217                     "ProtocolController and a LogicalPort. This subclass is "
218                     "provided so that an enumeration of related controllers and "
219                     "ports can be performed without retrieving any other "
220                     "controllers or connected units.")]
221              class CIM_ProtocolControllerForPort : CIM_ProtocolControllerForDevice {
222              
223                    [Override ( "Antecedent" ), Description (
224                        "The ProtocolController.")]
225                 CIM_ProtocolController REF Antecedent;
226              
227                    [Override ( "Dependent" ), Description (
228                        "The LogicalPort 'behind' the ProtocolController.")]
229                 CIM_LogicalPort REF Dependent;
230              };
231              
232 a.dunfey 1.1 // ===================================================================
233              // ProtocolControllerForUnit
234              // ===================================================================
235                 [Association, Version ( "2.8.0" ), Description (
236                     "This association is used to define a relationship between a "
237                     "ProtocolController and an exposed Logical Unit (for example a "
238                     "Storage Volume or a MediaAccessDevice such as a tape drive). "
239                     "An example of the use of this association is SCSI, where it "
240                     "link the target controller and Logical Units. This subclass is "
241                     "provided so that an enumeration of related controllers and "
242                     "units can be performed without retrieving any connected ports "
243                     "or other controllers.")]
244              class CIM_ProtocolControllerForUnit : CIM_ProtocolControllerForDevice {
245              
246                    [Override ( "Antecedent" ), Description (
247                        "The ProtocolController.")]
248                 CIM_ProtocolController REF Antecedent;
249              
250                    [Override ( "Dependent" ), Description (
251                        "The logical unit (eg StorageVolume) 'behind' the "
252                        "ProtocolController.")]
253 a.dunfey 1.1    CIM_LogicalDevice REF Dependent;
254              
255                    [Experimental, Description (
256                        "The access rights granted to the referenced logical unit as "
257                        "exposed through referenced ProtocolController. The 'No "
258                        "Access' value is used in implementations where the "
259                        "DeviceNumber is reserved, but no access is granted. \n"
260                        "If the instrumentation exposes PrivilegeManagementService, "
261                        "this property MUST be synchronized with the Activities "
262                        "property of any Privilege instances associated with "
263                        "StorageHardwareIDs associated to the referenced "
264                        "ProtocolController and the referenced LogicalDevice. In "
265                        "particular, when this property is 'Read Write', "
266                        "Privilege.Activities MUST include entries for 'Read' and "
267                        "'Write'. When this property is 'Read-Only', "
268                        "Privilege.Activities MUST include an entry for 'Read'. The "
269                        "corresponding entries for Privilege.ActivityQualifiers MUST "
270                        "be 'CDB=*' and the corresponding entries for "
271                        "Privilege.QualifierFormat MUST be 'SCSI Command'."), 
272                     ValueMap { "0", "2", "3", "4", "5..15999", "16000.." }, 
273                     Values { "Unknown", "Read Write", "Read-Only", "No Access",
274 a.dunfey 1.1           "DMTF Reserved", "Vendor Reserved" }]
275                 uint16 DeviceAccess;
276              };
277              
278              // ===================================================================
279              // ProtocolControllerAccessesUnit
280              // ===================================================================
281                 [Association, Version ( "2.8.0" ), Description (
282                     "This association is used to define a relationship between a "
283                     "protocol controllers and a Logical Unit (for example a Storage "
284                     "Volume or Media Access Device) controlled by the controller. "
285                     "This association is used instead of ProtocolControllerForUnit "
286                     "to indicate a 'controlled through' relationship rather than a "
287                     "'controlled by' one. An example is SCSI where this association "
288                     "is used to indicate a target/initiator relationship.")]
289              class CIM_ProtocolControllerAccessesUnit : CIM_ProtocolControllerForDevice {
290              
291                    [Override ( "Antecedent" ), Description (
292                        "The protocol controller.")]
293                 CIM_ProtocolController REF Antecedent;
294              
295 a.dunfey 1.1       [Override ( "Dependent" ), Description (
296                        "The logical unit (eg StorageVolume).")]
297                 CIM_LogicalDevice REF Dependent;
298              
299                    [Description (
300                        "The number of the dependent's target protocol controller. "
301                        "As an example, in SCSI this is the Target ID.")]
302                 string TargetControllerNumber;
303              
304                    [Experimental, Description (
305                        "The access rights granted to the referenced logical unit as "
306                        "exposed through referenced ProtocolController. The 'No "
307                        "Access' value is used in implementations where the "
308                        "DeviceNumber is reserved, but no access is granted. \n"
309                        "If the instrumentation exposes PrivilegeManagementService, "
310                        "this property MUST be synchronized with the Activities "
311                        "property of any Privilege instances associated with "
312                        "StorageHardwareIDs associated to the referenced "
313                        "ProtocolController and the referenced LogicalDevice. In "
314                        "particular, when this property is 'Read Write', "
315                        "Privilege.Activities MUST include entries for 'Read' and "
316 a.dunfey 1.1           "'Write'. When this property is 'Read-Only', "
317                        "Privilege.Activities MUST include an entry for 'Read'. The "
318                        "corresponding entries for Privilege.ActivityQualifiers MUST "
319                        "be 'CDB=*' and the corresponding entries for "
320                        "Privilege.QualifierFormat MUST be 'SCSI Command'."), 
321                     ValueMap { "0", "2", "3", "4", "5..15999", "16000.." }, 
322                     Values { "Unknown", "Read Write", "Read-Only", "No Access",
323                        "DMTF Reserved", "Vendor Reserved" }]
324                 uint16 DeviceAccess;
325              };
326              
327              // ==================================================================
328              //    ControllerConfigurationService
329              // ==================================================================
330                 [Version ( "2.8.1000" ), Description (
331                     "The ControllerConfigurationService provides methods that allow "
332                     "a client to manipulate LUN Masking in a storage system.")]
333              class CIM_ControllerConfigurationService : CIM_Service {
334              
335                    [Description (
336                        "This method creates an appropriate subclass of "
337 a.dunfey 1.1           "ProtocolController. In addition to its role of controlling "
338                        "downstream devices, a ProtocolControl is used to provide a "
339                        "central management point for access control with respect to "
340                        "those devices. Certain storage system implementations "
341                        "across multiple vendors require permissions to be "
342                        "established atomically with the creation of a "
343                        "ProtocolController. This method provides this capability "
344                        "via the Privilege and Identity properties. By supplying "
345                        "appropriate information in those properties, this method "
346                        "will assure that appropriate AuthorizedTarget and "
347                        "AuthorizedSubject associations, (as defined in the User and "
348                        "Security Model), are instantiated to restrict access to the "
349                        "logical devices 'behind' it. \n"
350                        "If multiple target ports are specified in the Ports input "
351                        "parameter, all expose the same view (i.e., have the same "
352                        "unit numbers and permissions). This method does not create "
353                        "the port instances, but does create "
354                        "ProtocolControllerForPort associations between the "
355                        "specified ports and the new ProtocolController. The new "
356                        "ProtocolController is defined to be weak to the same System "
357                        "as the ControllerConfigurationService."), 
358 a.dunfey 1.1        ValueMap { "0", "1", "2", "3", "4", "5", "6..4095", "4096",
359                        "4097", "4098", "4099..32767", "32768..65535" }, 
360                     Values { "Success", "Not Supported", "Unspecified Error",
361                        "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
362                        "ID Parameter Missing or Not Unique",
363                        "Hardware Implementation Requires Null Ports Parameter",
364                        "Busy", "Method Reserved", "Vendor Specific" }]
365                 uint32 CreateProtocolControllerWithPorts ( 
366                       [IN, Description (
367                           "The string to be used in the ElementName of the new "
368                           "ProtocolController."), 
369                        ModelCorrespondence { "CIM_ProtocolController.ElementName" }]
370                    string ElementName, 
371                       [IN, Description (
372                           "Array of strings containing representations of "
373                           "references to instances of CIM_LogicalPort (or subclass) "
374                           "instances. This is the list of target ports that are "
375                           "associated to the ProtocolController. "
376                           "ProtocolControllerForPort associations are created by "
377                           "the instrumentation associating the new "
378                           "ProtocolController to these ports. If this parameter is "
379 a.dunfey 1.1              "null, then all ports in the storage system (this "
380                           "Service's 'scoping' System and all its ComponentCS "
381                           "Systems) are attached to the new ProtocolController.")]
382                    string Ports[], 
383                       [IN, Description (
384                           "The protocol type for the new ProtocolController."), 
385                        ValueMap { "0", "1", "2" }, 
386                        Values { "Unknown", "Other", "SCSI" }, 
387                        ModelCorrespondence { "CIM_SCSIProtocolController" }]
388                    uint16 Protocol, 
389                       [IN, Description (
390                           "Reference to a CIM_Privilege (or subclass) instance to "
391                           "be used as a template. If supplied, it has a 1:1 "
392                           "correspondence with the Identity parameter and this "
393                           "method will atomically create the new ProtocolController "
394                           "instance and related AuthorizedPrivilege, "
395                           "AuthorizedTarget and AuthorizedSubject instances. \n"
396                           "Note: if ProtocolControllerRequiresAuthorizedIdentity is "
397                           "true, then the Identity/Privilege pair MUST be "
398                           "specified. If false, then the Identity/Privilege pair "
399                           "MUST NOT be specified."), 
400 a.dunfey 1.1           ModelCorrespondence { "CIM_ControllerConfigurationService." 
401                           "CreateProtocolControllerWithPorts.Identity" }]
402                    CIM_Privilege REF Privilege, 
403                       [IN, Description (
404                           "Reference to a CIM_ManagedElement (or subclass) "
405                           "instance. This ManagedElement MUST be either a "
406                           "CIM_Identity, or a CIM_Collection (or subclass, eg. "
407                           "SystemSpecificCollection, Role, or Group) that has "
408                           "CIM_Identities as MemberOfCollection. If "
409                           "ProtocolControllerMaskingCapabilities.ProtocolControllerSupportsCollection "
410                           "is false, the reference MUST be to a CIM_Identity (or "
411                           "subclass). If present, it has a 1:1 correspondence with "
412                           "the Privilege property. If present, this method will "
413                           "atomically create the new ProtocolController instance "
414                           "and instantiate a missing AuthorizedSubject association "
415                           "between the Privilege/Identity pair; and instantiate an "
416                           "AuthorizedTarget association between the "
417                           "AuthorizedPrivilege and the new ProtocolController. \n"
418                           "Note: if ProtocolControllerRequiresAuthorizedIdentity is "
419                           "true, then at least the Identity/Privilege pair MUST be "
420                           "specified."), 
421 a.dunfey 1.1           ModelCorrespondence { "CIM_ControllerConfigurationService." 
422                           "CreateProtocolControllerWithPorts.Privilege" }]
423                    CIM_ManagedElement REF Identity, 
424                       [IN ( false ), OUT, Description (
425                           "A reference to the new ProtocolController that is "
426                           "created.")]
427                    CIM_ProtocolController REF ProtocolController); 
428              
429                    [Description (
430                        "The method deletes an instance of ProtocolController and "
431                        "all associations in which this ProtocolController is "
432                        "referenced."), 
433                     ValueMap { "0", "1", "2", "3", "4", "5", "6..4095", "4096",
434                        "4097", "4098..32767", "32768..65535" }, 
435                     Values { "Success", "Not Supported", "Unspecified Error",
436                        "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
437                        "LogicalDevices Associated to Other ProtocolControllers Not " 
438                        "Deleted", "Busy", "Method Reserved", "Vendor Specific" }]
439                 uint32 DeleteProtocolController ( 
440                       [IN, Description (
441                           "The ProtocolController to be deleted.")]
442 a.dunfey 1.1       CIM_ProtocolController REF ProtocolController, 
443                       [IN, Description (
444                           "If true, the management instrumentation provider will "
445                           "also delete 'child' ProtocolControllers (i.e., those "
446                           "defined as Dependent references in instances of "
447                           "AssociatedProtocolController where this "
448                           "ProtocolController is the Antecedent reference). Also, "
449                           "all direct associations involving the 'child' "
450                           "ProtocolControllers will be removed.")]
451                    boolean DeleteChildrenProtocolControllers, 
452                       [IN, Description (
453                           "If true, the management instrumentation provider will "
454                           "also delete LogicalDevice instances associated via "
455                           "ProtocolControllerForUnit, to this ProtocolController "
456                           "and its children. (Note that 'child' controllers will "
457                           "only be affected if the "
458                           "DeleteChildrenProtocolControllers input parameter is "
459                           "TRUE). LogicalDevice instances are only deleted if there "
460                           "are NO remaining ProtocolControllerForUnit associations, "
461                           "to other ProtocolControllers.")]
462                    boolean DeleteUnits ); 
463 a.dunfey 1.1 
464                    [Description (
465                        "This method associates a LogicalDevice subclass "
466                        "(specifically a StorageVolume or MediaAccessDevice "
467                        "subclass) to the referenced ProtocolController. The "
468                        "association is persisted as an instance of "
469                        "ProtocolControllerForUnit. The management instrumentation "
470                        "provider must verify that the logical unit numbers (defined "
471                        "using the DeviceNumber input parameter) are unique for the "
472                        "ProtocolController. When the Protocol Controller is "
473                        "actively masking a device (i.e. is part of an "
474                        "AuthorizedTarget association), the provider should update "
475                        "the access configuration in the underlying hardware as "
476                        "appropriate."), 
477                     ValueMap { "0", "1", "2", "3", "4", "5", "6..4095", "4096",
478                        "4097", "4098", "4099", "4100", "4101..32767",
479                     "32768..65535" }, 
480                     Values { "Success", "Not Supported", "Unspecified Error",
481                        "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
482                        "Invalid LogicalDevice Instance", "Device Number Conflict",
483                        "DeviceNumber Parameter Must Be Provided",
484 a.dunfey 1.1           "Hardware Implementation Requires Null DeviceNumber", "Busy",
485                        "Method Reserved", "Vendor Specific" }]
486                 uint32 AttachDevice ( 
487                       [IN, Description (
488                           "The ProtocolController instance.")]
489                    CIM_ProtocolController REF ProtocolController, 
490                       [IN, Description (
491                           "The LogicalDevice instance to attach.")]
492                    CIM_LogicalDevice REF Device, 
493                       [IN, OUT, Description (
494                           "The number assigned to "
495                           "ProtocolControllerForUnit.DeviceNumber (if supported by "
496                           "the hardware). Hardware support is indicated by "
497                           "ProtocolControllerMaskingCapabilities.ClientSelectableDeviceNumbers). "
498                           "If the hardware does not support setting the number, but "
499                           "the DeviceNumber has not been established in an existing "
500                           "ProtocolControllerForDevice subclass, then this "
501                           "parameter's value will be used. If the DeviceNumber has "
502                           "been established, then the current number will be "
503                           "reused."), 
504                        ModelCorrespondence { 
505 a.dunfey 1.1              "CIM_ProtocolControllerForUnit.DeviceNumber" }]
506                    string DeviceNumber ); 
507              
508                    [Description (
509                        "This method removes the ProtocolControllerForDevice "
510                        "association subclass between the ProtocolController and a "
511                        "LogicalDevice, such as a StorageVolume or a "
512                        "MediaAccessDevice. When the ProtocolController is actively "
513                        "masking a device (i.e. is part of an AuthorizedTarget "
514                        "association, the management instrumentation provider should "
515                        "update the hardware access configuration when DetachDevice "
516                        "is called."), 
517                     ValueMap { "0", "1", "2", "3", "4", "5", "6..4095", "4096",
518                        "4097", "4098..32767", "32768..65535" }, 
519                     Values { "Success", "Not Supported", "Unspecified Error",
520                        "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
521                        "LogicalDevice Instance not Associated with Controller",
522                        "Busy", "Method Reserved", "Vendor Specific" }]
523                 uint32 DetachDevice ( 
524                       [IN, Description (
525                           "The ProtocolController instance.")]
526 a.dunfey 1.1       CIM_ProtocolController REF ProtocolController, 
527                       [IN, Description (
528                           "The LogicalDevice instance to detach.")]
529                    CIM_LogicalDevice REF Device ); 
530              
531                    [Experimental, Description (
532                        "Expose a single SCSI logical unit (such as a RAID volume or "
533                        "tape drive) to initiators. One or more paths to the logical "
534                        "unit may be exposed since multiple target and initiator "
535                        "port IDs can be included in a single call. Some parameters "
536                        "are optional, giving the client different levels of "
537                        "control. For example, if the caller passes in a null "
538                        "SCSIProtocolController (SPC) reference parameter, the "
539                        "instrumentation determines whether the new path(s) should "
540                        "be added to an existing SPC or a new SPC is needed. "
541                        "Alternatively, the client can provide an SPC reference and "
542                        "the instrumentation must either add associations to that "
543                        "SPC or return an error if honoring this request would "
544                        "violate SCSI semantics. \n"
545                        "\n"
546                        "The relevant rules of SCSI semantics are: \n"
547 a.dunfey 1.1           "- an SPC MAY NOT be exposed through a particular "
548                        "host/target port pair that is in use by another SPC. (In "
549                        "other words, an SPC corresponds to the logical unit "
550                        "inventory provided by SCSI REPORT LUNS and INQUIRY "
551                        "commands) \n"
552                        "- each LogicalDevice associated to an SPC MUST have a "
553                        "unique ProtocolControllerForUnit DeviceNumber (logical unit "
554                        "number) \n"
555                        "The instrumentation must report an error if the client "
556                        "request would violate one of these rules. \n"
557                        "\n"
558                        "One result of this method is that existing port or logical "
559                        "unit associations may need to be relocated to a new SPC in "
560                        "order to comply to the rules above. Consider a "
561                        "configuration with a single logical unit exposed to two "
562                        "initiators. If this method is called requesting a new "
563                        "logical unit be exposed to one of these initiators, then a "
564                        "new SP must be instantiated so that one SPC has a single "
565                        "associated volume exposed to one initiator and the other "
566                        "SPC has both logical units exposed to the other initiator. "
567                        "\n\n"
568 a.dunfey 1.1           "If the instrumentation provides PrivilegeManagementService, "
569                        "the results of setting DeviceAccess MUST be synchronized "
570                        "with PrivilegeManagementService as described in the "
571                        "ProtocolControllerForUnit DeviceAccess description."), 
572                     ValueMap { "0", "1", "2", "3", "4", "5", "6..4095", "4096",
573                        "4097", "4098", "4099", "4100", "4101", "4102",
574                        "4103..32767", "32768..65535" }, 
575                     Values { "Success", "Not Supported", "Unspecified Error",
576                        "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
577                        "Invalid logical unit ID", "Invalid initiator port ID",
578                        "Invalid target port ID", "Invalid permission",
579                        "Host/initiator combination already exposed",
580                        "Requested logical unit number in use",
581                        "Maximum Map Count Exceeded", "Method Reserved",
582                        "Vendor Specific" }]
583                 uint32 ExposePaths ( 
584                       [IN, OUT, Description (
585                           "Reference to the job (may be null if job completed).")]
586                    CIM_ConcreteJob REF Job, 
587                       [Required, IN, Description (
588                           "ID of the logical unit instance. The LU instance must "
589 a.dunfey 1.1              "already exist."), 
590                        ModelCorrespondence { "CIM_LogicalDevice.Name" }]
591                    string LUID, 
592                       [IN, Description (
593                           "IDs of initiator ports. If existing StorageHardwareID "
594                           "instances exist, they MUST be used. If no "
595                           "StorageHardwareID instance matches, then one is "
596                           "implicitly created. If this parameter is null, the "
597                           "logical unit is exposed to all initiators."), 
598                        ModelCorrespondence { "CIM_StorageHardwareID.StorageID" }]
599                    string InitiatorPortIDs[], 
600                       [IN, Description (
601                           "IDs of target port. Null parameter means that paths "
602                           "through all target ports should be exposed."), 
603                        ModelCorrespondence { "CIM_SCSIProtocolEndpoint.Name" }]
604                    string TargetPortIDs[], 
605                       [IN, Description (
606                           "The logical unit number to assign to the logical unit "
607                           "(within the context of the elements specified in the "
608                           "other parameters."), 
609                        ModelCorrespondence { 
610 a.dunfey 1.1              "CIM_ProtocolControllerForUnit.DeviceNumber" }]
611                    string DeviceNumber, 
612                       [IN, Description (
613                           "The permissions to assign to the logical unit (within "
614                           "the context of the elements specified in the other "
615                           "parameters."), 
616                        ValueMap { "0", "2", "3", "4", "5..15999", "16000.." }, 
617                        Values { "Unknown", "Read Write", "Read-Only", "No Access",
618                           "DMTF Reserved", "Vendor Reserved" }, 
619                        ModelCorrespondence { 
620                           "CIM_ProtocolControllerForUnit.DeviceAccess" }]
621                    uint16 DeviceAccess, 
622                       [IN ( false ), OUT, Description (
623                           "Reference to a SCSIProtocolController (SPC). If this is "
624                           "null on input, the instrumentation will determine "
625                           "whether to create a new SPC instance or add associations "
626                           "to an existing one. If a valid SPC references is passed "
627                           "in and SCSI semantics can be preserved, the "
628                           "instrumentation must attach associations to the "
629                           "specified SPC.")]
630                    CIM_SCSIProtocolController REF ProtocolController); 
631 a.dunfey 1.1 
632                    [Experimental, Description (
633                        "Hide a single SCSI logical unit (such as a RAID volume or "
634                        "tape drive) to initiators. One or more paths to the logical "
635                        "logical unit \n"
636                        "If the instrumentation provides PrivilegeManagementService, "
637                        "the results of setting DeviceAccess MUST be synchronized "
638                        "with PrivilegeManagementService as described in the "
639                        "ProtocolControllerForUnit DeviceAccess description."), 
640                     ValueMap { "0", "1", "2", "3", "4", "5", "6..4095", "4096",
641                        "4097", "4098", "4099", "5000..32767", "32768..65535" }, 
642                     Values { "Success", "Not Supported", "Unspecified Error",
643                        "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
644                        "Invalid logical unit ID", "Invalid initiator port ID",
645                        "Invalid target port ID",
646                        "Host/initiator combination not exposed", "Method Reserved",
647                        "Vendor Specific" }]
648                 uint32 HidePaths ( 
649                       [IN ( false ), OUT, Description (
650                           "Reference to the job (may be null if job completed).")]
651                    CIM_ConcreteJob REF Job, 
652 a.dunfey 1.1          [Required, IN, Description (
653                           "ID of the logical unit instance. The LU instance must "
654                           "already exist."), 
655                        ModelCorrespondence { "CIM_LogicalDevice.Name" }]
656                    string LUID, 
657                       [IN, Description (
658                           "IDs of initiator ports. If this parameter is null, "
659                           "promiscuous access (from any initiator) to the logical "
660                           "unit is removed, but access to specific initiators is "
661                           "left in place."), 
662                        ModelCorrespondence { "CIM_StorageHardwareID.StorageID" }]
663                    string InitiatorPortIDs[], 
664                       [IN, Description (
665                           "IDs of target port. Null parameter means that paths "
666                           "through all target ports should be hidden."), 
667                        ModelCorrespondence { "CIM_SCSIProtocolEndpoint.Name" }]
668                    string TargetPortIDs[] ); 
669              
670              };
671              
672              
673 a.dunfey 1.1 // ==================================================================
674              // ProtocolControllerMaskingCapabilities
675              // ==================================================================
676                 [Version ( "2.8.1000" ), Description (
677                     "A subclass of Capabilities that defines the Masking-related "
678                     "capabilities of a ProtocolController.")]
679              class CIM_ProtocolControllerMaskingCapabilities : CIM_Capabilities {
680              
681                    [Description (
682                        "A list of the valid values for StrorageHardwareID.IDType. "
683                        "iSCSI IDs may use one of three iSCSI formats - iqn, eui, or "
684                        "naa. This three letter format is the name prefix; so a "
685                        "single iSCSI type is provided here, the prefix can be used "
686                        "to further refine the format."), 
687                     ValueMap { "1", "2", "3", "4", "5" }, 
688                     Values { "Other", "Port WWN", "Node WWN", "Host Name",
689                        "iSCSI Name" }, ArrayType ( "Indexed" )]
690                 uint16 ValidHardwareIdTypes[];
691              
692                    [Description (
693                        "An array of strings describing types for valid "
694 a.dunfey 1.1           "StorageHardwareID.IDType. Used when the "
695                        "ValidHardwareIdTypes includes 1 (\"Other\")."), 
696                     ArrayType ( "Indexed" )]
697                 string OtherValidHardwareIDTypes[];
698              
699                    [Description (
700                        "An integer enumeration indicating the way that ports per "
701                        "view (ProtocolController) are handled by the underlying "
702                        "storage system."), 
703                     ValueMap { "2", "3", "4" }, 
704                     Values { "One Port per View", "Multiple Ports per View",
705                        "All Ports share the same View" }]
706                 uint16 PortsPerView = 2;
707              
708                    [Description (
709                        "Set to true if this storage system allows the client to "
710                        "specify the DeviceNumber parameter when calling "
711                        "ControllerConfigurationService.AttachDevice() and "
712                        "ControllerConfigurationService.AttachDevice() and Set to "
713                        "false if the implementation does not allow unit numbers to "
714                        "vary for a ProtocolController. However, if set to false and "
715 a.dunfey 1.1           "a Device is not the Dependent of a "
716                        "ProtocolControllerForUnit association, the client must "
717                        "provide a DeviceNumber parameter in "
718                        "ControllerConfigurationService.AttachDevice. If set to "
719                        "false and the Device is already the Dependent of a "
720                        "ProtocolControllerForUnit association, then the client can "
721                        "omit the DeviceNumber parameter (or supply the same value) "
722                        "in subsequent ControllerConfigurationService.AttachDevice "
723                        "calls.")]
724                 boolean ClientSelectableDeviceNumbers = TRUE;
725              
726                    [Description (
727                        "Set to true if this storage system supports the "
728                        "AttachDevice method.")]
729                 boolean AttachDeviceSupported;
730              
731                    [Description (
732                        "Set to true if this storage system limits configurations to "
733                        "a single subject hardware ID per view. Otherwise, multiple "
734                        "hardware ID types can be used. The default is FALSE, that "
735                        "multiple ID types may be used in a single view.")]
736 a.dunfey 1.1    boolean OneHardwareIDPerView = FALSE;
737              
738                    [Description (
739                        "When set to false, different ProtocolContollers attached to "
740                        "a LogicalPort can expose the same unit numbers. If true, "
741                        "then this storage system requires unique unit numbers "
742                        "across all the ProtocolControllers connected to a "
743                        "LogicalPort.")]
744                 boolean UniqueUnitNumbersPerPort = FALSE;
745              
746                    [Description (
747                        "Set to true if this storage system allows a client to "
748                        "create a Privilege instance with PrivilegeGranted set to "
749                        "FALSE.")]
750                 boolean PrivilegeDeniedSupported = FALSE;
751              
752                    [Description (
753                        "If true, this property indicates that a Privilege/Identity "
754                        "pair MUST be specified when "
755                        "CreateProtocolControllerWithPorts() is called. If false, "
756                        "then the Privilege/Identity pair in "
757 a.dunfey 1.1           "CreateProtocolControllerWithPorts() MUST NOT be set.")]
758                 boolean ProtocolControllerRequiresAuthorizedIdentity = FALSE;
759              
760                    [Description (
761                        "If true, this property indicates that the Identity "
762                        "parameter of CreateProtocolConntrollerWithPorts() MUST "
763                        "contain a reference to a CIM_Collection (or subclass) or to "
764                        "a CIM_Identity (or subclass).")]
765                 boolean ProtocolControllerSupportsCollections = FALSE;
766              
767                    [Experimental, Description (
768                        "Set to true if this storage system supports the ExposePaths "
769                        "and HidePaths methods.")]
770                 boolean ExposePathsSupported;
771              
772                    [Experimental, Description (
773                        "Set to true if this storage system supports the "
774                        "CreateProtocolControllerWithPorts method.")]
775                 boolean CreateProtocolControllerSupported;
776              
777                    [Experimental, Description (
778 a.dunfey 1.1           "The maximum number of ProtocolCOntrollerForUnit "
779                        "associations that can be associated with a single "
780                        "LogicalDevice (for example, StorageVolume). Zero indicates "
781                        "there is no limit.")]
782                 uint16 MaximumMapCount = 0;
783              };
784              
785              
786              // ===================================================================
787              // end of file
788              // ===================================================================

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2