Thanks for the replies.  Based on the responses, I believe I
will disable the service when no BMC is detected.

(sorry not to respond sooner - I was on vacation).

Cathy


Michael Shapiro wrote:

>>Quoth Cathy Thomas on Fri, Nov 17, 2006 at 12:58:50PM -0800:
>>
>>>My service (ipmievd) will not run if the local host does not have
>>>a BMC device available. ipmievd itself will return a 1 and give an
>>>error message that "no BMC is available".
>>
>>...
>>
>>You currently have three options:
>>
>>  1. The start method detects that the BMC is unavailable (either by
>>     itself or through the daemon) and reports a fatal error to SMF.
>>     The service ends up in the maintenance state.
>>
>>  2. The start method detects that the BMC is unavailable and disables
>>     the service.  The service ends up in the disabled state.
>>
>>  3. Even though the daemon detects that there is no BMC device, it
>>     stays running, presumably doing nothing.  The start method reports
>>     success and the sevice enters and stays "online".
>>
>>Before I recommend one, can you explain what your daemon does?  In
>>particular, why the BMC device is required and why anyone would want to
>>enable or disable it.
> 
> 
> ipmievd listens for IPMI events over the BMC device, and then can syslog
> some of the results (e.g. if an IPMI event is posted saying that some
> h/w failed).  Aside: this is an opensource thing; the actual Solaris
> functionality here should be done using FMA, but that's another story ...
> 
> In terms of the daemon, I think the only sensible behavior is (2). (1) doesn't
> make sense because there's nothing broken -- i.e. nothing for someone to
> repair.  (3) might make sense for some daemons, but not this one, because
> fundamentally if there is no BMC it means the platform has none -- this isn't
> a DR'able resource, and thus you're just wasting CPU + memory.  Plus ipmievd
> being a bunch of open source, it likely just fails or exits if BMC is missing.
> 
> That said, I'd really like to see the SMF RFE implemented to provide a
> supported exit status for this.  In particular, a service calling disable -t
> on itself in these situations in confusing.  Ideally what we want is the
> effect of disable or disable -t, but synchronously as part of the method
> exiting, and also with some appropriate auxiliary status such that when I
> do a svcs -x on it I don't get the same result as I would if I had typed
> svcadm disable by hand.  In other words, we don't want to report these things
> as "disabled by administrator", we want separate reporting to indicate that
> "service disabled itself because it has nothing to do" or somesuch.
> 
> One final comment here: although the above mechanism could be used for ipmievd
> and definitely is needed for a few other things, it's also worth noting that
> ipmievd's needs could be expressed in a different way: namely as a device
> dependency.  That is, another potential missing mechanism in SMF which we had
> discussed long ago was a dependency on a /dev path, which is really what
> ipmievd is trying to express.  This is even more conducive to the kind of 
> reporting I mention above, because svcs -x would then be able to produce
> a message of the form "disabled because /dev/bmc isn't present on your system"
> 
> So while the ipmievd team can work around the absence of either feature now
> by doing (2), it would be nice to see one or both of these capabilities added.
> 
> -Mike


Reply via email to