// =================================================================== // Title: Device Storage Name Binding // $State: Exp $ // $Date: 2004/08/04 14:02:12 $ // $Source: /cvs/MSB/pegasus/Schemas/CIMPrelim29/Attic/Device_StorageNameBinding.mof,v $ // $Revision: 1.1 $ // =================================================================== //#pragma inLine ("Includes/copyright.inc") // Copyright 1998-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. //#pragma inLine // =================================================================== // Description: The Device Model extends the management concepts that // are related to LogicalDevices. This file defines // a model for support for FC HBA Persistent Binding // and similar iSCSI functions // // 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.9 Preliminary // CR1348 - Add support for FC HBA Persistent Binding and similar iSCSI // functions // // ================================================================== #pragma locale ("en_US") // ================================================================== // StorageNameBinding // ================================================================== [Experimental, Version ( "2.8.1000" ), Description ( "StorageNameBinding instances represent bindings between " "transport-specific devices names and either OS device " "names/addresses or virtual initiator names. Bindings are " "defined by administrators and are persistent. The binding " "defines names of other elements that may or may not correlate " "to other CIM classes. It must be possible to create these " "bindings in cases when CIM instances for these other elements " "are not available. This may be because the elements are " "temporarily unavailable or because the elements are managed by " "some other providers or because the binding represents a " "'black listed' device name. A SettingData models the " "persistence of the binding in the absence of the elements. In " "the descriptions below, FC API refers to the FC API as " "specified in the t11_5 workgroup, and IMA refers to the iSCSI " "Management API as specified in the SNIA IPS Management " "workgroup. \n" "\n" "Three types of bindings are modeled: \n" "- OSStorageNameBinding models a binding from a storage " "elements to OS device names or addresses (as used in FC API " "PersistentBindings and IMA ExposeLun. One side of the binding " "represents a device (as viewed from the system scoping the " "binding) and the name exposed by the scoping system. For " "example, Fibre Channel HBAs support binding of Fibre Channel " "port names (and optionally a SCSI logical unit identifier) to " "OS device names. Each time the system or device is stopped and " "restated, the same OS device name is bound to the device. \n" "- StorageBridgeNameBinding models gateways where a name valid " "for one transport is mapped to a name valid for a different " "transport. This binding is used in bridge devices that allow " "Infiniband or iSCSI host adapters to connect to Fibre Channel " "devices. \n" "- The third type of binding is similar to the first, but no OS " "device name or address is provided, the OS uses its usual " "rules to assign names. For this type of binding, the " "superclass can be used.")] class CIM_StorageNameBinding : CIM_SettingData { [Description ( "BindingType describes the type of binding expressed by the " "setting data instance. It also defines the interpretation " "of TargetName. \n" "BindToFcDID, FcApiBindToWWPN, and FcApiBindToWWNW represent " "bindings in a fibre channel HBA to a D_ID (destination ID), " "WWPN (World Wide Port Name), or WWNW (World Wide Node " "Name). \n" "LUID is a binding based on a SCSI Inquiry VPD page 83, " "Association 0 logical unit identifier. \n" "'iSCSI Name' represents a binding to an iSCSI target as " "used in IMA for Static Configuration (if " "TargetLUNumberValid is false) or an IMA (Un)Exposed LUN " "record (if TargetLUNumberValid is true). \n" "'iSCSI Network Address' represents a binding to an iSCSI " "network entity. It is formatted as a host name or IP " "address optionally followed by a plus ('+') and a TCP port " "number. If '+port<#>' is omitted, the iSCSI default (3260) " "is used. \n" "'Bridge Binding' represents a binding between initiator IDs " "in a transport bridge device."), ValueMap { "2", "3", "4", "5", "6", "7", "8" }, Values { "FcApiBindToDID", "FcApiBindToWWPN", "FcApiBindToWWNN", "BindToLUID", "iSCSI Target Name", "iSCSI Network Address", "Bridge Binding" }, MappingStrings { "FC API.INCITS-T11| HBA_BIND_TYPE" }] uint16 BindingType; [Description ( "If true, then all target logical units are bound to the OS. " "Not valid to set this if BindingType is BindToLUID."), MappingStrings { "FC API.INCITS-T11| HBA_BIND_TARGETS" }, ModelCorrespondence { "CIM_StorageNameBinding.LogicalUnitNumber", "CIM_StorageNameBinding.BindingType" }] boolean BindAllLogicalUnits = false; [Description ( "If false (the default), the specified target unit(s) is " "exposed to the OS. If true, the OS-related properties are " "ignored, and the target related properties identify target " "unit(s) that are hidden from the OS. In most cases, this is " "false.")] boolean Hide = false; [Description ( "The name (dependent on BindingType) identifying the SCSI " "target. If BindingType is FcApiBindToDID, TargetName holds " "a hexadecimal-encoded representation of the 32-bit D_ID \n" "and corresponds to FC API HBA_FCPID.FcId. \n" "If BindingType is FcApiBindToWWPN or FcApiBindToWWNN, " "TargetName holds a hexadecimal-encoded representation of " "the 64-bit FC Port or Node World Wide Name. \n" "If BindingType is BindToLUID, TargetName holds a SCSI " "Logical Unit Name from Inquiry VPD page 83, Association 0 " "as defined in SCSI Primary Commands. If the identifier " "descriptor (in the SCSI response) has Code Set Binary, then " "TargetName is its hexadecimal-encoded value."), MappingStrings { "FC API.INCITS-T11| HBA_FcpId | FcId", "FC API.INCITS-T11| HBA_FcpId | NodeWWN", "FC API.INCITS-T11| HBA_FcpId | PortWWN", "FC API.INCITS-T11| HBA_FcpId | FcId", "FC API.INCITS-T11| HBA_LUID" }] String TargetName; [Description ( "A string containing a hexadecimal-encoded representation of " "the 64-bit SCSI Logical Unit Number in the format described " "in the T10 SCSI Architecture Model specification. This " "format consists of four 2-byte fields. In most cases, the " "human-oriented logical unit number will be in the high- " "order two bytes and the low-order six bytes will be zero. " "This property is only valid if BindAllLogicalUnits is false " "and BindingType is not ."), MappingStrings { "FC API.INCITS-T11| HBA_FcpId | FcpLun" }, ModelCorrespondence { "CIM_StorageNameBinding.BindAllLogicalUnits" }] string LogicalUnitNumber; [Description ( "A status associated with the previous attempt to enable the " "binding - this may be set many times after the binding is " "created. The first subset is defined by FC API: \n" "BadOSBus - request included a bad OS SCSI bus number \n" "BadOSTarget - request included a bad SCSI target number \n" "BadOSLun - request included a bad OS SCSI logical unit " "number \n" "OSAddressAlreadyBound - request included an OS SCSI ID that " "was already bound \n" "BadFcid - request included a bad or unlocatable FCP Target " "FCID \n" "BadWWNN - request included a bad FCP Target Node_Name \n" "BadWWPN - request included a bad FCP Target Port Name \n" "BadTargetLU - request included an FCP Logical Unit Number " "not defined by the identified Target. \n" "BadLUID - request included an undefined in inaccessible " "LUID."), ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }, Values { "Unknown", "Other", "OK", "BadOSBus", "BadOSTarget", "BadOSLun", "BadFcId", "BadWWNN", "BadWWPN", "BadTargetLU", "BadLUID" }, MappingStrings { "FC API.INCITS-T11|HBA_FCPBINDING2|Status" }, ModelCorrespondence { "CIM_StorageNameBinding.OtherStatus" }] uint32 Status; [Description ( "A string describing the status if Status is 'Other'."), ModelCorrespondence { "CIM_StorageNameBinding.Status" }] string OtherStatus; }; // ================================================================== // OSStorageNameBinding // ================================================================== [Experimental, Version ( "2.8.1000" ), Description ( "OSStorageNameBinding represent a binding between a " "transport-specific name and an OS device name or address. " "Bindings are defined by administrators and are persistent.")] class CIM_OSStorageNameBinding : CIM_StorageNameBinding { [Override ( "BindingType" ), Description ( "OSStorageNameBinding only allows a subset of binding types."), ValueMap { "2", "3", "4", "5" }, Values { "FcApiBindToDID", "FcApiBindToWWPN", "FcApiBindToWWNN", "BindToLUID" }, MappingStrings { "FC API.INCITS-T11| HBA_BIND_TYPE" }] uint16 BindingType; [Description ( "A device file name valid for the current operating system. " "It should follow the OS device naming guidelines in the FC " "API or IMA specification."), MappingStrings { "FC API.INCITS-T11|HBA_SCSIID|OSDeviceName", "IMA.SNIA|IMA_LU_PROPERTIES|osDeviceName" }] string OSDeviceName; [Description ( "A flag indicating whether OSBusNumber, OSTargetNumber, and " "OSLUN prosperities are valid."), MappingStrings { "IMA.SNIA|IMA_LU_PROPERTIES|osParallelIdsValid" }] boolean OSAddressesValid = false; [Description ( "The Bus Number as used in some OSes whether Bus, Target, " "and LU number together form a unique internal address."), MappingStrings { "FC API.INCITS-T11|HBA_SCSIID|SCSIBusNumber", "IMA.SNIA|IMA_LU_PROPERTIES|osBusNumber" }] uint32 OSBusNumber; [Description ( "The Target Number as used in some OSes whether Bus, Target, " "and LU number together form a unique internal address."), MappingStrings { "FC " "API.INCITS-T11|HBA_SCSIID|SCSITargetNumber", "IMA.SNIA|IMA_LU_PROPERTIES|osTargetId" }] uint32 OSTargetNumber; [Description ( "The Logical Unit Number as used in some OSes where Bus, " "Target, and LU number together form a unique internal " "address."), MappingStrings { "FC API.INCITS-T11|HBA_SCSIID|SCSIOSLUN", "IMA.SNIA|IMA_LU_PROPERTIES|osLun" }] uint32 OSLUN; [Description ( "The type of the ports in LocalPortName."), ValueMap { "2", "3" }, Values { "FC Port WWN", "iSCSI Name" }] uint16 LocalPortNameType; [Description ( "A list of port names on the current system associated with " "this persistent binding."), MappingStrings { "FC API.INCITS-T11|hbaPortWWN" }] string LocalPortNames[]; }; // ================================================================== // StorageBridgeNameBinding // ================================================================== [Experimental, Version ( "2.8.1000" ), Description ( "StorageBridgeBinding represents a binding between two " "transport-specific initiator port names. One name is " "associated with the initiator port in the format appropriate " "for the port type. The other name is an administratively " "assigned name with a format appropriate for transport on the " "target side of the bridge. This virtual initiator port name is " "used by the bridge when it communicates with targets from the " "bound initiator. This virtual name is needed for target device " "management functions that use initiator port names, such as " "LUN masking and mapping. \n" "For example, an Infiniband/FibreChannel bridge support " "Infiniband initiator ports and allows the administrator to " "assign a Fibre Channel Port WWN (AssignedPortName) to each " "Infiniband initiator (InitiatorPortName). \n" "The TargetName property from the superclass may be used to " "restrict this binding to a specific target. If TargetPort is " "left null, the binding affects all targets seen by the bridge.")] class CIM_StorageBridgeNameBinding : CIM_StorageNameBinding { [Override ( "BindingType" ), Description ( "StorageBridgeNameBinding only allows one binding type."), ValueMap { "8" }, Values { "Bridge Binding" }] uint16 BindingType; [Description ( "The name of the initiator port using the name Type of the " "actual transport."), MappingStrings { "FC API.INCITS-T11|Bind_SRP_Initiator|SRP " "Initiator Port Identifier" }, ModelCorrespondence { "CIM_StorageBridgeNameBinding.InitiatorPortNameType" }] string InitiatorPortName; [Description ( "The name of the initiator port using the name Type of the " "actual transport."), ValueMap { "2", "3", "4" }, Values { "FibreChannel Port WWN", "SRP Port Identifier", "iSCSI Name" }, ModelCorrespondence { "CIM_StorageBridgeNameBinding.InitiatorPortName" }] uint16 InitiatorPortNameType; [Description ( "The name of the initiator port assigned by the " "administrator using the name type of the target-side " "transport."), MappingStrings { "FC API.INCITS-T11|Bind_SRP_Initiator|FC_Port " "Name Identifier" }, ModelCorrespondence { "CIM_StorageBridgeNameBinding.AssignedPortNameType" }] string AssignedPortName; [Description ( "The name of the initiator port using the name Type of the " "actual transport."), ValueMap { "2", "3", "4" }, Values { "FibreChannel Port WWN", "SRP Port Identifier", "iSCSI Name" }, ModelCorrespondence { "CIM_StorageBridgeNameBinding.AssignedPortName" }] uint16 AssignedPortNameType; }; // ================================================================== // StorageNameBindingService // ================================================================== [Experimental, Version ( "2.8.1000" ), Description ( "Provides functions needed for name binding.")] class CIM_StorageNameBindingService : CIM_Service { [Description ( "This method requests that the driver create a name binding " "from a target (and option logical unit) and lets the OS " "assign the name."), ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" }, Values { "Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Vendor Specific" }] uint32 CreateStorageNameBinding ( [IN, Description ( "The value to assign to BindingType."), ValueMap { "2", "3", "4", "5", "6", "7" }, Values { "FcApiBindToDID", "FcApiBindToWWPN", "FcApiBindToWWNN", "BindToLUID", "iSCSI Target Name", "iSCSI Network Address" }] uint16 BindingType, [IN, Description ( "The value to assign to BindAllLogicalUnits.")] boolean BindAllLogicalUnits, [IN, Description ( "The value to assign to Hide.")] boolean Hide, [IN, Description ( "The value to assign to TargetName.")] string TargetName, [IN, Description ( "The value to assign to LogicalUnitNumber.")] string LogicalUnitNumber, [IN ( false ), OUT, Description ( "A reference to the created name binding instance.")] CIM_StorageNameBinding REF Binding); [Description ( "This method requests that the driver create a name binding " "from a target (and option logical unit) to a specified OS " "Device Name or addresses."), ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" }, Values { "Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Vendor Specific" }] uint32 CreateOSStorageNameBinding ( [IN, Description ( "The value to assign to BindingType."), ValueMap { "2", "3", "4", "5", "6", "7" }, Values { "FcApiBindToDID", "FcApiBindToWWPN", "FcApiBindToWWNN", "BindToLUID", "iSCSI Target Name", "iSCSI Network Address" }] uint16 BindingType, [IN, Description ( "The value to assign to BindAllLogicalUnits.")] boolean BindAllLogicalUnits, [IN, Description ( "The value to assign to Hide.")] boolean Hide, [IN, Description ( "The value to assign to TargetName.")] string TargetName, [IN, Description ( "The value to assign to LogicalUnitNumber.")] string LogicalUnitNumber, [IN, Description ( "The value to assign to OSDeviceName.")] string OSDeviceName, [IN, Description ( "The value to assign to OSAddressesValid.")] boolean OSAddressesValid, [IN, Description ( "The value to assign to OSBusNumber.")] uint32 OSBusNumber, [IN, Description ( "The value to assign to OSTargetNumber.")] uint32 OSTargetNumber, [IN, Description ( "The value to assign to OSLUN.")] uint32 OSLUN, [IN, Description ( "The type of the ports in LocalPortNames."), ValueMap { "2", "3" }, Values { "FC Port WWN", "iSCSI Name" }] uint16 LocalPortNameType, [IN, Description ( "The values to assign to LocalPortNames.")] string LocalPortNames[], [IN ( false ), OUT, Description ( "A reference to the created name binding instance.")] CIM_StorageNameBinding REF Binding); [Description ( "This method requests that the driver create a name binding " "between real and virtual initiator names on a bridge."), ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" }, Values { "Success", "Not Supported", "Unknown", "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", "Vendor Specific" }] uint32 CreateStorageBridgeNameBinding ( [IN, Description ( "The value to assign to BindingType."), ValueMap { "2", "3", "4", "5", "6", "7" }, Values { "FcApiBindToDID", "FcApiBindToWWPN", "FcApiBindToWWNN", "BindToLUID", "iSCSI Target Name", "iSCSI Network Address" }] uint16 BindingType, [IN, Description ( "The value to assign to BindAllLogicalUnits.")] boolean BindAllLogicalUnits, [IN, Description ( "The value to assign to Hide.")] boolean Hide, [IN, Description ( "The value to assign to TargetName.")] string TargetName, [IN, Description ( "The value to assign to InitiatorPortName.")] string InitiatorPortName, [IN, Description ( "The value to assign to InitiatorPortNameType."), ValueMap { "2", "3", "4" }, Values { "FibreChannel Port WWN", "SRP Port Identifier", "iSCSI Name" }] uint16 InitiatorPortNameType, [IN, Description ( "The value to assign to AssignedPortName.")] string AssignedPortName, [IN, Description ( "The value to assign to AssignedPortNameType."), ValueMap { "2", "3", "4" }, Values { "FibreChannel Port WWN", "SRP Port Identifier", "iSCSI Name" }] uint16 AssignedPortNameType, [IN ( false ), OUT, Description ( "A reference to the created name binding instance.")] CIM_StorageNameBinding REF Binding); }; // ================================================================== // StorageNameBindingCapabilities // ================================================================== [Experimental, Version ( "2.8.1000" ), Description ( "StorageNameBindingCapabilities describes the current " "implementation's support for optional behavior.")] class CIM_StorageNameBindingCapabilities : CIM_Capabilities { [Description ( "The type of bindings supported."), ValueMap { "2", "3", "4", "5", "6", "7", "8" }, Values { "FcApiBindToDID", "FcApiBindToWWPN", "FcApiBindToWWNN", "BindToLUID", "iSCSI Target Name", "iSCSI Network Address", "Bridge Binding" }, MappingStrings { "FC API.INCITS-T11| HBA_BIND_TYPE" }] uint16 ValidBindingTypes []; [Description ( "Set to true if the implementation requires the associated " "software element be reset. In the case of drivers, this " "requires a system reboot. Set to false if the " "implementation can activate bindings without a reset.")] boolean ActivateBindingRequiresReset; [Description ( "Set to true if the implementation supports " "OSStorageNameBinding and allows overriding OS " "bus/target/LUN numbers. Set to false if not " "OSStorageNameBinding or if overriding OS address is not " "supported."), MappingStrings { "FC API.INCITS-T11|HBA_CAN_BIND_ANY_LUNS" }, ModelCorrespondence { "CIM_OSStorageNameBinding.OSBusNumber", "CIM_OSStorageNameBinding.OSTargetNumber", "CIM_OSStorageNameBinding.OSLUN" }] boolean CanMapAddresses; [Description ( "Set to true if the implementation supports " "OSStorageNameBinding and supports binding all logical units " "from a target to the OS. Set to false if not " "OSStorageNameBinding or if the implementation requires " "binding each logical unit independently."), MappingStrings { "FC API.INCITS-T11|HBA_CAN_BIND_TARGETS" }] boolean CanBindAllLuns; [Description ( "Set to true if the implementation supports auto-discovery " "and automatic name binding; create binding methods in " "StorageBindingService are not supported. Set to false " "indicates that create binding methods are supported."), MappingStrings { "FC API.INCITS-T11|HBA_CAN_BIND_AUTOMAP" }] boolean AutoDiscovery; [Description ( "Set to true if the implementation supports " "OSStorageNameBinding method and supports changing " "OSDeviceName by specifying a non-null OSDeviceName " "parameter to CreateOSStorageNameBinding.")] boolean CanSetOSDeviceName; }; // =================================================================== // end of file // ===================================================================