From 172840f71b8f521de7b53a0aa71108a37a3d1a1b Mon Sep 17 00:00:00 2001 From: Antoine Millet Date: Tue, 31 May 2011 16:33:57 +0200 Subject: [PATCH] Bootstrap client now have an host role. --- ccserver/ccserver.py | 8 ++++---- ccserver/handlers.py | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ccserver/ccserver.py b/ccserver/ccserver.py index 3ff55be..d12690a 100644 --- a/ccserver/ccserver.py +++ b/ccserver/ccserver.py @@ -111,13 +111,14 @@ class CCServer(object): if role is None or client.role == role: yield client - def register(self, login, role, connection): + def register(self, login, role, connection, create_object=False): ''' Register a new connected account on the server. :param login: login of the account :param connection: connection to register :param tags: tags to add for the client + :param create_object: create the object on objectdb ''' if login in self._connected: @@ -126,9 +127,8 @@ class CCServer(object): else: self._connected[login] = CCClient(login, role, self, connection) - # If the registered role is bootstrap, we need to register the object - # on objectdb because it have no account: - if role == 'bootstrap': + # Create the object on objectdb if required: + if create_object: obj = TqlObject(id=login, r=role) logging.info('%s' % obj) self.objects.register(obj) diff --git a/ccserver/handlers.py b/ccserver/handlers.py index 4d0f2a5..f2949ee 100644 --- a/ccserver/handlers.py +++ b/ccserver/handlers.py @@ -881,13 +881,18 @@ class WelcomeHandler(CCHandler): conn.getpeername(), login) raise BadRoleError('%r is not a legal role' % role) + create_object = False + # If authentication is a success, try to register the client: if role == 'bootstrap': # Set a bootstrap id for the object: login = '%s.%s' % (login, conn.get_fd()) + # Real role of the node will be host: + role = 'host' + create_object = True try: - self._server.register(login, role, conn) + self._server.register(login, role, conn, create_object) except AlreadyRegistered: logging.warning(logmsg + 'already connected (%s)', conn.getpeername(), login) -- GitLab