(*) full support for database caching, including SliceAttributes
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Mon, 27 Nov 2006 16:43:32 +0000 (16:43 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Mon, 27 Nov 2006 16:43:32 +0000 (16:43 +0000)
(*) looks OK but further tests are required
(*) system slices to be checked with latest implementation from Mark
    (I haven't got anything realting to pl_conf and such in GetSlivers
     since Mark made that change)
(*) TestPeers to dump both status verbatim

PLC/Cache.py
PLC/Methods/GetPeerData.py
PLC/Parameter.py
PLC/SliceAttributes.py
TestPeers.py
TestPeers.ref
planetlab4.sql

index f82248f..5811357 100644 (file)
@@ -4,7 +4,7 @@ from PLC.Filter import Filter
 from PLC.Table import Row, Table
 
 verbose_flag=False;
-#verbose_flag=True;
+verbose_flag=True;
 def verbose (*args):
     if verbose_flag:
        print (args)
@@ -30,14 +30,9 @@ class Cache:
 
     # an attempt to provide genericity in the caching algorithm
     
-    # the Peer object we are syncing with
     def __init__ (self, api, peer_id, peer_server, auth):
 
-#      import PLC.Peers
-
        self.api = api
-#        assert isinstance(peer,PLC.Peers.Peer)
-#        self.peer = peer
         self.peer_id = peer_id
        self.peer_server = peer_server
        self.auth = auth
@@ -64,15 +59,15 @@ class Cache:
        def transcode (self, alien_id):
            """ transforms an alien id into a local one """
            # locate alien obj from alien_id
-           verbose ('entering transcode with alien_id',alien_id,)
+           verbose ('.entering transcode with alien_id',alien_id,)
            alien_object=self.alien_objects_byid[alien_id]
-           verbose ('located alien_obj',)
+           verbose ('..located alien_obj',)
            name = alien_object [self.class_key]
-           verbose ('got name',name,)
+           verbose ('...got name',name,)
            local_object=self.local_objects_byname[name]
-           verbose ('found local obj')
+           verbose ('....found local obj')
            local_id=local_object[self.primary_key]
-           verbose ('and local_id',local_id)
+           verbose ('.....and local_id',local_id)
            return local_id
            
 
@@ -123,8 +118,6 @@ class Cache:
                       lambda_ignore=lambda x:False,
                       report_name_conflicts = True):
         
-#        peer = self.peer
-#        peer_id = peer['peer_id']
         peer_id=self.peer_id
 
        attrs = class_attributes (classname)
@@ -149,12 +142,12 @@ class Cache:
        # (*) or naming conflicts
         local_objects = table_class (self.api)
         ### index upon class_key for future searches
-       #verbose ('local objects:',local_objects)
-       verbose ('class_key',class_key)
         local_objects_index = local_objects.dict(class_key)
+
        verbose ('update_table',classname,local_objects_index.keys())
 
        ### mark entries for this peer outofdate
+        new_count=0
         old_count=0;
        for local_object in local_objects:
            if local_object['peer_id'] == peer_id:
@@ -163,7 +156,6 @@ class Cache:
            else:
                local_object.uptodate=True
 
-        new_count=0
         # scan the peer's local objects
         for alien_object in alien_object_list:
 
@@ -174,7 +166,7 @@ class Cache:
                verbose('Ignoring',object_name)
                 continue
 
-           verbose ('update_table - Considering',object_name)
+           verbose ('update_table (%s) - Considering'%classname,object_name)
                 
             # create or update
             try:
@@ -253,6 +245,104 @@ class Cache:
         ### return delta in number of objects 
         return new_count-old_count
 
