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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2