name - server name of the server to be found or created\r
hashkey - server hashkey\r
"""\r
- # see if the server is already in the database\r
- # if not, create one and the hashkey along with it\r
try:\r
- 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
+ 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
session.add(server)\r
session.flush()\r
-\r
- hashkey = ServerHashkey(server_id=server.server_id, \r
- hashkey=hashkey)\r
- session.add(hashkey)\r
log.debug("Created server {0} with hashkey {1}".format(\r
- server.server_id, hashkey.hashkey))\r
+ server.server_id, server.hashkey))\r
\r
return server\r
\r