+    # slice attributes exhibit a special behaviour
+    # because there is no name we can use to retrieve/check for equality
+    # this object is like a 3-part xref, linking slice_attribute_type, slice,
+    #    and potentially node, together with a value that can change over time.
+    # extending the generic model to support a lambda rather than class_key
+    #    would clearly become overkill
+    def update_slice_attributes (self,
+                                 alien_slice_attributes,
+                                 alien_nodes,
+                                 alien_slices):
+
+        from PLC.SliceAttributeTypes import SliceAttributeTypes
+        from PLC.SliceAttributes import SliceAttribute, SliceAttributes
+
+        # init
+        peer_id = self.peer_id
+        
+        # create transcoders
+        node_xcoder = Cache.Transcoder (self.api, 'Node', alien_nodes)
+        slice_xcoder= Cache.Transcoder (self.api, 'Slice', alien_slices)
+        # no need to transcode SliceAttributeTypes, we have a name in the result
+        local_sat_dict = SliceAttributeTypes(self.api).dict('name')
+               
+        # load local objects
+        local_objects = SliceAttributes (self.api,{'peer_id':peer_id})
+
+       ### mark entries for this peer outofdate
+        new_count = 0
+        old_count=len(local_objects)
+       for local_object in local_objects:
+            local_object.uptodate=False
+
+        for alien_object in alien_slice_attributes:
+
+            verbose('----- update_slice_attributes: considering ...')
+            verbose('   ',alien_object)
+
+            # locate local slice
+            try:
+                slice_id = slice_xcoder.transcode(alien_object['slice_id'])
+            except:
+                verbose('update_slice_attributes: unable to locate slice',
+                        alien_object['slice_id'])
+                continue
+            # locate slice_attribute_type
+            try:
+                sat_id = local_sat_dict[alien_object['name']]['attribute_type_id']
+            except:
+                verbose('update_slice_attributes: unable to locate slice attribute type',
+                        alien_object['name'])
+                continue
+            # locate local node if specified
+            try:
+                alien_node_id = alien_object['node_id']
+                if alien_node_id is not None:
+                    node_id = node_xcoder.transcode(alien_node_id)
+                else:
+                    node_id=None
+            except:
+                verbose('update_slice_attributes: unable to locate node',
+                        alien_object['node_id'])
+                continue
+
+            # locate the local SliceAttribute if any
+            try:
+                verbose ('searching name=', alien_object['name'],
+                         'slice_id',slice_id, 'node_id',node_id)
+                local_object = SliceAttributes (self.api,
+                                                {'name':alien_object['name'],
+                                                 'slice_id':slice_id,
+                                                 'node_id':node_id})[0]
+                
+                if local_object['peer_id'] != peer_id:
+                    verbose ('FOUND local sa - skipped')
+                    continue
+                verbose('FOUND already cached sa')
+                local_object['value'] = alien_object['value']
+            # create it if missing
+            except:
+                local_object = SliceAttribute(self.api,
+                                              {'peer_id':peer_id,
+                                               'slice_id':slice_id,
+                                               'node_id':node_id,
+                                               'attribute_type_id':sat_id,
+                                               'value':alien_object['value']})
+                verbose('CREATED new sa')
+            local_object.uptodate=True
+            new_count += 1
+            local_object.sync()
+
+        for local_object in local_objects:
+            if not local_object.uptodate:
+                local_object.delete()
+
+        self.api.db.commit()
+        ### return delta in number of objects 
+        return new_count-old_count
+
     def get_locals (self, list):
        return [x for x in list if x['peer_id'] is None]
 
@@ -270,49 +360,52 @@ class Cache:
         all_data = self.peer_server.GetPeerData (self.auth,0)
 
        # refresh sites
-       #all_sites = self.peer_server.GetSites(self.auth)
        all_sites = all_data['Sites']
-       local_sites = self.get_locals (all_sites)
-       nb_new_sites = self.update_table('Site', local_sites)
+       plocal_sites = self.get_locals (all_sites)
+       nb_new_sites = self.update_table('Site', plocal_sites)
 
        # refresh keys
-       #all_keys = self.peer_server.GetKeys(self.auth)
        all_keys = all_data['Keys']
-       local_keys = self.get_locals (all_keys)
-       nb_new_keys = self.update_table('Key', local_keys)
+       plocal_keys = self.get_locals (all_keys)
+       nb_new_keys = self.update_table('Key', plocal_keys)
 
        # refresh nodes
-        #all_nodes = self.peer_server.GetNodes(self.auth)
         all_nodes = all_data['Nodes']
