Commit 31c25e4c authored by Vincent Pelletier's avatar Vincent Pelletier

Make neoctl expect & handle properly a "not ready" error code from admin node.


git-svn-id: https://svn.erp5.org/repos/neo/branches/prototype3@1037 71dcc9de-d417-0410-9af5-da40c76e7ee4
parent d1530fcd
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
from neo.neoctl.neoctl import NeoCTL from neo.neoctl.neoctl import NeoCTL, NotReadyException
from neo.util import bin, dump from neo.util import bin, dump
from neo import protocol from neo import protocol
...@@ -209,7 +209,10 @@ class Application(object): ...@@ -209,7 +209,10 @@ class Application(object):
if result is None: if result is None:
result = 'Ok' result = 'Ok'
else: else:
try:
result = action(args[level:]) result = action(args[level:])
except NotReadyException, message:
result = message
return result return result
......
...@@ -68,3 +68,6 @@ class CommandEventHandler(EventHandler): ...@@ -68,3 +68,6 @@ class CommandEventHandler(EventHandler):
def handleNoError(self, conn, packet, msg): def handleNoError(self, conn, packet, msg):
self.__respond((packet.getType(), protocol.NO_ERROR_CODE, msg)) self.__respond((packet.getType(), protocol.NO_ERROR_CODE, msg))
def handleNotReady(self, conn, packet, msg):
self.__respond((packet.getType(), protocol.NOT_READY_CODE, msg))
...@@ -21,6 +21,9 @@ from neo.event import EventManager ...@@ -21,6 +21,9 @@ from neo.event import EventManager
from neo.neoctl.handler import CommandEventHandler from neo.neoctl.handler import CommandEventHandler
from neo import protocol from neo import protocol
class NotReadyException(Exception):
pass
class NeoCTL(object): class NeoCTL(object):
connection = None connection = None
...@@ -52,7 +55,11 @@ class NeoCTL(object): ...@@ -52,7 +55,11 @@ class NeoCTL(object):
self.em.poll(0) self.em.poll(0)
if not self.connected: if not self.connected:
raise Exception, 'Connection closed' raise Exception, 'Connection closed'
return response_queue.pop() response = response_queue.pop()
if response[0] == protocol.ERROR and \
response[1] == protocol.NOT_READY_CODE:
raise NotReadyException(response[2])
return response
def enableStorageList(self, node_list): def enableStorageList(self, node_list):
""" """
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment