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

   1 karl  1.1.2.1 // ==================================================================
   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 karl  1.1.2.1 //		    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 karl  1.1.2.1 //		- 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 karl  1.1.2.1 
  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 karl  1.1.2.1       "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 karl  1.1.2.1 // 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 karl  1.1.2.1 	"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 karl  1.1.2.1    "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 karl  1.1.2.1          "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 karl  1.1.2.1    "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 karl  1.1.2.1    "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 karl  1.1.2.1    "        (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 karl  1.1.2.1          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 karl  1.1.2.1         "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 karl  1.1.2.1         ]
 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 karl  1.1.2.1         [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 karl  1.1.2.1         "    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 karl  1.1.2.1         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 karl  1.1.2.1 };
 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 karl  1.1.2.1          "\"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 karl  1.1.2.1           "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 karl  1.1.2.1          "  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 karl  1.1.2.1         [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 karl  1.1.2.1 
 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 karl  1.1.2.1          "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 karl  1.1.2.1          "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 karl  1.1.2.1          "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 karl  1.1.2.1          "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 karl  1.1.2.1          "  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 karl  1.1.2.1          "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 karl  1.1.2.1          "  "
 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 karl  1.1.2.1          "  "
 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 karl  1.1.2.1          "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 karl  1.1.2.1         ]
 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 karl  1.1.2.1          "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 karl  1.1.2.1          "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 karl  1.1.2.1          "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 karl  1.1.2.1 {
 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 karl  1.1.2.1 };
 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 karl  1.1.2.1          "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 karl  1.1.2.1          "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 karl  1.1.2.1          "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 karl  1.1.2.1    [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 karl  1.1.2.1          "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 karl  1.1.2.1        "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 karl  1.1.2.1       [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 karl  1.1.2.1 // ==================================================================
 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 karl  1.1.2.1        [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 karl  1.1.2.1          "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 karl  1.1.2.1    [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 karl  1.1.2.1 	"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 karl  1.1.2.1     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 karl  1.1.2.1          "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 karl  1.1.2.1       "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 karl  1.1.2.1    "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 karl  1.1.2.1    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 karl  1.1.2.1 
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 karl  1.1.2.1         "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 karl  1.1.2.1         [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 karl  1.1.2.1    [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 karl  1.1.2.1     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 karl  1.1.2.1        "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 karl  1.1.2.1        "    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 karl  1.1.2.1        "\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 karl  1.1.2.1        "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 karl  1.1.2.1     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 karl  1.1.2.1     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 karl  1.1.2.1       ]
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 karl  1.1.2.1         [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 karl  1.1.2.1 	"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 karl  1.1.2.1    "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 karl  1.1.2.1         [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 karl  1.1.2.1    "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 karl  1.1.2.1         ]
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