(file) Return to CIM_Policy27.mof CVS log (file) (dir) Up to [Pegasus] / pegasus / Schemas / CIM27

   1 kumpf 1.2 // ==================================================================
   2           // Title:     Policy MOF Specification 2.7.0 
   3           // Filename:  CIM_Policy27.MOF
   4           // Version:   2.7.0 
   5           // Status:    Final 
   6           // Date:      05/03/2003
   7           // ===================================================================
   8           // Copyright 2000-2003 Distributed Management Task Force, Inc. (DMTF).
   9           // All rights reserved.  
  10           // DMTF is a not-for-profit association of industry members dedicated 
  11           // to promoting enterprise and systems management and interoperability. 
  12           // DMTF specifications and documents may be reproduced for uses
  13           // consistent with this purpose by members and non-members, 
  14           // provided that correct attribution is given. 
  15           // As DMTF specifications may be revised from time to time, 
  16           // the particular version and release date should always be noted.
  17           //
  18           // Implementation of certain elements of this standard or proposed 
  19           // standard may be subject to third party patent rights, including 
  20           // provisional patent rights (herein "patent rights"). DMTF makes 
  21           // no representations to users of the standard as to the existence 
  22 kumpf 1.2 // of such rights, and is not responsible to recognize, disclose, or
  23           // identify any or all such third party patent right, owners or 
  24           // claimants, nor for any incomplete or inaccurate identification or 
  25           // disclosure of such rights, owners or claimants. DMTF shall have no 
  26           // liability to any party, in any manner or circumstance, under any 
  27           // legal theory whatsoever, for failure to recognize, disclose, or 
  28           // identify any such third party patent rights, or for such party's
  29           // reliance on the standard or incorporation thereof in its product, 
  30           // protocols or testing procedures. DMTF shall have no liability to 
  31           // any party implementing such standard, whether such implementation 
  32           // is foreseeable or not, nor to any patent owner or claimant, and shall 
  33           // have no liability or responsibility for costs or losses incurred if 
  34           // a standard is withdrawn or modified after publication, and shall be
  35           // indemnified and held harmless by any party implementing the 
  36           // standard from any and all claims of infringement by a patent owner 
  37           // for such implementations.
  38           //
  39           // For information about patents held by third-parties which have 
  40           // notified the DMTF that, in their opinion, such patent may relate to 
  41           // or impact implementations of DMTF standards, visit 
  42           // http://www.dmtf.org/about/policies/disclosures.php.
  43 kumpf 1.2 // ===================================================================
  44           // Description: The Policy Model provides a framework for specifying 
  45           //              configuration and operational information in a scalable 
  46           //              way using rules composed of conditions and actions.
  47           // 
  48           //              The object classes below are listed in an order that
  49           //              avoids forward references. Required objects, defined
  50           //                  by other working groups, are omitted.
  51           // ===================================================================
  52           //     DMTFCR985 - Promote Deprecations to V2.7 Final
  53           //     DMTFCR960 - Remove Weak Qualifier from PolicyRoleCollection and
  54           //            derive from SystemSpecificCollection instead of Collection
  55           //     DMTFCR930 - Implementation Experience with the Policy 2.7 Model
  56           //          - Move PolicyRule.Enabled to PolicySet.Enabled
  57           //          - Move PolicyTimePeriodCondition up to PolicySet and
  58           //            make clear how to specify global time period with respect
  59           //            a given time zone
  60           //          - Deprecate policy role combinations 
  61           //          - Add Unconditional to PolicyRule.ConditionListType
  62           //          - Deprecate PolicyRule.Mandatory
  63           //     CIMCR914 - Added propagated keys in PolicyRoleCollection
  64 kumpf 1.2 //
  65           //     CIMCR906 - Add text to PolicySetComponent's Description and the
  66           //          class' Priority property to indicate that the values 
  67           //          of Priority must be unique
  68           //
  69           //     With promotion of Component to ManagedElement,
  70           //          added CIM_Component as superclass of CIM_PolicyComponent
  71           //          (there is no other change to the semantics or syntax)
  72           //  
  73           //     CIMCR625 - Add CompoundPolicyCondition as PolicyCondition subclass 
  74           //          - Add PolicyConditionStructure abstract aggregation as a 
  75           //            subclass of PolicyComponent 
  76           //          - Change derivation of PolicyConditionInPolicyRule from 
  77           //            PolicyComponent to PolicyConditionStructure and move 
  78           //            GroupNumber and ConditionNegated properties up to parent class 
  79           //          - Add PolicyConditionInPolicyCondition aggregation as a 
  80           //            subclass of PolicyConditionStructure 
  81           //          - Add PolicyRoleCollection as Collection subclass 
  82           //          - Add ElementInPolicyRoleCollection as MemberOfCollection 
  83           //            subclass 
  84           //          - Add PolicyRoleCollectionInSystem as Dependency subclass 
  85 kumpf 1.2 //
  86           //     CIMCR614 - Add CompoundPolicyAction for CIM 2.6 
  87           //          - Add CompoundPolicyAction as a subclass of PolicyAction 
  88           //          - Add PolicyActionStructure abstract aggregation as a 
  89           //            subclass of PolicyComponent 
  90           //          - Change derivation of PolicyActionInPolicyRule from 
  91           //            PolicyComponent to PolicyActionStructure and, thus,
  92           //            move ActionOrder property up to parent class 
  93           //          - Add PolicyActionInPolicyAction aggregation as a 
  94           //            subclass of PolicyActionStructure 
  95           //
  96           //     CIMCR597a - PCIMe updates for 2.6
  97           //              - Edit Policy description
  98           //              - Add PolicySet & derive PolicyGroup & PolicyRule
  99           //              - Deprecate PolicyRule.Priority for 
 100           //                PolicySetComponent.Priority
 101           //              - Remove PolicyRule.PolicyRoles (it's in PolicySet)
 102           //              - Add PolicyRule.ExecutionStrategy
 103           //              - Deprecate PolicyRepository & replace with 
 104           //                ReusablePolicyContainer
 105           //              - Add PolicySetInSystem 
 106 kumpf 1.2 //              - Add PolicySetComponent & deprecate ...InPolicyGroup
 107           //                & derive PolicyGroupInSystem & PolicyRuleInSystem
 108           //              - Add ContainedDomain (to Core)
 109           //                & deprecate PolicyRepositoryInPolicyRepository
 110           //              - Add ReusablePolicy & deprecate ...InPolicyRepository
 111           //
 112           // ==================================================================
 113           
 114           #pragma Locale ("en-US")
 115           
 116           
 117           // ==================================================================
 118           // Compile prerequisite:  Core MOF
 119           // ==================================================================
 120           
 121           
 122           // ==================================================================
 123           // Policy
 124           // ==================================================================
 125              [Abstract, Version ("2.6.0"), Description (
 126              "An abstract class defining the common properties of the policy "
 127 kumpf 1.2    "managed elements derived from CIM_Policy.  The subclasses are "
 128              "used to create rules and groups of rules that work together to "
 129              "form a coherent set of policies within an administrative domain "
 130              "or set of domains.") ]
 131           class CIM_Policy : CIM_ManagedElement {
 132                   [Description (
 133                   "A user-friendly name of this policy-related object.") ]
 134               string CommonName;
 135                   [Description (
 136                   "An array of keywords for characterizing / categorizing "
 137                   "policy objects. Keywords are of one of two types: \n"
 138                   "- Keywords defined in this and other MOFs, or in DMTF"
 139                   "white papers. These keywords provide a vendor-"
 140                   "independent, installation-independent way of "
 141                   "characterizing policy objects. \n"
 142                   "- Installation-dependent keywords for characterizing "
 143                   "policy objects. Examples include 'Engineering', "
 144                   "'Billing', and 'Review in December 2000'. \n"
 145                   "This MOF defines the following keywords:  'UNKNOWN', "
 146                   "'CONFIGURATION', 'USAGE', 'SECURITY', 'SERVICE', "
 147                   "'MOTIVATIONAL', 'INSTALLATION', and 'EVENT'. These "
 148 kumpf 1.2         "concepts are self-explanatory and are further discussed "
 149                   "in the SLA/Policy White Paper. One additional keyword "
 150                   "is defined: 'POLICY'. The role of this keyword is to "
 151                   "identify policy-related instances that may not be otherwise "
 152                   "identifiable, in some implementations. The keyword 'POLICY' "
 153                   "is NOT mutually exclusive of the other keywords "
 154                   "specified above.") ]
 155               string PolicyKeywords[];
 156           };
 157           
 158           
 159           // ==================================================================
 160           // PolicySet
 161           // ==================================================================
 162              [Abstract, Version ("2.7.0"), 
 163              Description ("PolicySet is an abstract class that "
 164              "represents a set of policies that form a coherent set.  The "
 165              "set of contained policies has a common decision strategy and "
 166              "a common set of policy roles.  Subclasses include "
 167              "PolicyGroup and PolicyRule.") ]
 168           class CIM_PolicySet : CIM_Policy {
 169 kumpf 1.2         [Description ("PolicyDecisionStrategy defines the evaluation "
 170                   "method used for policies contained in the PolicySet.  "
 171                   "FirstMatching enforces the actions of the first rule that "
 172                   "evaluates to TRUE.  It is the only value currently defined."),
 173                   ValueMap {"1"},
 174                   Values {"First Matching"} ]
 175               uint16 PolicyDecisionStrategy;
 176                   [Description (
 177                   "The PolicyRoles property represents the roles associated "
 178                   "with a PolicySet.  All contained PolicySet instances inherit "
 179                   "the values of the PolicyRoles of the aggregating PolicySet "
 180                   "but the values are not copied. A contained PolicySet "
 181                   "instance may, however, add additional PolicyRoles to those "
 182                   "it inherits from its aggregating PolicySet(s). Each value in "
 183                   "PolicyRoles multi-valued property represents a role for "
 184                   "which the PolicySet applies, i.e., the PolicySet should be "
 185                   "used by any enforcement point that assumes any of the listed "
 186                   "PolicyRoles values. \n"
 187                   "\n"
 188                   "Although not officially designated as 'role combinations', "
 189                   "multiple roles may be specified using the form: \n"
 190 kumpf 1.2         "  <RoleName>[&&<RoleName>]* \n"
 191                   "where the individual role names appear in alphabetical order "
 192                   "(according to the collating sequence for UCS-2).  "
 193                   "Implementations may treat PolicyRoles values that are "
 194                   "specified as 'role combinations' as simple strings.") ]
 195               string PolicyRoles[];
 196                   [Description (
 197                   "Indicates whether this PolicySet is administratively "
 198                   "enabled, administratively disabled, or enabled for "
 199                   "debug. The \"EnabledForDebug\" property value is deprecated "
 200                   "and, when it or any value not understood by the receiver is "
 201                   "specified, the receiving enforcement point treats the PolicySet "
 202                   "as \"Disabled\".  To determine if a PolicySet is \"Enabled\", "
 203                   "the containment hierarchy specified by the PolicySetComponent "
 204                   "aggregation is examined and the Enabled property values of the "
 205                   "hierarchy are ANDed together.  Thus, for example, everything "
 206                   "aggregated by a PolicyGroup may be disabled by setting the "
 207                   "Enabled property in the PolicyGroup instance to \"Disabled\" "
 208                   "without changing the Enabled property values of any of "
 209                   "the aggregated instances.  The default value is 1 "
 210                   "(\"Enabled\")."),
 211 kumpf 1.2         ValueMap {"1", "2", "3"},
 212                   Values {"Enabled", "Disabled", "Enabled For Debug"} ]
 213               uint16 Enabled = 1;
 214           };
 215           
 216           
 217           // ==================================================================
 218           // PolicyGroup
 219           // ==================================================================
 220              [Version ("2.6.0"), Description (
 221              "An aggregation of PolicySet instances (PolicyGroups and/or "
 222              "PolicyRules) that have the same decision strategy and inherit "
 223              "policy roles.   PolicyGroup instances are defined and named "
 224              "relative to the CIM_System that provides their context.") ]
 225           class CIM_PolicyGroup : CIM_PolicySet {
 226                   [Propagated("CIM_System.CreationClassName"),
 227                   Key, MaxLen (256),
 228                   Description ("The scoping System's CreationClassName.") ]
 229               string SystemCreationClassName;
 230                   [Propagated("CIM_System.Name"),
 231                   Key, MaxLen (256),
 232 kumpf 1.2         Description ("The scoping System's Name.") ]
 233               string SystemName;
 234                   [Key, MaxLen (256), Description (
 235                   "CreationClassName indicates the name of the class or the "
 236                   "subclass used in the creation of an instance. When used "
 237                   "with the other key properties of this class, this property "
 238                   "allows all instances of this class and its subclasses to "
 239                   "be uniquely identified.") ]
 240               string CreationClassName;
 241                   [Key, MaxLen (256), Description (
 242                   "A user-friendly name of this PolicyGroup.") ]
 243               string PolicyGroupName;
 244           };
 245           
 246           
 247           // ==================================================================
 248           // PolicyRule
 249           // ==================================================================
 250              [Version ("2.7.0"), Description (
 251              "The central class used for representing the 'If Condition then "
 252              "Action' semantics of a policy rule. A PolicyRule condition, in "
 253 kumpf 1.2    "the most general sense, is represented as either an ORed set of "
 254              "ANDed conditions (Disjunctive Normal Form, or DNF) or an ANDed "
 255              "set of ORed conditions (Conjunctive Normal Form, or CNF).  "
 256              "Individual conditions may either be negated (NOT C) or "
 257              "unnegated (C).  The actions specified by a PolicyRule are to be "
 258              "performed if and only if the PolicyRule condition (whether it "
 259              "is represented in DNF or CNF) evaluates to TRUE. \n"
 260              "\n"
 261              "The conditions and actions associated with a PolicyRule are "
 262              "modeled, respectively, with subclasses of PolicyCondition and "
 263              "PolicyAction.  These condition and action objects are tied to "
 264              "instances of PolicyRule by the PolicyConditionInPolicyRule and "
 265              "PolicyActionInPolicyRule aggregations. \n"
 266              "\n"
 267              "A PolicyRule may also be associated with one or more policy "
 268              "time periods, indicating the schedule according to which the "
 269              "policy rule is active and inactive.  In this case it is the "
 270              "PolicySetValidityPeriod aggregation that provides this "
 271              "linkage. \n"
 272              "\n"
 273              "The PolicyRule class uses the property ConditionListType, to "
 274 kumpf 1.2    "indicate whether the conditions for the rule are in DNF "
 275              "(disjunctive normal form), CNF (conjunctive normal form) or, "
 276              "in the case of a rule with no conditions, as an "
 277              "UnconditionalRule.  The PolicyConditionInPolicyRule "
 278              "aggregation contains two additional properties to complete "
 279              "the representation of the Rule's conditional expression.  "
 280              "The first of these properties is an integer to partition the "
 281              "referenced PolicyConditions into one or more groups, and the "
 282              "second is a Boolean to indicate whether a referenced Condition "
 283              "is negated.  An example shows how ConditionListType and these "
 284              "two additional properties provide a unique representation "
 285              "of a set of PolicyConditions in either DNF or CNF. \n"
 286              "\n"
 287              "Suppose we have a PolicyRule that aggregates five "
 288              "PolicyConditions C1  through C5, with the following values "
 289              "in the properties of the five PolicyConditionInPolicyRule "
 290              "associations: \n"
 291              "    C1:  GroupNumber = 1, ConditionNegated = FALSE \n"
 292              "    C2:  GroupNumber = 1, ConditionNegated = TRUE \n"
 293              "    C3:  GroupNumber = 1, ConditionNegated = FALSE \n"
 294              "    C4:  GroupNumber = 2, ConditionNegated = FALSE \n"
 295 kumpf 1.2    "    C5:  GroupNumber = 2, ConditionNegated = FALSE \n"
 296              "\n"
 297              "If ConditionListType = DNF, then the overall condition for "
 298              "the PolicyRule is: \n"
 299              "        (C1 AND (NOT C2) AND C3) OR (C4 AND C5) \n"
 300              "\n"
 301              "On the other hand, if ConditionListType = CNF, then the "
 302              "overall condition for the PolicyRule is: \n"
 303              "        (C1 OR (NOT C2) OR C3) AND (C4 OR C5) \n"
 304              "\n"
 305              "In both cases, there is an unambiguous specification of "
 306              "the overall condition that is tested to determine whether "
 307              "to perform the PolicyActions associated with the PolicyRule. \n"
 308              "\n"
 309              "PolicyRule instances may also be used to aggregate other "
 310              "PolicyRules and/or PolicyGroups.  When used in this way to "
 311              "implement nested rules, the conditions of the aggregating rule "
 312              "apply to the subordinate rules as well.  However, any side "
 313              "effects of condition evaluation or the execution of actions MUST "
 314              "NOT affect the result of the evaluation of other conditions "
 315              "evaluated by the rule engine in the same evaluation pass.  That "
 316 kumpf 1.2    "is, an implementation of a rule engine MAY evaluate all "
 317              "conditions in any order before applying the priority and "
 318              "determining which actions are to be executed.") ]
 319           class CIM_PolicyRule : CIM_PolicySet {
 320                   [Propagated("CIM_System.CreationClassName"),
 321                   Key, MaxLen (256),
 322                   Description ("The scoping System's CreationClassName.") ]
 323               string SystemCreationClassName;
 324                   [Propagated("CIM_System.Name"),
 325                   Key, MaxLen (256),
 326                   Description ("The scoping System's Name.") ]
 327               string SystemName;
 328                   [Key, MaxLen (256), Description (
 329                   "CreationClassName indicates the name of the class or the "
 330                   "subclass used in the creation of an instance. When used "
 331                   "with the other key properties of this class, this property "
 332                   "allows all instances of this class and its subclasses to "
 333                   "be uniquely identified.") ]
 334               string CreationClassName;
 335                   [Key, MaxLen (256), Description (
 336                   "A user-friendly name of this PolicyRule.") ]
 337 kumpf 1.2     string PolicyRuleName;
 338                   [Description (
 339                   "Indicates whether the list of PolicyConditions "
 340                   "associated with this PolicyRule is in disjunctive "
 341                   "normal form (DNF), conjunctive normal form (CNF), or "
 342                   "has no conditions (i.e., is an UnconditionalRule) and "
 343                   "is automatically evaluated to \"True.\"  The default "
 344                   "value is 1 (\"DNF\")."),
 345                   ValueMap {"0", "1", "2"},
 346                   Values {"Unconditional Rule", "DNF", "CNF"} ]
 347               uint16 ConditionListType = 1;
 348                   [Description (
 349                   "A free-form string that can be used to provide "
 350                   "guidelines on how this PolicyRule should be used.") ]
 351               string RuleUsage;
 352                   [DEPRECATED {"CIM_PolicySetComponent.Priority"},
 353                   Description (
 354                   "PolicyRule.Priority is deprecated and replaced by "
 355                   "providing the priority for a rule (and a group) in the "
 356                   "context of the aggregating PolicySet instead of the "
 357                   "priority being used for all aggregating PolicySet "
 358 kumpf 1.2         "instances.  Thus, the assignment of priority values is "
 359                   "much simpler. \n"
 360                   "\n"
 361                   "A non-negative integer for prioritizing this Policy"
 362                   "Rule relative to other Rules. A larger value "
 363                   "indicates a higher priority. The default value is 0.") ]
 364               uint16 Priority;
 365                   [Deprecated {"No Value"},  Description (
 366                   "A flag indicating that the evaluation of the Policy"
 367                   "Conditions and execution of PolicyActions (if the "
 368                   "Conditions evaluate to TRUE) is required. The "
 369                   "evaluation of a PolicyRule MUST be attempted if the "
 370                   "Mandatory property value is TRUE.  If the Mandatory "
 371                   "property is FALSE, then the evaluation of the Rule "
 372                   "is 'best effort' and MAY be ignored.") ]
 373               boolean Mandatory;
 374                   [Description (
 375                   "This property gives a policy administrator a way "
 376                   "of specifying how the ordering of the PolicyActions "
 377                   "associated with this PolicyRule is to be interpreted. "
 378                   "Three values are supported: \n"
 379 kumpf 1.2         "  o mandatory(1): Do the actions in the indicated "
 380                   "    order, or don't do them at all. \n"
 381                   "  o recommended(2): Do the actions in the indicated "
 382                   "    order if you can, but if you can't do them in this "
 383                   "    order, do them in another order if you can. \n"
 384                   "  o dontCare(3): Do them -- I don't care about the "
 385                   "    order. \n"
 386                   "The default value is 3 (\"DontCare\")."),
 387                   ValueMap {"1", "2", "3"},
 388                   Values {"Mandatory", "Recommended", "Dont Care"} ]
 389               uint16 SequencedActions = 3;
 390                   [Description (
 391                   "ExecutionStrategy defines the strategy to be used in "
 392                   "executing the sequenced actions aggregated by this "
 393                   "PolicyRule. There are three execution strategies: \n"
 394                   "\n"
 395                   "Do Until Success - execute actions according to predefined \n"
 396                   "                   order, until successful execution of a \n"
 397                   "                   single action. \n"
 398                   "Do All -           execute ALL actions which are part of \n"
 399                   "                   the modeled set, according to their \n"
 400 kumpf 1.2         "                   predefined order. Continue doing this, \n"
 401                   "                   even if one or more of the actions fails. \n"
 402                   "Do Until Failure - execute actions according to predefined \n"
 403                   "                   order, until the first failure in \n"
 404                   "                   execution of an action instance."),
 405                   ValueMap {"1", "2", "3"},
 406                   Values {"Do Until Success", "Do All", "Do Until Failure"} ]
 407               uint16 ExecutionStrategy;
 408           };
 409           
 410           
 411           
 412           // ==================================================================
 413           // ReusablePolicyContainer
 414           // ==================================================================
 415              [Version ("2.6.0"), Description (
 416              "A class representing an administratively defined "
 417              "container for reusable policy-related information. "
 418              "This class does not introduce any additional "
 419              "properties beyond those in its superclass "
 420              "AdminDomain.  It does, however, participate in a "
 421 kumpf 1.2    "unique association for containing policy elements. \n"
 422              "\n"
 423              "An instance of this class uses the NameFormat value"
 424              "\"ReusablePolicyContainer\".") ]
 425           class CIM_ReusablePolicyContainer : CIM_AdminDomain {
 426           };
 427           
 428           
 429           // ==================================================================
 430           // PolicyRepository  *** deprecated
 431           // ==================================================================
 432              [DEPRECATED{"CIM_ReusablePolicyContainer"}, 
 433              Version ("2.7.0"), Description (
 434              "The term 'PolicyRepository' has been confusing to both "
 435              "developers and users of the model.  The replacement class "
 436              "name describes model element properly and is less likely "
 437              "to be confused with a data repository. \n"
 438              "\n"
 439              "A class representing an administratively defined "
 440              "container for reusable policy-related information. "
 441              "This class does not introduce any additional "
 442 kumpf 1.2    "properties beyond those in its superclass "
 443              "AdminDomain.  It does, however, participate in a "
 444              "number of unique associations. \n"
 445              "\n"
 446              "An instance of this class uses the NameFormat value"
 447              "\"PolicyRepository\".") ]
 448           class CIM_PolicyRepository : CIM_AdminDomain {
 449           };
 450           
 451           
 452           // ==================================================================
 453           // PolicyCondition
 454           // ==================================================================
 455              [Abstract, Version ("2.6.0"), Description (
 456              "A class representing a rule-specific or reusable policy "
 457              "condition to be evaluated in conjunction with a Policy"
 458              "Rule. Since all operational details of a PolicyCondition "
 459              "are provided in subclasses of this object, this class is "
 460              "abstract.") ]
 461           class CIM_PolicyCondition : CIM_Policy {
 462                   [Key, MaxLen (256), Description (
 463 kumpf 1.2         "The name of the class or the subclass used in the "
 464                   "creation of the System object in whose scope this "
 465                   "PolicyCondition is defined. \n"
 466                   "\n"
 467                   "This property helps to identify the System object in "
 468                   "whose scope this instance of PolicyCondition exists. "
 469                   "For a rule-specific PolicyCondition, this is the System "
 470                   "in whose context the PolicyRule is defined. For a "
 471                   "reusable PolicyCondition, this is the instance of "
 472                   "PolicyRepository (which is a subclass of System) that "
 473                   "holds the Condition. \n"
 474                   "\n"
 475                   "Note that this property, and the analogous property "
 476                   "SystemName, do not represent propagated keys from an "
 477                   "instance of the class System. Instead, they are "
 478                   "properties defined in the context of this class, which "
 479                   "repeat the values from the instance of System to which "
 480                   "this PolicyCondition is related, either directly via the "
 481                   "PolicyConditionInPolicyRepository association or indirectly "
 482                   "via the PolicyConditionInPolicyRule aggregation.") ]
 483               string SystemCreationClassName;
 484 kumpf 1.2         [Key, MaxLen (256), Description (
 485                   "The name of the System object in whose scope this "
 486                   "PolicyCondition is defined. \n"
 487                   "\n"
 488                   "This property completes the identification of the System "
 489                   "object in whose scope this instance of PolicyCondition "
 490                   "exists.  For a rule-specific PolicyCondition, this is the "
 491                   "System in whose context the PolicyRule is defined.  For a "
 492                   "reusable PolicyCondition, this is the instance of "
 493                   "PolicyRepository (which is a subclass of System) that "
 494                   "holds the Condition.") ]
 495               string SystemName;
 496                   [Key, MaxLen (256), Description (
 497                   "For a rule-specific PolicyCondition, the "
 498                   "CreationClassName of the PolicyRule object with which "
 499                   "this Condition is associated.  For a reusable Policy"
 500                   "Condition, a special value, 'NO RULE', should be used to "
 501                   "indicate that this Condition is reusable and not "
 502                   "associated with a single PolicyRule.") ]
 503               string PolicyRuleCreationClassName;
 504                   [Key, MaxLen (256), Description (
 505 kumpf 1.2         "For a rule-specific PolicyCondition, the name of "
 506                   "the PolicyRule object with which this Condition is "
 507                   "associated.  For a reusable PolicyCondition, a "
 508                   "special value, 'NO RULE', should be used to indicate "
 509                   "that this Condition is reusable and not associated "
 510                   "with a single PolicyRule.") ]
 511               string PolicyRuleName;
 512                   [Key, MaxLen (256), Description (
 513                   "CreationClassName indicates the name of the class or the "
 514                   "subclass used in the creation of an instance. When used "
 515                   "with the other key properties of this class, this property "
 516                   "allows all instances of this class and its subclasses to "
 517                   "be uniquely identified.") ]
 518               string CreationClassName;
 519                   [Key, MaxLen (256), Description (
 520                   "A user-friendly name of this PolicyCondition.") ]
 521               string PolicyConditionName;
 522           };
 523           
 524           // ==================================================================
 525           // PolicyTimePeriodCondition
 526 kumpf 1.2 // ==================================================================
 527              [Version ("2.7.0"), Description (
 528              "This class provides a means of representing the time "
 529              "periods during which a PolicySet is valid, i.e., active. "
 530              "At all times that fall outside these time periods, the "
 531              "PolicySet has no effect.  A PolicySet is treated as valid "
 532              "at ALL times, if it does not specify a "
 533              "PolicyTimePeriodCondition. \n"
 534              "\n"
 535              "In some cases a Policy Consumer may need to perform "
 536              "certain setup / cleanup actions when a PolicySet becomes "
 537              "active / inactive.  For example, sessions that were "
 538              "established while a PolicySet was active might need to "
 539              "be taken down when the PolicySet becomes inactive.  In other "
 540              "cases, however, such sessions might be left up.  In this "
 541              "case, the effect of deactivating the PolicySet would "
 542              "just be to prevent the establishment of new sessions. \n"
 543              "\n"
 544              "Setup / cleanup behaviors on validity period "
 545              "transitions are not currently addressed by the Policy "
 546              "Model, and must be specified in 'guideline' documents or "
 547 kumpf 1.2    "via subclasses of CIM_PolicySet, CIM_PolicyTimePeriod"
 548              "Condition or other concrete subclasses of CIM_Policy. If "
 549              "such behaviors need to be under the control of the policy "
 550              "administrator, then a mechanism to allow this control "
 551              "must also be specified in the subclasses. \n"
 552              "\n"
 553              "PolicyTimePeriodCondition is defined as a subclass of "
 554              "PolicyCondition. This is to allow the inclusion of "
 555              "time-based criteria in the AND/OR condition definitions "
 556              "for a PolicyRule. \n"
 557              "\n"
 558              "Instances of this class may have up to five properties "
 559              "identifying time periods at different levels. The values "
 560              "of all the properties present in an instance are ANDed "
 561              "together to determine the validity period(s) for the "
 562              "instance. For example, an instance with an overall "
 563              "validity range of January 1, 2000 through December 31, "
 564              "2000; a month mask that selects March and April; a "
 565              "day-of-the-week mask that selects Fridays; and a time "
 566              "of day range of 0800 through 1600 would be represented "
 567              "using the following time periods: \n"
 568 kumpf 1.2    "   Friday, March  5, 2000, from 0800 through 1600; \n"
 569              "   Friday, March 12, 2000, from 0800 through 1600; \n"
 570              "   Friday, March 19, 2000, from 0800 through 1600; \n"
 571              "   Friday, March 26, 2000, from 0800 through 1600; \n"
 572              "   Friday, April  2, 2000, from 0800 through 1600; \n"
 573              "   Friday, April  9, 2000, from 0800 through 1600; \n"
 574              "   Friday, April 16, 2000, from 0800 through 1600; \n"
 575              "   Friday, April 23, 2000, from 0800 through 1600; \n"
 576              "   Friday, April 30, 2000, from 0800 through 1600. \n"
 577              "\n"
 578              "Properties not present in an instance of "
 579              "PolicyTimePeriodCondition are implicitly treated as having "
 580              "their value 'always enabled'. Thus, in the example above, "
 581              "the day-of-the-month mask is not present, and so the "
 582              "validity period for the instance implicitly includes a "
 583              "day-of-the-month mask that selects all days of the month. "
 584              "If this 'missing property' rule is applied to its fullest, we "
 585              "see that there is a second way to indicate that a PolicySet "
 586              "is always enabled: associate with it an instance of "
 587              "PolicyTimePeriodCondition whose only properties with "
 588              "specific values are its key properties.") ]
 589 kumpf 1.2 class CIM_PolicyTimePeriodCondition : CIM_PolicyCondition {
 590                   [Description (
 591                   "This property identifies an overall range of calendar "
 592                   "dates and times over which a PolicySet is valid.  It is "
 593                   "formatted as a string representing a start date and time, "
 594                   "in which the character 'T' indicates the beginning of the "
 595                   "time portion, followed by the solidus character '/', "
 596                   "followed by a similar string representing an end date and "
 597                   "time.  The first date indicates the beginning of the range, "
 598                   "while the second date indicates the end.  Thus, the second "
 599                   "date and time must be later than the first.  Date/times are "
 600                   "expressed as substrings of the form yyyymmddThhmmss.  For "
 601                   "example: \n"
 602                   "   20000101T080000/20000131T120000 defines \n"
 603                   "   January 1, 2000, 0800 through January 31, 2000, noon \n"
 604                   "\n"
 605                   "There are also two special cases in which one of the "
 606                   "date/time strings is replaced with a special string defined "
 607                   "in RFC 2445. \n"
 608                   "   o If the first date/time is replaced with the string "
 609                   "     'THISANDPRIOR', then the property indicates that a "
 610 kumpf 1.2         "     PolicySet is valid [from now] until the date/time "
 611                   "     that appears after the '/'. \n"
 612                   "   o If the second date/time is replaced with the string "
 613                   "     'THISANDFUTURE', then the property indicates that a "
 614                   "     PolicySet becomes valid on the date/time that "
 615                   "     appears before the '/', and remains valid from that "
 616                   "     point on."),
 617                   ModelCorrespondence {
 618                   "CIM_PolicyTimePeriodCondition.MonthOfYearMask",
 619                   "CIM_PolicyTimePeriodCondition.DayOfMonthMask",
 620                   "CIM_PolicyTimePeriodCondition.DayOfWeekMask",
 621                   "CIM_PolicyTimePeriodCondition.TimeOfDayMask",
 622                   "CIM_PolicyTimePeriodCondition.LocalOrUtcTime"} ]
 623               string TimePeriod;
 624                   [Octetstring, Description (
 625                   "The purpose of this property is to refine the valid time "
 626                   "period that is defined by the TimePeriod property, by "
 627                   "explicitly specifying in which months the PolicySet is "
 628                   "valid. These properties work together, with the "
 629                   "TimePeriod used to specify the overall time period in "
 630                   "which the PolicySet is valid, and the MonthOfYearMask used "
 631 kumpf 1.2         "to pick out the months during which the PolicySet is valid. \n"
 632                   "\n"
 633                   "This property is formatted as an octet string, structured "
 634                   "as follows: \n"
 635                   "   o a 4-octet length field, indicating the length of the "
 636                   "    entire octet string; this field is always set to "
 637                   "    0x00000006 for this property; \n"
 638                   "   o a 2-octet field consisting of 12 bits identifying the "
 639                   "     12 months of the year, beginning with January and "
 640                   "     ending with December, followed by 4 bits that are "
 641                   "     always set to '0'.  For each month, the value '1' "
 642                   "     indicates that the policy is valid for that month, "
 643                   "     and the value '0' indicates that it is not valid. \n"
 644                   "\n"
 645                   "The value 0x000000060830, for example, indicates that a "
 646                   "PolicySet is valid only in the months May, November, "
 647                   "and December. \n"
 648                   "\n"
 649                   "If a value for this property is not provided, then the "
 650                   "PolicySet is treated as valid for all twelve months, and "
 651                   "only restricted by its TimePeriod property value and the "
 652 kumpf 1.2         "other Mask properties."),
 653                   ModelCorrespondence {
 654                   "CIM_PolicyTimePeriodCondition.TimePeriod",
 655                   "CIM_PolicyTimePeriodCondition.LocalOrUtcTime"} ]
 656               uint8 MonthOfYearMask[];
 657                   [Octetstring, Description (
 658                   "The purpose of this property is to refine the valid time "
 659                   "period that is defined by the TimePeriod property, by "
 660                   "explicitly specifying in which days of the month the "
 661                   "PolicySet is valid. These properties work together, "
 662                   "with the TimePeriod used to specify the overall time period "
 663                   "in which the PolicySet is valid, and the DayOfMonthMask used "
 664                   "to pick out the days of the month during which the "
 665                   "PolicySet is valid. \n"
 666                   "\n"
 667                   "This property is formatted as an octet string, structured "
 668                   "as follows: \n"
 669                   "   o a 4-octet length field, indicating the length of the "
 670                   "     entire octet string; this field is always set to "
 671                   "     0x0000000C for this property; \n"
 672                   "   o an 8-octet field consisting of 31 bits identifying "
 673 kumpf 1.2         "     the days of the month counting from the beginning, "
 674                   "     followed by 31 more bits identifying the days of the "
 675                   "     month counting from the end, followed by 2 bits that "
 676                   "     are always set to '0'.  For each day, the value '1' "
 677                   "     indicates that the PolicySet is valid for that day, "
 678                   "     and the value '0' indicates that it is not valid. \n"
 679                   "\n"
 680                   "The value 0x0000000C8000000100000000, for example, "
 681                   "indicates that a PolicySet is valid on the first and "
 682                   "last days of the month. \n"
 683                   "\n"
 684                   "For months with fewer than 31 days, the digits corresponding "
 685                   "to days that the months do not have (counting in both "
 686                   "directions) are ignored. \n"
 687                   "\n"
 688                   "If a value for this property is not provided, then the "
 689                   "PolicySet is treated as valid for all days of the month, and "
 690                   "only restricted by its TimePeriod property value and the "
 691                   "other Mask properties."),
 692                   ModelCorrespondence {
 693                   "CIM_PolicyTimePeriodCondition.TimePeriod",
 694 kumpf 1.2         "CIM_PolicyTimePeriodCondition.LocalOrUtcTime"} ]
 695               uint8 DayOfMonthMask[];
 696                   [Octetstring, Description (
 697                   "The purpose of this property is to refine the valid time "
 698                   "period that is defined by the TimePeriod property, by "
 699                   "explicitly specifying in which days of the week the "
 700                   "PolicySet is valid. These properties work together, "
 701                   "with the TimePeriod used to specify the overall time period "
 702                   "in which the PolicySet is valid, and the DayOfWeekMask used "
 703                   "to pick out the days of the week during which the PolicySet "
 704                   "is valid. \n"
 705                   "\n"
 706                   "This property is formatted as an octet string, structured "
 707                   "as follows: \n"
 708                   "  o a 4-octet length field, indicating the length of the "
 709                   "    entire octet string; this field is always set to "
 710                   "    0x00000005 for this property; \n"
 711                   "  o a 1-octet field consisting of 7 bits identifying the 7 "
 712                   "    days of the week, beginning with Sunday and ending with "
 713                   "    Saturday, followed by 1 bit that is always set to '0'. "
 714                   "    For each day of the week, the value '1' indicates that "
 715 kumpf 1.2         "    the PolicySet is valid for that day, and the value '0' "
 716                   "    indicates that it is not valid. \n"
 717                   "\n"
 718                   "The value 0x000000057C, for example, indicates that a "
 719                   "PolicySet is valid Monday through Friday. \n"
 720                   "\n"
 721                   "If a value for this property is not provided, then the "
 722                   "PolicySet is treated as valid for all days of the week, "
 723                   "and only restricted by its TimePeriod property value and "
 724                   "the other Mask properties."),
 725                   ModelCorrespondence {
 726                   "CIM_PolicyTimePeriodCondition.TimePeriod",
 727                   "CIM_PolicyTimePeriodCondition.LocalOrUtcTime"} ]
 728               uint8 DayOfWeekMask[];
 729                   [Description (
 730                   "The purpose of this property is to refine the valid time "
 731                   "period that is defined by the TimePeriod property, by "
 732                   "explicitly specifying a range of times in a day during which "
 733                   "the PolicySet is valid. These properties work "
 734                   "together, with the TimePeriod used to specify the overall "
 735                   "time period in which the PolicySet is valid, and the "
 736 kumpf 1.2         "TimeOfDayMask used to pick out the range of time periods "
 737                   "in a given day of during which the PolicySet is valid. \n"
 738                   "\n"
 739                   "This property is formatted in the style of RFC 2445:  a "
 740                   "time string beginning with the character 'T', followed by "
 741                   "the solidus character '/', followed by a second time string. "
 742                   "The first time indicates the beginning of the range, while "
 743                   "the second time indicates the end.  Times are expressed as "
 744                   "substrings of the form 'Thhmmss'. \n"
 745                   "\n"
 746                   "The second substring always identifies a later time than "
 747                   "the first substring.  To allow for ranges that span "
 748                   "midnight, however, the value of the second string may be "
 749                   "smaller than the value of the first substring.  Thus, "
 750                   "'T080000/T210000' identifies the range from 0800 until 2100, "
 751                   "while 'T210000/T080000' identifies the range from 2100 until "
 752                   "0800 of the following day. \n"
 753                   "\n"
 754                   "When a range spans midnight, it by definition includes "
 755                   "parts of two successive days.  When one of these days is "
 756                   "also selected by either the MonthOfYearMask, "
 757 kumpf 1.2         "DayOfMonthMask, and/or DayOfWeekMask, but the other day is "
 758                   "not, then the PolicySet is active only during the portion of "
 759                   "the range that falls on the selected day.  For example, if "
 760                   "the range extends from 2100 until 0800, and the day of "
 761                   "week mask selects Monday and Tuesday, then the PolicySet is "
 762                   "active during the following three intervals: \n"
 763                   "    From midnight Sunday until 0800 Monday; \n"
 764                   "    From 2100 Monday until 0800 Tuesday; \n"
 765                   "    From 2100 Tuesday until 23:59:59 Tuesday. \n"
 766                   "\n"
 767                   "If a value for this property is not provided, then the "
 768                   "PolicySet is treated as valid for all hours of the day, "
 769                   "and only restricted by its TimePeriod property value and "
 770                   "the other Mask properties."),
 771                   ModelCorrespondence {
 772                   "CIM_PolicyTimePeriodCondition.TimePeriod",
 773                   "CIM_PolicyTimePeriodCondition.LocalOrUtcTime"} ]
 774               string TimeOfDayMask;
 775                   [Description (
 776                   "This property indicates whether the times represented "
 777                   "in the TimePeriod property and in the various Mask "
 778 kumpf 1.2         "properties represent local times or UTC times. There is "
 779                   "no provision for mixing of local times and UTC times: the "
 780                   "value of this property applies to all of the other "
 781                   "time-related properties. TimePeriods are synchronized "
 782                   "worldwide by using the enumeration value 'UTCTime'. "
 783                   "If the goal is to synchronize worldwide on a particular "
 784                   "local time (such as 0300 - 0500 in New York), then if the "
 785                   "TimePeriod property spans a Daylight Savings Time transition "
 786                   "in New York, it will be necessary to create multiple instances "
 787                   "of PolicyTimePeriodCondition, one based on the offset "
 788                   "UTC-0500 for the part of each year when standard time is "
 789                   "used in New York, and one based on the offset UTC-0400 for the "
 790                   "part of each year when Daylight Savings Time is used there."),
 791                   ValueMap {"1", "2"},
 792                   Values {"Local Time", "UTC Time"}, 
 793                   ModelCorrespondence {
 794                   "CIM_PolicyTimePeriodCondition.TimePeriod",
 795                   "CIM_PolicyTimePeriodCondition.MonthOfYearMask",
 796                   "CIM_PolicyTimePeriodCondition.DayOfMonthMask",
 797                   "CIM_PolicyTimePeriodCondition.DayOfWeekMask",
 798                   "CIM_PolicyTimePeriodCondition.TimeOfDayMask"} ]
 799 kumpf 1.2     uint16 LocalOrUtcTime;
 800           };
 801           
 802           
 803           // ==================================================================
 804           // CompoundPolicyCondition
 805           // ==================================================================
 806              [Version ("2.7.0"), Description (
 807              "CompoundPolicyCondition is used to represent "
 808              "compound conditions formed by aggregating simpler policy "
 809              "conditions. Compound conditions are constructed by "
 810              "associating subordinate condition terms together using the "
 811              "PolicyConditionInPolicyCondition aggregation.") ]
 812           class CIM_CompoundPolicyCondition : CIM_PolicyCondition {
 813                   [Description (
 814                   "Indicates whether the list of CompoundPolicyConditions "
 815                   "associated with this PolicyRule is in disjunctive normal "
 816                   "form (DNF) or conjunctive normal form (CNF). The default "
 817                   "value is 1 (\"DNF\")."),
 818                   ValueMap {"1", "2"},
 819                   Values { "DNF", "CNF" } ]
 820 kumpf 1.2     uint16 ConditionListType;
 821           };
 822           
 823           
 824           // ==================================================================
 825           // VendorPolicyCondition
 826           // ==================================================================
 827              [Version ("2.6.0"), Description (
 828              "A class that provides a general extension mechanism for "
 829              "representing PolicyConditions that have not been modeled "
 830              "with specific properties. Instead, the two properties "
 831              "Constraint and ConstraintEncoding are used to define the "
 832              "content and format of the Condition, as explained below. \n"
 833              "\n"
 834              "As its name suggests, VendorPolicyCondition is intended for "
 835              "vendor-specific extensions to the Policy Core Information "
 836              "Model.  Standardized extensions are not expected to use "
 837              "this class.") ]
 838           class CIM_VendorPolicyCondition : CIM_PolicyCondition {
 839                   [Octetstring, Description (
 840                   "This property provides a general extension mechanism for "
 841 kumpf 1.2         "representing PolicyConditions that have not been "
 842                   "modeled with specific properties. The format of the "
 843                   "octet strings in the array is left unspecified in "
 844                   "this definition.  It is determined by the OID value "
 845                   "stored in the property ConstraintEncoding.  Since "
 846                   "ConstraintEncoding is single-valued, all the values of "
 847                   "Constraint share the same format and semantics."),
 848                   ModelCorrespondence {
 849                   "CIM_VendorPolicyCondition.ConstraintEncoding"} ]
 850               string Constraint[];
 851                   [Description (
 852                   "An OID encoded as a string, identifying the format "
 853                   "and semantics for this instance's Constraint property."),
 854                   ModelCorrespondence {
 855                   "CIM_VendorPolicyCondition.Constraint"} ]
 856               string ConstraintEncoding;
 857           };
 858           
 859           // ==================================================================
 860           // PolicyAction
 861           // ==================================================================
 862 kumpf 1.2    [Abstract, Version ("2.6.0"), Description (
 863              "A class representing a rule-specific or reusable policy "
 864              "action to be performed if the PolicyConditions for a Policy"
 865              "Rule evaluate to TRUE. Since all operational details of a "
 866              "PolicyAction are provided in subclasses of this object, "
 867              "this class is abstract.") ]
 868           class CIM_PolicyAction : CIM_Policy {
 869                   [Key, MaxLen (256), Description (
 870                   "The name of the class or the subclass used in the "
 871                   "creation of the System object in whose scope this "
 872                   "PolicyAction is defined. \n"
 873                   "\n"
 874                   "This property helps to identify the System object in "
 875                   "whose scope this instance of PolicyAction exists. "
 876                   "For a rule-specific PolicyAction, this is the System "
 877                   "in whose context the PolicyRule is defined. For a "
 878                   "reusable PolicyAction, this is the instance of "
 879                   "PolicyRepository (which is a subclass of System) that "
 880                   "holds the Action. \n"
 881                   "\n"
 882                   "Note that this property, and the analogous property "
 883 kumpf 1.2         "SystemName, do not represent propagated keys from an "
 884                   "instance of the class System. Instead, they are "
 885                   "properties defined in the context of this class, which "
 886                   "repeat the values from the instance of System to which "
 887                   "this PolicyAction is related, either directly via the "
 888                   "PolicyActionInPolicyRepository association or indirectly "
 889                   "via the PolicyActionInPolicyRule aggregation.") ]
 890               string SystemCreationClassName;
 891                   [Key, MaxLen (256), Description (
 892                   "The name of the System object in whose scope this "
 893                   "PolicyAction is defined. \n"
 894                   "\n"
 895                   "This property completes the identification of the System "
 896                   "object in whose scope this instance of PolicyAction "
 897                   "exists.  For a rule-specific PolicyAction, this is the "
 898                   "System in whose context the PolicyRule is defined.  For "
 899                   "a reusable PolicyAction, this is the instance of "
 900                   "PolicyRepository (which is a subclass of System) that "
 901                   "holds the Action.") ]
 902               string SystemName;
 903                   [Key, MaxLen (256), Description (
 904 kumpf 1.2         "For a rule-specific PolicyAction, the CreationClassName "
 905                   "of the PolicyRule object with which this Action is "
 906                   "associated.  For a reusable PolicyAction, a "
 907                   "special value, 'NO RULE', should be used to "
 908                   "indicate that this Action is reusable and not "
 909                   "associated with a single PolicyRule.") ]
 910               string PolicyRuleCreationClassName;
 911                   [Key, MaxLen (256), Description (
 912                   "For a rule-specific PolicyAction, the name of "
 913                   "the PolicyRule object with which this Action is "
 914                   "associated.  For a reusable PolicyAction, a "
 915                   "special value, 'NO RULE', should be used to "
 916                   "indicate that this Action is reusable and not "
 917                   "associated with a single PolicyRule.") ]
 918               string PolicyRuleName;
 919                   [Key, MaxLen (256), Description (
 920                   "CreationClassName indicates the name of the class or the "
 921                   "subclass used in the creation of an instance. When used "
 922                   "with the other key properties of this class, this property "
 923                   "allows all instances of this class and its subclasses to "
 924                   "be uniquely identified.") ]
 925 kumpf 1.2     string CreationClassName;
 926                   [Key, MaxLen (256), Description (
 927                   "A user-friendly name of this PolicyAction.") ]
 928               string PolicyActionName;
 929           };
 930           
 931           
 932           // ==================================================================
 933           // VendorPolicyAction
 934           // ==================================================================
 935              [Version ("2.6.0"), Description (
 936              "A class that provides a general extension mechanism for "
 937              "representing PolicyActions that have not been modeled "
 938              "with specific properties. Instead, the two properties "
 939              "ActionData and ActionEncoding are used to define the "
 940              "content and format of the Action, as explained below. \n"
 941              "\n"
 942              "As its name suggests, VendorPolicyAction is intended for "
 943              "vendor-specific extensions to the Policy Core Information "
 944              "Model.  Standardized extensions are not expected to use "
 945              "this class.")  ]
 946 kumpf 1.2 class CIM_VendorPolicyAction : CIM_PolicyAction {
 947                   [Octetstring, Description (
 948                   "This property provides a general extension mechanism for "
 949                   "representing PolicyActions that have not been "
 950                   "modeled with specific properties. The format of the "
 951                   "octet strings in the array is left unspecified in "
 952                   "this definition.  It is determined by the OID value "
 953                   "stored in the property ActionEncoding.  Since "
 954                   "ActionEncoding is single-valued, all the values of "
 955                   "ActionData share the same format and semantics."),
 956                   ModelCorrespondence {
 957                   "CIM_VendorPolicyAction.ActionEncoding"} ]
 958               string ActionData[];
 959                   [Description (
 960                   "An OID encoded as a string, identifying the format "
 961                   "and semantics for this instance's ActionData property."),
 962                   ModelCorrespondence {
 963                   "CIM_VendorPolicyAction.ActionData"} ]
 964               string ActionEncoding;
 965           };
 966           
 967 kumpf 1.2 
 968           // ==================================================================
 969           // CompoundPolicyAction
 970           // ==================================================================
 971              [Version ("2.6.0"), 
 972              Description ("CompoundPolicyAction is used to represent an "
 973              "expression consisting of an ordered sequence of action "
 974              "terms.  Each action term is represented as a subclass of "
 975              "the PolicyAction class.  Compound actions are constructed "
 976              "by associating dependent action terms together using the "
 977              "PolicyActionInPolicyAction aggregation.") ]
 978           class CIM_CompoundPolicyAction : CIM_PolicyAction {
 979                   [Description (
 980                   "This property gives a policy administrator a way "
 981                   "of specifying how the ordering of the PolicyActions "
 982                   "associated with this PolicyRule is to be interpreted. "
 983                   "Three values are supported: \n"
 984                   "  o mandatory(1): Do the actions in the indicated "
 985                   "    order, or don't do them at all. \n"
 986                   "  o recommended(2): Do the actions in the indicated "
 987                   "    order if you can, but if you can't do them in this "
 988 kumpf 1.2         "    order, do them in another order if you can. \n"
 989                   "  o dontCare(3): Do them -- I don't care about the "
 990                   "    order. \n"
 991                   "The default value is 3 (\"DontCare\")."),
 992                   ValueMap {"1", "2", "3"},
 993                   Values {"Mandatory", "Recommended", "Dont Care"} ]
 994               uint16 SequencedActions;
 995                   [Description ("ExecutionStrategy defines the strategy to be "
 996                   "used in executing the sequenced actions aggregated by this "
 997                   "CompoundPolicyAction. There are three execution strategies: \n"
 998                   "\n"
 999                   "Do Until Success - execute actions according to predefined \n"
1000                   "                   order, until successful execution of a \n"
1001                   "                   single action. \n"
1002                   "Do All -           execute ALL actions which are part of \n"
1003                   "                   the modeled set, according to their \n"
1004                   "                   predefined order. Continue doing this, \n"
1005                   "                   even if one or more of the actions "
1006                   "                   fails. \n"
1007                   "Do Until Failure - execute actions according to predefined \n"
1008                   "                   order, until the first failure in \n"
1009 kumpf 1.2         "                   execution of an action instance. \n"
1010                   "The default value is 2 (\"Do All\")."),
1011                   ValueMap {"1", "2", "3"},
1012                   Values {"Do Until Success", "Do All", "Do Until Failure"} ]
1013              uint16 ExecutionStrategy;
1014           };
1015           
1016           
1017           // ==================================================================
1018           // PolicyRoleCollection
1019           // ==================================================================
1020              [Version ("2.7.0"), Description (
1021              "PolicyRoleCollection is used to represent a "
1022              "collection of managed elements that share a common policy "
1023              "role. The PolicyRoleCollection always exists in the context "
1024              "of a system, specified using the PolicyRoleCollectionInSystem "
1025              "aggregation. The value of the PolicyRole property in this "
1026              "class specifies the role, and can be matched with the value(s) "
1027              "in the PolicyRoles array in PolicyRules and PolicyGroups. "
1028              "ManagedElements that share the role defined in this collection "
1029              "are aggregated into the Collection via the "
1030 kumpf 1.2    "ElementInPolicyRoleCollection association.") ]
1031           class CIM_PolicyRoleCollection : CIM_SystemSpecificCollection {
1032                   [Required, Description (
1033                   "The PolicyRole property role name for the managed "
1034                   "elements aggregated into the PolicyRoleCollection. This "
1035                   "role name is the same role name that appears in related "
1036                   "PolicySet instances.") ]
1037               string PolicyRole;
1038           };
1039           
1040           
1041           // ==================================================================
1042           // ===                   Association classes                      ===
1043           // ==================================================================
1044           
1045           
1046           // ==================================================================
1047           // PolicyComponent
1048           // ==================================================================
1049              [Association, Abstract, Aggregation, Version ("2.6.0"), 
1050              Description (
1051 kumpf 1.2    "CIM_PolicyComponent is a generic association used to "
1052              "establish 'part of' relationships between the subclasses of "
1053              "CIM_Policy. For example, the PolicyConditionInPolicyRule "
1054              "association defines that PolicyConditions are part of a "
1055              "PolicyRule.") ]
1056           class CIM_PolicyComponent : CIM_Component {
1057                   [Aggregate, Override ("GroupComponent"), Description (
1058                   "The parent Policy in the association.") ]
1059               CIM_Policy REF GroupComponent;
1060                   [Override ("PartComponent"), Description (
1061                   "The child/part Policy in the association.") ]
1062               CIM_Policy REF PartComponent;
1063           };
1064           
1065           
1066           // ==================================================================
1067           // PolicyInSystem
1068           // ==================================================================
1069              [Association, Abstract, Version ("2.6.0"), Description (
1070              "CIM_PolicyInSystem is a generic association used to "
1071              "establish dependency relationships between Policies and the "
1072 kumpf 1.2    "Systems that host them. These Systems may be ComputerSystems "
1073              "where Policies are 'running' or they may be Policy"
1074              "Repositories where Policies are stored. This relationship "
1075              "is similar to the concept of CIM_Services being dependent "
1076              "on CIM_Systems as defined by the HostedService "
1077              "association. \n"
1078              "\n"
1079              "Cardinality is Max (1) for the Antecedent/System "
1080              "reference since Policies can only be hosted in at most one "
1081              "System context. Some subclasses of the association will "
1082              "further refine this definition to make the Policies Weak "
1083              "to Systems. Other subclasses of PolicyInSystem will "
1084              "define an optional hosting relationship. Examples of each "
1085              "of these are the PolicyRuleInSystem and PolicyConditionIn"
1086              "PolicyRepository associations, respectively.") ]
1087           class CIM_PolicyInSystem : CIM_Dependency {
1088                   [Override ("Antecedent"), Max (1), Description (
1089                   "The hosting System.") ]
1090               CIM_System REF Antecedent;
1091                   [Override ("Dependent"), Description (
1092                   "The hosted Policy.") ]
1093 kumpf 1.2     CIM_Policy REF Dependent;
1094           };
1095           
1096           
1097           // ==================================================================
1098           // PolicySetInSystem
1099           // ==================================================================
1100              [Association, Abstract, Version ("2.6.0"), Description (
1101              "PolicySetInSystem is an abstract association class that "
1102              "represents a relationship between a System and a PolicySet used "
1103              "in the administrative scope of that system (e.g., AdminDomain, "
1104              "ComputerSystem).  The Priority property is used to assign a "
1105              "relative priority to a PolicySet within the administrative "
1106              "scope in contexts where it is not a component of another "
1107              "PolicySet.") ]
1108           class CIM_PolicySetInSystem : CIM_PolicyInSystem {
1109                   [Override ("Antecedent"), Min (1), Max (1), Description (
1110                   "The System in whose scope a PolicySet is defined.") ]
1111               CIM_System REF Antecedent;
1112                   [Override ("Dependent"), Description (
1113                   "A PolicySet named within the scope of a System.") ]
1114 kumpf 1.2     CIM_PolicySet REF Dependent;
1115                   [Description (
1116                   "The Priority property is used to specify the relative "
1117                   "priority of the referenced PolicySet when there are more "
1118                   "than one PolicySet instances applied to a managed resource "
1119                   "that are not PolicySetComponents and, therefore, have no "
1120                   "other relative priority defined.  The priority is a "
1121                   "non-negative integer; a larger value indicates a higher "
1122                   "priority.") ]
1123               uint16 Priority;
1124           };
1125           
1126           
1127           // ==================================================================
1128           // PolicyGroupInSystem
1129           // ==================================================================
1130              [Association, Version ("2.6.0"), Description (
1131              "An association that links a PolicyGroup to the System "
1132              "in whose scope the Group is defined.") ]
1133           class CIM_PolicyGroupInSystem : CIM_PolicySetInSystem {
1134                   [Override ("Antecedent"), Min (1), Max (1), Description (
1135 kumpf 1.2         "The System in whose scope a PolicyGroup is defined.") ]
1136               CIM_System REF Antecedent;
1137                   [Override ("Dependent"), Weak, Description (
1138                   "A PolicyGroup named within the scope of a System.") ]
1139               CIM_PolicyGroup REF Dependent;
1140           };
1141           
1142           
1143           // ==================================================================
1144           // PolicyRuleInSystem
1145           // ==================================================================
1146              [Association, Version ("2.6.0"), Description (
1147              "An association that links a PolicyRule to the System "
1148              "in whose scope the Rule is defined.") ]
1149           class CIM_PolicyRuleInSystem : CIM_PolicySetInSystem {
1150                   [Override ("Antecedent"), Min (1), Max (1), Description (
1151                   "The System in whose scope a PolicyRule is defined.") ]
1152               CIM_System REF Antecedent;
1153                   [Override ("Dependent"), Weak, Description (
1154                   "A PolicyRule named within the scope of a System.") ]
1155               CIM_PolicyRule REF Dependent;
1156 kumpf 1.2 };
1157           
1158           
1159           // ==================================================================
1160           // PolicySetComponent 
1161           // ==================================================================
1162              [Association, Aggregation, Version ("2.6.0"), Description (
1163              "PolicySetComponent is a concrete aggregation that "
1164              "collects instances of the subclasses of PolicySet (i.e., "
1165              "PolicyGroups and PolicyRules). Instances are collected in "
1166              "sets that use the same decision strategy. They are "
1167              "prioritized relative to each other, within the set, "
1168              "using the Priority property of this aggregation. \n"
1169              "\n"
1170              "Together, the PolicySet.PolicyDecisionStrategy and PolicySet"
1171              "Component.Priority properties determine the processing "
1172              "for the groups and rules contained in a PolicySet. A larger "
1173              "priority value represents a higher priority. Note that "
1174              "the Priority property MUST have a unique value when "
1175              "compared with others defined for the same aggregating "
1176              "PolicySet. Thus, the evaluation of rules within a set "
1177 kumpf 1.2    "is deterministically specified.") ]
1178           class CIM_PolicySetComponent : CIM_PolicyComponent {
1179                   [Override ("GroupComponent"), Aggregate, Description (
1180                   "A PolicySet that aggregates other PolicySet instances.") ]
1181               CIM_PolicySet REF GroupComponent;
1182                   [Override ("PartComponent"), Description (
1183                   "A PolicySet aggregated into a PolicySet.") ]
1184               CIM_PolicySet REF PartComponent;
1185                   [Description (
1186                   "A non-negative integer for prioritizing this PolicySet "
1187                   "component relative to other elements of the same PolicySet. "
1188                   "A larger value indicates a higher priority. The "
1189                   "Priority property MUST have a unique value when compared "
1190                   "with others defined for the same aggregating PolicySet.") ]
1191               uint16 Priority;
1192           };
1193           
1194           
1195           // ==================================================================
1196           // PolicyGroupInPolicyGroup *** deprecated
1197           // ==================================================================
1198 kumpf 1.2    [Association, Aggregation, DEPRECATED {"CIM_PolicySetComponent"},
1199              Version ("2.7.0"), Description (
1200              "PolicySetComponent provides a more general mechanism for "
1201              "aggregating both PolicyGroups and PolicyRules and doing so with "
1202              "the priority value applying only to the aggregated set rather "
1203              "than policy wide. \n"
1204              "\n"
1205              "A relationship that aggregates one or more lower-level " 
1206              "PolicyGroups into a higher-level Group.  A Policy" 
1207              "Group may aggregate PolicyRules and/or other Policy" 
1208              "Groups.") ]
1209           class CIM_PolicyGroupInPolicyGroup : CIM_PolicyComponent {
1210                   [Override ("GroupComponent"), Aggregate, 
1211                   Deprecated {"CIM_PolicySetComponent.GroupComponent"}, 
1212                   Description ("A PolicyGroup that aggregates other Groups.") ]
1213               CIM_PolicyGroup REF GroupComponent;
1214                   [Override ("PartComponent"), 
1215                   Deprecated {"CIM_PolicySetComponent.PartComponent"}, 
1216                   Description ("A PolicyGroup aggregated by another Group.") ]
1217               CIM_PolicyGroup REF PartComponent;
1218           };
1219 kumpf 1.2 
1220           
1221           // ==================================================================
1222           // PolicyRuleInPolicyGroup *** deprecated
1223           // ==================================================================
1224              [Association, Aggregation, DEPRECATED {"CIM_PolicySetComponent"},
1225              Version ("2.7.0"), Description (
1226              "PolicySetComponent provides a more general mechanism for "
1227              "aggregating both PolicyGroups and PolicyRules and doing so with "
1228              "the priority value applying only to the aggregated set rather "
1229              "than policy wide. \n"
1230              "\n"
1231              "A relationship that aggregates one or more PolicyRules " 
1232              "into a PolicyGroup.  A PolicyGroup may aggregate " 
1233              "PolicyRules and/or other PolicyGroups.") ]
1234           class CIM_PolicyRuleInPolicyGroup : CIM_PolicyComponent {
1235                   [Override ("GroupComponent"), Aggregate, 
1236                   Deprecated {"CIM_PolicySetComponent.GroupComponent"}, 
1237                   Description (
1238                   "A PolicyGroup that aggregates one or more PolicyRules.") ]
1239               CIM_PolicyGroup REF GroupComponent;
1240 kumpf 1.2         [Override ("PartComponent"), 
1241                   Deprecated {"CIM_PolicySetComponent.PartComponent"}, 
1242                   Description (
1243                   "A PolicyRule aggregated by a PolicyGroup.") ]
1244               CIM_PolicyRule REF PartComponent;
1245           };
1246           
1247           
1248           // ==================================================================
1249           // PolicySetValidityPeriod
1250           // ==================================================================
1251              [Association, Aggregation, Version ("2.7.0"), 
1252              Description (
1253              "The PolicySetValidityPeriod aggregation represents "
1254              "scheduled activation and deactivation of a PolicySet. A "
1255              "PolicySet is considered \"active\" if it is both \"Enabled\" "
1256              "and in a valid time period. \n"
1257              "\n"
1258              "If a PolicySet is associated with multiple policy time "
1259              "periods via this association, then the Set is in a valid time "
1260              "period if at least one of the time periods evaluates to TRUE.  "
1261 kumpf 1.2    "If a PolicySet is contained in another PolicySet via the "
1262              "PolicySetComponent aggregation (e.g., a PolicyRule in a "
1263              "PolicyGroup), then the contained PolicySet (e.g., PolicyRule) "
1264              "is in a valid period if at least one of the aggregate's "
1265              "PolicyTimePeriodCondition instances evaluates to TRUE and at "
1266              "least one of its own PolicyTimePeriodCondition instances "
1267              "also evalutes to TRUE.  (In other words, the "
1268              "PolicyTimePeriodConditions are ORed to determine whether the "
1269              "PolicySet is in a valid time period and then ANDed with the ORed "
1270              "PolicyTimePeriodConditions of each of PolicySet instances in the "
1271              "PolicySetComponent hierarchy to determine if the PolicySet is in "
1272              "a valid time period and, if also \"Enabled\", therefore, active, "
1273              "i.e., the hierachy ANDs the ORed PolicyTimePeriodConditions of "
1274              "the elements of the hierarchy. \n"
1275              "\n"
1276              "A Time Period may be aggregated by multiple PolicySets.  A Set "
1277              "that does not point to a PolicyTimePeriodCondition via this "
1278              "association, from the point of view of scheduling, is always "
1279              "in a valid time period.")  ]
1280           class CIM_PolicySetValidityPeriod : CIM_PolicyComponent {
1281                   [Override ("GroupComponent"), Aggregate, Description (
1282 kumpf 1.2         "This property contains the name of a PolicySet that "
1283                   "contains one or more PolicyTimePeriodConditions.") ]
1284               CIM_PolicySet REF GroupComponent;
1285                   [Override ("PartComponent"), Description (
1286                   "This property contains the name of a "
1287                   "PolicyTimePeriodCondition defining the valid time periods "
1288                   "for one or more PolicySets.") ]
1289               CIM_PolicyTimePeriodCondition REF PartComponent;
1290           };
1291            
1292            
1293           // ==================================================================
1294           // PolicyRuleValidityPeriod ** deprecated
1295           // ==================================================================
1296              [Association, Aggregation, 
1297              DEPRECATED {"CIM_PolicySetValidityPeriod"}, Version ("2.7.0"), 
1298              Description (
1299              "The PolicyRuleValidityPeriod aggregation represents "
1300              "scheduled activation and deactivation of a PolicyRule. "
1301              "If a PolicyRule is associated with multiple policy time "
1302              "periods via this association, then the Rule is active if "
1303 kumpf 1.2    "at least one of the time periods indicates that it is "
1304              "active.  (In other words, the PolicyTimePeriodConditions "
1305              "are ORed to determine whether the Rule is active.)  A Time"
1306              "Period may be aggregated by multiple PolicyRules.  A Rule "
1307              "that does not point to a PolicyTimePeriodCondition via this "
1308              "association is, from the point of view of scheduling, "
1309              "always active.  It may, however, be inactive for other "
1310              "reasons.  For example, the Rule's Enabled property may "
1311              "be set to \"disabled\" (value=2).") ]
1312           class CIM_PolicyRuleValidityPeriod : CIM_PolicyComponent {
1313                   [Override ("GroupComponent"), Aggregate, 
1314                   Deprecated {"CIM_PolicySetValidityPeriod.GroupComponent"}, 
1315                   Description (
1316                   "This property contains the name of a PolicyRule that "
1317                   "contains one or more PolicyTimePeriodConditions.") ]
1318               CIM_PolicyRule REF GroupComponent;
1319                   [Override ("PartComponent"), 
1320                   Deprecated {"CIM_PolicySetValidityPeriod.PartComponent"}, 
1321                   Description (
1322                   "This property contains the name of a "
1323                   "PolicyTimePeriodCondition defining the valid time periods "
1324 kumpf 1.2         "for one or more PolicyRules.") ]
1325               CIM_PolicyTimePeriodCondition REF PartComponent;
1326           };
1327           
1328           
1329           // ==================================================================
1330           // PolicyConditionStructure
1331           // ==================================================================
1332              [Association, Aggregation, Abstract, 
1333              Version ("2.7.0"), Description (
1334              "PolicyConditions may be aggregated into rules and into "
1335              "compound conditions. PolicyConditionStructure is the "
1336              "abstract aggregation class for the structuring of policy "
1337              "conditions. \n"
1338              "\n"
1339              "The Conditions aggregated by a PolicyRule or "
1340              "CompoundPolicyCondition are grouped into two levels of "
1341              "lists: either an ORed set of ANDed sets of conditions (DNF, "
1342              "the default) or an ANDed set of ORed sets of conditions "
1343              "(CNF). Individual PolicyConditions in these lists may be "
1344              "negated. The property ConditionListType specifies which of "
1345 kumpf 1.2    "these two grouping schemes applies to a particular "
1346              "PolicyRule or CompoundPolicyCondition instance. \n"
1347              "\n"
1348              "One or more PolicyTimePeriodConditions may be among the "
1349              "conditions associated with a PolicyRule or "
1350              "CompoundPolicyCondition via the PolicyConditionStructure "
1351              "subclass association. In this case, the time periods are "
1352              "simply additional Conditions to be evaluated along "
1353              "with any others that are specified. ") ]
1354           class CIM_PolicyConditionStructure : CIM_PolicyComponent {
1355                   [Override ("GroupComponent"), Aggregate, Description (
1356                   "This property represents the Policy that "
1357                   "contains one or more PolicyConditions.") ]
1358               CIM_Policy REF GroupComponent;
1359                   [Override ("PartComponent"), Description (
1360                   "This property holds the name of a PolicyCondition "
1361                   "contained by one or more PolicyRule or "
1362                   "CompoundPolicyCondition instances.") ]
1363               CIM_PolicyCondition REF PartComponent;
1364                   [Description (
1365                   "Unsigned integer indicating the group to which the "
1366 kumpf 1.2         "contained PolicyCondition belongs. This integer segments "
1367                   "the Conditions into the ANDed sets (when the "
1368                   "ConditionListType is \"DNF\") or, similarly, into the ORed "
1369                   "sets (when the ConditionListType is \"CNF\").") ]
1370               uint16 GroupNumber;
1371                   [Description (
1372                   "Indication of whether the contained PolicyCondition is "
1373                   "negated. TRUE indicates that the PolicyCondition IS "
1374                   "negated, FALSE indicates that it IS NOT negated.") ] 
1375               boolean ConditionNegated;
1376           };
1377           
1378           
1379           // ==================================================================
1380           // PolicyConditionInPolicyRule
1381           // ==================================================================
1382              [Association, Aggregation, Version ("2.7.0"), 
1383              Description (
1384              "A PolicyRule aggregates zero or more instances of the "
1385              "PolicyCondition class, via the PolicyConditionInPolicyRule "
1386              "association. A Rule that aggregates zero Conditions is not "
1387 kumpf 1.2    "valid; it may, however, be in the process of being defined. "
1388              "Note that a PolicyRule should have no effect until it is "
1389              "valid.") ]
1390           class CIM_PolicyConditionInPolicyRule : CIM_PolicyConditionStructure {
1391                   [Override ("GroupComponent"), Aggregate, Description (
1392                   "This property represents the PolicyRule that "
1393                   "contains one or more PolicyConditions.") ]
1394               CIM_PolicyRule REF GroupComponent;
1395                   [Override ("PartComponent"), Description (
1396                   "This property holds the name of a PolicyCondition "
1397                   "contained by one or more PolicyRules.") ]
1398               CIM_PolicyCondition REF PartComponent;
1399           };
1400           
1401           // ==================================================================
1402           // PolicyConditionInPolicyCondition
1403           // ==================================================================
1404              [Association, Aggregation, Version ("2.7.0"), 
1405              Description (
1406              "A CompoundPolicyCondition aggregates zero or more instances "
1407              "of the PolicyCondition class, via the "
1408 kumpf 1.2    "PolicyConditionInPolicyCondition association. A "
1409              "CompoundPolicyCondition that aggregates zero Conditions is "
1410              "not valid; it may, however, be in the process of being "
1411              "defined. Note that a CompoundPolicyCondition should have no "
1412              "effect until it is valid.") ]
1413           class CIM_PolicyConditionInPolicyCondition : 
1414            CIM_PolicyConditionStructure {
1415                   [Override ("GroupComponent"), Aggregate, Description (
1416                   "This property represents the CompoundPolicyCondition that "
1417                   "contains one or more PolicyConditions.") ]
1418               CIM_CompoundPolicyCondition REF GroupComponent;
1419                   [Override ("PartComponent"), Description (
1420                   "This property holds the name of a PolicyCondition "
1421                   "contained by one or more PolicyRules.") ]
1422               CIM_PolicyCondition REF PartComponent; 
1423           };
1424           
1425           
1426           // ==================================================================
1427           // PolicyActionStructure
1428           // ==================================================================   
1429 kumpf 1.2    [Association, Aggregation, Abstract, Version ("2.6.0"), 
1430              Description (
1431              "PolicyActions may be aggregated into rules and into "
1432              "compound actions.  PolicyActionStructure is the abstract "
1433              "aggregation class for the structuring of policy actions.") ]
1434           class CIM_PolicyActionStructure : CIM_PolicyComponent {
1435                   [Override ("GroupComponent"), Aggregate, Description (
1436                   "PolicyAction instances may be aggregated into either "
1437                   "PolicyRule instances or CompoundPolicyAction instances.") ]
1438               CIM_Policy REF GroupComponent;
1439                   [Override ("PartComponent"), Description (
1440                   "A PolicyAction aggregated by a PolicyRule or "
1441                   "CompoundPolicyAction.") ]
1442               CIM_PolicyAction REF PartComponent;
1443                   [Description (
1444                   "ActionOrder is an unsigned integer 'n' that indicates the "
1445                   "relative position of a PolicyAction in the sequence of"
1446                   "actions associated with a PolicyRule or "
1447                   "CompoundPolicyAction.  When 'n' is a positive integer, it "
1448                   "indicates a place in the sequence of actions to be "
1449                   "performed, with smaller integers indicating earlier "
1450 kumpf 1.2         "positions in the sequence. The special value '0' indicates "
1451                   "'don't care'.  If two or more PolicyActions have the same "
1452                   "non-zero sequence number, they may be performed in any "
1453                   "order, but they must all be performed at the appropriate "
1454                   "place in the  overall action sequence. \n"
1455                   "\n"
1456                   "A series of examples will make ordering of PolicyActions "
1457                   "clearer: \n"
1458                   "    o If all actions have the same sequence number, \n"
1459                   "      regardless of whether it is '0' or non-zero, any \n"
1460                   "      order is acceptable. \n"
1461                   "    o The values: \n"
1462                   "          1:ACTION A \n"
1463                   "          2:ACTION B \n"
1464                   "          1:ACTION C \n"
1465                   "          3:ACTION D \n"
1466                   "      indicate two acceptable orders: A,C,B,D or C,A,B,D, \n"
1467                   "      since A and C can be performed in either order, but \n"
1468                   "      only at the '1' position. \n"
1469                   "    o The values: \n"
1470                   "          0:ACTION A \n"
1471 kumpf 1.2         "          2:ACTION B \n"
1472                   "          3:ACTION C \n"
1473                   "          3:ACTION D \n"
1474                   "      require that B,C, and D occur either as B,C,D or as \n"
1475                   "      B,D,C.  Action A may appear at any point relative to \n"
1476                   "      B, C, and D. Thus the complete set of acceptable \n"
1477                   "      orders is:  A,B,C,D; B,A,C,D; B,C,A,D; B,C,D,A; \n"
1478                   "      A,B,D,C; B,A,D,C; B,D,A,C; B,D,C,A. \n"
1479                   "\n"
1480                   "Note that the non-zero sequence numbers need not start with "
1481                   "'1', and they need not be consecutive.  All that matters is "
1482                   "their relative magnitude.") ]
1483               uint16 ActionOrder;
1484           };
1485            
1486           
1487           // ==================================================================
1488           // PolicyActionInPolicyRule
1489           // ==================================================================
1490              [Association, Aggregation, Version ("2.6.0"), Description (
1491              "A PolicyRule aggregates zero or more instances of the "
1492 kumpf 1.2    "PolicyAction class, via the PolicyActionInPolicyRule "
1493              "association.  A Rule that aggregates zero Actions is not "
1494              "valid--it may, however, be in the process of being entered "
1495              "into a PolicyRepository or being defined for a System. "
1496              "Alternately, the actions of the policy may be explicit in "
1497              "the definition of the PolicyRule. Note that a PolicyRule "
1498              "should have no effect until it is valid. \n"
1499              "\n"
1500              "The Actions associated with a PolicyRule may be given a "
1501              "required order, a recommended order, or no order at all.  "
1502              "For Actions represented as separate objects, the "
1503              "PolicyActionInPolicyRule aggregation can be used to express "
1504              "an order. \n"
1505              "\n"
1506              "This aggregation does not indicate whether a specified "
1507              "action order is required, recommended, or of no "
1508              "significance; the property SequencedActions in the "
1509              "aggregating instance of PolicyRule provides this "
1510              "indication.") ]
1511           class CIM_PolicyActionInPolicyRule : CIM_PolicyActionStructure {
1512                   [Override ("GroupComponent"), Aggregate, Description (
1513 kumpf 1.2         "This property represents the PolicyRule that "
1514                   "contains one or more PolicyActions.") ]
1515               CIM_PolicyRule REF GroupComponent;
1516                   [Override ("PartComponent"), Description (
1517                   "This property holds the name of a PolicyAction "
1518                   "contained by one or more PolicyRules.") ]
1519               CIM_PolicyAction REF PartComponent;
1520           };
1521            
1522           
1523           // ==================================================================
1524           // PolicyActionInPolicyAction
1525           // ==================================================================
1526              [Association, Aggregation, Version ("2.6.0"), Description (
1527              "PolicyActionInPolicyAction is used to represent the "
1528              "compounding of policy actions into a higher-level policy "
1529              "action.") ]
1530           class CIM_PolicyActionInPolicyAction : CIM_PolicyActionStructure {
1531                   [Override ("GroupComponent"), Aggregate, Description (
1532                   "This property represents the CompoundPolicyAction that "
1533                   "contains one or more PolicyActions.") ]
1534 kumpf 1.2     CIM_CompoundPolicyAction REF GroupComponent;
1535                   [Override ("PartComponent"), Description (
1536                   "This property holds the name of a PolicyAction "
1537                   "contained by one or more CompoundPolicyActions.") ]
1538               CIM_PolicyAction REF PartComponent;
1539           };
1540           
1541           
1542           // ==================================================================
1543           // PolicyContainerInPolicyContainer
1544           // ==================================================================
1545              [Association, Aggregation, Version ("2.6.0"), Description (
1546              "A relationship that aggregates one or more lower-level "
1547              "ReusablePolicyContainer instances into a higher-level "
1548              "ReusablePolicyContainer.") ]
1549           class CIM_PolicyContainerInPolicyContainer: CIM_SystemComponent {
1550                   [Override ("GroupComponent"), Aggregate, Description (
1551                   "A ReusablePolicyContainer that aggregates other "
1552                   "ReusablePolicyContainers.") ]
1553               CIM_ReusablePolicyContainer REF GroupComponent;
1554                   [Override ("PartComponent"), Description (
1555 kumpf 1.2         "A ReusablePolicyContainer aggregated by another "
1556                   "ReusablePolicyContainer.") ]
1557               CIM_ReusablePolicyContainer REF PartComponent;
1558           };
1559           
1560           
1561           // ==================================================================
1562           // PolicyRepositoryInPolicyRepository *** deprecated
1563           // ==================================================================
1564              [Association, Aggregation, 
1565              DEPRECATED {"CIM_PolicyContainerInPolicyContainer"},
1566              Version ("2.7.0"), Description (
1567              "The term 'PolicyRepository' has been confusing to both "
1568              "developers and users of the model.  The replacement class "
1569              "name describes model element properly and is less likely "
1570              "to be confused with a data repository.  ContainedDomain is a "
1571              "general purpose mechanism for expressing domain hierarchy. \n"
1572              "\n"
1573              "A relationship that aggregates one or more lower-level "
1574              "PolicyRepositories into a higher-level Repository.") ]
1575           class CIM_PolicyRepositoryInPolicyRepository : CIM_SystemComponent {
1576 kumpf 1.2         [Override ("GroupComponent"), Aggregate, 
1577                   Deprecated {"CIM_PolicyContainerInPolicyContainer.GroupComponent"},
1578                   Description (
1579                   "A PolicyRepository that aggregates other Repositories.") ]
1580               CIM_PolicyRepository REF GroupComponent;
1581                   [Override ("PartComponent"), 
1582                   Deprecated {"CIM_PolicyContainerInPolicyContainer.PartComponent"},
1583                   Description (
1584                   "A PolicyRepository aggregated by another Repository.") ]
1585               CIM_PolicyRepository REF PartComponent;
1586           };
1587           
1588           
1589           // ==================================================================
1590           // ReusablePolicy
1591           // ==================================================================
1592              [Association, Version ("2.6.0"), Description (
1593              "The ReusablePolicy association provides for the reuse of any "
1594              "subclass of Policy in a ReusablePolicyContainer.") ]
1595           class CIM_ReusablePolicy : CIM_PolicyInSystem {
1596                   [Override ("Antecedent"), Max (1), Description (
1597 kumpf 1.2         "This property identifies a ReusablePolicyContainer that "
1598                   "provides the administrative scope for the reuse of the "
1599                   "referenced policy element.") ]
1600               CIM_ReusablePolicyContainer REF Antecedent;
1601                   [Override ("Dependent"), Description (
1602                   "A reusable policy element.") ]
1603               CIM_Policy REF Dependent;
1604           };
1605           
1606           
1607           // ==================================================================
1608           // ElementInPolicyRoleCollection
1609           // ==================================================================
1610              [Association, Aggregation, Version ("2.7.0"), 
1611              Description (
1612              "An ElementInPolicyRoleCollection aggregates zero or more "
1613              "ManagedElement subclass instances with a "
1614              "PolicyRoleCollection object that represents a role played "
1615              "by these ManagedElements.") ]
1616           class CIM_ElementInPolicyRoleCollection : CIM_MemberOfCollection {
1617                   [Override ("Collection"), Aggregate, 
1618 kumpf 1.2         Description ("The PolicyRoleCollection.") ]
1619               CIM_PolicyRoleCollection REF Collection;
1620                   [Override ("Member"), Description (
1621                   "The ManagedElement that plays the role represented by "
1622                   "the PolicyRoleCollection.") ]
1623               CIM_ManagedElement REF Member;
1624           };
1625           
1626           
1627           // ==================================================================
1628           // PolicyRoleCollectionInSystem
1629           // ==================================================================
1630              [Association, Version ("2.7.0"), Description (
1631              "PolicyRoleCollectionInSystem is an association used to "
1632              "establish a relationship between a collection and an "
1633              "'owning' System such as an AdminDomain or ComputerSystem." ) ]
1634           class CIM_PolicyRoleCollectionInSystem: CIM_HostedCollection {
1635                   [Override ("Antecedent"), Min (1), Max (1), Description (
1636                   "The parent system responsible for the collection.") ]
1637               CIM_System REF Antecedent; 
1638                   [Override ("Dependent"), 
1639 kumpf 1.2         Description ("The Collection.") ]
1640               CIM_PolicyRoleCollection REF Dependent;
1641           };
1642           
1643           
1644           // ==================================================================
1645           // PolicyConditionInPolicyRepository *** deprecated
1646           // ==================================================================
1647              [Association, DEPRECATED {"CIM_ReusablePolicy"},
1648              Version ("2.7.0"), Description (
1649              "The ReusablePolicy association is a more general relationship "
1650              "that incorporates both Conditions and Actions as well as any "
1651              "other policy subclass. \n"
1652              "\n"  
1653              "A class representing the hosting of reusable "
1654              "PolicyConditions by a PolicyRepository. A reusable Policy"
1655              "Condition is always related to a single PolicyRepository, "
1656              "via this association. \n"
1657              "\n"
1658              "Note, that an instance of PolicyCondition can be either "
1659              "reusable or rule-specific.  When the Condition is rule-"
1660 kumpf 1.2    "specific, it shall not be related to any "
1661              "PolicyRepository via the PolicyConditionInPolicyRepository "
1662              "association.") ]
1663           class CIM_PolicyConditionInPolicyRepository : CIM_PolicyInSystem {
1664                   [Override ("Antecedent"), Max (1), 
1665                   Deprecated {"CIM_ReusablePolicy.Antecedent"},
1666                   Description (
1667                   "This property identifies a PolicyRepository "
1668                   "hosting one or more PolicyConditions.  A reusable "
1669                   "PolicyCondition is always related to exactly one "
1670                   "PolicyRepository via the PolicyConditionInPolicyRepository "
1671                   "association.  The [0..1] cardinality for this property "
1672                   "covers the two types of PolicyConditions:  0 for a "
1673                   "rule-specific PolicyCondition, 1 for a reusable one.") ]
1674               CIM_PolicyRepository REF Antecedent;
1675                   [Override ("Dependent"), 
1676                   Deprecated {"CIM_ReusablePolicy.Dependent"},
1677                   Description (
1678                   "This property holds the name of a PolicyCondition"
1679                   "hosted in the PolicyRepository.") ]
1680               CIM_PolicyCondition REF Dependent;
1681 kumpf 1.2 };
1682           
1683           
1684           // ==================================================================
1685           // PolicyActionInPolicyRepository *** deprecated
1686           // ==================================================================
1687              [Association, DEPRECATED {"CIM_ReusablePolicy"},
1688              Version ("2.7.0"), Description (
1689              "The ReusablePolicy association is a more general relationship "
1690              "that incorporates both Conditions and Actions as well as any "
1691              "other policy subclass. \n"
1692              "\n"  
1693              "A class representing the hosting of reusable "
1694              "PolicyActions by a PolicyRepository. A reusable Policy"
1695              "Action is always related to a single PolicyRepository, "
1696              "via this association. \n"
1697              "\n"
1698              "Note, that an instance of PolicyAction can be either "
1699              "reusable or rule-specific.  When the Action is rule-"
1700              "specific, it shall not be related to any "
1701              "PolicyRepository via the PolicyActionInPolicyRepository "
1702 kumpf 1.2    "association.") ]
1703           class CIM_PolicyActionInPolicyRepository : CIM_PolicyInSystem {
1704                   [Override ("Antecedent"), Max (1), 
1705                   Deprecated {"CIM_ReusablePolicy.Antecedent"},
1706                   Description (
1707                   "This property represents a PolicyRepository "
1708                   "hosting one or more PolicyActions.  A reusable "
1709                   "PolicyAction is always related to exactly one "
1710                   "PolicyRepository via the PolicyActionInPolicyRepository "
1711                   "association.  The [0..1] cardinality for this property "
1712                   "covers the two types of PolicyActions:  0 for a "
1713                   "rule-specific PolicyAction, 1 for a reusable one.") ]
1714               CIM_PolicyRepository REF Antecedent;
1715                   [Override ("Dependent"), 
1716                   Deprecated {"CIM_ReusablePolicy.Dependent"},
1717                   Description (
1718                   "This property holds the name of a PolicyAction"
1719                   "hosted in the PolicyRepository.") ]
1720               CIM_PolicyAction REF Dependent;
1721           };
1722           
1723 kumpf 1.2 
1724           // ===================================================================
1725           // end of file
1726           // ===================================================================
1727           

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2