-       local_nodes = self.get_locals(all_nodes)
-        nb_new_nodes = self.update_table('Node', local_nodes,
+       plocal_nodes = self.get_locals(all_nodes)
+        nb_new_nodes = self.update_table('Node', plocal_nodes,
                                         { 'Site' : all_sites } )
 
        # refresh persons
-       #all_persons = self.peer_server.GetPersons(self.auth)
        all_persons = all_data['Persons']
-       local_persons = self.get_locals(all_persons)
-       nb_new_persons = self.update_table ('Person', local_persons,
+       plocal_persons = self.get_locals(all_persons)
+       nb_new_persons = self.update_table ('Person', plocal_persons,
                                            { 'Key': all_keys, 'Site' : all_sites } )
 
         # refresh slice attribute types
         all_slice_attribute_types = all_data ['SliceAttibuteTypes']
-        local_slice_attribute_types = self.get_locals(all_slice_attribute_types)
+        plocal_slice_attribute_types = self.get_locals(all_slice_attribute_types)
         nb_new_slice_attribute_types = self.update_table ('SliceAttributeType',
-                                                          local_slice_attribute_types,
+                                                          plocal_slice_attribute_types,
                                                           report_name_conflicts = False)
 
        # refresh slices
-        #local_slices = self.peer_server.GetSlices(self.auth,{'peer_id':None})
-        local_slices = all_data['Slices']
+        all_slices = all_data['Slices']
+        plocal_slices = self.get_locals(all_slices)
 
        def is_system_slice (slice):
            return slice['creator_person_id'] == 1
 
-        nb_new_slices = self.update_table ('Slice', local_slices,
+        nb_new_slices = self.update_table ('Slice', plocal_slices,
                                           {'Node': all_nodes, 'Person': all_persons},
                                           is_system_slice)
 
+        # refresh slice attributes
+        all_slice_attributes = all_data ['SliceAttributes']
+        plocal_slice_attributes = self.get_locals(all_slice_attributes)
+        nb_new_slice_attributes = self.update_slice_attributes (plocal_slice_attributes,
+                                                                all_nodes,
+                                                                all_slices)
+
         ### returned as-is by RefreshPeer
         return {'plcname':self.api.config.PLC_NAME,
                'new_sites':nb_new_sites,
@@ -321,5 +414,6 @@ class Cache:
                'new_persons':nb_new_persons,
                 'new_slice_attribute_types':nb_new_slice_attribute_types,
                 'new_slices':nb_new_slices,
+                'new_slice_attributes':nb_new_slice_attributes,
                 }
 
index da562e1..4b7d433 100644 (file)
@@ -15,7 +15,7 @@ from PLC.Nodes import Node, Nodes
 from PLC.Persons import Person, Persons
 from PLC.SliceAttributeTypes import SliceAttributeType, SliceAttributeTypes
 from PLC.Slices import Slice, Slices
-
+from PLC.SliceAttributes import SliceAttribute, SliceAttributes
 
 class GetPeerData (Method):
     """
@@ -45,6 +45,7 @@ class GetPeerData (Method):
             'Nodes' : Nodes (self.api),
             'Persons' : Persons (self.api),
             'SliceAttibuteTypes' : SliceAttributeTypes (self.api),
-            'Slices' : Slices (self.api,{'peer_id':None}),
+            'Slices' : Slices (self.api),
+            'SliceAttributes': SliceAttributes (self.api)
             }
         
index e45cd31..2307483 100644 (file)
@@ -4,10 +4,11 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2006 The Trustees of Princeton University
 #
-# $Id: Parameter.py,v 1.5 2006/11/02 18:32:55 mlhuang Exp $
+# $Id: Parameter.py,v 1.6 2006/11/08 22:10:00 mlhuang Exp $
 #
 
 from types import *
+from PLC.Faults import *
 
 class Parameter:
     """
index 2788b72..7d1283c 100644 (file)
@@ -22,6 +22,7 @@ class SliceAttribute(Row):
         'min_role_id': SliceAttributeType.fields['min_role_id'],
         # XXX Arbitrary max, make configurable
         'value': Parameter(str, "Slice attribute value", max = 254),
+        'peer_id': Parameter(int, "Peer at which this node is managed", nullok = True),
         }
 
 class SliceAttributes(Table):
index a99e7d1..a9083ec 100755 (executable)
@@ -345,7 +345,7 @@ def check_slivers_n (nn,esn,args=[1,2]):
               %(i,len(slivers),esn,nodename)
         for sliver in slivers:
             print '>>slivername = ',sliver['name']
-            pp.pprint(sliver)
+            pretty_printer.pprint(sliver)
         assert len(slivers) == esn
                 
 
@@ -648,8 +648,8 @@ def test05_sa_atom (slice_name,sat_name,value,node,i):
                                          slice_name,
                                          sat_name,
                                          value)
-            print '%02d:== created SliceAttribute = %d'%(i,sa_id),
-            print 'On slice',slice_name,'and node',node
+        print '%02d:== created SliceAttribute = %d'%(i,sa_id),
+        print 'On slice',slice_name,'and node',node
         
 def test05_sa (args=[1,2]):
     for i in args:
@@ -658,6 +658,119 @@ def test05_sa (args=[1,2]):
         test05_sa_atom (slice_name(i,1),'net_max','predefined sat/all nodes',None,i)
         test05_sa_atom (slice_name(i,1),'net_max','predefined sat/node1',node_name(i,1),i)
         
+##############################
+# readable dumps
+##############################
+def p_site (s):
+    print (s['site_id'],s['peer_id'],s['login_base'],s['name'],s['node_ids'])
+
+def p_key (k):
+    print  (k['key_id'],k['peer_id'],k['key'])
+    
+def p_person (p):
+    print  (p['person_id'],p['peer_id'],p['email'],'keys:',p['key_ids'],'sites:',p['site_ids']) 
+
+def p_node(n):
+    print (n['node_id'],n['peer_id'],n['hostname'],'sls=',n['slice_ids'],'site=',n['site_id'])
+
+def p_slice(s):
+    print (s['slice_id'],s['peer_id'],s['name'],'nodes=',s['node_ids'],'persons=',s['person_ids'])
+    print '---',('sas=',s['slice_attribute_ids'],s['name'],'crp=',s['creator_person_id'])
+
+def p_sat(sat):
+    print (sat['attribute_type_id'],sat['peer_id'], sat['name'], sat['min_role_id'], sat['description'])
+
+def p_sa (sa):
+        print (sa['slice_attribute_id'],sa['peer_id'],sa['name'],'AT_id:',sa['attribute_type_id'])
+        print '---',('v=',sa['value'],'sl=',sa['slice_id'],'n=',sa['node_id'])
+
+def p_sliver (x):
+    print ('SLIVERS for : hostname',x['hostname'])
+    print ('%d config files'%len(x['conf_files']))
+    for sv in x['slivers']:
+        p_sliver_slice(sv,x['hostname'])
+
+import pprint
+pretty_printer=pprint.PrettyPrinter(5)
+
+def p_sliver_slice(sliver,hostname):
+    print 'SLIVER on hostname %s, s='%hostname,sliver['name']
+    print 'KEYS',
+    pretty_printer.pprint(sliver['keys'])
+    print 'ATTRIBUTES',
+    pretty_printer.pprint(sliver['attributes'])
+
+def dump (args=[1,2]):
+    for i in args:
+        print 'SITES'
+        [p_site(x) for x in s[i].GetSites(a[i])]
+        print 'KEYS'
+        [p_key(x) for x in s[i].GetKeys(a[i])]
+        print 'PERSONS'
+        [p_person(x) for x in s[i].GetPersons(a[i])]
+        print 'NODES'
+        [p_node(x) for x in s[i].GetNodes(a[i])]
+        print 'SLICES'
+        [p_slice(x) for x in s[i].GetSlices(a[i])]
+        print 'Slice Attribute Types'
+        [p_sat(x) for x in s[i].GetSliceAttributeTypes(a[i])]
+        print 'Slice Attributes'
+        [p_sa(x) for x in s[i].GetSliceAttributes(a[i])]
+        print 'SLIVERS'
+        [p_sliver(x) for x in s[i].GetSlivers(a[i])]
+    
+
+## for usage under the api
+def pt ():
+    for x in GetSites():
+        p_site(x)
+        
+def pk ():
+    for x in GetKeys():
+        print  (x['key_id'],x['peer_id'],x['key']) 
+
+def pp ():
+    for x in GetPersons():
+        p_person(x)
+
+def pn ():
+    for x in GetNodes():
+        p_node(x)
+
+def ps ():
+    for x in GetSlices():
+        p_slice(x)
+
+def psat():
+    for x in GetSliceAttributeTypes():
+        p_sat(x)
+        
+def psa():
+    for x in GetSliceAttributes():
+        p_sa(x)
+        
+def pv ():
+    for s in GetSlivers():
+        p_sliver(s)
+
+def all():
+    print 'SITES'
+    pt()
+    print 'KEYS'
+    pk()
+    print 'PERSONS'
+    pp()
+    print 'NODES'
+    pn()
+    print 'SLICES'
+    ps()
+    print 'SLICE ATTR TYPES'
+    psat()
+    print 'SLICE ATTRS'
+    psa()
+    print 'SLIVERS'
+    pv()
+
 
 ####################
 def test_all_init ():
@@ -821,6 +934,8 @@ def test_all ():
     timer_show()
     test_all_sats ()
     timer_show()
+    dump()
+    timer_show()
     message("END")
 
 ### ad hoc test sequences
@@ -833,9 +948,10 @@ def populate ():
     test04_slice_add_lnode([1])
     test05_sat()
     test05_sa([1])
-#    test00_refresh ("populate: refreshing peer 1",[1])
-#    test04_slice_add_fnode([1])
-#    test00_refresh("populate: refresh all")
+    test00_refresh ("populate: refreshing peer 1",[1])
+    test04_slice_add_fnode([1])
+    test00_refresh("populate: refresh all")
+    dump()
 
 def test_now ():
     test_all_init()
@@ -877,7 +993,8 @@ def main ():
         usage()
     show_test()
     func()   
+    timer_show()
+
 if __name__ == '__main__':
     normal()
     main()
index a9b4525..6e68d4f 100644 (file)
@@ -27,7 +27,7 @@ Attempting to set passwd for person_id=4 in DB1UPDATE 1
  -> system returns 0
 Attempting to set passwd for person_id=4 in DB2UPDATE 1
  -> system returns 0
-+++ 13.24 seconds ellapsed (13.24)
++++ 12.97 seconds ellapsed (12.97)
 01:== Created site 2 with max_slices=4
 02:== Created site 2 with max_slices=4
 01:== Created site 3 with max_slices=4
@@ -37,18 +37,18 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 01:== Created site 5 with max_slices=4
 02:== Created site 5 with max_slices=4
 === refresh after site creation
-+++ 24.84 seconds ellapsed (11.61)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 4, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 1, 'new_nodes': 0}
-+++ 27.08 seconds ellapsed (2.24)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 4, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 1, 'new_nodes': 0}
-+++ 28.53 seconds ellapsed (1.45)
-+++ 28.53 seconds ellapsed (0.00)
++++ 24.55 seconds ellapsed (11.58)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 4, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 1, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 26.83 seconds ellapsed (2.28)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 4, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 1, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 28.41 seconds ellapsed (1.58)
++++ 28.41 seconds ellapsed (0.00)
 === refresh before persons&keys creation
