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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2