Subject: RE: [Policy] PCLS classes deprecated in PCELS

From: "Pana, Mircea" <[email-masked]>
Date: Thu, 11 Sep 2003 17:21:42 -0500

IMO the usage of schema items corresponding to deprecated concepts would be
in conflict with the model (in this case PCIMe). However, a "peaceful
co-existence" would be a very good reason for compromise. The following
proposal gets PCELS out of the "policing business" and where compliance with
PCIMe requires PCLS classes or attributes not to be used, this is noted with
the specific indication "for compliance with PCIMe implementations
shall/shall not use ..." (or rather SHALL / SHALL NOT). I hope you will find
the following acceptable:

1. Replace the pcimGroupContainmentAuxClass class deprecation with a
paragraph to indicate that "for compliance with PCIMe, implementations shall
use the pcimPolicySet.pcimPolicySetComponentList attribute and a
subordinated pcimPolicySetAssociation entry instead of an attached
pcimGroupContainmentAuxClass to aggregate Policy Groups in a Policy Group,
Rule or System". 

2. Replace the pcimRuleContainmentAuxClass class deprecation with a
paragraph to indicate that "for compliance with PCIMe,  implementations
shall use the pcimPolicySet.pcimPolicySetComponentList attribute and a
subordinated pcimPolicySetAssociation entry instead of an attached
pcimRuleContainmentAuxClass to aggregate Policy Rules in a Policy Group,
Rule or System". 

3. The pcimRule* classes would not be deprecated. Instead, the abstract
class pcimRule would be modified to become a subclass of the abstract class
pcimPolicyRule defined in PCELS. A note would be added to indicate that "for
compliance with PCIMe, implementations shall not use the
pcimRule.pcimRulePriority attribute". See also Note_1 below.

4. The class pcimRuleConditionAssociation would be modified to become
subclass of the pcimConditionAssociation class.

5. The class pcimRuleActionAssociation would be modified to become subclass
of the pcimActionAssociation class.

6. The pcimRepository* classes would not be deprecated. Instead the abstract
class pcimRepository would be modified to become subclass of the abstract
class pcimReusableContainer defined in PCELS. PCELS would indicate that "for
compliance with PCIMe, the pcimReusableContainer* classes shall be used
instead of the pcimRepository* classes".

Note_1:
Without other changes, the pcimRule would end up having redundant
functionality:
- pcimRuleConditionList and pcimConditionList for aggregating conditions
- pcimRuleActionList and pcimActionList for aggregating actions
etc.

