fix for smooth federation between 4.2 and 4.3
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 9 Apr 2009 12:47:07 +0000 (12:47 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 9 Apr 2009 12:47:07 +0000 (12:47 +0000)
PLC/Methods/RefreshPeer.py
PLC/Nodes.py

index 40fb1e2..f7df7dd 100644 (file)
@@ -58,11 +58,16 @@ class RefreshPeer(Method):
         start = time.time()
        print >>log, 'Issuing GetPeerData'
         peer_tables = peer.GetPeerData()
+        # for smooth federation with 4.3 - rewrite boot_state
+        boot_state_rewrite={'safeboot':'dbg','disabled':'disable', 'reinstall':'rins'}
+        for node in peer_tables['Nodes']:
+            if node['boot_state'] in boot_state_rewrite: node['boot_state']=boot_state_rewrite[node['boot_state']]
         timers['transport'] = time.time() - start - peer_tables['db_time']
         timers['peer_db'] = peer_tables['db_time']
         if verbose:
             print >>log, 'GetPeerData returned -> db=%d transport=%d'%(timers['peer_db'],timers['transport'])
 
+
         def sync(objects, peer_objects, classobj):
             """
             Synchronizes two dictionaries of objects. objects should
index 08612f6..d306f11 100644 (file)
@@ -276,11 +276,15 @@ class Node(Row):
         """
 
         assert 'node_id' in self
-       assert 'nodenetwork_ids' in self
 
        # we need to clean up NodeNetworkSettings, so handling nodenetworks as part of join_tables does not work
-       for nodenetwork in NodeNetworks(self.api,self['nodenetwork_ids']):
-           nodenetwork.delete()
+        # federated nodes don't have interfaces though so for smooth transition from 4.2 to 4.3
+        if 'peer_id' in self and self['peer_id']:
+            pass
+        else:
+            assert 'nodenetwork_ids' in self
+            for nodenetwork in NodeNetworks(self.api,self['nodenetwork_ids']):
+                nodenetwork.delete()
 
         # Clean up miscellaneous join tables
         for table in self.join_tables: