// ===================================================================
// Title:       User-Security Storage Hardware ID 2.8
// Filename:    User28_StorageHardwareID.mof
// Version:     2.8
// Release:     Final
// Date:        Jan 26, 2004
// ===================================================================
// Copyright 2003-2004 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.
// DMTF is a not-for-profit association of industry members dedicated
// to promoting enterprise and systems management and interoperability.
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members,
// provided that correct attribution is given.
// As DMTF specifications may be revised from time to time,
// the particular version and release date should always be noted.
// 
// Implementation of certain elements of this standard or proposed
// standard may be subject to third party patent rights, including
// provisional patent rights (herein "patent rights"). DMTF makes
// no representations to users of the standard as to the existence
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or
// claimants, nor for any incomplete or inaccurate identification or
// disclosure of such rights, owners or claimants. DMTF shall have no
// liability to any party, in any manner or circumstance, under any
// legal theory whatsoever, for failure to recognize, disclose, or
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product,
// protocols or testing procedures. DMTF shall have no liability to
// any party implementing such standard, whether such implementation
// is foreseeable or not, nor to any patent owner or claimant, and shall
// have no liability or responsibility for costs or losses incurred if
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the
// standard from any and all claims of infringement by a patent owner
// for such implementations.
// 
// For information about patents held by third-parties which have
// notified the DMTF that, in their opinion, such patent may relate to
// or impact implementations of DMTF standards, visit
// http://www.dmtf.org/about/policies/disclosures.php.
// ===================================================================
// Description: The User Model extends the management concepts that
//              are related to users and security.
//              This file defines the concepts and classes related to
//              hardware World Wide Names used as credentials
//              for accessing Storage services and credentials.
// 
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined
//              by other working groups, are omitted.
// ===================================================================
// Change Log for v2.8 Final
//  CR1221 - Accepted changes from Preliminary to Final
//  CR1235 - Corrected copyright, updated the enumeration for all the
//           methods' return values (Unknown -> Unspecified Error), and
//           added missing Description for DeleteStorageHardwareID's
//           HardwareID parameter
// 
// Change Log for v2.8 Preliminary (Company Review)
//  CR1139 - Fixed ModelCorrespondence referring to ClientSettingData
//           vs. StorageClientSettingData in StorageClientSettingData
// 
// Change Log for v2.8 Preliminary
//  CR1017 - Created this file
// ===================================================================

#pragma Locale ("en_US")


// ==================================================================
// StorageClientSettingData
// ==================================================================
   [Version ( "2.8.0" ), Description (
       "This class models host environment factors that influence the "
       "behavior of Storage Systems. For example, a disk array has "
       "different SCSI responses for clients (initiators) configured "
       "as AIX verses HPUX. Instances of this setting class can be "
       "associated via ElementSettingData to a storage system's "
       "LogicalPort, ProtocolController, or Volume instances when "
       "these elements have host awareness. These associations are "
       "created by the management instrumentation provider to reflect "
       "the current configuration. A client deletes/creates these "
       "associations to request changes in element host-awareness. "
       "This settings class can also be associated with "
       "StorageHardwareID instances when that HW ID is configured with "
       "host information. An instance of this setting may include "
       "several ClientType values if the storage system treats them "
       "identically. The storage system exposes all supported setting "
       "instances to a WBEM Enumerate request; the client uses the "
       "returned settings to determine which types are available.")]
class CIM_StorageClientSettingData : CIM_SettingData {

