[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