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

   1 karl  1.1 
   2           // ==================================================================
   3           // Title:     Core Policy MOF Specification 2.5
   4           // Filename:  CIM_Policy25.MOF
   5           // Version:   2.5
   6           // Release:   0
   7           // Date:      12/19/2000
   8           // Description: The object classes below are listed in an order that
   9           //              avoids forward references. Required objects, defined
  10           //		    by other working groups, are omitted.
  11           // Date: 06/27/2000 
  12           //     CIMCR516a - Rooted the model associations under Policy
  13           //        Component or PolicyInSystem.  Corrected PolicyCondition/
  14           //        PolicyActionInPolicyRepository to subclass from 
  15           //        PolicyInSystem (similar to Groups and Roles 'InSystem')
  16           // ==================================================================
  17           // Author:    DMTF SLA (Service Level Agreement) Working Group
  18           // ==================================================================
  19           // Pragmas
  20           // ==================================================================
  21           #pragma Locale ("en-US")
  22 karl  1.1 
  23           
  24           // ==================================================================
  25           // Policy
  26           // ==================================================================
  27              [Abstract, Description (
  28                    "An abstract class describing common properties of all "
  29                    "policy rule-related subclasses, such as PolicyGroup, Policy"
  30                    "Rule and PolicyCondition. All instances of policy rule-"
  31                    "related entities will be created from subclasses of CIM_"
  32                    "Policy. The exception to this statement is PolicyRepository "
  33                    "which is a type of CIM_System.")
  34              ]
  35           class CIM_Policy : CIM_ManagedElement
  36           {
  37                 [Description (
  38                    "A user-friendly name of this policy-related object.")
  39                 ]
  40              string CommonName;
  41                 [Description (
  42                    "An array of keywords for characterizing / categorizing "
  43 karl  1.1          "policy objects. Keywords are of one of two types: \n"
  44                    "  o Keywords defined in this and other MOFs, or in DMTF "
  45                    "    white papers. These keywords provide a vendor-"
  46                    "    independent, installation-independent way of "
  47                    "    characterizing policy objects. \n"
  48                    "  o Installation-dependent keywords for characterizing "
  49                    "    policy objects. Examples include 'Engineering', "
  50                    "    'Billing', and 'Review in December 2000'. \n"
  51                    "This MOF defines the following keywords:  'UNKNOWN', "
  52                    "'CONFIGURATION', 'USAGE', 'SECURITY', 'SERVICE', "
  53                    "'MOTIVATIONAL', 'INSTALLATION', and 'EVENT'. These "
  54                    "concepts are self-explanatory and are further discussed "
  55                    "in the SLA/Policy White Paper. One additional keyword "
  56                    "is defined: 'POLICY'. The role of this keyword is to "
  57                    "identify policy-related instances that may not be otherwise "
  58                    "identifiable, in some implementations. The keyword 'POLICY' "
  59                    "is NOT mutually exclusive of the other keywords "
  60                    "specified above.")
  61                 ]
  62              string PolicyKeywords [];
  63           };
  64 karl  1.1 
  65           // ==================================================================
  66           //    PolicyComponent
  67           // ==================================================================
  68              [Association, Abstract, Aggregation, Description (
  69                    "CIM_PolicyComponent is a generic association used to "
  70                    "establish 'part of' relationships between the subclasses of "
  71                    "CIM_Policy. For example, the PolicyConditionInPolicyRule "
  72                    "association defines that PolicyConditions are part of a "
  73                    "PolicyRule.") 
  74              ]
  75           class CIM_PolicyComponent 
  76           {
  77                  [Aggregate, Key, Description (
  78                    "The parent Policy in the association.")
  79                  ]
  80               CIM_Policy REF GroupComponent;
  81                  [Key, Description (
  82                    "The child/part Policy in the association.")
  83                  ]
  84               CIM_Policy REF PartComponent;
  85 karl  1.1 };
  86           
  87           // ==================================================================
  88           //    PolicyInSystem
  89           // ==================================================================
  90              [Association, Abstract, Description (
  91                    "  CIM_PolicyInSystem is a generic association used to "
  92                    "establish dependency relationships between Policies and the "
  93                    "Systems that host them. These Systems may be ComputerSystems "
  94                    "where Policies are 'running' or they may be Policy"
  95                    "Repositories where Policies are stored. This relationship "
  96                    "is similar to the concept of CIM_Services being dependent "
  97                    "on CIM_Systems as defined by the HostedService "
  98                    "association. \n"
  99                    "  Cardinality is Max(1) for the Antecedent/System "
 100                    "reference since Policies can only be hosted in at most one "
 101                    "System context. Some subclasses of the association will "
 102                    "further refine this definition to make the Policies Weak "
 103                    "to Systems. Other subclasses of PolicyInSystem will "
 104                    "define an optional hosting relationship. Examples of each "
 105                    "of these are the PolicyRuleInSystem and PolicyConditionIn"
 106 karl  1.1          "PolicyRepository associations, respectively.")
 107              ]
 108           class CIM_PolicyInSystem : CIM_Dependency
 109           {
 110                  [Override ("Antecedent"), Max (1), Description (
 111                    "The hosting System.")
 112                  ]
 113               CIM_System REF Antecedent;
 114                  [Override ("Dependent"), Description (
 115                    "The hosted Policy.")
 116                  ]
 117               CIM_Policy REF Dependent;
 118           };
 119           
 120           // ==================================================================
 121           // PolicyGroup
 122           // ==================================================================
 123              [Description (
 124                       "A container for a set of related PolicyGroups " 
 125                       "and/or PolicyRules. Policy" 
 126                       "Groups are defined and named relative to the CIM_System " 
 127 karl  1.1             "which provides their context.") 
 128              ]
 129           class CIM_PolicyGroup : CIM_Policy
 130           {
 131                 [Propagated("CIM_System.CreationClassName"),
 132                    Key, MaxLen (256),
 133                    Description ("The scoping System's CreationClassName.")
 134                 ]
 135              string SystemCreationClassName;
 136                 [Propagated("CIM_System.Name"),
 137                    Key, MaxLen (256),
 138                    Description ("The scoping System's Name.")
 139                 ]
 140              string SystemName;
 141                 [Key, MaxLen (256), Description (
 142                    "CreationClassName indicates the name of the class or the "
 143                    "subclass used in the creation of an instance. When used "
 144                    "with the other key properties of this class, this property "
 145                    "allows all instances of this class and its subclasses to "
 146                    "be uniquely identified.") ]
 147              string CreationClassName;
 148 karl  1.1       [Key, MaxLen (256), Description (
 149                    "A user-friendly name of this PolicyGroup.")
 150                 ]
 151              string PolicyGroupName;
 152           };
 153           
 154           // ==================================================================
 155           //    PolicyGroupInPolicyGroup
 156           // ==================================================================
 157              [Association, Aggregation, Description (
 158                     "A relationship that aggregates one or more lower-level " 
 159                     "PolicyGroups into a higher-level Group.  A Policy" 
 160                     "Group may aggregate PolicyRules and/or other Policy" 
 161                     "Groups.") 
 162              ]
 163           class CIM_PolicyGroupInPolicyGroup : CIM_PolicyComponent
 164           {
 165                   [Override ("GroupComponent"), Aggregate, Description (
 166                    "A PolicyGroup that aggregates other Groups.")
 167                   ]
 168               CIM_PolicyGroup REF GroupComponent;
 169 karl  1.1         [Override ("PartComponent"), Description (
 170                    "A PolicyGroup aggregated by another Group.")
 171                   ]
 172               CIM_PolicyGroup REF PartComponent;
 173           };
 174           
 175           // ==================================================================
 176           //    PolicyGroupInSystem
 177           // ==================================================================
 178              [Association, Description (
 179                    "An association that links a PolicyGroup to the System "
 180                    "in whose scope the Group is defined.")
 181              ]
 182           class CIM_PolicyGroupInSystem : CIM_PolicyInSystem
 183           {
 184                   [Override ("Antecedent"), Min(1), Max(1), Description (
 185                    "The System in whose scope a PolicyGroup is defined.")
 186                   ]
 187               CIM_System REF Antecedent;
 188                   [Override ("Dependent"), Weak, Description (
 189                    "A PolicyGroup named within the scope of a System.")
 190 karl  1.1         ]
 191               CIM_PolicyGroup REF Dependent;
 192           };
 193           
 194           // ==================================================================
 195           // PolicyRule
 196           // ==================================================================
 197              [Description (
 198                    "  The central class for representing the 'If Condition then "
 199                    "Action' semantics associated with a policy rule. "
 200                    "A PolicyRule condition, in the most general sense, is "
 201                    "represented as either an ORed set of ANDed conditions "
 202                    "(Disjunctive Normal Form, or DNF) or an ANDed set of ORed "
 203                    "conditions (Conjunctive Normal Form, or CNF). Individual "
 204                    "conditions may either be negated (NOT C) or unnegated (C). "
 205                    "The actions specified by a PolicyRule are to be performed "
 206                    "if and only if the PolicyRule condition (whether it is "
 207                    "represented in DNF or CNF) evaluates to TRUE.\n\n"
 208                    "  "
 209                    "The conditions and actions associated with a PolicyRule "
 210                    "are modeled, respectively, with subclasses of Policy"
 211 karl  1.1          "Condition and PolicyAction.  These condition and action "
 212                    "objects are tied to instances of PolicyRule by the Policy"
 213                    "ConditionInPolicyRule and PolicyActionInPolicyRule "
 214                    "aggregations.\n\n"
 215                    "  "
 216                    "A PolicyRule may also be associated with one or more policy "
 217                    "time periods, indicating the schedule according to which the "
 218                    "policy rule is active and inactive.  In this case it is the "
 219                    "PolicyRuleValidityPeriod aggregation that provides this "
 220                    "linkage.\n\n"
 221                    "  "
 222                    "The PolicyRule class uses the property ConditionListType, to "
 223                    "indicate whether the conditions for the rule are in DNF or "
 224                    "CNF.  The PolicyConditionInPolicyRule aggregation contains "
 225                    "two additional properties to complete the representation of "
 226                    "the Rule's conditional expression.  The first of these "
 227                    "properties is an integer to partition the referenced "
 228                    "PolicyConditions into one or more groups, and the second is a "
 229                    "Boolean to indicate whether a referenced Condition is "
 230                    "negated.  An example shows how ConditionListType and these "
 231                    "two additional properties provide a unique representation "
 232 karl  1.1          "of a set of PolicyConditions in either DNF or CNF.\n\n"
 233                    "  "
 234                    "Suppose we have a PolicyRule that aggregates five "
 235                    "PolicyConditions C1  through C5, with the following values "
 236                    "in the properties of the five PolicyConditionInPolicyRule "
 237                    "associations:\n"
 238                    "    C1:  GroupNumber = 1, ConditionNegated = FALSE\n "
 239                    "    C2:  GroupNumber = 1, ConditionNegated = TRUE\n  "
 240                    "    C3:  GroupNumber = 1, ConditionNegated = FALSE\n "
 241                    "    C4:  GroupNumber = 2, ConditionNegated = FALSE\n "
 242                    "    C5:  GroupNumber = 2, ConditionNegated = FALSE\n\n "
 243                    "  "
 244                    "If ConditionListType = DNF, then the overall condition for "
 245                    "the PolicyRule is:\n"
 246                    "        (C1 AND (NOT C2) AND C3) OR (C4 AND C5)\n\n"
 247                    "  "
 248                    "On the other hand, if ConditionListType = CNF, then the "
 249                    "overall condition for the PolicyRule is:\n"
 250                    "        (C1 OR (NOT C2) OR C3) AND (C4 OR C5)\n\n"
 251                    "  "
 252                    "In both cases, there is an unambiguous specification of "
 253 karl  1.1          "the overall condition that is tested to determine whether "
 254                    "to perform the PolicyActions associated with the PolicyRule.")
 255              ]
 256           class CIM_PolicyRule : CIM_Policy
 257           {
 258                   [Propagated("CIM_System.CreationClassName"),
 259                    Key, MaxLen (256),
 260                    Description ("The scoping System's CreationClassName.")
 261                   ]
 262               string SystemCreationClassName;
 263                   [Propagated("CIM_System.Name"),
 264                    Key, MaxLen (256),
 265                    Description ("The scoping System's Name.")
 266                   ]
 267               string SystemName;
 268                   [Key, MaxLen (256), Description (
 269                      "CreationClassName indicates the name of the class or the "
 270                      "subclass used in the creation of an instance. When used "
 271                      "with the other key properties of this class, this property "
 272                      "allows all instances of this class and its subclasses to "
 273                      "be uniquely identified.") ]
 274 karl  1.1     string CreationClassName;
 275                   [Key, MaxLen (256), Description (
 276                      "A user-friendly name of this PolicyRule.")
 277                   ]
 278               string PolicyRuleName;
 279                   [Description (
 280                      "Indicates whether this PolicyRule is administratively "
 281                      "enabled, administratively disabled, or enabled for "
 282                      "debug. When the property has the value 3 (\"enabledFor"
 283                      "Debug\"), the entity evaluating the PolicyConditions is "
 284                      "instructed to evaluate the conditions for the Rule, but not "
 285                      "to perform the actions if the PolicyConditions evaluate to "
 286                      "TRUE. This serves as a debug vehicle when attempting to "
 287                      "determine what policies would execute in a particular "
 288                      "scenario, without taking any actions to change state "
 289                      "during the debugging. The default value is 1 (\"enabled\")."),
 290                    ValueMap { "1", "2", "3" },
 291                    Values { "enabled", "disabled", "enabledForDebug" }
 292                   ]
 293               uint16 Enabled;
 294                   [Description (
 295 karl  1.1            "Indicates whether the list of PolicyConditions "
 296                      "associated with this PolicyRule is in disjunctive "
 297                      "normal form (DNF) or conjunctive normal form (CNF)."
 298                      "The default value is 1 (\"DNF\")."),
 299                    ValueMap { "1", "2" },
 300                    Values { "DNF", "CNF" }
 301                   ]
 302               uint16 ConditionListType;
 303                   [Description (
 304                      "A free-form string that can be used to provide "
 305                      "guidelines on how this PolicyRule should be used.")
 306                   ]
 307               string RuleUsage;
 308                   [Description (
 309                      "A non-negative integer for prioritizing this Policy"
 310                      "Rule relative to other Rules. A larger value "
 311                      "indicates a higher priority. The default value is 0.")
 312                   ]
 313               uint16 Priority;
 314                   [Description (
 315                      "A flag indicating that the evaluation of the Policy"
 316 karl  1.1            "Conditions and execution of PolicyActions (if the "
 317                      "Conditions evaluate to TRUE) is required. The "
 318                      "evaluation of a PolicyRule MUST be attempted if the "
 319                      "Mandatory property value is TRUE.  If the Mandatory "
 320                      "property is FALSE, then the evaluation of the Rule "
 321                      "is 'best effort' and MAY be ignored.")
 322                   ]
 323               boolean Mandatory;
 324                   [Description (
 325                      "This property gives a policy administrator a way "
 326                      "of specifying how the ordering of the PolicyActions "
 327                      "associated with this PolicyRule is to be interpreted. "
 328                      "Three values are supported:\n"
 329                      "  o mandatory(1): Do the actions in the indicated "
 330                      "    order, or don't do them at all.\n"
 331                      "  o recommended(2): Do the actions in the indicated "
 332                      "    order if you can, but if you can't do them in this "
 333                      "    order, do them in another order if you can.\n"
 334                      "  o dontCare(3): Do them -- I don't care about the "
 335                      "    order.\n"
 336                      "The default value is 3 (\"dontCare\")."),
 337 karl  1.1          ValueMap { "1", "2", "3" },
 338                    Values { "mandatory", "recommended", "dontCare" }
 339                   ]
 340               uint16 SequencedActions;
 341                   [Description (
 342                    "This property represents the roles and role combinations "
 343                    "associated with a PolicyRule.  Each value represents one "
 344                    "role or role combination.  Since this is a multi-valued "
 345                    "property, more than one role or combination can be associated "
 346                    "with a single policy rule.  Each value is a string of the "
 347                    "form:\n"
 348                    "  <RoleName>[&&<RoleName>]*\n"
 349                    "where the individual role names appear in alphabetical order "
 350                    "(according to the collating sequence for UCS-2).")
 351                   ]
 352               string PolicyRoles [];
 353           };
 354           
 355           // ==================================================================
 356           //    PolicyRuleInPolicyGroup
 357           // ==================================================================
 358 karl  1.1    [Association, Aggregation, Description (
 359                    "A relationship that aggregates one or more PolicyRules " 
 360                    "into a PolicyGroup.  A PolicyGroup may aggregate " 
 361                    "PolicyRules and/or other PolicyGroups.") 
 362              ]
 363           class CIM_PolicyRuleInPolicyGroup : CIM_PolicyComponent
 364           {
 365                   [Override ("GroupComponent"), Aggregate, Description (
 366                    "A PolicyGroup that aggregates one or more PolicyRules.")
 367                   ]
 368               CIM_PolicyGroup REF GroupComponent;
 369                   [Override ("PartComponent"), Description (
 370                    "A PolicyRule aggregated by a PolicyGroup.")
 371                   ]
 372               CIM_PolicyRule REF PartComponent;
 373           };
 374           
 375           // ==================================================================
 376           //    PolicyRuleInSystem
 377           // ==================================================================
 378              [Association, Description (
 379 karl  1.1          "An association that links a PolicyRule to the System "
 380                    "in whose scope the Rule is defined.")
 381              ]
 382           class CIM_PolicyRuleInSystem : CIM_PolicyInSystem
 383           {
 384                   [Override ("Antecedent"), Min(1), Max(1), Description (
 385                    "The System in whose scope a PolicyRule is defined.")
 386                   ]
 387               CIM_System REF Antecedent;
 388                   [Override ("Dependent"), Weak, Description (
 389                    "A PolicyRule named within the scope of a System.")
 390                   ]
 391               CIM_PolicyRule REF Dependent;
 392           };
 393           
 394           // ==================================================================
 395           // PolicyRepository
 396           // ==================================================================
 397              [Description (
 398                    "A class representing an administratively defined "
 399                    "container for reusable policy-related information. "
 400 karl  1.1          "This class does not introduce any additional "
 401                    "properties beyond those in its superclass "
 402                    "AdminDomain.  It does, however, participate in a "
 403                    "number of unique associations."
 404                    "\n\n"
 405                    "An instance of this class uses the NameFormat value"
 406                    "\"PolicyRepository\", which is defined in the AdminDomain"
 407                    "class.")
 408              ]
 409           class CIM_PolicyRepository : CIM_AdminDomain
 410           {
 411           };
 412           
 413           // ==================================================================
 414           //    PolicyRepositoryInPolicyRepository
 415           // ==================================================================
 416              [Association, Aggregation, Description (
 417                    "A relationship that aggregates one or more lower-level "
 418                    "PolicyRepositories into a higher-level Repository.")
 419              ]
 420           class CIM_PolicyRepositoryInPolicyRepository : CIM_SystemComponent
 421 karl  1.1 {
 422                   [Override ("GroupComponent"), Aggregate, Description (
 423                    "A PolicyRepository that aggregates other Repositories.")
 424                   ]
 425               CIM_PolicyRepository REF GroupComponent;
 426                   [Override ("PartComponent"), Description (
 427                    "A PolicyRepository aggregated by another Repository.")
 428                   ]
 429               CIM_PolicyRepository REF PartComponent;
 430           };
 431           
 432           // ==================================================================
 433           // PolicyCondition
 434           // ==================================================================
 435              [Abstract, Description (
 436                    "A class representing a rule-specific or reusable policy "
 437                    "condition to be evaluated in conjunction with a Policy"
 438                    "Rule. Since all operational details of a PolicyCondition "
 439                    "are provided in subclasses of this object, this class is "
 440                    "abstract.")
 441              ]
 442 karl  1.1 class CIM_PolicyCondition : CIM_Policy
 443           {
 444                   [Key, MaxLen (256), Description (
 445                     "  The name of the class or the subclass used in the "
 446                     "creation of the System object in whose scope this "
 447                     "PolicyCondition is defined.\n\n"
 448                     "  "
 449                     "This property helps to identify the System object in "
 450                     "whose scope this instance of PolicyCondition exists. "
 451                     "For a rule-specific PolicyCondition, this is the System "
 452                     "in whose context the PolicyRule is defined. For a "
 453                     "reusable PolicyCondition, this is the instance of "
 454                     "PolicyRepository (which is a subclass of System) that "
 455                     "holds the Condition.\n\n"
 456                     "  "
 457                     "Note that this property, and the analogous property "
 458                     "SystemName, do not represent propagated keys from an "
 459                     "instance of the class System. Instead, they are "
 460                     "properties defined in the context of this class, which "
 461                     "repeat the values from the instance of System to which "
 462                     "this PolicyCondition is related, either directly via the "
 463 karl  1.1           "PolicyConditionInPolicyRepository association or indirectly "
 464                     "via the PolicyConditionInPolicyRule aggregation.")
 465                   ]
 466               string SystemCreationClassName;
 467                   [Key, MaxLen (256), Description (
 468                    "  The name of the System object in whose scope this "
 469                    "PolicyCondition is defined.\n\n"
 470                    "  "
 471                    "This property completes the identification of the System "
 472                    "object in whose scope this instance of PolicyCondition "
 473                    "exists.  For a rule-specific PolicyCondition, this is the "
 474                    "System in whose context the PolicyRule is defined.  For a "
 475                    "reusable PolicyCondition, this is the instance of "
 476                    "PolicyRepository (which is a subclass of System) that "
 477                    "holds the Condition.")
 478                   ]
 479               string SystemName;
 480                   [Key, MaxLen (256), Description (
 481                    "For a rule-specific PolicyCondition, the "
 482                    "CreationClassName of the PolicyRule object with which "
 483                    "this Condition is associated.  For a reusable Policy"
 484 karl  1.1          "Condition, a special value, 'NO RULE', should be used to "
 485                    "indicate that this Condition is reusable and not "
 486                    "associated with a single PolicyRule.")
 487                   ]
 488               string PolicyRuleCreationClassName;
 489                   [Key, MaxLen (256), Description (
 490                    "For a rule-specific PolicyCondition, the name of "
 491                    "the PolicyRule object with which this Condition is "
 492                    "associated.  For a reusable PolicyCondition, a "
 493                    "special value, 'NO RULE', should be used to indicate "
 494                    "that this Condition is reusable and not associated "
 495                    "with a single PolicyRule.")
 496                   ]
 497               string PolicyRuleName;
 498                   [Key, MaxLen (256), Description (
 499                      "CreationClassName indicates the name of the class or the "
 500                      "subclass used in the creation of an instance. When used "
 501                      "with the other key properties of this class, this property "
 502                      "allows all instances of this class and its subclasses to "
 503                      "be uniquely identified.") ]
 504               string CreationClassName;
 505 karl  1.1         [Key, MaxLen (256), Description (
 506                      "A user-friendly name of this PolicyCondition.")
 507                   ]
 508               string PolicyConditionName;
 509           };
 510           
 511           // ==================================================================
 512           //    PolicyConditionInPolicyRule
 513           // ==================================================================
 514              [Association, Aggregation, Description (
 515                   "  A PolicyRule aggregates zero or more instances of the "
 516                   "PolicyCondition class, via the PolicyConditionInPolicyRule "
 517                   "association.  A Rule that aggregates zero Conditions is not "
 518                   "valid -- it may, however, be in the process of being entered "
 519                   "into a PolicyRepository or being defined for a System. Note "
 520                   "that a PolicyRule should have no effect until it is valid.\n\n"
 521                   "  "
 522                   "The Conditions aggregated by a PolicyRule are grouped into "
 523                   "two levels of lists: either an ORed set of ANDed sets of "
 524                   "conditions (DNF, the default) or an ANDed set of ORed sets "
 525                   "of conditions (CNF).  Individual PolicyConditions in these "
 526 karl  1.1         "lists may be negated.  The property ConditionListType "
 527                   "specifies which of these two grouping schemes applies to a "
 528                   "particular PolicyRule.\n\n"
 529                   "  "
 530                   "In either case, PolicyConditions are used to determine whether "
 531                   "to perform the PolicyActions associated with the PolicyRule.\n\n"
 532                   "  "
 533                   "One or more PolicyTimePeriodConditions may be among the "
 534                   "conditions associated with a PolicyRule via the Policy"
 535                   "ConditionInPolicyRule association.  In this case, the time "
 536                   "periods are simply additional Conditions to be evaluated "
 537                   "along with any others that are specified for the Rule. ")
 538              ]
 539           class CIM_PolicyConditionInPolicyRule : CIM_PolicyComponent
 540           {
 541                   [Override ("GroupComponent"), Aggregate, Description (
 542                    "This property represents the PolicyRule that "
 543                    "contains one or more PolicyConditions.")
 544                   ]
 545               CIM_PolicyRule REF GroupComponent;
 546                   [Override ("PartComponent"), Description (
 547 karl  1.1          "This property holds the name of a PolicyCondition "
 548                    "contained by one or more PolicyRules.")
 549                   ]
 550               CIM_PolicyCondition REF PartComponent;
 551                   [Description (
 552                    "Unsigned integer indicating the group to which the "
 553                    "PolicyCondition identified by the ContainedCondition "
 554                    "property belongs. This integer segments the Conditions "
 555                    "into the ANDed sets (when the ConditionListType is "
 556                    "\"DNF\") or similarly the ORed sets (when the Condition"
 557                    "ListType is \"CNF\") that are then evaluated.")
 558                   ]
 559               uint16 GroupNumber;
 560                   [Description (
 561                    "Indication of whether the Condition identified by "
 562                    "the ContainedCondition property is negated.  TRUE "
 563                    "indicates that the PolicyCondition IS negated, FALSE "
 564                    "indicates that it IS NOT negated.")
 565                   ]
 566               boolean ConditionNegated;
 567           };
 568 karl  1.1 
 569           // ==================================================================
 570           //    PolicyConditionInPolicyRepository
 571           // ==================================================================
 572              [Association, Description (
 573                    "  A class representing the hosting of reusable "
 574                    "PolicyConditions by a PolicyRepository. A reusable Policy"
 575                    "Condition is always related to a single PolicyRepository, "
 576                    "via this association.\n\n"
 577                    "  "
 578                    "Note, that an instance of PolicyCondition can be either "
 579                    "reusable or rule-specific.  When the Condition is rule-"
 580                    "specific, it shall not be related to any "
 581                    "PolicyRepository via the PolicyConditionInPolicyRepository "
 582                    "association.")
 583              ]
 584           class CIM_PolicyConditionInPolicyRepository : CIM_PolicyInSystem
 585           {
 586                   [Override ("Antecedent"), Max(1), Description (
 587                    "This property identifies a PolicyRepository "
 588                    "hosting one or more PolicyConditions.  A reusable "
 589 karl  1.1          "PolicyCondition is always related to exactly one "
 590                    "PolicyRepository via the PolicyConditionInPolicyRepository "
 591                    "association.  The [0..1] cardinality for this property "
 592                    "covers the two types of PolicyConditions:  0 for a "
 593                    "rule-specific PolicyCondition, 1 for a reusable one.")
 594                   ]
 595               CIM_PolicyRepository REF Antecedent;
 596                   [Override ("Dependent"), Description (
 597                    "This property holds the name of a PolicyCondition"
 598                    "hosted in the PolicyRepository. ")
 599                   ]
 600               CIM_PolicyCondition REF Dependent;
 601           };
 602           
 603           // ==================================================================
 604           // PolicyTimePeriodCondition
 605           // ==================================================================
 606              [Description (
 607                    "  This class provides a means of representing the time "
 608                    "periods during which a PolicyRule is valid, i.e., active. "
 609                    "At all times that fall outside these time periods, the "
 610 karl  1.1          "PolicyRule has no effect.  A Rule is treated as valid "
 611                    "at ALL times, if it does not specify a "
 612                    "PolicyTimePeriodCondition.\n\n"
 613                    "  "
 614                    "In some cases a Policy Consumer may need to perform "
 615                    "certain setup / cleanup actions when a PolicyRule becomes "
 616                    "active / inactive.  For example, sessions that were "
 617                    "established while a Rule was active might need to "
 618                    "be taken down when the Rule becomes inactive.  In other "
 619                    "cases, however, such sessions might be left up.  In this "
 620                    "case, the effect of deactivating the PolicyRule would "
 621                    "just be to prevent the establishment of new sessions. \n\n"
 622                    "  "
 623                    "Setup / cleanup behaviors on validity period "
 624                    "transitions are not currently addressed by the Policy "
 625                    "Model, and must be specified in 'guideline' documents or "
 626                    "via subclasses of CIM_PolicyRule, CIM_PolicyTimePeriod"
 627                    "Condition or other concrete subclasses of CIM_Policy. If "
 628                    "such behaviors need to be under the control of the policy "
 629                    "administrator, then a mechanism to allow this control "
 630                    "must also be specified in the subclasses.\n\n"
 631 karl  1.1          "  "
 632                    "PolicyTimePeriodCondition is defined as a subclass of "
 633                    "PolicyCondition. This is to allow the inclusion of "
 634                    "time-based criteria in the AND/OR condition definitions "
 635                    "for a PolicyRule.\n\n"
 636                    "  "
 637                    "Instances of this class may have up to five properties "
 638                    "identifying time periods at different levels. The values "
 639                    "of all the properties present in an instance are ANDed "
 640                    "together to determine the validity period(s) for the "
 641                    "instance. For example, an instance with an overall "
 642                    "validity range of January 1, 2000 through December 31, "
 643                    "2000; a month mask that selects March and April; a "
 644                    "day-of-the-week mask that selects Fridays; and a time "
 645                    "of day range of 0800 through 1600 would be represented "
 646                    "using the following time periods:\n"
 647                    "   Friday, March  5, 2000, from 0800 through 1600;\n "
 648                    "   Friday, March 12, 2000, from 0800 through 1600;\n "
 649                    "   Friday, March 19, 2000, from 0800 through 1600;\n "
 650                    "   Friday, March 26, 2000, from 0800 through 1600;\n "
 651                    "   Friday, April  2, 2000, from 0800 through 1600;\n "
 652 karl  1.1          "   Friday, April  9, 2000, from 0800 through 1600;\n "
 653                    "   Friday, April 16, 2000, from 0800 through 1600;\n "
 654                    "   Friday, April 23, 2000, from 0800 through 1600;\n "
 655                    "   Friday, April 30, 2000, from 0800 through 1600.\n\n"
 656                    "  "
 657                    "Properties not present in an instance of "
 658                    "PolicyTimePeriodCondition are implicitly treated as having "
 659                    "their value 'always enabled'. Thus, in the example above, "
 660                    "the day-of-the-month mask is not present, and so the "
 661                    "validity period for the instance implicitly includes a "
 662                    "day-of-the-month mask that selects all days of the month. "
 663                    "If this 'missing property' rule is applied to its fullest, we "
 664                    "see that there is a second way to indicate that a Policy"
 665                    "Rule is always enabled: associate with it an instance of "
 666                    "PolicyTimePeriodCondition whose only properties with "
 667                    "specific values are its key properties.")
 668              ]
 669           class CIM_PolicyTimePeriodCondition : CIM_PolicyCondition
 670           {
 671                   [Description (
 672                    "  This property identifies an overall range of calendar "
 673 karl  1.1          "dates and times over which a PolicyRule is valid.  It is "
 674                    "formatted as a string representing a start date and time, "
 675                    "in which the character 'T' indicates the beginning of the "
 676                    "time portion, followed by the solidus character '/', "
 677                    "followed by a similar string representing an end date and "
 678                    "time.  The first date indicates the beginning of the range, "
 679                    "while the second date indicates the end.  Thus, the second "
 680                    "date and time must be later than the first.  Date/times are "
 681                    "expressed as substrings of the form yyyymmddThhmmss.  For "
 682                    "example: \n"
 683                    "   20000101T080000/20000131T120000 defines \n"
 684                    "   January 1, 2000, 0800 through January 31, 2000, noon\n\n"
 685                    "  "
 686                    "There are also two special cases in which one of the "
 687                    "date/time strings is replaced with a special string defined "
 688                    "in RFC 2445.\n "
 689                    "   o If the first date/time is replaced with the string "
 690                    "     'THISANDPRIOR', then the property indicates that a "
 691                    "     PolicyRule is valid [from now] until the date/time "
 692                    "     that appears after the '/'.\n"
 693                    "   o If the second date/time is replaced with the string "
 694 karl  1.1          "     'THISANDFUTURE', then the property indicates that a "
 695                    "     PolicyRule becomes valid on the date/time that "
 696                    "     appears before the '/', and remains valid from that "
 697                    "     point on. "),
 698                    ModelCorrespondence {
 699                   "CIM_PolicyTimePeriodCondition.MonthOfYearMask",
 700                   "CIM_PolicyTimePeriodCondition.DayOfMonthMask",
 701                   "CIM_PolicyTimePeriodCondition.DayOfWeekMask",
 702                   "CIM_PolicyTimePeriodCondition.TimeOfDayMask",
 703                   "CIM_PolicyTimePeriodCondition.LocalOrUtcTime"}
 704                   ]
 705               string TimePeriod;
 706                   [Octetstring, Description (
 707                    "  The purpose of this property is to refine the valid time "
 708                    "period that is defined by the TimePeriod property, by "
 709                    "explicitly specifying in which months the PolicyRule is "
 710                    "valid. These properties work together, with the "
 711                    "TimePeriod used to specify the overall time period in "
 712                    "which the PolicyRule is valid, and the MonthOfYearMask used "
 713                    "to pick out the months during which the Rule is valid.\n\n"
 714                    "  "
 715 karl  1.1          "This property is formatted as an octet string, structured "
 716                    "as follows:\n"
 717                    "   o a 4-octet length field, indicating the length of the "
 718                    "    entire octet string; this field is always set to "
 719                    "    0x00000006 for this property;\n"
 720                    "   o a 2-octet field consisting of 12 bits identifying the "
 721                    "     12 months of the year, beginning with January and "
 722                    "     ending with December, followed by 4 bits that are "
 723                    "     always set to '0'.  For each month, the value '1' "
 724                    "     indicates that the policy is valid for that month, "
 725                    "     and the value '0' indicates that it is not valid.\n\n"
 726                    "  "
 727                    "The value 0x000000060830, for example, indicates that a "
 728                    "PolicyRule is valid only in the months May, November, "
 729                    "and December.\n\n"
 730                    "  "
 731                    "If a value for this property is not provided, then the "
 732                    "PolicyRule is treated as valid for all twelve months, and "
 733                    "only restricted by its TimePeriod property value and the "
 734                    "other Mask properties."),
 735                   ModelCorrespondence {
 736 karl  1.1         "CIM_PolicyTimePeriodCondition.TimePeriod",
 737                   "CIM_PolicyTimePeriodCondition.LocalOrUtcTime"}
 738                   ]
 739               uint8 MonthOfYearMask[];
 740                   [Octetstring, Description (
 741                    "  The purpose of this property is to refine the valid time "
 742                    "period that is defined by the TimePeriod property, by "
 743                    "explicitly specifying in which days of the month the Policy"
 744                    "Rule is valid. These properties work together, "
 745                    "with the TimePeriod used to specify the overall time period "
 746                    "in which the PolicyRule is valid, and the DayOfMonthMask used "
 747                    "to pick out the days of the month during which the Rule "
 748                    "is valid.\n\n "
 749                    "  "
 750                    "This property is formatted as an octet string, structured "
 751                    "as follows:\n"
 752                    "   o a 4-octet length field, indicating the length of the "
 753                    "     entire octet string; this field is always set to "
 754                    "     0x0000000C for this property; \n"
 755                    "   o an 8-octet field consisting of 31 bits identifying "
 756                    "     the days of the month counting from the beginning, "
 757 karl  1.1          "     followed by 31 more bits identifying the days of the "
 758                    "     month counting from the end, followed by 2 bits that "
 759                    "     are always set to '0'.  For each day, the value '1' "
 760                    "     indicates that the policy is valid for that day, and "
 761                    "     the value '0' indicates that it is not valid. \n\n"
 762                    "  "
 763                    "The value 0x0000000C8000000100000000, for example, "
 764                    "indicates that a PolicyRule is valid on the first and "
 765                    "last days of the month.\n\n "
 766                    "  "
 767                    "For months with fewer than 31 days, the digits corresponding "
 768                    "to days that the months do not have (counting in both "
 769                    "directions) are ignored.\n\n"
 770                    "  "
 771                    "If a value for this property is not provided, then the "
 772                    "PolicyRule is treated as valid for all days of the month, and "
 773                    "only restricted by its TimePeriod property value and the "
 774                    "other Mask properties."),
 775                   ModelCorrespondence {
 776                   "CIM_PolicyTimePeriodCondition.TimePeriod",
 777                   "CIM_PolicyTimePeriodCondition.LocalOrUtcTime"}
 778 karl  1.1         ]
 779               uint8 DayOfMonthMask[];
 780                   [Octetstring, Description (
 781                    "  The purpose of this property is to refine the valid time "
 782                    "period that is defined by the TimePeriod property, by "
 783                    "explicitly specifying in which days of the month the Policy"
 784                    "Rule is valid. These properties work together, "
 785                    "with the TimePeriod used to specify the overall time period "
 786                    "in which the PolicyRule is valid, and the DayOfWeekMask used "
 787                    "to pick out the days of the week during which the Rule "
 788                    "is valid.\n\n "
 789                    "  "
 790                    "This property is formatted as an octet string, structured "
 791                    "as follows:\n "
 792                    "  o a 4-octet length field, indicating the length of the "
 793                    "    entire octet string; this field is always set to "
 794                    "    0x00000005 for this property;\n"
 795                    "  o a 1-octet field consisting of 7 bits identifying the 7 "
 796                    "    days of the week, beginning with Sunday and ending with "
 797                    "    Saturday, followed by 1 bit that is always set to '0'. "
 798                    "    For each day of the week, the value '1' indicates that "
 799 karl  1.1          "    the policy is valid for that day, and the value '0' "
 800                    "    indicates that it is not valid. \n\n"
 801                    "  "
 802                    "The value 0x000000057C, for example, indicates that a "
 803                    "PolicyRule is valid Monday through Friday.\n\n"
 804                    "  "
 805                    "If a value for this property is not provided, then the "
 806                    "PolicyRule is treated as valid for all days of the week, "
 807                    "and only restricted by its TimePeriod property value and "
 808                    "the other Mask properties."),
 809                   ModelCorrespondence {
 810                   "CIM_PolicyTimePeriodCondition.TimePeriod",
 811                   "CIM_PolicyTimePeriodCondition.LocalOrUtcTime"}
 812                   ]
 813               uint8 DayOfWeekMask[];
 814                   [Description (
 815                    "  The purpose of this property is to refine the valid time "
 816                    "period that is defined by the TimePeriod property, by "
 817                    "explicitly specifying a range of times in a day during which "
 818                    "the PolicyRule is valid. These properties work "
 819                    "together, with the TimePeriod used to specify the overall "
 820 karl  1.1          "time period in which the PolicyRule is valid, and the "
 821                    "TimeOfDayMask used to pick out the range of time periods "
 822                    "in a given day of during which the Rule is valid. \n\n"
 823                    "  "
 824                    "This property is formatted in the style of RFC 2445:  a "
 825                    "time string beginning with the character 'T', followed by "
 826                    "the solidus character '/', followed by a second time string. "
 827                    "The first time indicates the beginning of the range, while "
 828                    "the second time indicates the end.  Times are expressed as "
 829                    "substrings of the form 'Thhmmss'. \n\n"
 830                    "  "
 831                    "The second substring always identifies a later time than "
 832                    "the first substring.  To allow for ranges that span "
 833                    "midnight, however, the value of the second string may be "
 834                    "smaller than the value of the first substring.  Thus, "
 835                    "'T080000/T210000' identifies the range from 0800 until 2100, "
 836                    "while 'T210000/T080000' identifies the range from 2100 until "
 837                    "0800 of the following day. \n\n"
 838                    "  "
 839                    "When a range spans midnight, it by definition includes "
 840                    "parts of two successive days.  When one of these days is "
 841 karl  1.1          "also selected by either the MonthOfYearMask, "
 842                    "DayOfMonthMask, and/or DayOfWeekMask, but the other day is "
 843                    "not, then the policy is active only during the portion of "
 844                    "the range that falls on the selected day.  For example, if "
 845                    "the range extends from 2100 until 0800, and the day of "
 846                    "week mask selects Monday and Tuesday, then the policy is "
 847                    "active during the following three intervals:\n"
 848                    "    From midnight Sunday until 0800 Monday; \n"
 849                    "    From 2100 Monday until 0800 Tuesday; \n"
 850                    "    From 2100 Tuesday until 23:59:59 Tuesday. \n\n"
 851                    "  "
 852                    "If a value for this property is not provided, then the "
 853                    "PolicyRule is treated as valid for all hours of the day, "
 854                    "and only restricted by its TimePeriod property value and "
 855                    "the other Mask properties."),
 856                   ModelCorrespondence {
 857                   "CIM_PolicyTimePeriodCondition.TimePeriod",
 858                   "CIM_PolicyTimePeriodCondition.LocalOrUtcTime"}
 859                   ]
 860               string TimeOfDayMask;
 861                   [Description (
 862 karl  1.1          "  This property indicates whether the times represented "
 863                    "in the TimePeriod property and in the various Mask "
 864                    "properties represent local times or UTC times.  There is "
 865                    "no provision for mixing of local times and UTC times:  the "
 866                    "value of this property applies to all of the other "
 867                    "time-related properties."),
 868                    ValueMap { "1", "2" },
 869                    Values { "localTime", "utcTime" }, 
 870                    ModelCorrespondence {
 871                    "CIM_PolicyTimePeriodCondition.TimePeriod",
 872                    "CIM_PolicyTimePeriodCondition.MonthOfYearMask",
 873                    "CIM_PolicyTimePeriodCondition.DayOfMonthMask",
 874                    "CIM_PolicyTimePeriodCondition.DayOfWeekMask",
 875                    "CIM_PolicyTimePeriodCondition.TimeOfDayMask"}
 876                   ]
 877               uint16 LocalOrUtcTime;
 878           };
 879           
 880           // ==================================================================
 881           //    PolicyRuleValidityPeriod
 882           // ==================================================================
 883 karl  1.1    [Association, Aggregation, Description (
 884                    "The PolicyRuleValidityPeriod aggregation represents "
 885                    "scheduled activation and deactivation of a PolicyRule. "
 886                    "If a PolicyRule is associated with multiple policy time "
 887                    "periods via this association, then the Rule is active if "
 888                    "at least one of the time periods indicates that it is "
 889                    "active.  (In other words, the PolicyTimePeriodConditions "
 890                    "are ORed to determine whether the Rule is active.)  A Time"
 891                    "Period may be aggregated by multiple PolicyRules.  A Rule "
 892                    "that does not point to a PolicyTimePeriodCondition via this "
 893                    "association is, from the point of view of scheduling, "
 894                    "always active.  It may, however, be inactive for other "
 895                    "reasons.  For example, the Rule's Enabled property may "
 896                    "be set to \"disabled\" (value=2).")
 897              ]
 898           class CIM_PolicyRuleValidityPeriod : CIM_PolicyComponent
 899           {
 900                   [Override ("GroupComponent"), Aggregate, Description (
 901                    "This property contains the name of a PolicyRule that "
 902                    "contains one or more PolicyTimePeriodConditions.")
 903                   ]
 904 karl  1.1     CIM_PolicyRule REF GroupComponent;
 905                   [Override ("PartComponent"), Description (
 906                    "This property contains the name of a "
 907                    "PolicyTimePeriodCondition defining the valid time periods "
 908                    "for one or more PolicyRules.")
 909                   ]
 910               CIM_PolicyTimePeriodCondition REF PartComponent;
 911           };
 912           
 913           // ==================================================================
 914           // VendorPolicyCondition
 915           // ==================================================================
 916              [Description (
 917                    "  A class that provides a general extension mechanism for "
 918                    "representing PolicyConditions that have not been modeled "
 919                    "with specific properties. Instead, the two properties "
 920                    "Constraint and ConstraintEncoding are used to define the "
 921                    "content and format of the Condition, as explained below.\n\n"
 922                    "  "
 923                    "As its name suggests, VendorPolicyCondition is intended for "
 924                    "vendor-specific extensions to the Policy Core Information "
 925 karl  1.1          "Model.  Standardized extensions are not expected to use "
 926                    "this class.")
 927              ]
 928           class CIM_VendorPolicyCondition : CIM_PolicyCondition
 929           {
 930                   [Octetstring, Description (
 931                    "This property provides a general extension mechanism for "
 932                    "representing PolicyConditions that have not been "
 933                    "modeled with specific properties. The format of the "
 934                    "octet strings in the array is left unspecified in "
 935                    "this definition.  It is determined by the OID value "
 936                    "stored in the property ConstraintEncoding.  Since "
 937                    "ConstraintEncoding is single-valued, all the values of "
 938                    "Constraint share the same format and semantics."),
 939                    ModelCorrespondence {
 940                       "CIM_VendorPolicyCondition.ConstraintEncoding"}
 941                   ]
 942               string Constraint [];
 943                   [Description (
 944                    "An OID encoded as a string, identifying the format "
 945                    "and semantics for this instance's Constraint property."),
 946 karl  1.1          ModelCorrespondence {
 947                       "CIM_VendorPolicyCondition.Constraint"}
 948                   ]
 949               string ConstraintEncoding;
 950           };
 951           
 952           // ==================================================================
 953           // PolicyAction
 954           // ==================================================================
 955              [Abstract, Description (
 956                    "A class representing a rule-specific or reusable policy "
 957                    "action to be performed if the PolicyConditions for a Policy"
 958                    "Rule evaluate to TRUE. Since all operational details of a "
 959                    "PolicyAction are provided in subclasses of this object, "
 960                    "this class is abstract.")
 961              ]
 962           class CIM_PolicyAction : CIM_Policy
 963           {
 964                   [Key, MaxLen (256), Description (
 965                    "  The name of the class or the subclass used in the "
 966                    "creation of the System object in whose scope this "
 967 karl  1.1          "PolicyAction is defined. \n\n"
 968                    "  "
 969                    "This property helps to identify the System object in "
 970                    "whose scope this instance of PolicyAction exists. "
 971                    "For a rule-specific PolicyAction, this is the System "
 972                    "in whose context the PolicyRule is defined. For a "
 973                    "reusable PolicyAction, this is the instance of "
 974                    "PolicyRepository (which is a subclass of System) that "
 975                    "holds the Action. \n\n"
 976                    "  "
 977                    "Note that this property, and the analogous property "
 978                    "SystemName, do not represent propagated keys from an "
 979                    "instance of the class System. Instead, they are "
 980                    "properties defined in the context of this class, which "
 981                    "repeat the values from the instance of System to which "
 982                    "this PolicyAction is related, either directly via the "
 983                    "PolicyActionInPolicyRepository association or indirectly "
 984                    "via the PolicyActionInPolicyRule aggregation.")
 985                   ]
 986               string SystemCreationClassName;
 987                   [Key, MaxLen (256), Description (
 988 karl  1.1          "  The name of the System object in whose scope this "
 989                    "PolicyAction is defined. \n\n"
 990                    "  "
 991                    "This property completes the identification of the System "
 992                    "object in whose scope this instance of PolicyAction "
 993                    "exists.  For a rule-specific PolicyAction, this is the "
 994                    "System in whose context the PolicyRule is defined.  For "
 995                    "a reusable PolicyAction, this is the instance of "
 996                    "PolicyRepository (which is a subclass of System) that "
 997                    "holds the Action.")
 998                   ]
 999               string SystemName;
1000                   [Key, MaxLen (256), Description (
1001                    "For a rule-specific PolicyAction, the CreationClassName "
1002                    "of the PolicyRule object with which this Action is "
1003                    "associated.  For a reusable PolicyAction, a "
1004                    "special value, 'NO RULE', should be used to "
1005                    "indicate that this Action is reusable and not "
1006                    "associated with a single PolicyRule.")
1007                   ]
1008               string PolicyRuleCreationClassName;
1009 karl  1.1         [Key, MaxLen (256), Description (
1010                    "For a rule-specific PolicyAction, the name of "
1011                    "the PolicyRule object with which this Action is "
1012                    "associated.  For a reusable PolicyAction, a "
1013                    "special value, 'NO RULE', should be used to "
1014                    "indicate that this Action is reusable and not "
1015                    "associated with a single PolicyRule.")
1016                   ]
1017               string PolicyRuleName;
1018                   [Key, MaxLen (256), Description (
1019                      "CreationClassName indicates the name of the class or the "
1020                      "subclass used in the creation of an instance. When used "
1021                      "with the other key properties of this class, this property "
1022                      "allows all instances of this class and its subclasses to "
1023                      "be uniquely identified.") ]
1024               string CreationClassName;
1025                   [Key, MaxLen (256), Description (
1026                    "A user-friendly name of this PolicyAction.")
1027                   ]
1028               string PolicyActionName;
1029           };
1030 karl  1.1 
1031           // ==================================================================
1032           //    PolicyActionInPolicyRepository
1033           // ==================================================================
1034              [Association, Description (
1035                    "  A class representing the hosting of reusable "
1036                    "PolicyActions by a PolicyRepository. A reusable Policy"
1037                    "Action is always related to a single PolicyRepository, "
1038                    "via this association.\n\n"
1039                    "  "
1040                    "Note, that an instance of PolicyAction can be either "
1041                    "reusable or rule-specific.  When the Action is rule-"
1042                    "specific, it shall not be related to any "
1043                    "PolicyRepository via the PolicyActionInPolicyRepository "
1044                    "association.")
1045              ]
1046           class CIM_PolicyActionInPolicyRepository : CIM_PolicyInSystem
1047           {
1048                   [Override ("Antecedent"), Max(1), Description (
1049                    "This property represents a PolicyRepository "
1050                    "hosting one or more PolicyActions.  A reusable "
1051 karl  1.1          "PolicyAction is always related to exactly one "
1052                    "PolicyRepository via the PolicyActionInPolicyRepository "
1053                    "association.  The [0..1] cardinality for this property "
1054                    "covers the two types of PolicyActions:  0 for a "
1055                    "rule-specific PolicyAction, 1 for a reusable one.")
1056                   ]
1057               CIM_PolicyRepository REF Antecedent;
1058                   [Override ("Dependent"), Description (
1059                    "This property holds the name of a PolicyAction"
1060                    "hosted in the PolicyRepository. ")
1061                   ]
1062               CIM_PolicyAction REF Dependent;
1063           };
1064           
1065           // ==================================================================
1066           //    PolicyActionInPolicyRule
1067           // ==================================================================
1068              [Association, Aggregation, Description (
1069                   "  A PolicyRule aggregates zero or more instances of the "
1070                   "PolicyAction class, via the PolicyActionInPolicyRule "
1071                   "association.  A Rule that aggregates zero Actions is not "
1072 karl  1.1         "valid -- it may, however, be in the process of being entered "
1073                   "into a PolicyRepository or being defined for a System. "
1074                   "Alternately, the actions of the policy may be explicit in "
1075                   "the definition of the PolicyRule. Note that a PolicyRule "
1076                   "should have no effect until it is valid.\n\n"
1077                   "  "
1078                   "The Actions associated with a PolicyRule may be given a "
1079                   "required order, a recommended order, or no order at all. For "
1080                   "Actions represented as separate objects, the PolicyActionIn"
1081                   "PolicyRule aggregation can be used to express an order. \n\n"
1082                   "  "
1083                   "This aggregation does not indicate whether a specified "
1084                   "action order is required, recommended, or of no significance; "
1085                   "the property SequencedActions in the aggregating instance of "
1086                   "PolicyRule provides this indication.")
1087              ]
1088           class CIM_PolicyActionInPolicyRule : CIM_PolicyComponent
1089           {
1090                   [Override ("GroupComponent"), Aggregate, Description (
1091                    "This property represents the PolicyRule that "
1092                    "contains one or more PolicyActions.")
1093 karl  1.1         ]
1094               CIM_PolicyRule REF GroupComponent;
1095                   [Override ("PartComponent"), Description (
1096                    "This property holds the name of a PolicyAction "
1097                    "contained by one or more PolicyRules.")
1098                   ]
1099               CIM_PolicyAction REF PartComponent;
1100                   [Description (
1101                    "  This property provides an unsigned integer 'n' that"
1102                    "indicates the relative position of a PolicyAction in the "
1103                    "sequence of actions associated with a PolicyRule. "
1104                    "When 'n' is a positive integer, it indicates a place "
1105                    "in the sequence of actions to be performed, with "
1106                    "smaller integers indicating earlier positions in the "
1107                    "sequence. The special value '0' indicates 'don't care'. "
1108                    "If two or more PolicyActions have the same non-zero "
1109                    "sequence number, they may be performed in any order, but "
1110                    "they must all be performed at the appropriate place in the "
1111                    "overall action sequence. \n\n"
1112                    "  "
1113                    "A series of examples will make ordering of PolicyActions "
1114 karl  1.1          "clearer: \n"
1115                    "   o If all actions have the same sequence number, "
1116                    "     regardless of whether it is '0' or non-zero, any "
1117                    "     order is acceptable.\n "
1118                    "   o The values: \n"
1119                    "         1:ACTION A \n"
1120                    "         2:ACTION B \n"
1121                    "         1:ACTION C \n"
1122                    "         3:ACTION D \n"
1123                    "     indicate two acceptable orders: A,C,B,D or C,A,B,D, "
1124                    "     since A and C can be performed in either order, but "
1125                    "     only at the '1' position. \n"
1126                    "   o The values: \n"
1127                    "         0:ACTION A \n"
1128                    "         2:ACTION B \n"
1129                    "         3:ACTION C \n"
1130                    "         3:ACTION D \n"
1131                    "     require that B,C, and D occur either as B,C,D or as "
1132                    "     B,D,C.  Action A may appear at any point relative to "
1133                    "     B, C, and D. Thus the complete set of acceptable "
1134                    "     orders is:  A,B,C,D; B,A,C,D; B,C,A,D; B,C,D,A; "
1135 karl  1.1          "     A,B,D,C; B,A,D,C; B,D,A,C; B,D,C,A. \n\n"
1136                    "  "
1137                    "Note that the non-zero sequence numbers need not start "
1138                    "with '1', and they need not be consecutive.  All that "
1139                    "matters is their relative magnitude.")
1140                   ]
1141               uint16 ActionOrder;
1142           };
1143           
1144           // ==================================================================
1145           // VendorPolicyAction
1146           // ==================================================================
1147              [Description (
1148                    "  A class that provides a general extension mechanism for "
1149                    "representing PolicyActions that have not been modeled "
1150                    "with specific properties. Instead, the two properties "
1151                    "ActionData and ActionEncoding are used to define the "
1152                    "content and format of the Action, as explained below.\n\n"
1153                    "  "
1154                    "As its name suggests, VendorPolicyAction is intended for "
1155                    "vendor-specific extensions to the Policy Core Information "
1156 karl  1.1          "Model.  Standardized extensions are not expected to use "
1157                    "this class.")  ]
1158           class CIM_VendorPolicyAction : CIM_PolicyAction
1159           {
1160                   [Octetstring, Description (
1161                    "This property provides a general extension mechanism for "
1162                    "representing PolicyActions that have not been "
1163                    "modeled with specific properties. The format of the "
1164                    "octet strings in the array is left unspecified in "
1165                    "this definition.  It is determined by the OID value "
1166                    "stored in the property ActionEncoding.  Since "
1167                    "ActionEncoding is single-valued, all the values of "
1168                    "ActionData share the same format and semantics."),
1169                    ModelCorrespondence {
1170                       "CIM_VendorPolicyAction.ActionEncoding"}
1171                   ]
1172               string ActionData [];
1173                   [Description (
1174                    "An OID encoded as a string, identifying the format "
1175                    "and semantics for this instance's ActionData property."),
1176                    ModelCorrespondence {
1177 karl  1.1             "CIM_VendorPolicyAction.ActionData"}
1178                   ]
1179               string ActionEncoding;
1180           };
1181           
1182           // ===================================================================
1183           // end of file
1184           // ===================================================================
1185           
1186           

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2