A. One option would be to do nothing about it but this may lead to ambiguous
situations :-(

B. A second option would be to use the pcimRuleConditionAssociation and the
pcimRuleActionAssociation attributes and the association classes defined by
PCLS in the definition of the pcimPolicyRule. In this case the
pcimPolicyRule* and pcimCompound*AuxClass would not use the same attributes
and association classes to aggregate Conditions and Actions :-(

C. A third option would be to change the pcimPolicyRule definition to:
   ( [...] SUP pcimPolicySet
     ABSTRACT
     MAY ( pcimRuleName
         $ pcimRuleEnabled
         $ pcimRuleValidityPeriodList
         $ pcimRuleUsage
         $ pcimRuleMandatory )
   )
(Condition and Action aggregation attributes removed from the Rule class)
In this case, PCELS would recommend the use of attached
pcimCompound*AuxClass instances as means to aggregate multiple
Actions/Conditions to a Rule.

D. A mix of the previous two: Option B with a note that implementations MAY
choose to support only C.

Comments and suggestions would be greatly appreciated? Also, I would greatly
appreciate the PCIMe author's opinion wrt. the [non]deprecation.

Thanks,
Mircea.

> -----Original Message-----
> From: Ryan Moats [mailto:[email-masked]]
> Sent: Tuesday, September 09, 2003 10:26 AM
> To: Pana, Mircea
> Cc: [email-masked]'; [email-masked]'
> Subject: Re: [Policy] PCLS classes deprecated in PCELS
> 
> 
> On Thu, Sep 04, 2003 at 05:09:46PM -0500, Pana, Mircea wrote:
> | PCELS deprecates some of the PCLS classes and attributes for various
> | reasons. In some cases, deprecation could have been avoided 
> but in other
> | cases this was dictated by PCIMe. (details discussed below) 
> I agree that
> | deprecation might create backward compatibility problems 
> where PCELS and
> | PCLS implementations attempt to cooperate. BTW, does 
> anybody out there have
> | such requirements? Given that PCIMe deprecates a 
> significant number of
> | concepts from PCIM, is such cooperation even possible?
> | 
> | The classes deprecated by PCELS are discussed below:
> | 
> | 1. The class pcimGroupContainmentAuxClass defined by PCLS 
> provides a single,
> | multi-valued attribute that references a set of pcimGroups. 
> This unordered
> | aggregation mechanism can not be reused in implementations 
> of PCIMe because
> | the model (PCIMe) requires PolicySetComponent associations to be
> | prioritized:
> | "  5.5. Priorities and Decision Strategies
> |    [...] Unlike the earlier definition,
> |    PolicySetComponent.Priority MUST have a unique value 
> when compared
> |    with others defined for the same aggregating PolicySet.  
> Thus, the
> |    evaluation of rules within a set is deterministically 
> specified. "
> | If PCELS allowed pcimGroupContainmentAuxClass, then it 
> would be conflicting
> | with PCIMe.
> |
> | 2. The class pcimRuleContainmentAuxClass defined in PCLS is 
> deprecated by
> | PCELS for the same reasons.
> 
> Those are not reason to deprecate classes in the more general 
> model.  That's
> a reason to say "in this space, this other class should be used".
> 
> | 3. The pcimRule* classes defined by PCLS are deprecated and 
> redefined as
> | pcimPolicyRule* in PCELS. According to PCIMe the PolicyRule.Priority
> | property is deprecated. Therefore PCELS redefines the 
> PolicyRule class
> | mainly for removing the Priority attribute. An other option 
> would have been
> | to leave pcimRule* as they are and then PCELS would have 
> had to specify that
> | the pcimRulePriority attribute MUST NOT be used - a less 
> formal solution
> | that does not prevent accidental use of the deprecated attribute.
> |
> | An other reason for replacing the pcimRule* classes is the 
> renaming of the
> | attributes that serve in the Rule-Condition and Rule-Action 
> associations.
> | pcimRuleConditionList is replaced by pcimConditionList and
> | pcimRuleActionList is replaced by pcimActionList. Thus, the 
> new attributes
> | along with the new association classes (discussed below) 
> offer a generic
> | mechanism for aggregating Conditions or Actions. The use the same
> | Condition/Action aggregation mechanism for both Policy 
> Rules and Compound
> | Conditions/Action is an optimization in line with the 
> Policy*Structure
> | concepts defined by PCIMe.
> 
> Since you are rethinking subclass/deprication below, I'd 
> argue rethink it
> here.
> 
> | The deprecation of the pcimRule* classes is certainly not 
> the only option
> | but based on our experience implementing PCIMe this one 
> seemed an acceptable
> | compromise. However, any opinions or suggestions from the 
> WG based on their
> | experience would be greatly appreciated.
> |
> | 4. The class pcimRuleConditionAssociation defined by PCLS 
> has probably less
> | reasons to be deprecated. It was done simply to keep the Condition
> | aggregation (into rules or compound conditions) limited to a single
> | association class. Now, looking from this different 
> prospective, I think
> | that it is a good idea to retain it.
> | 
> | So, I suggest the modification of the 
> pcimRuleConditionAssociation to become
> | a subclass of the pcimConditionAssociation already defined 
> in PCELS. The
> | attributes of the pcimRuleConditionAssociation, all 
> inherited from its
> | superclass, would end up being the same ones as previously 
> defined by PCLS.
> | Thus, for aggregating Conditions into a Policy Rule, one 
> would have the
> | choice of using pcimConditionAssociation or 
> pcimRuleConditionAssociation
> | while Condition aggregation into a Compound Condition would 
> be realized only
> | through the pcimConditionAssociation class.
> | 
> | 5. pcimRuleActionAssociation - same suggestion as for the
> | pcimRuleConditionAssociation class
> 
> This is a much better solution...
> 
> | 6. The pcimRepository class defined by PCLS is deprecated 
> by PCELS for
> | reasons described in PCIMe:
> | "   Because of the potential for confusion with the Policy Framework
> |    component Policy Repository (from the four-box picture: Policy
> |    Management Tool, Policy Repository, PDP, PEP), 
> "PolicyRepository" is
> |    a bad name for the PCIM class representing a container 
> of reusable
> |    policy elements.  Thus the class PolicyRepository is 
> being replaced
> |    with the class ReusablePolicyContainer."
> 
> This could also be handled with a subclass.
> 
> Ryan
> 
> _______________________________________________
> Policy mailing list
> [email-masked]
> https://www1.ietf.org/mailman/listinfo/policy
>

---

From: Ryan Moats <[email-masked]>
Date: Thu, 11 Sep 2003 18:07:03 -0500

On Thu, Sep 11, 2003 at 05:21:42PM -0500, Pana, Mircea wrote:
| IMO the usage of schema items corresponding to deprecated concepts would be
| in conflict with the model (in this case PCIMe). However, a "peaceful
| co-existence" would be a very good reason for compromise. The following
| proposal gets PCELS out of the "policing business" and where compliance with
| PCIMe requires PCLS classes or attributes not to be used, this is noted with
| the specific indication "for compliance with PCIMe implementations
| shall/shall not use ..." (or rather SHALL / SHALL NOT). I hope you will find
| the following acceptable:
| 
| 1. Replace the pcimGroupContainmentAuxClass class deprecation with a
| paragraph to indicate that "for compliance with PCIMe, implementations shall
| use the pcimPolicySet.pcimPolicySetComponentList attribute and a
| subordinated pcimPolicySetAssociation entry instead of an attached
| pcimGroupContainmentAuxClass to aggregate Policy Groups in a Policy Group,
| Rule or System". 
| 
| 2. Replace the pcimRuleContainmentAuxClass class deprecation with a
| paragraph to indicate that "for compliance with PCIMe,  implementations
| shall use the pcimPolicySet.pcimPolicySetComponentList attribute and a
| subordinated pcimPolicySetAssociation entry instead of an attached
| pcimRuleContainmentAuxClass to aggregate Policy Rules in a Policy Group,
| Rule or System". 

I can live with these two...

| 3. The pcimRule* classes would not be deprecated. Instead, the abstract
| class pcimRule would be modified to become a subclass of the abstract class
| pcimPolicyRule defined in PCELS. A note would be added to indicate that "for
| compliance with PCIMe, implementations shall not use the
| pcimRule.pcimRulePriority attribute". See also Note_1 below.
|
| 4. The class pcimRuleConditionAssociation would be modified to become
| subclass of the pcimConditionAssociation class.
| 
| 5. The class pcimRuleActionAssociation would be modified to become subclass
| of the pcimActionAssociation class.

I can't live with these three: they would require me to change my working
implementation and change the PCLS schema. 

If you are going to do a subclass here and not break PCLS or existing
implementations, you have to go the other way:
pcimPolicyRule is a subclass of pcimRule, pcimConditionAssociation as a
subclass of pcimRuleConditionAssociation, etc.  This changes Note #1 to
what are the issues for pcimPolicyRule...

| 6. The pcimRepository* classes would not be deprecated. Instead the abstract
| class pcimRepository would be modified to become subclass of the abstract
| class pcimReusableContainer defined in PCELS. PCELS would indicate that "for
| compliance with PCIMe, the pcimReusableContainer* classes shall be used
| instead of the pcimRepository* classes".

Again, I can live with #6.

Ryan