-+++ 32.29 seconds ellapsed (3.76)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 34.52 seconds ellapsed (2.23)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 36.07 seconds ellapsed (1.55)
++++ 32.17 seconds ellapsed (3.76)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 34.42 seconds ellapsed (2.25)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 36.00 seconds ellapsed (1.58)
 01: Checking keys: got 0 local (e=0) & 0 foreign (e=0)
 02: Checking keys: got 0 local (e=0) & 0 foreign (e=0)
 01: Checking persons: got 4 local (e=4) & 1 foreign (e=1)
@@ -100,25 +100,25 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 01: Checking persons: got 8 local (e=8) & 1 foreign (e=1)
 02: Checking persons: got 8 local (e=8) & 1 foreign (e=1)
 === refresh after persons&keys creation
-+++ 58.93 seconds ellapsed (22.86)
-01:== Refreshing peer got  {'new_keys': 8, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 4, 'new_nodes': 0}
-+++ 61.32 seconds ellapsed (2.39)
-02:== Refreshing peer got  {'new_keys': 8, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 4, 'new_nodes': 0}
-+++ 63.01 seconds ellapsed (1.70)
++++ 58.79 seconds ellapsed (22.79)
+01:== Refreshing peer got  {'new_keys': 8, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 4, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 61.16 seconds ellapsed (2.37)
+02:== Refreshing peer got  {'new_keys': 8, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 4, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 62.89 seconds ellapsed (1.73)
 01: Checking keys: got 8 local (e=8) & 8 foreign (e=8)
 02: Checking keys: got 8 local (e=8) & 8 foreign (e=8)
 01: Checking persons: got 8 local (e=8) & 5 foreign (e=5)
 02: Checking persons: got 8 local (e=8) & 5 foreign (e=5)
-+++ 65.41 seconds ellapsed (2.40)
++++ 65.30 seconds ellapsed (2.41)
 ==================== ('RESETTING NODES',)
 01:== Cleaning all nodes
 02:== Cleaning all nodes
 === refresh cleaned nodes
-+++ 66.35 seconds ellapsed (0.94)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 68.67 seconds ellapsed (2.32)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 70.77 seconds ellapsed (2.10)
++++ 66.24 seconds ellapsed (0.94)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 68.67 seconds ellapsed (2.43)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 70.39 seconds ellapsed (1.72)
 01: Checking nodes: got 0 local (e=0) & 0 foreign (e=0)
 02: Checking nodes: got 0 local (e=0) & 0 foreign (e=0)
 ==================== ('CREATING NODES',)
@@ -135,11 +135,11 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 01: Checking nodes: got 5 local (e=5) & 0 foreign (e=0)
 02: Checking nodes: got 5 local (e=5) & 0 foreign (e=0)
 === refresh after node creation
-+++ 82.39 seconds ellapsed (11.63)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 5}
-+++ 84.92 seconds ellapsed (2.53)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 5}
-+++ 86.84 seconds ellapsed (1.92)
++++ 82.05 seconds ellapsed (11.65)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 5, 'new_slice_attribute_types': 0}
++++ 84.59 seconds ellapsed (2.54)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 5, 'new_slice_attribute_types': 0}
++++ 86.50 seconds ellapsed (1.91)
 01: Checking nodes: got 5 local (e=5) & 5 foreign (e=5)
 02: Checking nodes: got 5 local (e=5) & 5 foreign (e=5)
 02:== Deleted node 1, returns 1
