From a42b17615684dd3ada45b38fc314bae6c0f9341a Mon Sep 17 00:00:00 2001 From: Alex Oughton Date: Fri, 18 Mar 2016 11:12:10 -0500 Subject: [PATCH] Close XenAPI sessions in neutron-rootwrap-xen-dom0 Neutron with XenServer properly doesn't close XenAPI sessions. If it creates these sessions so rapidly, the XenServer host eventually exceeds its maximum allowed number of connections. This patch adds a close process for session. Closes-Bug: 1558721 Change-Id: Ida90a970c649745c492c28c41c4a151e4d940aa6 (cherry picked from commit 9d21b5ad7edbf9ac1fd9254e97f56966f25de8e6) --- bin/neutron-rootwrap-xen-dom0 | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/bin/neutron-rootwrap-xen-dom0 b/bin/neutron-rootwrap-xen-dom0 index b4e2e31b5cf..1d73883e01b 100755 --- a/bin/neutron-rootwrap-xen-dom0 +++ b/bin/neutron-rootwrap-xen-dom0 @@ -113,11 +113,14 @@ def run_command(url, username, password, user_args, cmd_input): try: session = XenAPI.Session(url) session.login_with_password(username, password) - host = session.xenapi.session.get_this_host(session.handle) - result = session.xenapi.host.call_plugin( - host, 'netwrap', 'run_command', - {'cmd': json.dumps(user_args), 'cmd_input': json.dumps(cmd_input)}) - return json.loads(result) + try: + host = session.xenapi.session.get_this_host(session.handle) + result = session.xenapi.host.call_plugin( + host, 'netwrap', 'run_command', + {'cmd': json.dumps(user_args), 'cmd_input': json.dumps(cmd_input)}) + return json.loads(result) + finally: + session.xenapi.session.logout() except Exception as e: traceback.print_exc() sys.exit(RC_XENAPI_ERROR)