Hi all, Per some initial feedback from Jean and Dave I've come to round two. Here are a few fixes for Python objects which had reference counts which were wrong (memory leaks) and I've added support for specifying the FMRI for AISCF() objects bringing them closer to being fully general.
The diffs can be found at: http://cr.opensolaris.org/~clayb/10740/webrev_1_2_diff/ Or the full webrev at: http://cr.opensolaris.org/~clayb/10740/webrev2/ Thank you, Clay On Wed, 19 Aug 2009, Clay Baenziger wrote: > Hi all, > I believe the code is stable, clean, builds correctly and ready for a > full code review. I've implemented the last necessary for the library. Now, > one can view an instance's state (online, offline, maintenance, etc.) and one > can change the state too. For example: >>>> libaiscf.AISCF().state > 'online' >>>> libaiscf.AISCF().state="DISABLE" > [wait a bit (~5 sec), or it'll return online still] >>>> libaiscf.AISCF().state > 'offline' > > Webrev now at: > http://cr.opensolaris.org/~clayb/10740/webrev/ > > Thank you, > Clay > > On Tue, 18 Aug 2009, Clay Baenziger wrote: > >> Hi all, >> I've written a Python<->C bridge for libaiscf. It provides a few ways >> to interact with SMF. I'm looking for some folks to look the code over for >> memory management issues, for any potential SMF issues or any other issues >> others might see. This code has not be whacked to be c-style happy, so >> don't worry about that unless you really want. >> I am having issues with the delete section of >> AIservice_set_subscript(), if anyone has any suggestions what might be >> happening (dbx stack trace included). This is triggered when one tries to >> delete a property via: >> del(libaiscf.AIservice(libaiscf.AISCF(),"test")['status']) >> >> Thank you, >> Clay >> >> Webrev is at: >> http://cr.opensolaris.org/~clayb/10740/webrev_prelim1/ >> >> How the module works: >> --------------------- >> To load the module, one runs >> import libaiscf >> >> Then to create an SMF instance object, one can run >> (for svc:/system/install/server:default) >> instance=libaiscf.AISCF() >> (for svc:/system/install/server:someThingElse) >> instance=libaiscf.AISCF("someThingElse") > > This has changed to: > instance=libaiscf.AISCF(instance="someThingElse") > >> Further, to create an AI service object, one runs: > > For clarification, this is just an SMF property group representation > >> service=libaiscf.AIservice(instance,"serviceName") >> >> To see a property key under the service, one can do: >> service['boot-dir'] (which returns the string value or a KeyError as a >> dictionary would if the key doesn't exist) >> To set or change a property under the service, one can do: >> serivce['boot-dir']="/var/ai/service1_image" >> >> All actions query SMF and no data is cached in case something changes under >> the consumer. All actions are handed to SMF when executed. Other functions >> implemented can be read in the PyDoc output for the module, here attached. >