[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