- hashkey = session.query(ServerHashkey).filter_by(\r
- hashkey=hashkey).one()\r
- server = session.query(Server).filter_by(\r
- server_id=hashkey.server_id).one()\r
- log.debug("Found existing server {0} with hashkey {1}".format(\r
- server.server_id, hashkey.hashkey))\r
- except:\r
- server = Server()\r
- server.name = name\r
+ # find one by that name, if it exists\r
+ server = session.query(Server).filter_by(name=name).one()\r
+\r
+ # store new hashkey\r
+ if server.hashkey != hashkey:\r
+ server.hashkey = hashkey\r
+ session.add(server)\r
+\r
+ # store new IP address\r
+ if server.ip_addr != ip_addr:\r
+ server.ip_addr = ip_addr\r
+ session.add(server)\r
+\r
+ # store new revision\r
+ if server.revision != revision:\r
+ server.revision = revision\r
+ session.add(server)\r
+\r
+ log.debug("Found existing server {0}".format(server.server_id))\r
+\r
+ except MultipleResultsFound, e:\r
+ # multiple found, so also filter by hashkey\r
+ server = session.query(Server).filter_by(name=name).\\r
+ filter_by(hashkey=hashkey).one()\r
+ log.debug("Found existing server {0}".format(server.server_id))\r
+\r
+ except NoResultFound, e:\r
+ # not found, create one\r
+ server = Server(name=name, hashkey=hashkey)\r