// Copyright (c) 2005 DMTF.  All rights reserved.
   [Version ( "2.11.0" ), 
    UMLPackagePath ( "CIM::Network::ProtocolEndpoints" ), 
    Description ( 
       "A SCSIProtocolEndpoint represents the protocol (command) "
       "aspects of a logical SCSI port, independent of the "
       "connection/transport. SCSIProtocolEndpoint is either directly "
       "or indirectly associated to one or more instances of "
       "LogicalPort (via PortImplementsEndpoint) depending on the "
       "underlying transport. Indirect associations aggregate one or "
       "more LogicalPorts using intermediate ProtocolEndpoints (iSCSI, "
       "etc). SCSIProtocolEndpoint is also associated to a "
       "SCSIProtocolController, representing the SCSI device." )]
class CIM_SCSIProtocolEndpoint : CIM_ProtocolEndpoint {

      [Override ( "Name" ), 
       Description ( 
          "The SCSI identifier for the target or initiator device, "
          "in the format appropriate for the ConnectionType. If a "
          "ConnectionType specific subclass is defined, the "
          "subclass may override Name to define the format. For "
          "other ConnectionTypes, the format (and content) should "
          "match that of PermamnentAddress of the corresponding "
          "LogicalPort." ), 
       MaxLen ( 256 ), 
       MappingStrings { 
          "SPC.INCITS-T10 |Protocol Specific Parameters | Name" }, 
       ModelCorrespondence { 
          "CIM_SCSIProtocolEndpoint.ConnectionType", 
          "CIM_SCSIProtocolEndpoint.OtherConnectionType" }]
   string Name;

      [Description ( 
          "The supported connection type for this endpoint. The "
          "connection type may be needed before the port(s) are "
          "associated and also is used in some SCSI commands." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, 
       Values { "Other", "Fibre Channel", "Parallel SCSI", "SSA", 
          "IEEE 1394", "RDMA", "iSCSI", "SAS", "ADT" }, 
       MappingStrings { 
          "SPC.INCITS-T10 | Protocol Identifier | Values" }, 
       ModelCorrespondence { "CIM_SCSIProtocolEndpoint.Name", 
          "CIM_SCSIProtocolEndpoint.OtherConnectionType" }]
   uint16 ConnectionType;

      [Description ( 
          "For iSCSI, each SCSIProtocolEndpoint MUST act as either "
          "a target or an initiator endpoint. Other transports "
          "allow a SCSI PE to act as both an initiator and target "
          "endpoint. This property indicates which role this "
          "ProtocolEndpoint implements." ), 
       ValueMap { "0", "2", "3", "4" }, 
       Values { "Unknown", "Initiator", "Target", 
          "Both Initiator and Target" }]
   uint16 Role;

      [Description ( 
          "For ports on a target device, the port number, relative "
          "to the storage system. 0 is reserved by T10, 1 is port "
          "A, 2 is port B, etc. These numbers are used in SCSI "
          "commands that operate on target port groups." ), 
       MinValue ( 1 ), 
       MappingStrings { 
          "SPC.INCITS-T10 | RelativeTargetPort | IdentifierFormat" }]
   uint32 TargetRelativePortNumber;

      [Description ( 
          "The connection type, if ConnectionType is \"Other\"." ), 
       ModelCorrespondence { "CIM_SCSIProtocolEndpoint.Name", 
          "CIM_SCSIProtocolEndpoint.ConnectionType" }]
   string OtherConnectionType;


};
