David Bustos writes:
> Quoth UNIX admin on Thu, Jan 04, 2007 at 03:40:41PM -0800:

> > Which means both Sun and I should implement refresh methods at
> > instance levels, correct?  If that's so, it's too bad we have to
> > duplicate/double the work.
> 
> Right.  It depends on whether we want to accommodate non-BIND servers as
> network/dns/server.  My intuition says "we do", but some on our team
> think otherwise.  Keep an eye on 6509773, I suppose.

You're inferring something from my comment in that bug that I neither
stated nor implied. 

I specifically raised the issue that dns/server is designed to support 
multiple instances running simultaneously, for the implementation that 
we deliver in Solaris.  That issue is a reason why a simple move of the 
dns/server properties (namely methods and a couple dependencies which 
are likely equivalent across all dns/server implementations) to the 
instance isn't an obviously correct solution to me at this point.

If svccfg import didn't have the bug where multiple manifests defining 
the same service stomped all over each other, the situation would be 
far less severe and warrants more careful evaluation of the resolution.

Specifically, I believe the dns/server example points to a conflict in
potential use of service versus instances:  (UNIX admin alludes to this
as well)

1) Different instances may be used to describe different implementations
   of a service which equally satisfy the same dependency.  e.g. the
   sendmail/postfix/etc. or syslogd/syslog-ng cases.  Configuration 
   (including method or dependency) sharing among instances is undesirable,
   as the implementations may be different.

2) Different instances may be used in cases where it is appropriate
   to have multiple copies of the same daemon running.  This is the
   dns/server case as we deliver it today -- in this case, 
   configuration sharing is appropriate and desirable.  Methods,
   dependencies, and some parts of the configuration should be shared
   among instances and specified once, versus on every individual
   instance.

   This case gets complex when the potentially multi-instance service
   is commonly replaced/augmented with a different implementation.

3) Some combination of the above two where much of the implementation is
   shared, except for 'a little bit'.

Blindly moving all configuration to the instance works around the 
current svccfg import bug, but at the expense of forcing configuration 
duplication that's hard to upgrade in cases like our current dns/server.
It's particularly nasty to consider the scenario where someone's 
installed two different applications which implement dns/server, 
created instances for both of them, then the bundled dns/server 
implementation needs to change its methods.  If we go with your 
proposed solution to 6509773, it's back to grotty shell scripting to 
determine which instances need to be upgraded.  And even that may break.

If, instead, svccfg import works in the face of multiple manifests with 
the same service, the common implementations of dns/server replacement would
just work with the dns/server manifest we're shipping today -- the new
delivered instance would just override the methods.  I acknowledge that 
isn't necessarily architecturally pure.

A better solution is desired.  Templates and using templates for some 
sort of 'instance cloning' may be part of the answer (or may not), but 
mean that I'd like to make it through the templates implementation 
first before completely discarding the notion that we could address 
situations 2 and 3 above elegantly.

liane
-- 
Liane Praza, Solaris Kernel Development
liane.praza at sun.com - http://blogs.sun.com/lianep



Reply via email to