[Planetlab-devel] API merge between planetlab & onelab
Thierry Parmentelat
thierry.parmentelat at sophia.inria.fr
Wed Aug 29 11:26:17 EDT 2007
Hi Tony
As we had agreed previously, I've been doing a tentative merge between
our variants of the API
You'll find our first candidate for this merge here
http://svn.one-lab.org/new_plc_api/tags/new_plc_api-4.0.8/
This version seems to work fine as far as 1lab is concerned
I've written a few notes on this merge in the attached memo
but you'll probably have more questions..
-- Thierry
-------------- next part --------------
new_plc_ap - attempted merge - aug. 28 2007 - Thierry Parmentelat
========================================
========== Strategy
========================================
1. I first merge your changes into my codebase.
To this end I basically compute the set of changes that you've done to your codebase
since the last time I imported (beg. of may) and now
(I've used planetlab-4_0-branch as of aub 28)
and apply thoses changes to my codebase;
2. Then I check those changes manually.
As part of that process I wrote a 008 migration,
and updated planetlab4.sql to reflect this 4.8 schema version
I did *not* adopt all the files in your codebase, see 'Only in CVS' below
I've built and tested this new version, that will get tagged as
new_plc_api-4.0.8
as soon as it validates.
3. Then I diff again this version with your codebase and write a short description
of all changes. I expect you can accept most of them.
From that we can bargain for the last changes.
========================================
========== CONTENTS before merge
========================================
* new files in CVS repo
PLC/Methods/AdmGenerateNodeConfFile.py
*not* imported in this merge - this is obsoleted by GetBootMedium
* new files in the subversion repo
refresh-peer.py
PLC/Methods/AddSession.py
PLC/Methods/AddSliceToNodesWhitelist.py
PLC/Methods/DeleteSliceFromNodesWhitelist.py
PLC/Methods/GetSessions.py
PLC/Methods/GetWhitelist.py
* footnote - in the subversion dir I had formerly cleaned up the test scripts
under tests/
the only file that could have been changed by Princeton was Test.py that I checked is intact
so this should be just cool
========================================
========== Before conflict resolution
========================================
A refresh-peer.py
C planetlab4.sql
C PLCAPI.spec
C doc/DocBook.py
C ModPython.py
C plcsh
C Makefile
C PLC/Persons.py
C PLC/EventObjects.py
C PLC/Auth.py
C PLC/Shell.py
C PLC/Method.py
C PLC/NodeNetworks.py
C PLC/PostgreSQL.py
C PLC/Events.py
M PLC/Sessions.py
C PLC/Nodes.py
C PLC/Methods/__init__.py
C PLC/Methods/DeleteSliceAttribute.py
A + PLC/Methods/AddSession.py
A + PLC/Methods/DeleteSliceFromNodesWhitelist.py
M PLC/Methods/DeleteNodeFromPCU.py
C PLC/Methods/RefreshPeer.py
C PLC/Methods/GetPeerData.py
A + PLC/Methods/GetWhitelist.py
M PLC/Methods/AddSliceToNodes.py
A + PLC/Methods/GetSessions.py
M PLC/Methods/GetNodes.py
M PLC/Methods/AddNodeToPCU.py
M PLC/Methods/BootUpdateNode.py
A + PLC/Methods/AddSliceToNodesWhitelist.py
M PLC/Methods/DeleteSliceFromNodes.py
M PLC/Methods/AddSlice.py
C PLC/Methods/GetSlivers.py
C PLC/GPG.py
M PLC/Slices.py
========================================
========== Resolving conflicts
========================================
doc/DocBook.py
ModPython.py
plcsh
PLC/Auth.py
PLC/Shell.py
PLC/PostgreSQL.py
PLC/Events.py
PLC/Methods/GetPeerData.py
PLC/Methods/RefreshPeer.py
PLC/GPG.py
-> intact, changes in Id only
Makefile
PLCAPI.spec
-> adopted changes about refresh-peer.py (onelab used to package this in myplc)
PLC/Methods/__init__.py
-> recomputed with make index
planetlab4.sql
-> created migration 008
-> new value 'nm-controller' in slice_instantiations
-> new table node_slice_whiltelist
-> new view node_slices_whitelist
-> impact on view_nodes, each row now has the slice_ids_whitelist column
-> recent change in site_nodes ("where deleted is false") was in onelab's codebase as of migration 004
-> updated planetlab4.sql with the sum of all changes from subversion 2 to 8
subversion is set to 8
this file as such needs a dedicated testing, like an install of the resulting myplc from scratch
-> NOTE: I've kept the view_event_objects view from the onelab implementation of EventObjects,
see below for details
PLC/EventObjects.py
intact, we keep the onelab - simpler - implementation
this might need a check, I expect the features are identical, maybe performance is affected
PLC/Method.py
incorporated Tony's changes verbatim, for new events logging
PLC/Persons.py
intact, only formatting difference
PLC/NodeNetworks.py
new method validate_bwlimit - verbatim
PLC/Nodes.py
merged changes. Addons for whitelists,
but also kept a change for nodenetwork-settings : for ensuring that
nodenetwork settings get properly deleted when a node gets deleted
PLC/Methods/DeleteSliceAttributes.py
cosmetic only. commented lines vs removed lines
PLC/methods/GetSlivers.py
Tony's changes preserved. About controller/delegated slices
========================================
========== Differences between merge and Princeton codebase
========================================
(ignoring $Id$)
========== Only in CVS:
PLC/Cache.py
PLC/Methods/AdmGenerateNodeConfFile.py
./util.py Is this useful ?
./views.sql Is this useful ?
========== Only in subversion:
PLC/Methods/AddNodeNetworkSetting.py
PLC/Methods/AddNodeNetworkSettingType.py
PLC/Methods/DeleteNodeNetworkSetting.py
PLC/Methods/DeleteNodeNetworkSettingType.py
PLC/Methods/GetNodeNetworkSettingTypes.py
PLC/Methods/GetNodeNetworkSettings.py
PLC/Methods/GetPlcRelease.py - provides info on myplc revision and build
PLC/Methods/NotifySupport.py - same as NotifyPersons but for the support
PLC/Methods/UpdateNodeNetworkSetting.py
PLC/Methods/UpdateNodeNetworkSettingType.py
PLC/NodeNetworkSettingTypes.py
PLC/NodeNetworkSetting.py
migrations/*.sql
========== Changed location;
a few test scripts moved under tests/ -- see above - should be totally harmless
========== Most problematic:
PLC/EventObjects.py
To REVIEW
see also the corresponding view in planetlab4.sql
PLC/NodeNetworks.py
TO REVIEW
same kind of difference
doc/PLCAPI.xml
our version slightly different - added a custom note on OneLab changes
========== File by file
Makefile:
make index : __init__.py has one item per line for easier diffs
make sync : for easily push a working dir onto a running myplc
make +foo : prints the value of $(foo)
----------
PLC/Methods/BootUpdateNode.py
attach event to node - not sure that's still useful
PLC/Methods/GetNodeNetworks.py
accepts call(int)
PLC/Methods/GetNodes.py
PLC/Methods/GetSites.py
accepts call (int) or call(string)
PLC/Methods/GetPCUs.py
PLC/Methods/GetSliceAttributes.py
PLC/Methods/UpdateSite.py
protects del foo['bar'] with if 'bar' in foo
PLC/Methods/GetPersons.py
PLC/Methods/GetSlices.py
accepts call (int) or call(string)
protects del foo['bar'] with if 'bar' in foo
PLC/Methods/GetSlivers.py
searches enabled persons only
PLC/Methods/UpdateNode.py
protects del foo['bar'] with if 'bar' in foo
exception message altered
PLC/Methods/VerifyPerson.py
review exception messages to include the email in question
PLC/Nodes.py
changes in garbage collecting due to NodeNetworkSettingTypes:
- nodenetworks not in join_tables anymore
- but instead, related nodenetworks are subject to explicit delete
so related nodenetwork settings get deleted
accepts a single int or single string as argument (see GetNodes)
xxx
last_contact : I have commented this out - cannot remember why
I should probably have re-enabled it, your feedback is appreciated
PLC/Persons.py
accepts a single int or single string as argument (see GetPersons)
patch about email and federation : only formatting
PLC/PyCurl.py
exception message altered
PLC/Slices.py
PLC/Sites.py
accepts a single int or single string as argument (see GetSites)
PLC/Test.py
protects del foo['bar'] with if 'bar' in foo
PLCAPI.spec
extracted name, version and subversion (used by external shell scripts)
performs doc installation (recomputes html and pdf doc)
doc/Makefile
miscell changes for refreshing doc on each build
php/header.php
sneaky bug fix -- see comment
planetlab4.sql
integrates all changes - subversion is 8
in some cases (see above - 'TO REVIEW') the onelab implementation
relies on a view while Princeton's implem. only uses the table
./setup.py
for some reason I don't have Test.py in the files to install
cannot remember why I would have removed it, maybe Tony added it ?
TO REVIEW
More information about the Devel
mailing list