// ===================================================================
// Title:       Network Pipes 2.7
// Filename:    Network27_Pipes.mof
// Version:     2.7.0
// Status:      Final
// Date:        March 31, 2003
// ===================================================================
// Copyright 1998-2003 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 Network Model extends the management concepts to
//              represent protocol interfaces and network/protocol 
//              services.  This file models network pipes, based on  
//              the ITU M.3100 definitions.
//
//              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.7
// CR696 - Add M.3100 concepts of Pipe; Define the associations, 
//         HostedPipe, EndpointOfPipe, and PipeComposition
// CR850 - Change CIM_Pipe to CIM_NetworkPipe; Propagate this change
//         through the model; Make similar name changes throughout
//         the other classes
// CR961 - Changes to Enabled and RequestedState in NetworkPipe, 
//         inherited from EnabledLogicalElement
// CR982 - Removal of Experimental for preliminary to final
// CR994 - Update of the InstanceID property Description
// ===================================================================
 
#pragma Locale ("en_US")


// ================================================================
// NetworkPipe
// ================================================================
   [Version ("2.7.0"), Description (
      "NetworkPipe is a subclass of EnabledLogicalElement, "
      "representing the state and management of a connection or "
      "trail between endpoints. This object is different than the "
      "association between the endpoints (CIM_ActiveConnection) "
      "since the emphasis is NOT on the endpoints but on the "
      "management of the pipe itself - its state, configuration, "
      "etc. NetworkPipes are defined in the context of a "
      "CIM_Network and represent the 'transfer of information . . . "
      "between . . . endpoints'. These concepts are aligned with "
      "the definition of the Pipe object in ITU's M.3100 "
      "specification."),
      MappingStrings {"Recommendation.ITU|M3100.Pipe",
         "Recommendation.ITU|M3100.TrailR1", 
         "Recommendation.ITU|M3100.ConnectionR1",
         "Recommendation.ITU|M3100.SubNetworkConnection"} ]
class CIM_NetworkPipe : CIM_EnabledLogicalElement {

        [Key, Description (
         "Within the scope of the instantiating Namespace, InstanceID " 
         "opaquely and uniquely identifies an instance of this class. "
         "In order to ensure uniqueness within the NameSpace, the "
         "value of InstanceID SHOULD be constructed using the "
         "following 'preferred' algorithm: \n"
         " <OrgID>:<LocalID> \n"
         "Where <OrgID> and <LocalID> are separated by a colon ':', "
         "and where <OrgID> MUST include a copyrighted, trademarked "
         "or otherwise unique name that is owned by the business entity "
         "creating/defining the InstanceID, or is a registered ID that "
         "is assigned to the business entity by a recognized global "
         "authority. (This is similar to the <Schema Name>_<Class Name> "
         "structure of Schema class names.) In addition, to ensure "
         "uniqueness <OrgID> MUST NOT contain a colon (':'). When "
         "using this algorithm, the first colon to appear in "
         "InstanceID MUST appear between <OrgID> and <LocalID>. "
         "(For DMTF defined instances, the 'preferred' algorithm MUST be "
         "used with the <OrgID> set to 'CIM'.) \n"
         " <LocalID> MUST include either a vendor specified unique "
         "identifier, or if mapping from an ITU M.3100 environment, "
         "the trailID, connectionID or subNetworkConnectionID of "
         "the instances of PipeR2."),         
         MappingStrings {"Recommendation.ITU|M3100.TrailR1.trailId", 
            "Recommendation.ITU|M3100.ConnectionR1.connectionID", 
            "Recommendation.ITU|M3100.SubNetworkConnection."
               "subNetworkConnectionID"} ]
    string InstanceID;

        [Description (
         "Indicates whether the pipe is bi-directional (value = "
         "2), unidirectional (value = 3), or this information is "
         "not known (value = 0). For unidirectional pipes, the "
         "source and sink are indicated by a property (SourceOrSink) "
         "of the association, EndpointOfNetworkPipe."),
         ValueMap {"0", "2", "3"},
         Values {"Unknown", "Bi-Directional", "Unidirectional"}, 
         MappingStrings {
            "Recommendation.ITU|M3100.Pipe.directionality"} ]
    uint16 Directionality;

      [Description (
       "  Indicates whether the pipe is composed of lower-level "
       "pipes, and if so, how these lower-level pipes are aggregated "
       "(in parallel or in sequence). The specific instances of "
       "NetworkPipe that are combined are described using the "
       "NetworkPipeComposition association. \n"
       "\n"
       "  In the context of M.3100, the ability to be composed of "
       "lower-level pipes is modeled as a Trail. A Trail is made up "
       "of one or more Connections. (Note that both Trails and "
       "Connections are subclasses of Pipe). Because of the "
       "flexibility of the NetworkPipeComposition association, there "
       "is no need to subclass NetworkPipe, as was done in M.3100, "
       "but merely to instantiate the NetworkPipeComposition "
       "association to describe the bundling of the lower-level "
       "pipes (i.e., the connections), or the sequencing of them."),
       ValueMap {"0", "2", "3", "4"},
       Values {"Unknown", "No Lower-Level Composition", 
          "Combined In Parallel", "Combined In Sequence"} ]
    uint16 AggregationBehavior;

