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