// ===================================================================
// Title:       Core Collections 2.7
// Filename:    Core27_Collection.mof
// Version:     2.7.0
// Release:     Final
// Date:        03/31/03
// ===================================================================
// Copyright 2000-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 Core Model defines basic management concepts. 
//              This file defines the concepts and classes in support 
//              of Collections.  
//
//              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
// CR968 - Remove the Experimental qualifier
//       - Keep RedundancySet, SparedSet, IsSpare, StorageRedundancySet,
//         and ExtraCapacitySet experimental for 2.8
// CR994 - Update description for InstanceID
//
// Change Log for v2.7
// CR684 - Add SystemSpecificCollection and HostedCollection
// CR760 - Add OrderedMemberOfCollection
// ================================================================== 

#pragma locale ("en_US")


// ==================================================================
// Collection 
// ================================================================== 
[Abstract, Version ("2.6.0"), Description (   
    "Collection is an abstract class that provides a common "   
    "superclass for data elements that represent collections of "
    "ManagedElements and its subclasses.") ]
class CIM_Collection : CIM_ManagedElement {   
};


// ==================================================================
// MemberOfCollection    
// ==================================================================
[Association, Aggregation, Version ("2.6.0"), Description (   
    "CIM_MemberOfCollection is an aggregation used to establish "   
    "membership of ManagedElements in a Collection." ) ]  
class CIM_MemberOfCollection {   
    
    [Key, Aggregate, Description (
        "The Collection that aggregates members.") ]    
    CIM_Collection REF Collection;
    
    [Key, Description (
        "The aggregated member of the Collection.") ]    
    CIM_ManagedElement REF Member;   
};   


// ==============================================================
// OrderedMemberOfCollection
// ==============================================================
[Association, Aggregation, Version ("2.7.0"), 
    Description (   
    "CIM_OrderedMemberOfCollection is an aggregation used to "
    "establish an ordered membership of ManagedElements in a "
    "Collection." ) ]  
class CIM_OrderedMemberOfCollection : CIM_MemberOfCollection {   
   
    [Description (
        "AssignedSequence is an unsigned integer 'n' that indicates "
        "the relative position of members within a Collection.  When "
        "'n' is a positive integer, it indicates a place in the "
        "sequence of members, with smaller integers indicating earlier "
        "positions in the sequence.  The special value '0' indicates "
        "'don't care'.  If two or more members have the same non-zero "
        "sequence number, then the ordering between those members is "
        "irrelavent, but they must all be ordered at the appropriate "
        "place in the overall sequence.\n"
        "\n"
        "A series of examples will make ordering of members "
        "clearer: \n"
        "    o If all members have the same sequence number,\n"
        "      regardless of whether it is '0' or non-zero, any\n"
        "      order is acceptable.\n"
        "    o The values: \n"
        "          1:MEMBER A \n"
        "          2:MEMBER B \n"
        "          1:MEMBER C \n"
        "          3:MEMBER D \n"
        "      indicate two acceptable orders: A,C,B,D or C,A,B,D,\n"
        "      since A and C can be ordered in either sequence, but\n"
        "      only at the '1' position. \n"
        "\n"
        "Note that the non-zero sequence numbers need not start with "
        "'1', and they need not be consecutive.  All that matters is "
        "their relative magnitude.") ]
    uint64 AssignedSequence;
};


// ==================================================================
// SystemSpecificCollection
// ================================================================== 
[Version ("2.7.0"), Description (   
    "   SystemSpecificCollection represents the general "
    "concept of a collection which is scoped (or contained) by a "
    "System. It represents a Collection that only has meaning "
    "in the context of a System, and/or whose elements are "
    "restricted by the definition of the System. This is explicitly "
    "described by the (required) association, HostedCollection. \n"
    "   An example of a SystemSpecificCollection is a "
    "Fibre Channel zone that collects network ports, port "
    "groupings and aliases (as required by a customer) in the "
    "context of an AdminDomain.  The Collection is not a part "
    "of the domain, but merely an arbitrary grouping of the devices "
    "and other Collections in the domain.  In other words, the "
    "context of the Collection is restricted to the domain, and its "
    "members are also limited by the domain.") ]
