1 kumpf 1.1 // ==================================================================
2 // Title: Policy MOF Specification 2.7.0
3 // Filename: CIM_Policy27.MOF
4 // Version: 2.7.0
5 // Status: Final
6 // Date: 03/31/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.1 // 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.1 // ===================================================================
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.1 //
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.1 //
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.1 // - 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.1 "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.1 "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.1 [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.1 " <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.1 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.1 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.1 "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.1 "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.1 " 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.1 "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.1 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.1 "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.1 " 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.1 " 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.1 "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.1 "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.1 "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.1 [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.1 "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.1 // ==================================================================
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.1 "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.1 " 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.1 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.1 " 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.1 "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.1 "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.1 " 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.1 "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 month 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.1 " 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.1 "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.1 "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.1 "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.1 uint16 LocalOrUtcTime;
800 };
801
802
803
804 // ==================================================================
805 // CompoundPolicyCondition
806 // ==================================================================
807 [Version ("2.7.0"), Description (
808 "CompoundPolicyCondition is used to represent "
809 "compound conditions formed by aggregating simpler policy "
810 "conditions. Compound conditions are constructed by "
811 "associating subordinate condition terms together using the "
812 "PolicyConditionInPolicyCondition aggregation.") ]
813 class CIM_CompoundPolicyCondition : CIM_PolicyCondition {
814 [Description (
815 "Indicates whether the list of CompoundPolicyConditions "
816 "associated with this PolicyRule is in disjunctive normal "
817 "form (DNF) or conjunctive normal form (CNF). The default "
818 "value is 1 (\"DNF\")."),
819 ValueMap {"1", "2"},
820 kumpf 1.1 Values { "DNF", "CNF" } ]
821 uint16 ConditionListType;
822 };
823
824
825 // ==================================================================
826 // VendorPolicyCondition
827 // ==================================================================
828 [Version ("2.6.0"), Description (
829 "A class that provides a general extension mechanism for "
830 "representing PolicyConditions that have not been modeled "
831 "with specific properties. Instead, the two properties "
832 "Constraint and ConstraintEncoding are used to define the "
833 "content and format of the Condition, as explained below. \n"
834 "\n"
835 "As its name suggests, VendorPolicyCondition is intended for "
836 "vendor-specific extensions to the Policy Core Information "
837 "Model. Standardized extensions are not expected to use "
838 "this class.") ]
839 class CIM_VendorPolicyCondition : CIM_PolicyCondition {
840 [Octetstring, Description (
841 kumpf 1.1 "This property provides a general extension mechanism for "
842 "representing PolicyConditions that have not been "
843 "modeled with specific properties. The format of the "
844 "octet strings in the array is left unspecified in "
845 "this definition. It is determined by the OID value "
846 "stored in the property ConstraintEncoding. Since "
847 "ConstraintEncoding is single-valued, all the values of "
848 "Constraint share the same format and semantics."),
849 ModelCorrespondence {
850 "CIM_VendorPolicyCondition.ConstraintEncoding"} ]
851 string Constraint[];
852 [Description (
853 "An OID encoded as a string, identifying the format "
854 "and semantics for this instance's Constraint property."),
855 ModelCorrespondence {
856 "CIM_VendorPolicyCondition.Constraint"} ]
857 string ConstraintEncoding;
858 };
859
860 // ==================================================================
861 // PolicyAction
862 kumpf 1.1 // ==================================================================
863 [Abstract, Version ("2.6.0"), Description (
864 "A class representing a rule-specific or reusable policy "
865 "action to be performed if the PolicyConditions for a Policy"
866 "Rule evaluate to TRUE. Since all operational details of a "
867 "PolicyAction are provided in subclasses of this object, "
868 "this class is abstract.") ]
869 class CIM_PolicyAction : CIM_Policy {
870 [Key, MaxLen (256), Description (
871 "The name of the class or the subclass used in the "
872 "creation of the System object in whose scope this "
873 "PolicyAction is defined. \n"
874 "\n"
875 "This property helps to identify the System object in "
876 "whose scope this instance of PolicyAction exists. "
877 "For a rule-specific PolicyAction, this is the System "
878 "in whose context the PolicyRule is defined. For a "
879 "reusable PolicyAction, this is the instance of "
880 "PolicyRepository (which is a subclass of System) that "
881 "holds the Action. \n"
882 "\n"
883 kumpf 1.1 "Note that this property, and the analogous property "
884 "SystemName, do not represent propagated keys from an "
885 "instance of the class System. Instead, they are "
886 "properties defined in the context of this class, which "
887 "repeat the values from the instance of System to which "
888 "this PolicyAction is related, either directly via the "
889 "PolicyActionInPolicyRepository association or indirectly "
890 "via the PolicyActionInPolicyRule aggregation.") ]
891 string SystemCreationClassName;
892 [Key, MaxLen (256), Description (
893 "The name of the System object in whose scope this "
894 "PolicyAction is defined. \n"
895 "\n"
896 "This property completes the identification of the System "
897 "object in whose scope this instance of PolicyAction "
898 "exists. For a rule-specific PolicyAction, this is the "
899 "System in whose context the PolicyRule is defined. For "
900 "a reusable PolicyAction, this is the instance of "
901 "PolicyRepository (which is a subclass of System) that "
902 "holds the Action.") ]
903 string SystemName;
904 kumpf 1.1 [Key, MaxLen (256), Description (
905 "For a rule-specific PolicyAction, the CreationClassName "
906 "of the PolicyRule object with which this Action is "
907 "associated. For a reusable PolicyAction, a "
908 "special value, 'NO RULE', should be used to "
909 "indicate that this Action is reusable and not "
910 "associated with a single PolicyRule.") ]
911 string PolicyRuleCreationClassName;
912 [Key, MaxLen (256), Description (
913 "For a rule-specific PolicyAction, the name of "
914 "the PolicyRule object with which this Action is "
915 "associated. For a reusable PolicyAction, a "
916 "special value, 'NO RULE', should be used to "
917 "indicate that this Action is reusable and not "
918 "associated with a single PolicyRule.") ]
919 string PolicyRuleName;
920 [Key, MaxLen (256), Description (
921 "CreationClassName indicates the name of the class or the "
922 "subclass used in the creation of an instance. When used "
923 "with the other key properties of this class, this property "
924 "allows all instances of this class and its subclasses to "
925 kumpf 1.1 "be uniquely identified.") ]
926 string CreationClassName;
927 [Key, MaxLen (256), Description (
928 "A user-friendly name of this PolicyAction.") ]
929 string PolicyActionName;
930 };
931
932
933 // ==================================================================
934 // VendorPolicyAction
935 // ==================================================================
936 [Version ("2.6.0"), Description (
937 "A class that provides a general extension mechanism for "
938 "representing PolicyActions that have not been modeled "
939 "with specific properties. Instead, the two properties "
940 "ActionData and ActionEncoding are used to define the "
941 "content and format of the Action, as explained below. \n"
942 "\n"
943 "As its name suggests, VendorPolicyAction is intended for "
944 "vendor-specific extensions to the Policy Core Information "
945 "Model. Standardized extensions are not expected to use "
946 kumpf 1.1 "this class.") ]
947 class CIM_VendorPolicyAction : CIM_PolicyAction {
948 [Octetstring, Description (
949 "This property provides a general extension mechanism for "
950 "representing PolicyActions that have not been "
951 "modeled with specific properties. The format of the "
952 "octet strings in the array is left unspecified in "
953 "this definition. It is determined by the OID value "
954 "stored in the property ActionEncoding. Since "
955 "ActionEncoding is single-valued, all the values of "
956 "ActionData share the same format and semantics."),
957 ModelCorrespondence {
958 "CIM_VendorPolicyAction.ActionEncoding"} ]
959 string ActionData[];
960 [Description (
961 "An OID encoded as a string, identifying the format "
962 "and semantics for this instance's ActionData property."),
963 ModelCorrespondence {
964 "CIM_VendorPolicyAction.ActionData"} ]
965 string ActionEncoding;
966 };
967 kumpf 1.1
968
969 // ==================================================================
970 // CompoundPolicyAction
971 // ==================================================================
972 [Version ("2.6.0"),
973 Description ("CompoundPolicyAction is used to represent an "
974 "expression consisting of an ordered sequence of action "
975 "terms. Each action term is represented as a subclass of "
976 "the PolicyAction class. Compound actions are constructed "
977 "by associating dependent action terms together using the "
978 "PolicyActionInPolicyAction aggregation.") ]
979 class CIM_CompoundPolicyAction : CIM_PolicyAction {
980 [Description (
981 "This property gives a policy administrator a way "
982 "of specifying how the ordering of the PolicyActions "
983 "associated with this PolicyRule is to be interpreted. "
984 "Three values are supported: \n"
985 " o mandatory(1): Do the actions in the indicated "
986 " order, or don't do them at all. \n"
987 " o recommended(2): Do the actions in the indicated "
988 kumpf 1.1 " order if you can, but if you can't do them in this "
989 " order, do them in another order if you can. \n"
990 " o dontCare(3): Do them -- I don't care about the "
991 " order. \n"
992 "The default value is 3 (\"DontCare\")."),
993 ValueMap {"1", "2", "3"},
994 Values {"Mandatory", "Recommended", "Dont Care"} ]
995 uint16 SequencedActions;
996 [Description ("ExecutionStrategy defines the strategy to be "
997 "used in executing the sequenced actions aggregated by this "
998 "CompoundPolicyAction. There are three execution strategies: \n"
999 "\n"
1000 "Do Until Success - execute actions according to predefined \n"
1001 " order, until successful execution of a \n"
1002 " single action. \n"
1003 "Do All - execute ALL actions which are part of \n"
1004 " the modeled set, according to their \n"
1005 " predefined order. Continue doing this, \n"
1006 " even if one or more of the actions "
1007 " fails. \n"
1008 "Do Until Failure - execute actions according to predefined \n"
1009 kumpf 1.1 " order, until the first failure in \n"
1010 " execution of an action instance. \n"
1011 "The default value is 2 (\"Do All\")."),
1012 ValueMap {"1", "2", "3"},
1013 Values {"Do Until Success", "Do All", "Do Until Failure"} ]
1014 uint16 ExecutionStrategy;
1015 };
1016
1017
1018 // ==================================================================
1019 // PolicyRoleCollection
1020 // ==================================================================
1021 [Version ("2.7.0"), Description (
1022 "PolicyRoleCollection is used to represent a "
1023 "collection of managed elements that share a common policy "
1024 "role. The PolicyRoleCollection always exists in the context "
1025 "of a system, specified using the PolicyRoleCollectionInSystem "
1026 "aggregation. The value of the PolicyRole property in this "
1027 "class specifies the role, and can be matched with the value(s) "
1028 "in the PolicyRoles array in PolicyRules and PolicyGroups. "
1029 "ManagedElements that share the role defined in this collection "
1030 kumpf 1.1 "are aggregated into the Collection via the "
1031 "ElementInPolicyRoleCollection association.") ]
1032 class CIM_PolicyRoleCollection : CIM_SystemSpecificCollection {
1033 [Required, Description (
1034 "The PolicyRole property role name for the managed "
1035 "elements aggregated into the PolicyRoleCollection. This "
1036 "role name is the same role name that appears in related "
1037 "PolicySet instances.") ]
1038 string PolicyRole;
1039 };
1040
1041
1042 // ==================================================================
1043 // === Association classes ===
1044 // ==================================================================
1045
1046
1047 // ==================================================================
1048 // PolicyComponent
1049 // ==================================================================
1050 [Association, Abstract, Aggregation, Version ("2.6.0"),
1051 kumpf 1.1 Description (
1052 "CIM_PolicyComponent is a generic association used to "
1053 "establish 'part of' relationships between the subclasses of "
1054 "CIM_Policy. For example, the PolicyConditionInPolicyRule "
1055 "association defines that PolicyConditions are part of a "
1056 "PolicyRule.") ]
1057 class CIM_PolicyComponent : CIM_Component {
1058 [Aggregate, Override ("GroupComponent"), Description (
1059 "The parent Policy in the association.") ]
1060 CIM_Policy REF GroupComponent;
1061 [Override ("PartComponent"), Description (
1062 "The child/part Policy in the association.") ]
1063 CIM_Policy REF PartComponent;
1064 };
1065
1066
1067 // ==================================================================
1068 // PolicyInSystem
1069 // ==================================================================
1070 [Association, Abstract, Version ("2.6.0"), Description (
1071 "CIM_PolicyInSystem is a generic association used to "
1072 kumpf 1.1 "establish dependency relationships between Policies and the "
1073 "Systems that host them. These Systems may be ComputerSystems "
1074 "where Policies are 'running' or they may be Policy"
1075 "Repositories where Policies are stored. This relationship "
1076 "is similar to the concept of CIM_Services being dependent "
1077 "on CIM_Systems as defined by the HostedService "
1078 "association. \n"
1079 "\n"
1080 "Cardinality is Max (1) for the Antecedent/System "
1081 "reference since Policies can only be hosted in at most one "
1082 "System context. Some subclasses of the association will "
1083 "further refine this definition to make the Policies Weak "
1084 "to Systems. Other subclasses of PolicyInSystem will "
1085 "define an optional hosting relationship. Examples of each "
1086 "of these are the PolicyRuleInSystem and PolicyConditionIn"
1087 "PolicyRepository associations, respectively.") ]
1088 class CIM_PolicyInSystem : CIM_Dependency {
1089 [Override ("Antecedent"), Max (1), Description (
1090 "The hosting System.") ]
1091 CIM_System REF Antecedent;
1092 [Override ("Dependent"), Description (
1093 kumpf 1.1 "The hosted Policy.") ]
1094 CIM_Policy REF Dependent;
1095 };
1096
1097
1098 // ==================================================================
1099 // PolicySetInSystem
1100 // ==================================================================
1101 [Association, Abstract, Version ("2.6.0"), Description (
1102 "PolicySetInSystem is an abstract association class that "
1103 "represents a relationship between a System and a PolicySet used "
1104 "in the administrative scope of that system (e.g., AdminDomain, "
1105 "ComputerSystem). The Priority property is used to assign a "
1106 "relative priority to a PolicySet within the administrative "
1107 "scope in contexts where it is not a component of another "
1108 "PolicySet.") ]
1109 class CIM_PolicySetInSystem : CIM_PolicyInSystem {
1110 [Override ("Antecedent"), Min (1), Max (1), Description (
1111 "The System in whose scope a PolicySet is defined.") ]
1112 CIM_System REF Antecedent;
1113 [Override ("Dependent"), Description (
1114 kumpf 1.1 "A PolicySet named within the scope of a System.") ]
1115 CIM_PolicySet REF Dependent;
1116 [Description (
1117 "The Priority property is used to specify the relative "
1118 "priority of the referenced PolicySet when there are more "
1119 "than one PolicySet instances applied to a managed resource "
1120 "that are not PolicySetComponents and, therefore, have no "
1121 "other relative priority defined. The priority is a "
1122 "non-negative integer; a larger value indicates a higher "
1123 "priority.") ]
1124 uint16 Priority;
1125 };
1126
1127
1128 // ==================================================================
1129 // PolicyGroupInSystem
1130 // ==================================================================
1131 [Association, Version ("2.6.0"), Description (
1132 "An association that links a PolicyGroup to the System "
1133 "in whose scope the Group is defined.") ]
1134 class CIM_PolicyGroupInSystem : CIM_PolicySetInSystem {
1135 kumpf 1.1 [Override ("Antecedent"), Min (1), Max (1), Description (
1136 "The System in whose scope a PolicyGroup is defined.") ]
1137 CIM_System REF Antecedent;
1138 [Override ("Dependent"), Weak, Description (
1139 "A PolicyGroup named within the scope of a System.") ]
1140 CIM_PolicyGroup REF Dependent;
1141 };
1142
1143
1144 // ==================================================================
1145 // PolicyRuleInSystem
1146 // ==================================================================
1147 [Association, Version ("2.6.0"), Description (
1148 "An association that links a PolicyRule to the System "
1149 "in whose scope the Rule is defined.") ]
1150 class CIM_PolicyRuleInSystem : CIM_PolicySetInSystem {
1151 [Override ("Antecedent"), Min (1), Max (1), Description (
1152 "The System in whose scope a PolicyRule is defined.") ]
1153 CIM_System REF Antecedent;
1154 [Override ("Dependent"), Weak, Description (
1155 "A PolicyRule named within the scope of a System.") ]
1156 kumpf 1.1 CIM_PolicyRule REF Dependent;
1157 };
1158
1159
1160 // ==================================================================
1161 // PolicySetComponent
1162 // ==================================================================
1163 [Association, Aggregation, Version ("2.6.0"), Description (
1164 "PolicySetComponent is a concrete aggregation that "
1165 "collects instances of the subclasses of PolicySet (i.e., "
1166 "PolicyGroups and PolicyRules). Instances are collected in "
1167 "sets that use the same decision strategy. They are "
1168 "prioritized relative to each other, within the set, "
1169 "using the Priority property of this aggregation. \n"
1170 "\n"
1171 "Together, the PolicySet.PolicyDecisionStrategy and PolicySet"
1172 "Component.Priority properties determine the processing "
1173 "for the groups and rules contained in a PolicySet. A larger "
1174 "priority value represents a higher priority. Note that "
1175 "the Priority property MUST have a unique value when "
1176 "compared with others defined for the same aggregating "
1177 kumpf 1.1 "PolicySet. Thus, the evaluation of rules within a set "
1178 "is deterministically specified.") ]
1179 class CIM_PolicySetComponent : CIM_PolicyComponent {
1180 [Override ("GroupComponent"), Aggregate, Description (
1181 "A PolicySet that aggregates other PolicySet instances.") ]
1182 CIM_PolicySet REF GroupComponent;
1183 [Override ("PartComponent"), Description (
1184 "A PolicySet aggregated into a PolicySet.") ]
1185 CIM_PolicySet REF PartComponent;
1186 [Description (
1187 "A non-negative integer for prioritizing this PolicySet "
1188 "component relative to other elements of the same PolicySet. "
1189 "A larger value indicates a higher priority. The "
1190 "Priority property MUST have a unique value when compared "
1191 "with others defined for the same aggregating PolicySet.") ]
1192 uint16 Priority;
1193 };
1194
1195
1196 // ==================================================================
1197 // PolicyGroupInPolicyGroup *** deprecated
1198 kumpf 1.1 // ==================================================================
1199 [Association, Aggregation, DEPRECATED {"CIM_PolicySetComponent"},
1200 Version ("2.7.0"), Description (
1201 "PolicySetComponent provides a more general mechanism for "
1202 "aggregating both PolicyGroups and PolicyRules and doing so with "
1203 "the priority value applying only to the aggregated set rather "
1204 "than policy wide. \n"
1205 "\n"
1206 "A relationship that aggregates one or more lower-level "
1207 "PolicyGroups into a higher-level Group. A Policy"
1208 "Group may aggregate PolicyRules and/or other Policy"
1209 "Groups.") ]
1210 class CIM_PolicyGroupInPolicyGroup : CIM_PolicyComponent {
1211 [Override ("GroupComponent"), Aggregate,
1212 Deprecated {"CIM_PolicySetComponent.GroupComponent"},
1213 Description ("A PolicyGroup that aggregates other Groups.") ]
1214 CIM_PolicyGroup REF GroupComponent;
1215 [Override ("PartComponent"),
1216 Deprecated {"CIM_PolicySetComponent.PartComponent"},
1217 Description ("A PolicyGroup aggregated by another Group.") ]
1218 CIM_PolicyGroup REF PartComponent;
1219 kumpf 1.1 };
1220
1221
1222 // ==================================================================
1223 // PolicyRuleInPolicyGroup *** deprecated
1224 // ==================================================================
1225 [Association, Aggregation, DEPRECATED {"CIM_PolicySetComponent"},
1226 Version ("2.7.0"), Description (
1227 "PolicySetComponent provides a more general mechanism for "
1228 "aggregating both PolicyGroups and PolicyRules and doing so with "
1229 "the priority value applying only to the aggregated set rather "
1230 "than policy wide. \n"
1231 "\n"
1232 "A relationship that aggregates one or more PolicyRules "
1233 "into a PolicyGroup. A PolicyGroup may aggregate "
1234 "PolicyRules and/or other PolicyGroups.") ]
1235 class CIM_PolicyRuleInPolicyGroup : CIM_PolicyComponent {
1236 [Override ("GroupComponent"), Aggregate,
1237 Deprecated {"CIM_PolicySetComponent.GroupComponent"},
1238 Description (
1239 "A PolicyGroup that aggregates one or more PolicyRules.") ]
1240 kumpf 1.1 CIM_PolicyGroup REF GroupComponent;
1241 [Override ("PartComponent"),
1242 Deprecated {"CIM_PolicySetComponent.PartComponent"},
1243 Description (
1244 "A PolicyRule aggregated by a PolicyGroup.") ]
1245 CIM_PolicyRule REF PartComponent;
1246 };
1247
1248
1249 // ==================================================================
1250 // PolicySetValidityPeriod
1251 // ==================================================================
1252 [Association, Aggregation, Version ("2.7.0"),
1253 Description (
1254 "The PolicySetValidityPeriod aggregation represents "
1255 "scheduled activation and deactivation of a PolicySet. A "
1256 "PolicySet is considered \"active\" if it is both \"Enabled\" "
1257 "and in a valid time period. \n"
1258 "\n"
1259 "If a PolicySet is associated with multiple policy time "
1260 "periods via this association, then the Set is in a valid time "
1261 kumpf 1.1 "period if at least one of the time periods evaluates to TRUE. "
1262 "If a PolicySet is contained in another PolicySet via the "
1263 "PolicySetComponent aggregation (e.g., a PolicyRule in a "
1264 "PolicyGroup), then the contained PolicySet (e.g., PolicyRule) "
1265 "is in a valid period if at least one of the aggregate's "
1266 "PolicyTimePeriodCondition instances evaluates to TRUE and at "
1267 "least one of its own PolicyTimePeriodCondition instances "
1268 "also evalutes to TRUE. (In other words, the "
1269 "PolicyTimePeriodConditions are ORed to determine whether the "
1270 "PolicySet is in a valid time period and then ANDed with the ORed "
1271 "PolicyTimePeriodConditions of each of PolicySet instances in the "
1272 "PolicySetComponent hierarchy to determine if the PolicySet is in "
1273 "a valid time period and, if also \"Enabled\", therefore, active, "
1274 "i.e., the hierachy ANDs the ORed PolicyTimePeriodConditions of "
1275 "the elements of the hierarchy. \n"
1276 "\n"
1277 "A Time Period may be aggregated by multiple PolicySets. A Set "
1278 "that does not point to a PolicyTimePeriodCondition via this "
1279 "association, from the point of view of scheduling, is always "
1280 "in a valid time period.") ]
1281 class CIM_PolicySetValidityPeriod : CIM_PolicyComponent {
1282 kumpf 1.1 [Override ("GroupComponent"), Aggregate, Description (
1283 "This property contains the name of a PolicySet that "
1284 "contains one or more PolicyTimePeriodConditions.") ]
1285 CIM_PolicySet REF GroupComponent;
1286 [Override ("PartComponent"), Description (
1287 "This property contains the name of a "
1288 "PolicyTimePeriodCondition defining the valid time periods "
1289 "for one or more PolicySets.") ]
1290 CIM_PolicyTimePeriodCondition REF PartComponent;
1291 };
1292
1293
1294 // ==================================================================
1295 // PolicyRuleValidityPeriod ** deprecated
1296 // ==================================================================
1297 [Association, Aggregation,
1298 DEPRECATED {"CIM_PolicySetValidityPeriod"}, Version ("2.7.0"),
1299 Description (
1300 "The PolicyRuleValidityPeriod aggregation represents "
1301 "scheduled activation and deactivation of a PolicyRule. "
1302 "If a PolicyRule is associated with multiple policy time "
1303 kumpf 1.1 "periods via this association, then the Rule is active if "
1304 "at least one of the time periods indicates that it is "
1305 "active. (In other words, the PolicyTimePeriodConditions "
1306 "are ORed to determine whether the Rule is active.) A Time"
1307 "Period may be aggregated by multiple PolicyRules. A Rule "
1308 "that does not point to a PolicyTimePeriodCondition via this "
1309 "association is, from the point of view of scheduling, "
1310 "always active. It may, however, be inactive for other "
1311 "reasons. For example, the Rule's Enabled property may "
1312 "be set to \"disabled\" (value=2).") ]
1313 class CIM_PolicyRuleValidityPeriod : CIM_PolicyComponent {
1314 [Override ("GroupComponent"), Aggregate,
1315 Deprecated {"CIM_PolicySetValidityPeriod.GroupComponent"},
1316 Description (
1317 "This property contains the name of a PolicyRule that "
1318 "contains one or more PolicyTimePeriodConditions.") ]
1319 CIM_PolicyRule REF GroupComponent;
1320 [Override ("PartComponent"),
1321 Deprecated {"CIM_PolicySetValidityPeriod.PartComponent"},
1322 Description (
1323 "This property contains the name of a "
1324 kumpf 1.1 "PolicyTimePeriodCondition defining the valid time periods "
1325 "for one or more PolicyRules.") ]
1326 CIM_PolicyTimePeriodCondition REF PartComponent;
1327 };
1328
1329
1330 // ==================================================================
1331 // PolicyConditionStructure
1332 // ==================================================================
1333 [Association, Aggregation, Abstract,
1334 Version ("2.7.0"), Description (
1335 "PolicyConditions may be aggregated into rules and into "
1336 "compound conditions. PolicyConditionStructure is the "
1337 "abstract aggregation class for the structuring of policy "
1338 "conditions. \n"
1339 "\n"
1340 "The Conditions aggregated by a PolicyRule or "
1341 "CompoundPolicyCondition are grouped into two levels of "
1342 "lists: either an ORed set of ANDed sets of conditions (DNF, "
1343 "the default) or an ANDed set of ORed sets of conditions "
1344 "(CNF). Individual PolicyConditions in these lists may be "
1345 kumpf 1.1 "negated. The property ConditionListType specifies which of "
1346 "these two grouping schemes applies to a particular "
1347 "PolicyRule or CompoundPolicyCondition instance. \n"
1348 "\n"
1349 "One or more PolicyTimePeriodConditions may be among the "
1350 "conditions associated with a PolicyRule or "
1351 "CompoundPolicyCondition via the PolicyConditionStructure "
1352 "subclass association. In this case, the time periods are "
1353 "simply additional Conditions to be evaluated along "
1354 "with any others that are specified. ") ]
1355 class CIM_PolicyConditionStructure : CIM_PolicyComponent {
1356 [Override ("GroupComponent"), Aggregate, Description (
1357 "This property represents the Policy that "
1358 "contains one or more PolicyConditions.") ]
1359 CIM_Policy REF GroupComponent;
1360 [Override ("PartComponent"), Description (
1361 "This property holds the name of a PolicyCondition "
1362 "contained by one or more PolicyRule or "
1363 "CompoundPolicyCondition instances.") ]
1364 CIM_PolicyCondition REF PartComponent;
1365 [Description (
1366 kumpf 1.1 "Unsigned integer indicating the group to which the "
1367 "contained PolicyCondition belongs. This integer segments "
1368 "the Conditions into the ANDed sets (when the "
1369 "ConditionListType is \"DNF\") or, similarly, into the ORed "
1370 "sets (when the ConditionListType is \"CNF\").") ]
1371 uint16 GroupNumber;
1372 [Description (
1373 "Indication of whether the contained PolicyCondition is "
1374 "negated. TRUE indicates that the PolicyCondition IS "
1375 "negated, FALSE indicates that it IS NOT negated.") ]
1376 boolean ConditionNegated;
1377 };
1378
1379
1380 // ==================================================================
1381 // PolicyConditionInPolicyRule
1382 // ==================================================================
1383 [Association, Aggregation, Version ("2.7.0"),
1384 Description (
1385 "A PolicyRule aggregates zero or more instances of the "
1386 "PolicyCondition class, via the PolicyConditionInPolicyRule "
1387 kumpf 1.1 "association. A Rule that aggregates zero Conditions is not "
1388 "valid; it may, however, be in the process of being defined. "
1389 "Note that a PolicyRule should have no effect until it is "
1390 "valid.") ]
1391 class CIM_PolicyConditionInPolicyRule : CIM_PolicyConditionStructure {
1392 [Override ("GroupComponent"), Aggregate, Description (
1393 "This property represents the PolicyRule that "
1394 "contains one or more PolicyConditions.") ]
1395 CIM_PolicyRule REF GroupComponent;
1396 [Override ("PartComponent"), Description (
1397 "This property holds the name of a PolicyCondition "
1398 "contained by one or more PolicyRules.") ]
1399 CIM_PolicyCondition REF PartComponent;
1400 };
1401
1402 // ==================================================================
1403 // PolicyConditionInPolicyCondition
1404 // ==================================================================
1405 [Association, Aggregation, Version ("2.7.0"),
1406 Description (
1407 "A CompoundPolicyCondition aggregates zero or more instances "
1408 kumpf 1.1 "of the PolicyCondition class, via the "
1409 "PolicyConditionInPolicyCondition association. A "
1410 "CompoundPolicyCondition that aggregates zero Conditions is "
1411 "not valid; it may, however, be in the process of being "
1412 "defined. Note that a CompoundPolicyCondition should have no "
1413 "effect until it is valid.") ]
1414 class CIM_PolicyConditionInPolicyCondition :
1415 CIM_PolicyConditionStructure {
1416 [Override ("GroupComponent"), Aggregate, Description (
1417 "This property represents the CompoundPolicyCondition that "
1418 "contains one or more PolicyConditions.") ]
1419 CIM_CompoundPolicyCondition REF GroupComponent;
1420 [Override ("PartComponent"), Description (
1421 "This property holds the name of a PolicyCondition "
1422 "contained by one or more PolicyRules.") ]
1423 CIM_PolicyCondition REF PartComponent;
1424 };
1425
1426
1427 // ==================================================================
1428 // PolicyActionStructure
1429 kumpf 1.1 // ==================================================================
1430 [Association, Aggregation, Abstract, Version ("2.6.0"),
1431 Description (
1432 "PolicyActions may be aggregated into rules and into "
1433 "compound actions. PolicyActionStructure is the abstract "
1434 "aggregation class for the structuring of policy actions.") ]
1435 class CIM_PolicyActionStructure : CIM_PolicyComponent {
1436 [Override ("GroupComponent"), Aggregate, Description (
1437 "PolicyAction instances may be aggregated into either "
1438 "PolicyRule instances or CompoundPolicyAction instances.") ]
1439 CIM_Policy REF GroupComponent;
1440 [Override ("PartComponent"), Description (
1441 "A PolicyAction aggregated by a PolicyRule or "
1442 "CompoundPolicyAction.") ]
1443 CIM_PolicyAction REF PartComponent;
1444 [Description (
1445 "ActionOrder is an unsigned integer 'n' that indicates the "
1446 "relative position of a PolicyAction in the sequence of"
1447 "actions associated with a PolicyRule or "
1448 "CompoundPolicyAction. When 'n' is a positive integer, it "
1449 "indicates a place in the sequence of actions to be "
1450 kumpf 1.1 "performed, with smaller integers indicating earlier "
1451 "positions in the sequence. The special value '0' indicates "
1452 "'don't care'. If two or more PolicyActions have the same "
1453 "non-zero sequence number, they may be performed in any "
1454 "order, but they must all be performed at the appropriate "
1455 "place in the overall action sequence. \n"
1456 "\n"
1457 "A series of examples will make ordering of PolicyActions "
1458 "clearer: \n"
1459 " o If all actions have the same sequence number, \n"
1460 " regardless of whether it is '0' or non-zero, any \n"
1461 " order is acceptable. \n"
1462 " o The values: \n"
1463 " 1:ACTION A \n"
1464 " 2:ACTION B \n"
1465 " 1:ACTION C \n"
1466 " 3:ACTION D \n"
1467 " indicate two acceptable orders: A,C,B,D or C,A,B,D, \n"
1468 " since A and C can be performed in either order, but \n"
1469 " only at the '1' position. \n"
1470 " o The values: \n"
1471 kumpf 1.1 " 0:ACTION A \n"
1472 " 2:ACTION B \n"
1473 " 3:ACTION C \n"
1474 " 3:ACTION D \n"
1475 " require that B,C, and D occur either as B,C,D or as \n"
1476 " B,D,C. Action A may appear at any point relative to \n"
1477 " B, C, and D. Thus the complete set of acceptable \n"
1478 " orders is: A,B,C,D; B,A,C,D; B,C,A,D; B,C,D,A; \n"
1479 " A,B,D,C; B,A,D,C; B,D,A,C; B,D,C,A. \n"
1480 "\n"
1481 "Note that the non-zero sequence numbers need not start with "
1482 "'1', and they need not be consecutive. All that matters is "
1483 "their relative magnitude.") ]
1484 uint16 ActionOrder;
1485 };
1486
1487
1488 // ==================================================================
1489 // PolicyActionInPolicyRule
1490 // ==================================================================
1491 [Association, Aggregation, Version ("2.6.0"), Description (
1492 kumpf 1.1 "A PolicyRule aggregates zero or more instances of the "
1493 "PolicyAction class, via the PolicyActionInPolicyRule "
1494 "association. A Rule that aggregates zero Actions is not "
1495 "valid--it may, however, be in the process of being entered "
1496 "into a PolicyRepository or being defined for a System. "
1497 "Alternately, the actions of the policy may be explicit in "
1498 "the definition of the PolicyRule. Note that a PolicyRule "
1499 "should have no effect until it is valid. \n"
1500 "\n"
1501 "The Actions associated with a PolicyRule may be given a "
1502 "required order, a recommended order, or no order at all. "
1503 "For Actions represented as separate objects, the "
1504 "PolicyActionInPolicyRule aggregation can be used to express "
1505 "an order. \n"
1506 "\n"
1507 "This aggregation does not indicate whether a specified "
1508 "action order is required, recommended, or of no "
1509 "significance; the property SequencedActions in the "
1510 "aggregating instance of PolicyRule provides this "
1511 "indication.") ]
1512 class CIM_PolicyActionInPolicyRule : CIM_PolicyActionStructure {
1513 kumpf 1.1 [Override ("GroupComponent"), Aggregate, Description (
1514 "This property represents the PolicyRule that "
1515 "contains one or more PolicyActions.") ]
1516 CIM_PolicyRule REF GroupComponent;
1517 [Override ("PartComponent"), Description (
1518 "This property holds the name of a PolicyAction "
1519 "contained by one or more PolicyRules.") ]
1520 CIM_PolicyAction REF PartComponent;
1521 };
1522
1523
1524 // ==================================================================
1525 // PolicyActionInPolicyAction
1526 // ==================================================================
1527 [Association, Aggregation, Version ("2.6.0"), Description (
1528 "PolicyActionInPolicyAction is used to represent the "
1529 "compounding of policy actions into a higher-level policy "
1530 "action.") ]
1531 class CIM_PolicyActionInPolicyAction : CIM_PolicyActionStructure {
1532 [Override ("GroupComponent"), Aggregate, Description (
1533 "This property represents the CompoundPolicyAction that "
1534 kumpf 1.1 "contains one or more PolicyActions.") ]
1535 CIM_CompoundPolicyAction REF GroupComponent;
1536 [Override ("PartComponent"), Description (
1537 "This property holds the name of a PolicyAction "
1538 "contained by one or more CompoundPolicyActions.") ]
1539 CIM_PolicyAction REF PartComponent;
1540 };
1541
1542
1543 // ==================================================================
1544 // PolicyContainerInPolicyContainer
1545 // ==================================================================
1546 [Association, Aggregation, Version ("2.6.0"), Description (
1547 "A relationship that aggregates one or more lower-level "
1548 "ReusablePolicyContainer instances into a higher-level "
1549 "ReusablePolicyContainer.") ]
1550 class CIM_PolicyContainerInPolicyContainer: CIM_SystemComponent {
1551 [Override ("GroupComponent"), Aggregate, Description (
1552 "A ReusablePolicyContainer that aggregates other "
1553 "ReusablePolicyContainers.") ]
1554 CIM_ReusablePolicyContainer REF GroupComponent;
1555 kumpf 1.1 [Override ("PartComponent"), Description (
1556 "A ReusablePolicyContainer aggregated by another "
1557 "ReusablePolicyContainer.") ]
1558 CIM_ReusablePolicyContainer REF PartComponent;
1559 };
1560
1561
1562 // ==================================================================
1563 // PolicyRepositoryInPolicyRepository *** deprecated
1564 // ==================================================================
1565 [Association, Aggregation,
1566 DEPRECATED {"CIM_PolicyContainerInPolicyContainer"},
1567 Version ("2.7.0"), Description (
1568 "The term 'PolicyRepository' has been confusing to both "
1569 "developers and users of the model. The replacement class "
1570 "name describes model element properly and is less likely "
1571 "to be confused with a data repository. ContainedDomain is a "
1572 "general purpose mechanism for expressing domain hierarchy. \n"
1573 "\n"
1574 "A relationship that aggregates one or more lower-level "
1575 "PolicyRepositories into a higher-level Repository.") ]
1576 kumpf 1.1 class CIM_PolicyRepositoryInPolicyRepository : CIM_SystemComponent {
1577 [Override ("GroupComponent"), Aggregate,
1578 Deprecated {"CIM_PolicyContainerInPolicyContainer.GroupComponent"},
1579 Description (
1580 "A PolicyRepository that aggregates other Repositories.") ]
1581 CIM_PolicyRepository REF GroupComponent;
1582 [Override ("PartComponent"),
1583 Deprecated {"CIM_PolicyContainerInPolicyContainer.PartComponent"},
1584 Description (
1585 "A PolicyRepository aggregated by another Repository.") ]
1586 CIM_PolicyRepository REF PartComponent;
1587 };
1588
1589
1590 // ==================================================================
1591 // ReusablePolicy
1592 // ==================================================================
1593 [Association, Version ("2.6.0"), Description (
1594 "The ReusablePolicy association provides for the reuse of any "
1595 "subclass of Policy in a ReusablePolicyContainer.") ]
1596 class CIM_ReusablePolicy : CIM_PolicyInSystem {
1597 kumpf 1.1 [Override ("Antecedent"), Max (1), Description (
1598 "This property identifies a ReusablePolicyContainer that "
1599 "provides the administrative scope for the reuse of the "
1600 "referenced policy element.") ]
1601 CIM_ReusablePolicyContainer REF Antecedent;
1602 [Override ("Dependent"), Description (
1603 "A reusable policy element.") ]
1604 CIM_Policy REF Dependent;
1605 };
1606
1607
1608 // ==================================================================
1609 // ElementInPolicyRoleCollection
1610 // ==================================================================
1611 [Association, Aggregation, Version ("2.7.0"),
1612 Description (
1613 "An ElementInPolicyRoleCollection aggregates zero or more "
1614 "ManagedElement subclass instances with a "
1615 "PolicyRoleCollection object that represents a role played "
1616 "by these ManagedElements.") ]
1617 class CIM_ElementInPolicyRoleCollection : CIM_MemberOfCollection {
1618 kumpf 1.1 [Override ("Collection"), Aggregate,
1619 Description ("The PolicyRoleCollection.") ]
1620 CIM_PolicyRoleCollection REF Collection;
1621 [Override ("Member"), Description (
1622 "The ManagedElement that plays the role represented by "
1623 "the PolicyRoleCollection.") ]
1624 CIM_ManagedElement REF Member;
1625 };
1626
1627
1628 // ==================================================================
1629 // PolicyRoleCollectionInSystem
1630 // ==================================================================
1631 [Association, Version ("2.7.0"), Description (
1632 "PolicyRoleCollectionInSystem is an association used to "
1633 "establish a relationship between a collection and an "
1634 "'owning' System such as an AdminDomain or ComputerSystem." ) ]
1635 class CIM_PolicyRoleCollectionInSystem: CIM_HostedCollection {
1636 [Override ("Antecedent"), Min (1), Max (1), Description (
1637 "The parent system responsible for the collection.") ]
1638 CIM_System REF Antecedent;
1639 kumpf 1.1 [Override ("Dependent"),
1640 Description ("The Collection.") ]
1641 CIM_PolicyRoleCollection REF Dependent;
1642 };
1643
1644
1645 // ==================================================================
1646 // PolicyConditionInPolicyRepository *** deprecated
1647 // ==================================================================
1648 [Association, DEPRECATED {"CIM_ReusablePolicy"},
1649 Version ("2.7.0"), Description (
1650 "The ReusablePolicy association is a more general relationship "
1651 "that incorporates both Conditions and Actions as well as any "
1652 "other policy subclass. \n"
1653 "\n"
1654 "A class representing the hosting of reusable "
1655 "PolicyConditions by a PolicyRepository. A reusable Policy"
1656 "Condition is always related to a single PolicyRepository, "
1657 "via this association. \n"
1658 "\n"
1659 "Note, that an instance of PolicyCondition can be either "
1660 kumpf 1.1 "reusable or rule-specific. When the Condition is rule-"
1661 "specific, it shall not be related to any "
1662 "PolicyRepository via the PolicyConditionInPolicyRepository "
1663 "association.") ]
1664 class CIM_PolicyConditionInPolicyRepository : CIM_PolicyInSystem {
1665 [Override ("Antecedent"), Max (1),
1666 Deprecated {"CIM_ReusablePolicy.Antecedent"},
1667 Description (
1668 "This property identifies a PolicyRepository "
1669 "hosting one or more PolicyConditions. A reusable "
1670 "PolicyCondition is always related to exactly one "
1671 "PolicyRepository via the PolicyConditionInPolicyRepository "
1672 "association. The [0..1] cardinality for this property "
1673 "covers the two types of PolicyConditions: 0 for a "
1674 "rule-specific PolicyCondition, 1 for a reusable one.") ]
1675 CIM_PolicyRepository REF Antecedent;
1676 [Override ("Dependent"),
1677 Deprecated {"CIM_ReusablePolicy.Dependent"},
1678 Description (
1679 "This property holds the name of a PolicyCondition"
1680 "hosted in the PolicyRepository.") ]
1681 kumpf 1.1 CIM_PolicyCondition REF Dependent;
1682 };
1683
1684
1685 // ==================================================================
1686 // PolicyActionInPolicyRepository *** deprecated
1687 // ==================================================================
1688 [Association, DEPRECATED {"CIM_ReusablePolicy"},
1689 Version ("2.7.0"), Description (
1690 "The ReusablePolicy association is a more general relationship "
1691 "that incorporates both Conditions and Actions as well as any "
1692 "other policy subclass. \n"
1693 "\n"
1694 "A class representing the hosting of reusable "
1695 "PolicyActions by a PolicyRepository. A reusable Policy"
1696 "Action is always related to a single PolicyRepository, "
1697 "via this association. \n"
1698 "\n"
1699 "Note, that an instance of PolicyAction can be either "
1700 "reusable or rule-specific. When the Action is rule-"
1701 "specific, it shall not be related to any "
1702 kumpf 1.1 "PolicyRepository via the PolicyActionInPolicyRepository "
1703 "association.") ]
1704 class CIM_PolicyActionInPolicyRepository : CIM_PolicyInSystem {
1705 [Override ("Antecedent"), Max (1),
1706 Deprecated {"CIM_ReusablePolicy.Antecedent"},
1707 Description (
1708 "This property represents a PolicyRepository "
1709 "hosting one or more PolicyActions. A reusable "
1710 "PolicyAction is always related to exactly one "
1711 "PolicyRepository via the PolicyActionInPolicyRepository "
1712 "association. The [0..1] cardinality for this property "
1713 "covers the two types of PolicyActions: 0 for a "
1714 "rule-specific PolicyAction, 1 for a reusable one.") ]
1715 CIM_PolicyRepository REF Antecedent;
1716 [Override ("Dependent"),
1717 Deprecated {"CIM_ReusablePolicy.Dependent"},
1718 Description (
1719 "This property holds the name of a PolicyAction"
1720 "hosted in the PolicyRepository.") ]
1721 CIM_PolicyAction REF Dependent;
1722 };
1723 kumpf 1.1
1724
1725 // ===================================================================
1726 // end of file
1727 // ===================================================================
|