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

  1 tony  1.1 // ===================================================================
  2           // Title:       Device Protocol Controller 2.8
  3           // Filename:    Device28_ProtocolContoller.mof
  4           // Version:     2.8
  5           // Release:     Preliminary
  6           // Date:        07/31/03
  7           // ===================================================================
  8           // Copyright 1998-2003 Distributed Management Task Force, Inc. (DMTF).
  9           // All rights reserved.
 10           // DMTF is a not-for-profit association of industry members dedicated
 11           // to promoting enterprise and systems management and interoperability.
 12           // DMTF specifications and documents may be reproduced for uses
 13           // consistent with this purpose by members and non-members,
 14           // provided that correct attribution is given.
 15           // As DMTF specifications may be revised from time to time,
 16           // the particular version and release date should always be noted.
 17           // 
 18           // Implementation of certain elements of this standard or proposed
 19           // standard may be subject to third party patent rights, including
 20           // provisional patent rights (herein "patent rights"). DMTF makes
 21           // no representations to users of the standard as to the existence
 22 tony  1.1 // of such rights, and is not responsible to recognize, disclose, or
 23           // identify any or all such third party patent right, owners or
 24           // claimants, nor for any incomplete or inaccurate identification or
 25           // disclosure of such rights, owners or claimants. DMTF shall have no
 26           // liability to any party, in any manner or circumstance, under any
 27           // legal theory whatsoever, for failure to recognize, disclose, or
 28           // identify any such third party patent rights, or for such party's
 29           // reliance on the standard or incorporation thereof in its product,
 30           // protocols or testing procedures. DMTF shall have no liability to
 31           // any party implementing such standard, whether such implementation
 32           // is foreseeable or not, nor to any patent owner or claimant, and shall
 33           // have no liability or responsibility for costs or losses incurred if
 34           // a standard is withdrawn or modified after publication, and shall be
 35           // indemnified and held harmless by any party implementing the
 36           // standard from any and all claims of infringement by a patent owner
 37           // for such implementations.
 38           // 
 39           // For information about patents held by third-parties which have
 40           // notified the DMTF that, in their opinion, such patent may relate to
 41           // or impact implementations of DMTF standards, visit
 42           // http://www.dmtf.org/about/policies/disclosures.php.
 43 tony  1.1 // ===================================================================
 44           // Description: The Device Model extends the management concepts that
 45           //              are related to LogicalDevices. This file defines
 46           //              the concepts and classes for Protocol Controllers.
 47           // 
 48           //              The object classes below are listed in an order that
 49           //              avoids forward references. Required objects, defined
 50           //              by other working groups, are omitted.
 51           // ==================================================================
 52           // Change Log for v2.8 Preliminary
 53           // CR1015 - Initial ProtocolController definition
 54           // CR1007 - Addition of ControllerConfigurationService and
 55           //          StorageMaskingService
 56           // CR1040 - Improves CreateProtocolController by allowing
 57           //          atomic creation with permissions.
 58           // CR1055 - Remove ConnectionRole from ProtocolController
 59           //          Add UsageRestriction to NetworkPort
 60           // CR1082 - Change StorageMaskingCapabilities to be
 61           //          ProtocolControllerMaskingCapabilities
 62           // CR1108 - Change CreatePortProtocolController to
 63           //          CreateProtocolControllerWithPorts
 64 tony  1.1 // 
 65           // ==================================================================
 66           
 67           #pragma locale ("en_US")
 68           
 69           
 70           // ===================================================================
 71           // ProtocolController
 72           // ===================================================================
 73              [Experimental, Abstract, Version ("2.7.1000"), Description (
 74                  "ProtocolController is a superclass for grouping controllers "
 75                  "that are used to control the operation and function of "
 76                  "sophisticated devices that instantiate a protocol such as "
 77                  "SCSI.  Simpler 'bus' and device controllers are modeled using "
 78                  "the CIM_Controller class.") ]
 79           class CIM_ProtocolController : CIM_LogicalDevice {
 80           
 81                 [Description (
 82                     "Maximum number of Units that can be controlled by or "
 83                     "accessed through this ProtocolController.") ]
 84              uint32 MaxUnitsControlled;
 85 tony  1.1 };
 86           
 87           // ===================================================================
 88           // SCSIProtocolController
 89           // ===================================================================
 90              [Experimental, Version ("2.7.1000"), Description (
 91                  "SCSIProtocolController is a type of ProtocolController, "
 92                  "managing a SCSI interface.") ]
 93           class CIM_SCSIProtocolController : CIM_ProtocolController {
 94           };
 95           
 96           // ===================================================================
 97           // ProtocolControllerForDevice
 98           // ===================================================================
 99              [Association, Experimental, Abstract, Version ("2.7.1000"), 
100               Description (
101                  "This association indicates a subclass of LogicalDevice (for "
102                  "example a Storage Volume) is connected through a specific "
103                  "ProtocolController.  In many situations (for example storage "
104                  "LUN masking), there may be many of these associations used to "
105                  "relate to different objects.  Therefore subclasses have been "
106 tony  1.1        "defined to optimize enumeration of the associations.") ]
107           class CIM_ProtocolControllerForDevice : CIM_Dependency {
108           
109                 [Override ("Antecedent"), Description (
110                     "The ProtocolController.") ]
111              CIM_ProtocolController REF Antecedent;
112           
113                 [Override ("Dependent"), Description (
114                     "The controlled Device.") ]
115              CIM_LogicalDevice REF Dependent;
116           
117                 [Description (
118                     "Address of the associated Device in the context of the "
119                     "Antecedent Controller.") ]
120              string DeviceNumber;
121           
122                 [Description (
123                     "This property describes the priority given to accesses of "
124                     "the device through this Controller.  The highest priority "
125                     "path will have the lowest value for this parameter.") ]
126              uint16 AccessPriority;
127 tony  1.1 
128                 [Description (
129                     "The State property indicates whether the Controller is "
130                     "actively commanding or accessing the device (value=2) or "
131                     "not (value=3).  Also, the value, \"Unknown\" (0), can be "
132                     "defined.  This information is necessary when a "
133                     "LogicalDevice can be commanded by, or accessed through, "
134                     "multiple ProtocolControllers."), 
135                  ValueMap {"0", "2", "3"}, 
136                  Values {"Unknown", "Active", "Inactive"} ]
137              uint16 AccessState;
138           };
139           
140           // ===================================================================
141           // AssociatedProtocolController
142           // ===================================================================
143              [Association, Experimental, Version ("2.7.1000"), Description (
144                  "This association is used to define a hierarchy relationship "
145                  "between ProtocolControllers.  This subclass is provided so "
146                  "that an enumeration of related ProtocolControllers can be "
147                  "performed without retrieving any connected StorageVolumes, "
148 tony  1.1        "MediaAccessDevices or LogicalPorts.") ]
149           class CIM_AssociatedProtocolController : CIM_ProtocolControllerForDevice {
150           
151                 [Override ("Antecedent"), Description (
152                     "The 'upstream', Antecedent ProtocolController.") ]
153              CIM_ProtocolController REF Antecedent;
154           
155                 [Override ("Dependent"), Description (
156                     "The 'downstream' Dependent ProtocolController.") ]
157              CIM_ProtocolController REF Dependent;
158           };
159           
160           // ===================================================================
161           // ProtocolControllerForPort
162           // ===================================================================
163              [Association, Experimental, Version ("2.7.1000"), Description (
164                  "This association is used to define a relationship between a "
165                  "ProtocolController and a LogicalPort.  This subclass is "
166                  "provided so that an enumeration of related controllers and "
167                  "ports can be performed without retrieving any other "
168                  "controllers or connected units.") ]
169 tony  1.1 class CIM_ProtocolControllerForPort : CIM_ProtocolControllerForDevice {
170           
171                 [Override ("Antecedent"), Description (
172                     "The ProtocolController.") ]
173              CIM_ProtocolController REF Antecedent;
174           
175                 [Override ("Dependent"), Description (
176                     "The LogicalPort 'behind' the ProtocolController.") ]
177              CIM_LogicalPort REF Dependent;
178           };
179           
180           // ===================================================================
181           // ProtocolControllerForUnit
182           // ===================================================================
183              [Association, Experimental, Version ("2.7.1000"), Description (
184                  "This association is used to define a relationship between a "
185                  "ProtocolController and an exposed Logical Unit (for example a "
186                  "Storage Volume or a MediaAccessDevice such as a tape drive).  "
187                  "An example of the use of this association is SCSI, where it "
188                  "link the target controller and Logical Units.  This subclass "
189                  "is provided so that an enumeration of related controllers and "
190 tony  1.1        "units can be performed without retrieving any connected ports "
191                  "or other controllers.") ]
192           class CIM_ProtocolControllerForUnit : CIM_ProtocolControllerForDevice {
193           
194                 [Override ("Antecedent"), Description (
195                     "The ProtocolController.") ]
196              CIM_ProtocolController REF Antecedent;
197           
198                 [Override ("Dependent"), Description (
199                     "The logical unit (eg StorageVolume) 'behind' the "
200                     "ProtocolController.") ]
201              CIM_LogicalDevice REF Dependent;
202           };
203           
204           // ===================================================================
205           // ProtocolControllerAccessesUnit
206           // ===================================================================
207              [Association, Experimental, Version ("2.7.1000"), Description (
208                  "This association is used to define a relationship between a "
209                  "protocol controllers and a Logical Unit (for example a Storage "
210                  "Volume or Media Access Device) controlled by the controller.  "
211 tony  1.1        "This association is used instead of ProtocolControllerForUnit "
212                  "to indicate a 'controlled through' relationship rather than a "
213                  "'controlled by' one.  An example is SCSI where this "
214                  "association is used to indicate a target/initiator "
215                  "relationship.") ]
216           class CIM_ProtocolControllerAccessesUnit : CIM_ProtocolControllerForDevice {
217           
218                 [Override ("Antecedent"), Description (
219                     "The protocol controller.") ]
220              CIM_ProtocolController REF Antecedent;
221           
222                 [Override ("Dependent"), Description (
223                     "The logical unit (eg StorageVolume).") ]
224              CIM_LogicalDevice REF Dependent;
225           
226                 [Description (
227                     "The number of the dependent's target protocol controller.  "
228                     "As an example, in SCSI this is the Target ID.") ]
229              string TargetControllerNumber;
230           };
231           
232 tony  1.1 // ==================================================================
233           //    ControllerConfigurationService
234           // ==================================================================
235              [Experimental, Version ("2.7.1000"), Description (
236                  "The ControllerConfigurationService provides methods that allow "
237                  "a client to manipulate LUN Masking in a storage system.") ]
238           class CIM_ControllerConfigurationService: CIM_Service {
239           
240                 [Description (
241                     "This method creates an appropriate subclass of "
242                     "ProtocolController.  In addition to its role of controlling "
243                     "downstream devices, a ProtocolControl is used to provide a "
244                     "central management point for access control with respect to "
245                     "those devices.  Certain storage system implementations "
246                     "across multiple vendors require permissions to be "
247                     "established atomically with the creation of a "
248                     "ProtocolController.  This method provides this capability "
249                     "via the Privilege and Identity properties.  By supplying "
250                     "appropriate information in those properties, this method "
251                     "will assure that appropriate AuthorizedTarget and "
252                     "AuthorizedSubject associations, (as defined in the User and "
253 tony  1.1           "Security Model), are instantiated to restrict access to the "
254                     "logical devices 'behind' it.\n"
255                     "If multiple target ports are specified in the Ports input "
256                     "parameter, all expose the same view (i.e., have the same "
257                     "unit numbers and permissions).  This method does not create "
258                     "the port instances, but does create "
259                     "ProtocolControllerForPort associations between the "
260                     "specified ports and the new ProtocolController.  The new "
261                     "ProtocolController is defined to be weak to the same System "
262                     "as the ControllerConfigurationService."), 
263                  ValueMap {"0", "1", "2", "3", "4", "5", "6..4095", "4096",
264                     "4097", "4098", "4099..32767", "32768..65535"}, 
265                  Values {"Success", "Not Supported", "Unspecified Error",
266                     "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
267                     "ID Parameter Missing or Not Unique",
268                      "Hardware Implementation Requires Null Ports Parameter",
269                     "Busy", "Method Reserved", "Vendor Specific"} ]
270              uint32 CreateProtocolControllerWithPorts (
271                  [IN, OUT (false), Description (
272                  "The string to be used in the ElementName of the new "
273                  "ProtocolController."),
274 tony  1.1        ModelCorrespondence {"CIM_ProtocolController.ElementName"} ]
275                  string ElementName,
276                  [IN, OUT (false), Description (
277                  "Array of strings containing representations of references to "
278                  "instances of CIM_LogicalPort (or subclass) instances. This is "
279                  "the list of target ports that are associated to the "
280                  "ProtocolController. "
281                  "ProtocolControllerForPort associations are created by the "
282                  "instrumentation associating the new ProtocolController to "
283                  "these ports.  If this parameter is null, then all ports in the "
284                  "storage system (this Service's 'scoping' System and all its "
285                  "ComponentCS Systems) are attached to the new "
286                  "ProtocolController.") ]
287                  string Ports[],
288                  [IN, OUT (false), Description (
289                  "The protocol type for the new ProtocolController."),
290                  ValueMap {"0", "1", "2"},
291                  Values {"Unknown", "Other", "SCSI"},
292                  ModelCorrespondence {"CIM_SCSIProtocolController"} ]
293                  uint16 Protocol,
294                  [IN, OUT (false), Description (
295 tony  1.1        "Reference to a CIM_Privilege (or subclass) instance.  If present, "
296                  "it has a 1:1 correspondence with the Identity property. "
297                  "If present, this method will atomically: create the new "
298                  "ProtocolController instance and instantiate a missing "
299                  "AuthorizedSubject association between the Privilege/Identity "
300                  "pair; and instantiate an AuthorizedTarget association between "
301                  "the Privilege and the new ProtocolController. \n"
302                  "Note: if ProtocolControllerRequiresAuthorizedIdentity is true, "
303                  "then at least the Identity/Privilege pair MUST be specified."),
304                  ModelCorrespondence {
305                  "CIM_ControllerConfigurationService."
306                  "CreateProtocolControllerWithPorts.Identity"} ]
307                  CIM_Privilege REF Privilege,
308                  [Description (
309                  "Reference to a CIM_Identity (or subclass) instance.  If "
310                  "present, it has a 1:1 correspondence with the Privilege "
311                  "property.  If present, this method will atomically: create "
312                  "the new ProtocolController instance and instantiate a "
313                  "missing AuthorizedSubject association between the "
314                  "Privilege/Identity pair; and instantiate an "
315                  "AuthorizedTarget association between the Privilege and the "
316 tony  1.1        "new ProtocolController.\n"
317                  "Note: if ProtocolControllerRequiresAuthorizedIdentity is "
318                  "true, then at least the Identity/Privilege pair MUST be "
319                  "specified."), 
320                  ModelCorrespondence { "CIM_ControllerConfigurationService." 
321                  "CreateProtocolControllerWithPorts.Privilege"} ]
322                  CIM_Identity REF Identity,
323                  [Description (
324                  "A reference to the new ProtocolController that is created.") ]
325                  CIM_ProtocolController REF ProtocolController);
326                  
327                 [Description (
328                     "The method deletes an instance of ProtocolController and "
329                     "all associations in which this ProtocolController is "
330                     "referenced."), 
331                  ValueMap {"0", "1", "2", "3", "4", "5", "6..4095", "4096",
332                     "4097", "4098..32767", "32768..65535"}, 
333                  Values {"Success", "Not Supported", "Unspecified Error",
334                     "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
335                     "LogicalDevices Associated to Other ProtocolControllers Not "
336                     "Deleted", "Busy", "Method Reserved", "Vendor Specific"} ]
337 tony  1.1    uint32 DeleteProtocolController (
338                  [IN, OUT (false), Description (
339                  "The ProtocolController to be deleted.") ]
340                  CIM_ProtocolController REF ProtocolController,
341                  [IN, OUT (false), Description (
342                  "If true, the management instrumentation provider will also "
343                  "delete 'child' ProtocolControllers (i.e., those defined as "
344                  "Dependent references in instances of "
345                  "AssociatedProtocolController where this ProtocolController "
346                  "is the Antecedent reference).  Also, all direct "
347                  "associations involving the 'child' ProtocolControllers "
348                  "will be removed.") ]
349                  boolean DeleteChildrenProtocolControllers,
350                  [IN, OUT (false), Description (
351                  "If true, the management instrumentation provider will also "
352                  "delete LogicalDevice instances associated via "
353                  "ProtocolControllerForUnit, to this ProtocolController "
354                  "and its children. (Note that 'child' controllers will only "
355                  "be affected if the DeleteChildrenProtocolControllers input "
356                  "parameter is TRUE). LogicalDevice instances are only deleted "
357                  "if there are NO remaining ProtocolControllerForUnit "
358 tony  1.1        "associations, to other ProtocolControllers.") ]
359                  boolean DeleteUnits
360                  );
361           
362                 [Description (
363                     "This method associates a LogicalDevice subclass "
364                     "(specifically a StorageVolume or MediaAccessDevice "
365                     "subclass) to the referenced ProtocolController.  The "
366                     "association is persisted as an instance of "
367                     "ProtocolControllerForUnit.  The management instrumentation "
368                     "provider must verify that the logical unit numbers (defined "
369                     "using the DeviceNumber input parameter) are unique for the "
370                     "ProtocolController.  When the Protocol Controller is "
371                     "actively masking a device (i.e.  is part of an "
372                     "AuthorizedTarget association), the provider should update "
373                     "the access configuration in the underlying hardware as "
374                     "appropriate."), 
375                  ValueMap {"0", "1", "2", "3", "4", "5", "6..4095", "4096",
376                     "4097", "4098", "4099", "4100", "4101..32767",
377                     "32768..65535"}, 
378                  Values {"Success", "Not Supported", "Unspecified Error",
379 tony  1.1           "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
380                     "Invalid LogicalDevice Instance", "Device Number Conflict",
381                     "DeviceNumber Parameter Must Be Provided",
382                      "Hardware Implementation Requires Null DeviceNumber",
383                     "Busy", "Method Reserved", "Vendor Specific"} ]
384              uint32 AttachDevice (
385                  [IN, OUT (false), Description (
386                  "The ProtocolController instance.") ]
387                  CIM_ProtocolController REF ProtocolController,
388                  [IN, OUT (false), Description (
389                  "The LogicalDevice instance to attach.") ]
390                  CIM_LogicalDevice REF Device,
391                  [IN, OUT, Description (
392                  "The number assigned to ProtocolControllerForUnit.DeviceNumber "
393                  "(if supported by the hardware).  Hardware support is indicated "
394                  "by StorageMaskingCapabilities.ClientSelectableDeviceNumbers). "
395                  "If the hardware does not support setting the number, but the "
396                  "DeviceNumber has not been established in an existing "
397                  "ProtocolControllerForDevice subclass, then this parameter's "
398                  "value will be used. If the DeviceNumber has been established, "
399                  "then the current number will be reused."),
400 tony  1.1        ModelCorrespondence {
401                  "CIM_ProtocolControllerForUnit.DeviceNumber"} ]
402                  string DeviceNumber
403                  );
404           
405                 [Description (
406                     "This method removes the ProtocolControllerForDevice "
407                     "association subclass between the ProtocolController and a "
408                     "LogicalDevice, such as a StorageVolume or a "
409                     "MediaAccessDevice.  When the ProtocolController is actively "
410                     "masking a device (i.e.  is part of an AuthorizedTarget "
411                     "association, the management instrumentation provider should "
412                     "update the hardware access configuration when DetachDevice "
413                     "is called."), 
414                  ValueMap {"0", "1", "2", "3", "4", "5", "6..4095", "4096",
415                     "4097", "4098..32767", "32768..65535"}, 
416                  Values {"Success", "Not Supported", "Unspecified Error",
417                     "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
418                     "LogicalDevice Instance not Associated with Controller",
419                     "Busy", "Method Reserved", "Vendor Specific"} ]
420              uint32 DetachDevice (
421 tony  1.1        [IN, OUT (false), Description (
422                  "The ProtocolController instance.") ]
423                  CIM_ProtocolController REF ProtocolController,
424                  [IN, OUT (false), Description (
425                  "The LogicalDevice instance to detach.") ]
426                  CIM_LogicalDevice REF Device
427                  );
428           };
429           
430           
431           // ==================================================================
432           // ProtocolControllerMaskingCapabilities
433           // ==================================================================
434              [Experimental, Version ("2.7.1000"), Description (
435                  "A subclass of Capabilities that defines the Masking-related "
436                  "capabilities of a ProtocolController.") ]
437           class CIM_ProtocolControllerMaskingCapabilities : CIM_Capabilities {
438           
439                 [Description (
440                     "A list of the valid values for StrorageHardwareID.IDType."), 
441                  ValueMap {"1", "2", "3", "4"}, 
442 tony  1.1        Values {"Other", "Port WWN", "Node WWN", "Host Name"}, 
443                  ArrayType ("Indexed") ]
444              uint16 ValidHardwareIdTypes[];
445           
446                 [Description (
447                     "An array of strings describing types for valid "
448                     "StorageHardwareID.IDType.  Used when the "
449                     "ValidHardwareIdTypes includes 1 (\"Other\")."), 
450                  ArrayType ("Indexed") ]
451              string OtherValidHardwareIDTypes[];
452           
453                 [Description (
454                     "Set to true to indicate the associated storage system "
455                     "allows ProtocolControllers with different authorization "
456                     "permissions or initiators associated with a subset of the "
457                     "storage system's ports.  Set to false to indicate that the "
458                     "associated storage system always grants access to "
459                     "initiators identically through all storage system ports.") ]
460              boolean AccessControlByPorts = TRUE;
461           
462                 [Description (
463 tony  1.1           "Set to true if this storage system allows the client to "
464                     "specify the DeviceNumber parameter when calling "
465                     "ControllerConfigurationService.AttachDevice() and "
466                     "ControllerConfigurationService.AttachDevice() and Set to "
467                     "false if the implementation does not allow unit numbers to "
468                     "vary for a ProtocolController.  However, if set to false "
469                     "and a Device is not the Dependent of a "
470                     "ProtocolControllerForUnit association, the client must "
471                     "provide a DeviceNumber parameter in "
472                     "ControllerConfigurationService.AttachDevice.  If set to "
473                     "false and the Device is already the Dependent of a "
474                     "ProtocolControllerForUnit association, then the client can "
475                     "omit the DeviceNumber parameter (or supply the same value) "
476                     "in subsequent ControllerConfigurationService.AttachDevice "
477                     "calls.") ]
478              boolean ClientSelectableDeviceNumbers = TRUE;
479           
480                 [Description (
481                     "Set to true if this storage system supports the "
482                     "AttachDevice method.") ]
483              boolean AttachDeviceSupported;
484 tony  1.1 
485                 [Description (
486                     "Set to true if this storage system limits configurations to "
487                     "a single subject hardware ID per view.  Otherwise, multiple "
488                     "hardware ID types can be used.  The default is FALSE, that "
489                     "multiple ID types may be used in a single view.") ]
490              boolean OneHardwareIDPerView = FALSE;
491           
492                 [Description (
493                     "Set to true if this storage system limits configurations to "
494                     "a single port per view.  Otherwise, multiple ports can be "
495                     "included.  The default is FALSE, that multiple ports may be "
496                     "included in a single view.") ]
497              boolean OnePortPerView = FALSE;
498           
499                 [Description (
500                     "When set to false, different ProtocolContollers attached to "
501                     "a LogicalPort can expose the same unit numbers.  If true, "
502                     "then this storage system requires unique unit numbers "
503                     "across all the ProtocolControllers connected to a "
504                     "LogicalPort.") ]
505 tony  1.1    boolean UniqueUnitNumbersPerPort = FALSE;
506           
507                 [Description (
508                     "Set to true if this storage system allows a client to "
509                     "create a Privilege instance with PrivilegeGranted set to "
510                     "FALSE.") ]
511              boolean PrivilegeDeniedSupported = FALSE;
512           
513                 [Description (
514                     "If true, this property indicates that at least one "
515                     "Privilege/Identity pair must be specified when "
516                     "CreateProtocolController() is called.") ]
517              Boolean ProtocolControllerRequiresAuthorizedIdentity = false;
518           };
519           
520           
521           // ===================================================================
522           // end of file
523           // ===================================================================

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2