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