@@ -170,11 +170,11 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 02:== Deleted node 20, returns 1
 02: Checking nodes: got 0 local (e=0) & 5 foreign (e=5)
 === refresh after deletion on plc2
-+++ 94.94 seconds ellapsed (8.09)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': -5}
-+++ 97.35 seconds ellapsed (2.42)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 99.28 seconds ellapsed (1.93)
++++ 94.56 seconds ellapsed (8.06)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': -5, 'new_slice_attribute_types': 0}
++++ 97.09 seconds ellapsed (2.53)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 98.99 seconds ellapsed (1.90)
 01: Checking nodes: got 5 local (e=5) & 0 foreign (e=0)
 02: Checking nodes: got 0 local (e=0) & 5 foreign (e=5)
 ==================== ('ADD on plc2 for different indexes',)
@@ -186,14 +186,14 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 01: Checking nodes: got 5 local (e=5) & 0 foreign (e=0)
 02: Checking nodes: got 5 local (e=5) & 5 foreign (e=5)
 === refresh after re-creation on plc2
-+++ 102.83 seconds ellapsed (3.54)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 5}
-+++ 105.35 seconds ellapsed (2.52)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 107.23 seconds ellapsed (1.88)
++++ 102.53 seconds ellapsed (3.54)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 5, 'new_slice_attribute_types': 0}
++++ 105.07 seconds ellapsed (2.54)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 106.99 seconds ellapsed (1.91)
 01: Checking nodes: got 5 local (e=5) & 5 foreign (e=5)
 02: Checking nodes: got 5 local (e=5) & 5 foreign (e=5)