      [Description (
          "This enumeration defines operating system, version, driver, "
          "and other host environment factors that influence the "
          "behavior exposed by storage systems. Values in this array "
          "are combined with data from the OtherClientTypeDescriptions "
          "property to provide complete information on the host "
          "environment."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18",
          "19..32767", "32768..65535" }, 
       Values { "Unknown", "Other", "Standard", "Solaris", "HPUX",
          "OpenVMS", "Tru64", "Netware", "Sequent", "AIX", "DGUX",
          "Dynix", "Irix", "Cisco iSCSI Storage Router", "Linux",
          "Microsoft Windows", "OS400", "TRESPASS", "HI-UX",
          "DMTF Reserved", "Vendor Specific" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_StorageClientSettingData.OtherClientTypeDescriptions" }]
   uint16 ClientTypes[];

      [Description (
          "When the the corresponding array entry in ClientTypes[] is "
          "\"Other\", this entry provides a string describing the "
          "manufacturer and OS/Environment. When the corresponding "
          "ClientTypes[] entry is not \"Other\", this entry allows "
          "variations or qualifications of ClientTypes - for example, "
          "different versions of Solaris."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_StorageClientSettingData.ClientTypes" 
          }]
   string OtherClientTypeDescriptions[];
};


// ==================================================================
// StorageHardwareID
// ==================================================================
   [Version ( "2.8.0" ), Description (
       "CIM_StorageHardwareID is a hardware ID that serves as an "
       "authorization subject. Example are host controller IDs that "
       "serve as authorization subjects in disk array LUN Masking.")]
class CIM_StorageHardwareID : CIM_Identity {

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

      [Required, Description (
          "The type of the ID property."), 
       ValueMap { "1", "2", "3", "4" }, 
       Values { "Other", "PortWWN", "NodeWWN", "Hostname" }, 
       ModelCorrespondence { "CIM_StorageHardwareID.StorageID" }]
   uint16 IDType;

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


// ==================================================================
// GatewayPathID
// ==================================================================
   [Version ( "2.8.0" ), Description (
       "GatewayPathID extends StorageHardwareID to name a path segment "
       "defined by the end identities, HardwareID and GatewayID. The "
       "purpose is to describe Identity to allow access control to be "
       "applied to a particular path segment. Think of the element "
       "identified by GatewayPathID as a Gateway between a non-trusted "
       "world and a trusted world.")]
class CIM_GatewayPathID : CIM_StorageHardwareID {

      [Required, Description (
          "The ID representing the Gateway for a path segment from the "
          "element identified in the HardwareID property to the "
          "Gateway."), 
       ModelCorrespondence { "CIM_GatewayPathID.GatewayIDType",
          "CIM_GatewayPathID.OtherGatewayIDType" }]
   string GatewayID;

      [Required, Description (
          "The type of the GatewayID property."), 
       ValueMap { "1", "2", "3", "4" }, 
       Values { "Other", "PortWWN", "NodeWWN", "Hostname" }, 
       ModelCorrespondence { "CIM_GatewayPathID.GatewayID" }]
   uint16 GatewayIDType;

      [Description (
          "The gateway ID type when Gateway IDType is \"Other\"."), 
       ModelCorrespondence { "CIM_GatewayPathID.GatewayID" }]
   string OtherGatewayIDType;
};


// ==================================================================
// StorageHardwareIDManagementService
// ==================================================================
   [Version ( "2.8.0" ), Description (
       "StorageHardwareIDManagementService provides methods for "
       "manipulating instances of StorageHardwareIDs and manipulating "
       "the trust of these IDs in the underlying storage system.")]
class CIM_StorageHardwareIDManagementService : CIM_AuthenticationService {

      [Description (
          "This method creates a CIM_StorageHardwareID, it creates the "
          "association CIM_ConcreteDependency between this service and "
          "the new CIM_StorageHardwareID."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000",
          "0x1001", "0x1003..0x7FFF", "0x8000.." }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
          "ID already created",
          "Hardware implementation does not support specified IDType",
          "Method Reserved", "Vendor Specific" }]
   uint32 CreateStorageHardwareID (
      
         [IN, Description (
             "The ElementName of the new StorageHardwareID instance.")]
      string ElementName,
      
         [IN, Description (
             "StorageID is the value used by the SecurityService to "
             "represent Identity - in this case, a hardware worldwide "
             "unique name.")]
      string StorageID,
      
         [IN, Description (
             "The type of the StorageID property."), 
          ValueMap { "1", "2", "3", "4" }, 
          Values { "Other", "PortWWN", "NodeWWN", "Hostname" }]
      uint16 IDType,
      
         [IN, Description (
             "The type of the storage ID, when IDType is \"Other\".")]
      string OtherIDType,
      
         [IN, Description (
             "REF to the StorageClientSettingData containing the "
             "OSType appropriate for this initiator. If left NULL, the "
             "instrumentation assumes a standard OSType - i.e., that "
             "no OS-specific behavior for this initiator is defined.")]
      CIM_StorageClientSettingData REF Setting,
      
         [IN ( false ), OUT, Description (
             "REF to the new StorageHardwareID instance.")]
      CIM_StorageHardwareID REF HardwareID ); 

      [Description (
          "This method deletes a named CIM_StorageHardwareID, and also "
          "tears down the associations that are no longer needed, "
          "including CIM_ConcreteDependency and CIM_AuthorizedSubject."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000",
          "0x1001..0x7FFF", "0x8000.." }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
          "Specified instance not found", "Method Reserved",
          "Vendor Specific" }]
   uint32 DeleteStorageHardwareID(
      
         [IN, Description (
             "The storage hardware ID to be deleted.")]
      CIM_StorageHardwareID REF HardwareID ); 

      [Description (
          "This method creates a CIM_GatewayPathID and the association "
          "CIM_ConcreteDependency between this service and the new "
          "GatewayPathID."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000",
          "0x1001", "0x1003", "0x1004", "0x1005..0x7FFF", "0x8000.." }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
          "ID already created",
          "Hardware implementation does not support specified IDType",
          "GatewayPathID already created",
          "Hardware implementation does not support specified " 
          "GatewayIDType", "Method Reserved", "Vendor Specific" }]
   uint32 CreateGatewayPathID(
      
         [IN, Description (
             "The ElementName of the new StorageHardwareID instance.")]
      string ElementName,
      
         [IN, Description (
             "StorageID is the value used by the SecurityService to "
             "represent Identity - in this case, a hardware worldwide "
             "unique name.")]
      string StorageID,
      
         [IN, Description (
             "The type of the ID property."), 
          ValueMap { "1", "2", "3", "4" }, 
          Values { "Other", "PortWWN", "NodeWWN", "Hostname" }]
      uint16 IDType,
      
         [IN, Description (
             "The type of the storage ID, when IDType is \"Other\".")]
      string OtherIDType,
      
         [IN, Description (
             "GatewayID is the value used by the SecurityService to "
             "represent identity of a Gateway element.")]
      string GatewayID,
      
         [IN, Description (
             "The type of the GatewayID property."), 
          ValueMap { "1", "2", "3", "4" }, 
          Values { "Other", "PortWWN", "NodeWWN", "Hostname" }]
      uint16 GatewayIDType,
      
         [IN, Description (
             "The type of the storage ID, when GatewayIDType is "
             "\"Other\".")]
      string OtherGatewayIDType,
      
         [IN ( false ), OUT, Description (
             "REF to the new GatewayPathID instance.")]
      CIM_GatewayPathID REF NewGatewayPathID ); 