class CIM_SystemSpecificCollection : CIM_Collection {

    [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>.  \n"
        "   <LocalID> is chosen by the business entity and SHOULD not be "
        "re-used to identify different underlying (real-world) elements. "
        "If the above 'preferred' algorithm is not used, the defining "
        "entity MUST assure that the resultant InstanceID is not "
        "re-used across any InstanceIDs produced by this or other "
        "providers for this instance's NameSpace. \n"
        "For DMTF defined instances, the 'preferred' algorithm MUST be "
        "used with the <OrgID> set to 'CIM'.") ]        
    string InstanceID;
};


// ==================================================================
// HostedCollection    
// ==================================================================
[Association, Version ("2.7.0"), Description (
    "HostedCollection defines a SystemSpecificCollection "
    "in the context of a scoping System. It represents a "
    "Collection that only has meaning in the context of a "
    "System, and/or whose elements are restricted by the "
    "definition of the System.") ]
class CIM_HostedCollection : CIM_Dependency {

    [Override ("Antecedent"), Min (1), Max (1), Description (
        "The scoping system.") ] 
    CIM_System REF Antecedent;
      
    [Override ("Dependent"), Description (
        "The collection defined in the context of a system.") ] 
    CIM_SystemSpecificCollection REF Dependent;
};


// ===================================================================
// CollectionOfMSEs
// ===================================================================
[Abstract, Version ("2.6.0"), Description (
    "  The CollectionOfMSEs object allows the grouping of Managed"
    "SystemElements for various identification purposes and to "
    "reduce the complexity of associating Settings and "
    "Configurations. It is abstract to require further definition "
    "and semantic refinement in subclasses. The CollectionOfMSEs "
    "object does not carry any state or status information, but "
    "only represents a grouping or 'bag' of Elements. For this "
    "reason, it is incorrect to subclass groups that have state/"
    "status from CollectionOfMSEs - an example is CIM_Redundancy"
    "Group (which is subclassed from LogicalElement). \n"
    "  Collections typically aggregate 'like'objects, but are " 
    "not required to do so.  They simply identify 'bags' and "
    "may represent an optimization. This is especially true "
    "with respect to their association to Settings and "
    "Configurations. Without Collections, one is forced to "
    "define individual ElementSetting andElementConfiguration "
    "associations, to tie Settings and Configuration objects to "
    "individual ManagedSystemElements. There may be much "
    "duplication in assigning the same Setting to multiple objects. "
    "In addition, using the Collection object allows the "
    "determination that the Setting and Configuration associations "
    "are indeed the same for the Collection's members. This "
    "information would otherwise be obtained by defining the "
    "Collection in a proprietary manner, and then querying "
    "the ElementSetting and ElementConfiguration associations to "
    "determine ifthe Collection set is completely covered.") ]
class CIM_CollectionOfMSEs : CIM_Collection {
      
    [MaxLen (256), Description (
        "The identification of the Collection object. When subclassed, "
        "the CollectionID property can be overridden to be a Key "
        "property.") ]
    string CollectionID;
};


// ==================================================================
// CollectedCollections
// ==================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
    "CIM_CollectedCollections is an aggregation association "
    "representing that a CollectionOfMSEs may itself be contained "
    "in a CollectionOfMSEs.") ]
class CIM_CollectedCollections {
    [Aggregate, Key, Description (
        "The 'higher level' or parent element in the aggregation.") ]
    CIM_CollectionOfMSEs REF Collection;
    
    [Key, Description (
        "The 'collected' Collection.") ]
    CIM_CollectionOfMSEs REF CollectionInCollection;
};

     
// ==================================================================
// CollectedMSEs
// ==================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
    "CIM_CollectedMSEs is a generic association used to "
    "establish the members of the grouping object, CollectionOf"
    "MSEs.") ]
class CIM_CollectedMSEs : CIM_MemberOfCollection {
    [Aggregate, Override("Collection"), Description (
        "The grouping or 'bag' object that represents the "
        "Collection.") ]
    CIM_CollectionOfMSEs REF Collection;
    
    [Override("Member"), Description (
        "The members of the Collection.") ]
    CIM_ManagedSystemElement REF Member;
};


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