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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2