-+++ 108.51 seconds ellapsed (1.28)
++++ 108.26 seconds ellapsed (1.28)
 ==================== ('RESETTING SLICES TEST',)
 01:== Cleaning all nodes
 01:==== Cleaning node 1
@@ -222,11 +222,11 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 02:== Cleaning all slices
 02:==== Cleaning slice 3
 === refresh After slices init
-+++ 125.98 seconds ellapsed (17.47)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 128.52 seconds ellapsed (2.54)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 130.38 seconds ellapsed (1.85)
++++ 125.63 seconds ellapsed (17.37)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 128.18 seconds ellapsed (2.55)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 130.06 seconds ellapsed (1.88)
 ==================== ('CREATING SLICES on plc1',)
 01:== created slice 4 - max nodes=5
 01:== Attached person user1-1@plc1.org to slice oneone_slice1
@@ -251,11 +251,11 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 01: Checking slices: got 6 local (e=6) & 0 foreign (e=0)
 02: Checking slices: got 2 local (e=2) & 0 foreign (e=0)
 === refresh after slice created on plc1
-+++ 152.20 seconds ellapsed (21.82)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 154.71 seconds ellapsed (2.51)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 4, 'new_persons': 0, 'new_nodes': 0}
-+++ 156.64 seconds ellapsed (1.93)
++++ 151.77 seconds ellapsed (21.71)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 154.32 seconds ellapsed (2.56)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 4, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 156.32 seconds ellapsed (1.99)
 01: Checking slices: got 6 local (e=6) & 0 foreign (e=0)
 02: Checking slices: got 2 local (e=2) & 4 foreign (e=4)
 01: local slice oneone_slice1 (e=0)  on nodes  []
@@ -267,10 +267,10 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 02: foreign slice onethree_slice3 (e=0)  on nodes  []
 02: foreign slice onefour_slice4 (e=0)  on nodes  []
 ==================== ('ADDING LOCAL NODES IN SLICES',)
-01:== added in slice 4 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
-01:== added in slice 5 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
-01:== added in slice 6 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
-01:== added in slice 7 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
+01:== added in slice oneone_slice1 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
+01:== added in slice onetwo_slice2 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
+01:== added in slice onethree_slice3 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
+01:== added in slice onefour_slice4 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
 01: local slice oneone_slice1 (e=5)  on nodes  [16, 17, 18, 19, 20]
 [LOC:5] :  n101.plc1.org  n102.plc1.org  n103.plc1.org  n104.plc1.org  n105.plc1.org  
 01: local slice onetwo_slice2 (e=5)  on nodes  [16, 17, 18, 19, 20]
@@ -284,11 +284,11 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 02: foreign slice onethree_slice3 (e=0)  on nodes  []
 02: foreign slice onefour_slice4 (e=0)  on nodes  []
 === refresh After local nodes were added on plc1
-+++ 181.07 seconds ellapsed (24.44)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 183.59 seconds ellapsed (2.52)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 185.52 seconds ellapsed (1.93)
++++ 177.39 seconds ellapsed (21.08)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 179.93 seconds ellapsed (2.54)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 181.91 seconds ellapsed (1.99)
 01: local slice oneone_slice1 (e=5)  on nodes  [16, 17, 18, 19, 20]
 [LOC:5] :  n101.plc1.org  n102.plc1.org  n103.plc1.org  n104.plc1.org  n105.plc1.org  
 01: local slice onetwo_slice2 (e=5)  on nodes  [16, 17, 18, 19, 20]
@@ -306,10 +306,10 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 02: foreign slice onefour_slice4 (e=5)  on nodes  [8, 9, 10, 6, 7]
 [FOR:5] :  n101.plc1.org  n102.plc1.org  n103.plc1.org  n104.plc1.org  n105.plc1.org  
 ==================== ('ADDING FOREIGN NODES IN SLICES',)
-01:== added in slice 4 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
-01:== added in slice 5 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
-01:== added in slice 6 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
-01:== added in slice 7 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
+01:== added in slice oneone_slice1 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
+01:== added in slice onetwo_slice2 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
+01:== added in slice onethree_slice3 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
+01:== added in slice onefour_slice4 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
 01: local slice oneone_slice1 (e=10)  on nodes  [16, 17, 18, 19, 20, 11, 12, 13, 14, 15]
 [LOC:5] :  n101.plc1.org  n102.plc1.org  n103.plc1.org  n104.plc1.org  n105.plc1.org  
 [FOR:5] :  n201.plc2.org  n202.plc2.org  n203.plc2.org  n204.plc2.org  n205.plc2.org  
