From cae1f1784693b8af00e4e77ba951172bd26c3c46 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9gory=20Wisniewski?= <gregory@nexedi.com>
Date: Thu, 1 Apr 2010 14:09:58 +0000
Subject: [PATCH] Use methods and properties of PartitionTable.

Remove admin's app.ptid attribute, use pt.load() and pt.update() instead
of copy/paste the code.

git-svn-id: https://svn.erp5.org/repos/neo/trunk@1991 71dcc9de-d417-0410-9af5-da40c76e7ee4
---
 neo/admin/app.py     |  3 +--
 neo/admin/handler.py | 25 ++++---------------------
 2 files changed, 5 insertions(+), 23 deletions(-)

diff --git a/neo/admin/app.py b/neo/admin/app.py
index 676c8aca..86ebc5ac 100644
--- a/neo/admin/app.py
+++ b/neo/admin/app.py
@@ -69,7 +69,6 @@ class Application(object):
         self.pt = None
         self.uuid = config.getUUID()
         self.primary_master_node = None
-        self.ptid = None
         self.request_handler = MasterRequestEventHandler(self)
         self.master_event_handler = MasterEventHandler(self)
         self.dispatcher = Dispatcher()
@@ -162,5 +161,5 @@ class Application(object):
             p = Errors.ProtocolError('invalid partition table offset')
             conn.notify(p)
             return
-        p = Packets.AnswerPartitionList(self.ptid, row_list)
+        p = Packets.AnswerPartitionList(self.pt.getID(), row_list)
         conn.answer(p)
diff --git a/neo/admin/handler.py b/neo/admin/handler.py
index c201961b..d7e2a9be 100644
--- a/neo/admin/handler.py
+++ b/neo/admin/handler.py
@@ -152,29 +152,12 @@ class MasterEventHandler(EventHandler):
         logging.debug("answerPartitionTable")
 
     def notifyPartitionChanges(self, conn, ptid, cell_list):
-        app = self.app
-        if ptid < app.ptid:
-            # Ignore this packet.
-            return
-        app.ptid = ptid
-        app.pt.update(ptid, cell_list, app.nm)
+        self.app.pt.update(ptid, cell_list, self.app.nm)
 
     def sendPartitionTable(self, conn, ptid, row_list):
-        uuid = conn.getUUID()
-        app = self.app
-        nm = app.nm
-        pt = app.pt
-        node = app.nm.getByUUID(uuid)
-        if app.ptid != ptid:
-            app.ptid = ptid
-            pt.clear()
-        for offset, row in row_list:
-            for uuid, state in row:
-                node = nm.getByUUID(uuid)
-                if node is None:
-                    node = nm.createStorage(uuid=uuid)
-                pt.setCell(offset, node, state)
-        pt.log()
+        self.app.pt.clear()
+        self.app.pt.load(ptid, row_list, self.app.nm)
+        self.app.pt.log()
 
     def notifyClusterInformation(self, conn, cluster_state):
         self.app.cluster_state = cluster_state
-- 
2.30.9