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