[Nut-upsdev] NUT PSU/IPMI driver using FreeIPMI (was: [Freeipmi-devel] in need of guidance...)
Albert Chu
chu11 at llnl.gov
Wed Jul 20 23:47:28 UTC 2011
Hey Arnaud,
On Wed, 2011-07-20 at 13:29 -0700, Arnaud Quette wrote:
> Hey Al,
>
> 2011/7/19 Albert Chu <chu11 at llnl.gov>
> > (...)
> > I assuming you mean libipmidetect? libipmidetect is
> primarily
> > used for
> > detecting if ipmi over LAN exists, not for
> identifying any
> > particular
> > component. Not sure if it would be any use for you.
> >
> > understood. we may have needs in the future, to do the same
> detection
> > over the network.
> > but for now, I've released a preliminary version of
> 'nut-ipmipsu',
> > which supports only FRU info retrieval.
> > It is available in NUT trunk, includes an m4 macro (ready
> for
> > pkgconfig, but currently using AC_CHECK_HEADERS/FUNCS), and
> an
> > abstracted IPMI implementation (only provided by FreeIPMI).
> >
> > I still have to had the sensor's info, and have 2 questions
> for you:
> > - is there a way to automatically determine which sensor is
> attached
> > to an FRU?
> > Ie, I've found that the first PSU is ID 2. But how do I know
> that
> > sensor X is the one attached to this board?
>
>
>
> Whew. It's not going to be easy. The current FRU format does
> not
> support information to point you to the specific sensor
> record.
>
> that's sad, since to an IPMI newbie like me, such a reference seems
> obviously required and mandatory.
> I was pretty sure that I was missing something around the sensor owner
> ID, order of appearance (ie the 1rst PSU FRU with the first PSU
> sensor) or alike.
>
> If you tried to match power supply names (e.g. "PS 1"), that
> would
> probably work for many motherboards. However, there is no
> guarantee
> that a motherboard would ensure the FRU power supply name
> matches the
> sensor one. In fact, I looked at one motherboard I have here,
> and they
> don't match.
>
> I *think* there is another way, but it gets complicated. You
> start to
> dig into a lot of IPMI specifics and nuances (which most of
> the FreeIPMI
> libraries naturally try to hide).
>
> If you take a look at the original ipmi-fru code,
> run_cmd_args() has a
> loop that loops through the sensor data repository (where
> records on
> each sensor are kept). That's where ipmi-fru finds the device
> IDs (e.g.
> ID 2) to look through. In the FRU SDR entry, there is another
> field for
> an fru_entity_id and fru_entity_instance (see
> freeipmi/templates/ipmi-sdr-record-format-templates.h). That
> entity ID
> and instance could be mapped to the entity-id/instance for the
> sensor
> SDR records (in combination w/ checking the sensor-type and a
> few other
> fields). This will probably work on most motherboards.
>
> However, this later part is quite complicated. You'd be
> scanning/parsing the SDR manually to find these little bits
> b/c it isn't
> normally available in libipmimonitoring.
>
> This is such a unique case, I doubt it'd be something that
> would "fit"
> along with any of the current freeipmi libraries. I can help
> you write
> something for NUT that is specific for your needs though. It
> can scan
> for FRU entries, then perhaps scan for sensor entries, and
> give you back
> record IDs?? Which can subsequently be pumped into
> libipmimonitoring
> for the specific sensors??
>
> I understand ;-)
> do you think it involves duplicating a large chunk of the libs?
I doubt it would be a tremendous amount of code.
> I'm trying to weight the pros and cons, and still consider a simple
> default (that works enough) with override params for nut-ipmipsu.
> ie, default to the order of appearance (I still have to "validate"
> this), and provide psuID and sensorID params to force targets if this
> doesn't work.
>
> your help is still welcome, obviously. so thanks for your offer ;-)
No prob.
> > - the things I'm using to parse FRU (like
> ipmi_fru_parse_ctx_create)
> > and other things (lie ipmi_ctx_find_inband) are not
> available in
> > 0.7.17 (the base I'm working on, Ubuntu up to 11.04).
> > I've dug quickly the ChangeLog, but was not able to identify
> clearly
> > when these functions were added.
> > What is the minimal FreeIPMI required?
>
>
> Most of these were added in FreeIPMI 0.8.1. Many of the core
> functions
> were initially only in tools and in FreeIPMI 0.8.1 they were
> "library-ized". There could be an odd-ball function here or
> there that
> were added in FreeIPMI 1.0.1, but I think you'd be safe with
> 0.8.1.
>
> thanks for these hints.
> I'll do some compilation testing to validate the final code.
>
>
> >
> > >
> > > Hopefully that's enough to get you going.
> LMK if
> > you need
> > > some help
> > > deciphering the code more.
> > >
> > > this should not be needed, but thanks for your
> kind
> > proposition.
> > >
> > > but you should probably publish this code in
> examples/, with
> > a name
> > > like "simple-ipmi-fru.c" or alike, and highlight
> this code
> > sample a
> > > bit.
> >
> >
> > That's the plan eventually :P
> >
> > so I've a minor patch for you (attached) ;)
> > it fixes indentation (replace tabs by spaces), and a typo on
> > 'frequenc*e*y'.
> > it may also be interesting to give the example compilation
> line in the
> > file header...
>
>
> Somehow the patch came to me as 0 byte in length. Could you
> try again?
>
> strange!
> I've checked my sent mail and it was 18 Kb.
> anyway, it's attached again.
I got it this time. Yeah, the tabbing issue was me hacking together an
example too quickly. But the typo I can put into the mainline code.
> btw, have you been able to read my "improvement ideas" mail?
Yeah, I read it awhile back. Like many projects, there is a bit of a
momentum thing going on. I sort of logged it to memory as something for
the future to consider.
Al
> cheers,
> Arno
>
--
Albert Chu
chu11 at llnl.gov
Computer Scientist
High Performance Systems Division
Lawrence Livermore National Laboratory
More information about the Nut-upsdev
mailing list