From 10f16be36ac3e2fc0f38c2823b95b49344391d09 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Thu, 9 Apr 2009 12:47:07 +0000 Subject: [PATCH] fix for smooth federation between 4.2 and 4.3 --- PLC/Methods/RefreshPeer.py | 5 +++++ PLC/Nodes.py | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/PLC/Methods/RefreshPeer.py b/PLC/Methods/RefreshPeer.py index 40fb1e28..f7df7ddd 100644 --- a/PLC/Methods/RefreshPeer.py +++ b/PLC/Methods/RefreshPeer.py @@ -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 diff --git a/PLC/Nodes.py b/PLC/Nodes.py index 08612f61..d306f116 100644 --- a/PLC/Nodes.py +++ b/PLC/Nodes.py @@ -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: -- 2.47.0