      [Override ("EnabledState"), 
       MappingStrings {
          "Recommendation.ITU|M3100.Pipe.operationalState"} ]
    uint16 EnabledState;

      [Override ("RequestedState"), Write, 
       MappingStrings {
          "Recommendation.ITU|M3100.Pipe.administrativeState"} ]
    uint16 RequestedState = 5;
};


// ==================================================================
// HostedNetworkPipe
// ==================================================================
   [Association,  Version ("2.7.0"), Description (
      "HostedNetworkPipe is an association between a pipe and the "
      "network in whose context the pipe is defined.  The "
      "cardinality of this association is 1-to-many. A network may "
      "host many pipes, and pipes are scoped/contained by only "
      "one network.") ]
class CIM_HostedNetworkPipe : CIM_Dependency {

        [Override ("Antecedent"), Min (1), Max (1), 
         Description ("The hosting network.") ] 
    CIM_Network REF Antecedent;

        [Override ("Dependent"), 
         Description ("The pipe in the network.") ] 
    CIM_NetworkPipe REF Dependent;
};

 
// ==================================================================
// EndpointOfNetworkPipe
// ==================================================================
   [Association,  Version ("2.7.0"), Description (
      "EndpointOfNetworkPipe describes the endpoints between which "
      "a pipe transfers information. Whether an endpoint is a source "
      "or sink is indicated by a property of the association, "
      "SourceOrSink."), 
      MappingStrings {"Recommendation.ITU|M3100.Pipe.a-TPInstance",
         "Recommendation.ITU|M3100.Pipe.z-TPInstance"} ]
class CIM_EndpointOfNetworkPipe : CIM_Dependency {

        [Override ("Antecedent"), Min (2), Max (2), 
         Description ("One of the endpoints of the pipe.") ] 
    CIM_ProtocolEndpoint REF Antecedent;

        [Override ("Dependent"), Description (
         "The pipe which is dependent on the endpoints as the "
         "source or sink of the transferred information.") ] 
    CIM_NetworkPipe REF Dependent;

        [Description (
         "Indicates whether the endpoint is a source (value = "
         "2), or sink (value = 3) for the pipe. If this information "
         "is not applicable, the property is set to 4. If the "
         "information is not known, the property is set to 0."), 
         ValueMap {"0", "2", "3", "4"},
         Values {"Unknown", "Source", "Sink", "Not Applicable"} ]
    uint16 SourceOrSink;
};


// ==================================================================
// NetworkPipeComposition
// ==================================================================
   [Association, Aggregation, Composition,  
    Version ("2.7.0"), Description (
      "NetworkPipeComposition describes the makeup a pipe, based on "
      "lower-level ones. If the pipe is not composed of lower-level "
      "entities (i.e., its AggregationBehavior property is set to 2), "
      "then no instances of this association should be defined where "
      "the pipe has the role of GroupComponent. \n"
      "\n"
      "In the context of M.3100, this semantic is modeled as a "
      "Trail that is made up of one or more Connections. Both Trails "
      "and Connections are subclasses of M.3100's Pipe. Because of the "
      "flexibility of the NetworkPipeComposition association, there is "
      "no need to subclass NetworkPipe, as was done in M.3100, but merely "
      "to instantiate this association to describe the bundling of the "
      "lower-level pipes (connections), or the sequencing of them. "
      "How the lower-level pipes are aggregated is described by the "
      "property, AggregationBehavior, of NetworkPipe. If the pipes "
      "are combined in a sequence, the ordering is conveyed via "
      "the property, AggregationSequence, on this association."), 
      MappingStrings {
         "Recommendation.ITU|M3100.TrailR1.serverConnectionListPackage",
         "Recommendation.ITU|M3100.TrailR1.clientConnectionListPackage"} ]
class CIM_NetworkPipeComposition : CIM_Component {

        [Override ("GroupComponent"), Aggregate, Description (
         "The higher level pipe that is composed of lower-level "
         "parts/pipes.") ] 
    CIM_NetworkPipe REF GroupComponent;

        [Override ("PartComponent"), Description (
         "A pipe which is a part of a higher-level one.") ] 
    CIM_NetworkPipe REF PartComponent;

        [Description (
         "Indicates the ordering of the PartComponent pipes in the "
         "GroupComponent.  If the AggregationBehavior property of the "
         "GroupComponent pipe is set to 0 or 3 (\"Unknown\" or "
         "\"Combined In Parallel\"), then this property MUST be set "
         "to 0. If the AggregationBehavior is set to 4 (\"Combined "
         "In Sequence\"), then this property SHOULD indicate the "
         "ordering of the component pipes. Ordering starts with 1 "
         "and larger numbers indicate subsequent pipes. The "
         "numbering does not have to be in sequence. The word SHOULD "
         "is used in this Description, since the specific ordering "
         "of all the component pipes may not be known. In these cases, "
         "a value of 0 would be placed in AggregationSequence to "
         "indicate that ordering information is not available.") ]
    uint16 AggregationSequence;
};


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