Skip to content

Commit 6c72be0

Browse files
committed
Tree: add channel versioning
Add ClusterShell version into channel tag for debugging and future use. Change-Id: I0872bf0e563c18a67b4a558911942a4c2221ffdc
1 parent 97ba696 commit 6c72be0

File tree

4 files changed

+11
-9
lines changed

4 files changed

+11
-9
lines changed

lib/ClusterShell/Communication.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
from collections import deque
6666
from cStringIO import StringIO
6767

68+
from ClusterShell import __version__
6869
from ClusterShell.Event import EventHandler
6970

7071

@@ -83,13 +84,15 @@ def __init__(self):
8384
"""XMLReader initializer"""
8485
ContentHandler.__init__(self)
8586
self.msg_queue = deque()
87+
self.version = None
8688
# current packet under construction
8789
self._draft = None
8890
self._sections_map = None
8991

9092
def startElement(self, name, attrs):
9193
"""read a starting xml tag"""
9294
if name == 'channel':
95+
self.version = attrs.get('version')
9396
self.msg_queue.appendleft(StartMessage())
9497
elif name == 'message':
9598
self._draft_new(attrs)
@@ -192,7 +195,8 @@ def _init(self):
192195

193196
def _open(self):
194197
"""open a new communication channel from src to dst"""
195-
XMLGenerator(self.worker, encoding=ENCODING).startElement('channel', {})
198+
xmlgen = XMLGenerator(self.worker, encoding=ENCODING)
199+
xmlgen.startElement('channel', {'version': __version__})
196200

197201
def _close(self):
198202
"""close an already opened channel"""

lib/ClusterShell/Gateway.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ def recv(self, msg):
179179
self.logger.debug('got start message %s', msg)
180180
self.opened = True
181181
self._open()
182-
self.logger.debug('channel started')
183-
# TODO: channel versioning
182+
self.logger.debug('channel started (version %s on remote end)',
183+
self._xml_reader.version)
184184
else:
185185
self.logger.error('unexpected message: %s', str(msg))
186186
raise MessageProcessingError('unexpected message: %s' % msg)

lib/ClusterShell/Propagation.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,8 @@ def recv(self, msg):
275275
self.recv_cfg(msg)
276276
elif msg.type == StartMessage.ident:
277277
self.opened = True
278-
self.logger.debug('channel started')
279-
# TODO: channel versioning
278+
self.logger.debug('channel started (version %s on remote gateway)',
279+
self._xml_reader.version)
280280
else:
281281
self.logger.error('unexpected message: %s', str(msg))
282282

tests/TreeGatewayTest.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44
import logging
55
import os
66
import re
7-
import sys
87
import unittest
98
import xml.sax
109

11-
sys.path.insert(0, '../lib')
12-
10+
from ClusterShell import __version__
1311
from ClusterShell.Communication import ConfigurationMessage, ControlMessage, \
1412
StdOutMessage, StdErrMessage, RetcodeMessage, ACKMessage, ErrorMessage, \
1513
TimeoutMessage, StartMessage, EndMessage, XMLReader
@@ -103,7 +101,7 @@ def tearDown(self):
103101
#
104102
def channel_send_start(self):
105103
"""send starting channel tag"""
106-
self.gateway.send('<channel>')
104+
self.gateway.send('<channel version="%s">' % __version__)
107105

108106
def channel_send_stop(self):
109107
"""send channel ending tag"""

0 commit comments

Comments
 (0)