@@ -331,11 +331,11 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 02: foreign slice onefour_slice4 (e=5)  on nodes  [8, 9, 10, 6, 7]
 [FOR:5] :  n101.plc1.org  n102.plc1.org  n103.plc1.org  n104.plc1.org  n105.plc1.org  
 === refresh After foreign nodes were added in plc1
-+++ 209.31 seconds ellapsed (23.79)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 211.86 seconds ellapsed (2.55)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 213.88 seconds ellapsed (2.02)
++++ 202.35 seconds ellapsed (20.44)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 204.93 seconds ellapsed (2.58)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 206.96 seconds ellapsed (2.03)
 01: local slice oneone_slice1 (e=10)  on nodes  [16, 17, 18, 19, 20, 11, 12, 13, 14, 15]
 [LOC:5] :  n101.plc1.org  n102.plc1.org  n103.plc1.org  n104.plc1.org  n105.plc1.org  
 [FOR:5] :  n201.plc2.org  n202.plc2.org  n203.plc2.org  n204.plc2.org  n205.plc2.org  
@@ -363,7 +363,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 01: 4 slivers (exp. 4) in GetSlivers for node n101.plc1.org
 >>slivername =  oneone_slice1
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839729,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user1-key1',
                  'key_type': 'ssh'},
@@ -385,7 +385,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'slice_id': 4}
 >>slivername =  onetwo_slice2
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839727,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user1-key1',
                  'key_type': 'ssh'},
@@ -407,7 +407,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'slice_id': 5}
 >>slivername =  onethree_slice3
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839739,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user1-key1',
                  'key_type': 'ssh'},
@@ -429,7 +429,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'slice_id': 6}
 >>slivername =  onefour_slice4
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839744,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user1-key1',
                  'key_type': 'ssh'},
@@ -452,7 +452,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 02: 4 slivers (exp. 4) in GetSlivers for node n201.plc2.org
 >>slivername =  oneone_slice1
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839729,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user3-key1',
                  'key_type': 'ssh'},
@@ -474,7 +474,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'slice_id': 4}
 >>slivername =  onetwo_slice2
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839727,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user3-key1',
                  'key_type': 'ssh'},
@@ -496,7 +496,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'slice_id': 5}
 >>slivername =  onethree_slice3
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839739,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user3-key1',
                  'key_type': 'ssh'},
@@ -518,7 +518,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'slice_id': 6}
 >>slivername =  onefour_slice4
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839744,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user3-key1',
                  'key_type': 'ssh'},
@@ -539,10 +539,10 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'name': 'onefour_slice4',
    'slice_id': 7}
 ==================== ('DELETING FOREIGN NODES FROM SLICES',)
-01:== deleted in slice 4 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
-01:== deleted in slice 5 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
-01:== deleted in slice 6 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
-01:== deleted in slice 7 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
+01:== deleted in slice oneone_slice1 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
+01:== deleted in slice onetwo_slice2 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
+01:== deleted in slice onethree_slice3 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
+01:== deleted in slice onefour_slice4 foreign  ['n201.plc2.org', 'n202.plc2.org', 'n203.plc2.org', 'n204.plc2.org', 'n205.plc2.org']
 01: local slice oneone_slice1 (e=5)  on nodes  [16, 17, 18, 19, 20]
 [LOC:5] :  n101.plc1.org  n102.plc1.org  n103.plc1.org  n104.plc1.org  n105.plc1.org  
 01: local slice onetwo_slice2 (e=5)  on nodes  [16, 17, 18, 19, 20]
@@ -566,7 +566,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 01: 4 slivers (exp. 4) in GetSlivers for node n101.plc1.org
 >>slivername =  oneone_slice1
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839729,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user1-key1',
                  'key_type': 'ssh'},
@@ -588,7 +588,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'slice_id': 4}
 >>slivername =  onetwo_slice2
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839727,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user1-key1',
                  'key_type': 'ssh'},
@@ -610,7 +610,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'slice_id': 5}
 >>slivername =  onethree_slice3
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839739,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user1-key1',
                  'key_type': 'ssh'},