      [Description (
          "Create a group of StorageHardwareIDs as a new instance of "
          "SystemSpecificCollection. This is useful to define a set of "
          "authorized subjects that can access volumes in a disk "
          "array. This method allows the client to make a request of a "
          "specific Service instance to create the collection and "
          "provide the appropriate class name. When these capabilities "
          "are standardized in CIM/WBEM, this method can be deprecated "
          "and intrinsic methods used. In addition to creating the "
          "collection, this method causes the creation of the "
          "HostedCollection association (to this service's scoping "
          "system) and MemberOfCollection association to members of "
          "the IDs parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000",
          "0x1001", "0x1002", "0x1003..0x7FFF", "0x8000.." }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
          "Invalid HardwareID instance",
          "Implementation does not support hardware ID collections",
          "Input hardware IDs cannot be used in same collection",
          "Method Reserved", "Vendor Specific" }]
   uint32 CreateHardwareIDCollection (
      
         [IN, Description (
             "The ElementName to be assigned to the created "
             "collection.")]
      string ElementName,
      
         [IN, Description (
             "Array of strings containing representations of "
             "references to StorageHardwareID instances that will "
             "become members of the new collection.")]
      string HardwareIDs[],
      
         [IN ( false ), OUT, Description (
             "The new instance of SystemSpecificCollection that is "
             "created.")]
      CIM_SystemSpecificCollection REF Collection ); 

      [Description (
          "Create MemberOfCollection instances between the specified "
          "Collection and the StorageHardwareIDs. This method allows "
          "the client to make a request of a specific Service instance "
          "to create the associations. When these capabilities are "
          "standardized in CIM/WBEM, this method can be deprecated and "
          "intrinsic methods used."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..0xFFF", "0x1000",
          "0x1001", "0x1002", "0x1003..0x7FFF", "0x8000.." }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
          "Invalid LogicalDevice instance",
          "Implementation does not support device collections",
          "Input devices cannot be used in this collection",
          "Method Reserved", "Vendor Specific" }]
   uint32 AddHardwareIDsToCollection (
      
         [IN, Description (
             "Array of strings containing representations of "
             "references to StorageHardwareID instances that will "
             "become members of the collection.")]
      string HardwareIDs[],
      
         [IN, Description (
             "The Collection which groups the StorageHardwareIDs.")]
      CIM_SystemSpecificCollection REF Collection ); 
};


// ===================================================================
// end of file
// ===================================================================
