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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2