[Planetlab-devel] Re: API merge between planetlab & onelab

Thierry Parmentelat thierry.parmentelat at sophia.inria.fr
Thu Aug 30 04:42:16 EDT 2007


Hi Tony
Thanks for your interest
Please see my answers in the text
-- Thierry

> Keeping AdmGenerateNodeConfFile.py for the time being. 
Fine with me
> util.py may be used to test the build, but not completely sure. 
I had a closer look, this file (in your cvs only) is a sequel of the 
TestPeers.py stuff, you can safely get rid of it IMO
> views.sql isn't in our branch.
right, I screwed up on that one.
> I plan on adding the db migration scripts functionality you've 
> developed as a means to verify current and future db schema upgrades, 
> but will keep planetlab4.sql schema up to with the changes as well. 
OK, we're in sync here, that's what I've done with planetlab4.sql
> I will add your GetPlcRelease to the api. 
OK
> We dont really need NotifySupport. 
We do. Our site registration web page needs to send e-mails to the 
support mailing list.
> Im not familiar with the NodeNetworkSettings object. Can you give me 
> more info on what you are using it for.
This is a hook system, for attaching extra settings (e.g. wireless 
SSID). It is designed after SliceAttributesTypes and SliceAttributes. 
You would first define a NodeNetworkSettingType that denotes wireless 
SSID, and then use it to attach a value to a nodenetwork. I am attaching 
an example.

IMPORTANT NOTE. Somehow I forgot to mention PLC/Methods/GetBootMedium.py 
that is a new method on our side
Right now our web pages use exclusively this method rather that the 
former AdmGenerateNodeConfFile
For some reason your web pages currently seem to bypass this API call 
and directly invoke bootcustom.sh, I have no clue why, but in any case 
if we are to merge this method is of vital interest to us.
> ========== Most problematic:
> PLC/NodeNetworks.py 
We use a view rather than a table for fetching these objects now because 
of nodenetwork settings - we need a means to compute 
nodenetworks_setting_ids
> ----------
> PLC/Methods/BootUpdateNode.py
>     attach event to node - not sure that's still useful
>
>
> No need to explicitly attach an event to this call because the node_id 
> of the node making the call is stored in Events.node_id (this is true 
> for all the Boot... calls). BTW until all boot called were logged in 
> the api even when api call logging (debug mode) was turned off. Now, 
> these boot calls are
> only logged if they produce an error (just like every other call).
OK I've rolled back this change, we're in sync on that file. This 
probably raises more questions on our side about the general topic "how 
to use events from the web pages" but that's another story. I'll check 
how our events web page behaves with this merged API and will come back 
to you guys if needed.
>
> PLC/Nodes.py
> last_contact : I have commented this out - cannot remember why     I 
> should probably have re-enabled it, your feedback is appreciated
OK I'm back with last_contact enabled
> I have some other minor questions/comments. Ill catch you sometime online
you're welcome
-------------- next part --------------
>>> # list the node network settings currently available 
>>> for nnst in GetNodeNetworkSettingTypes({},['category','name','description']): 
... print nnst 
... 
{'category': u'wlan', 'name': u'channel', 'description': u'Wifi Channel'} 
{'category': u'general', 'name': u'interface_name', 'description': u'custom interface name'} 
{'category': u'wlan', 'name': u'ssid', 'description': u'Wifi ESSID'} 

>>> # fetch a given node's nodenetworks 
>>> GetNodes('galileo.inria.fr')[0]['nodenetwork_ids'] 
[28, 29] 
>>> # or locate a nodenetwork from its ip address 
>>> GetNodeNetworks( 
{'ip':'138.96.250.50'},['nodenetwork_id']) 
[ {'nodenetwork_id': 29}] 

>>> # inspect current settings on nodenetwork 29 
>>> for nns in GetNodeNetworkSettings( 
{'nodenetwork_id':29},\ 
['category','name','description','value']): 
... print nns 
... 
{'category': u'wlan', 'name': u'ssid', 'value': u'onelab-g', 'description': u'Wifi ESSID'} 

>>> # Create a new setting type 
>>> AddNodeNetworkSettingType( {'category':'general','min_role_id':20,\ 
'name':'driver', 'description':'allows to specify the Linux driver to use' 
}) 

>>> # retrieve it 
>>> GetNodeNetworkSettingTypes( {'name':'driver'}) 
[ {'category': u'general', 'nodenetwork_setting_type_id': 5, 'min_role_id': 20, \ 
'name': u'driver', 'description': u'allows to specify the Linux driver to use' }] 

>>> # set a value for this setting type on the 29 network interface 
>>> AddNodeNetworkSetting(29,'driver','ath_pci') 
13 

>>> # inspect again nodenetwork 29 
>>> for nns in GetNodeNetworkSettings( {'nodenetwork_id':29}, ['category','name','value']): 
... print nns 
... 
{'category': u'wlan', 'name': u'ssid', 'value': u'onelab-g'} 
{'category': u'general', 'name': u'driver', 'value': u'ath_pci'} 

>>> # fetch ids for deletion 
>>> for nns in GetNodeNetworkSettings( {'nodenetwork_id':29},['name','nodenetwork_setting_id']): 
... print nns 
... 
{'name': u'ssid', 'nodenetwork_setting_id': 12} 
{'name': u'driver', 'nodenetwork_setting_id': 13} 

>>> # delete the setting 
>>> DeleteNodeNetworkSetting(13) 
1 

>>> # inspect again nodenetwork 29 
>>> for nns in GetNodeNetworkSettings( 
{'nodenetwork_id':29},['category','name','value']): 
... print nns 
... 
{'category': u'wlan', 'name': u'ssid', 'value': u'onelab-g'} 


More information about the Devel mailing list