@@ -632,7 +632,7 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'slice_id': 6}
 >>slivername =  onefour_slice4
 {  'attributes': [],
-   'expires': normalized,
+   'expires': 1165839744,
    'instantiation': 'plc-instantiated',
    'keys': [  {  'key': 'ssh-rsa 1111111111111111 user1-key1',
                  'key_type': 'ssh'},
@@ -653,11 +653,11 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
    'name': 'onefour_slice4',
    'slice_id': 7}
 === refresh After foreign nodes were removed on plc1
-+++ 240.71 seconds ellapsed (26.83)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 243.24 seconds ellapsed (2.53)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 245.17 seconds ellapsed (1.93)
++++ 230.50 seconds ellapsed (23.55)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 233.03 seconds ellapsed (2.53)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 234.97 seconds ellapsed (1.94)
 01: local slice oneone_slice1 (e=5)  on nodes  [16, 17, 18, 19, 20]
 [LOC:5] :  n101.plc1.org  n102.plc1.org  n103.plc1.org  n104.plc1.org  n105.plc1.org  
 01: local slice onetwo_slice2 (e=5)  on nodes  [16, 17, 18, 19, 20]
@@ -675,10 +675,10 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 02: foreign slice onefour_slice4 (e=5)  on nodes  [8, 9, 10, 6, 7]
 [FOR:5] :  n101.plc1.org  n102.plc1.org  n103.plc1.org  n104.plc1.org  n105.plc1.org  
 ==================== ('DELETING LOCAL NODES FROM SLICES',)
-01:== deleted in slice 4 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
-01:== deleted in slice 5 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
-01:== deleted in slice 6 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
-01:== deleted in slice 7 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
+01:== deleted in slice oneone_slice1 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
+01:== deleted in slice onetwo_slice2 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
+01:== deleted in slice onethree_slice3 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
+01:== deleted in slice onefour_slice4 local  ['n101.plc1.org', 'n102.plc1.org', 'n103.plc1.org', 'n104.plc1.org', 'n105.plc1.org']
 01: local slice oneone_slice1 (e=0)  on nodes  []
 01: local slice onetwo_slice2 (e=0)  on nodes  []
 01: local slice onethree_slice3 (e=0)  on nodes  []
@@ -692,11 +692,11 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 02: foreign slice onefour_slice4 (e=5)  on nodes  [8, 9, 10, 6, 7]
 [FOR:5] :  n101.plc1.org  n102.plc1.org  n103.plc1.org  n104.plc1.org  n105.plc1.org  
 === refresh After local nodes were removed on plc1
-+++ 267.60 seconds ellapsed (22.43)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 270.09 seconds ellapsed (2.49)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 272.02 seconds ellapsed (1.92)
++++ 254.14 seconds ellapsed (19.17)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 256.67 seconds ellapsed (2.52)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 258.66 seconds ellapsed (1.99)
 01: local slice oneone_slice1 (e=0)  on nodes  []
 01: local slice onetwo_slice2 (e=0)  on nodes  []
 01: local slice onethree_slice3 (e=0)  on nodes  []
@@ -714,12 +714,21 @@ Attempting to set passwd for person_id=4 in DB2UPDATE 1
 01: Checking slices: got 2 local (e=2) & 0 foreign (e=0)
 02: Checking slices: got 2 local (e=2) & 4 foreign (e=4)
 === refresh After slices clenaup
-+++ 286.11 seconds ellapsed (14.09)
-01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0}
-+++ 288.65 seconds ellapsed (2.54)
-02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': -4, 'new_persons': 0, 'new_nodes': 0}
-+++ 290.56 seconds ellapsed (1.91)
++++ 272.37 seconds ellapsed (13.71)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 274.90 seconds ellapsed (2.53)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': -4, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 0}
++++ 276.84 seconds ellapsed (1.94)
 01: Checking slices: got 2 local (e=2) & 0 foreign (e=0)
 02: Checking slices: got 2 local (e=2) & 0 foreign (e=0)
-+++ 292.44 seconds ellapsed (1.88)
++++ 278.73 seconds ellapsed (1.89)
+01:== created SliceAttributeType = 20
+02:== created SliceAttributeType = 20
+=== refresh after SliceAttributeType creation
++++ 280.62 seconds ellapsed (1.90)
+01:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc1', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 1}
++++ 283.18 seconds ellapsed (2.56)
+02:== Refreshing peer got  {'new_keys': 0, 'new_sites': 0, 'plcname': 'Thierry plc2 on devbox', 'new_slices': 0, 'new_persons': 0, 'new_nodes': 0, 'new_slice_attribute_types': 1}
++++ 285.12 seconds ellapsed (1.93)
++++ 285.12 seconds ellapsed (0.00)
 ==================== ('END',)
index 3b26965..236a54a 100644 (file)
@@ -9,7 +9,7 @@
 --
 -- Copyright (C) 2006 The Trustees of Princeton University
 --
--- $Id: planetlab4.sql,v 1.45 2006/11/25 09:35:36 thierry Exp $
+-- $Id: planetlab4.sql,v 1.46 2006/11/27 12:18:12 thierry Exp $
 --
 
 --------------------------------------------------------------------------------
@@ -981,7 +981,8 @@ slice_attribute_types.attribute_type_id,
 slice_attribute_types.name,
 slice_attribute_types.description,
 slice_attribute_types.min_role_id,
-slice_attribute.value
+slice_attribute.value,
+slice_attribute.peer_id
 FROM slice_attribute
 INNER JOIN slice_attribute_types USING (attribute_type_id);