RE: PCLS classes deprecated in PCELS

John Strassner <[email protected]> Mon, 15 Sep 2003 07:14:41 -0600
Newsgroups gmane.ietf.policy
Message-ID <[email protected]>
Comments inline; please look for <js>..</js>. In general, I think that the
prefix "pcim" is misused in PCELS - this implies that PCELS is truly an
update and is using the same schema, whereas in reality PCELS is a new
design and is building a different schema that in its proposal is
incompatible is some important, fundamental ways. So why not use a new
prefix - pcime or pcels - to indicate this for the new classes proposed?

regards,
John

John C. Strassner
Chief Strategy Officer
Intelliden Inc.
90 South Cascade Avenue
Colorado Springs, CO  80906  USA
phone:  +1.791.785.0648
  fax:     +1.719.785.0644
email:    [email protected]


> -----Original Message-----
> From: Ryan Moats [mailto:[email protected]]
> Sent: Tuesday, September 09, 2003 8:26 AM
> To: Pana, Mircea
> Cc: '[email protected]'; '[email protected]'
> 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?

<js> While it is true that PCIMe did deprecate concepts in PCIM, this was
done with interoperability in mind. PCELS seems to have considered the
design as a clean slate, as opposed to maximizing interoperability. Also,
note that there is a huge difference between RFC3460, which is an
information model, and PCELS, which is a data model. </js>

> | 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".

<js> I agree with Ryan </js> 

> | 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.

<js> I agree with Ryan. This isn't an update as much as it is a redesign.
</js>

> | 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.

<js> I'd like to know why you think deprecating an existing class and
introducing incompatibility with existing implementations is better? </js>

> | 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.

<js> This is confusing. You've changed the name of the LDAP class but kept
the name of its attributes! You've therefore broken the LDAP class, as its
OID is related to its class name, and further confused things by trying to
move already assigned OIDs of attributes in the original definition of the
class to a new class. This needs to be fixed. In addition, you're assuming
that the semantics of aggregating a condition inside a condition are the
same as the semantics of aggregating a condition inside a rule. Even if that
is correct (which I'm not sure it is) this is a dangerous assumption,
because in subsequent implementations if this does change, you can't
accommodate these changes. </js>

> | 5. pcimRuleActionAssociation - same suggestion as for the
> | pcimRuleConditionAssociation class
> 
> This is a much better solution...

<js> I disagree with Ryan here - see above </js>

> | 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.

<js> To be honest, I've never agreed with that reasoning, since the four-box
picture represents an unrealistic, simplistic architecture. But if you are
going to do this, handling this with a subclass as Ryan suggests would be
acceptable. </js>

> Ryan
> 
> _______________________________________________
> Policy mailing list
> [email protected]
> https://www1.ietf.org/mailman/listinfo/policy