)]}'
{"oslo/vmware/api.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"62fe193adc822a2ae834fcf4cfa7797c5d8a2e25","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                       \"ID \u003d %s.\"),"},{"line_number":237,"context_line":"                     self._session_id)"},{"line_number":238,"context_line":"            try:"},{"line_number":239,"context_line":"                self.vim.Logout(self.vim.service_content.sessionManager)"},{"line_number":240,"context_line":"            except Exception:"},{"line_number":241,"context_line":"                LOG.exception(_(\"Error occurred while logging out and \""},{"line_number":242,"context_line":"                                \"terminating the current session with \""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2Bgo0%3D","side":"PARENT","line":239,"updated":"2014-03-26 09:51:46.000000000","message":"By removing this, it means that there is no way to logout the current session. What about renaming this function instead? Is it possible to have a cleanup/stop method in the drivers which in-turn can call this method?","commit_id":"6246abd659b5e6e00a473faf4be46c081d122fd5"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"2dd7e12c051a6cd1d06b84c1424673a6146de4f8","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                       \"ID \u003d %s.\"),"},{"line_number":237,"context_line":"                     self._session_id)"},{"line_number":238,"context_line":"            try:"},{"line_number":239,"context_line":"                self.vim.Logout(self.vim.service_content.sessionManager)"},{"line_number":240,"context_line":"            except Exception:"},{"line_number":241,"context_line":"                LOG.exception(_(\"Error occurred while logging out and \""},{"line_number":242,"context_line":"                                \"terminating the current session with \""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F9t60%3D","side":"PARENT","line":239,"in_reply_to":"AAAAWH%2F%2Bgo0%3D","updated":"2014-04-02 15:50:00.000000000","message":"Essentially, because of the way GC is done on Python...\n\nsee:\n https://docs.python.org/2/library/gc.html\n\n... specifically \"gc.garbage\" and its documentation.\n\nBecause of how the Python gc operates there\u0027s no guarantee your __del__ will be called before any __del__ on objects you may depend on. \n\nYou do need to handle clean shutdown. How do you do that? Well, not from a __del__ handler since things like LOG may have already been collected and things like SUDS may have already flushed caches. \n\nYou add a life-cycle event handler as seen here:\n https://review.openstack.org/#/c/75262/\n\nThis prevents us from colliding with anyone else\u0027s shutdown issues.\n\n... It is better to document a startup hook and shutdown hook and a shutdown hook. Use of __del__ should not be *forbidden* but it should be very minimal. It might be appropriate to set a boolean flag that the shutdown hook has been called and if it hasn\u0027t raise an \"Unclosed Session\" exception here. That should be light enough to not cause problems.","commit_id":"6246abd659b5e6e00a473faf4be46c081d122fd5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b37a0967fa690e1500b74169f2c36f609a04e578","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                       \"ID \u003d %s.\"),"},{"line_number":237,"context_line":"                     self._session_id)"},{"line_number":238,"context_line":"            try:"},{"line_number":239,"context_line":"                self.vim.Logout(self.vim.service_content.sessionManager)"},{"line_number":240,"context_line":"            except Exception:"},{"line_number":241,"context_line":"                LOG.exception(_(\"Error occurred while logging out and \""},{"line_number":242,"context_line":"                                \"terminating the current session with \""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F9tiI%3D","side":"PARENT","line":239,"in_reply_to":"AAAAWH%2F9t60%3D","updated":"2014-04-02 16:27:08.000000000","message":"sure, i\u0027ll add the api. guess it needs to be added due to the patch mentioned above. wafrr","commit_id":"6246abd659b5e6e00a473faf4be46c081d122fd5"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"2548a1e306d7e5160d85ec527eee71dc5a16b8be","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        if self._pbm is not None:"},{"line_number":230,"context_line":"            self._pbm.set_cookie(self._get_session_cookie())"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def terminate(self):"},{"line_number":233,"context_line":"        \"\"\"Log out and terminate the current session.\"\"\""},{"line_number":234,"context_line":"        if self._session_id:"},{"line_number":235,"context_line":"            LOG.info(_(\"Logging out and terminating the current session with \""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9tOY%3D","line":232,"updated":"2014-04-02 17:04:25.000000000","message":"why not \"close\", \"logout\" or \"end\"?","commit_id":"cad9d6f626fa35d36f36fcf2c7f0b20a0a566452"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c414ef77e6ad2dc96ca2b8a3118e3776d381f9b2","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        if self._pbm is not None:"},{"line_number":230,"context_line":"            self._pbm.set_cookie(self._get_session_cookie())"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def terminate(self):"},{"line_number":233,"context_line":"        \"\"\"Log out and terminate the current session.\"\"\""},{"line_number":234,"context_line":"        if self._session_id:"},{"line_number":235,"context_line":"            LOG.info(_(\"Logging out and terminating the current session with \""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9tHU%3D","line":232,"in_reply_to":"AAAAWH%2F9tOY%3D","updated":"2014-04-02 17:19:08.000000000","message":"i felt like terminate is better. but i\u0027ll call it logout","commit_id":"cad9d6f626fa35d36f36fcf2c7f0b20a0a566452"},{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"0dfaa87e42081fbcf65719e93ee93408ad578bb3","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                                \"terminating the current session with \""},{"line_number":243,"context_line":"                                \"ID \u003d %s.\"),"},{"line_number":244,"context_line":"                              self._session_id)"},{"line_number":245,"context_line":"            self._session_id \u003d None"},{"line_number":246,"context_line":"        else:"},{"line_number":247,"context_line":"            LOG.debug(_(\"No session exists to log out.\"))"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9ZN8%3D","line":245,"updated":"2014-04-04 20:26:24.000000000","message":"If we could not do a logout, should we retain the session_id, so that a subsequent create_session would attempt to terminate this session ?","commit_id":"61f51c2f8cf0b2ad4c0f6900b04be2e232c85b32"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b8727bbec36a5b0c3f05794149e6d8487bc8d0e1","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                                \"terminating the current session with \""},{"line_number":243,"context_line":"                                \"ID \u003d %s.\"),"},{"line_number":244,"context_line":"                              self._session_id)"},{"line_number":245,"context_line":"            self._session_id \u003d None"},{"line_number":246,"context_line":"        else:"},{"line_number":247,"context_line":"            LOG.debug(_(\"No session exists to log out.\"))"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F9WIs%3D","line":245,"in_reply_to":"AAAAWH%2F9ZN8%3D","updated":"2014-04-06 08:01:26.000000000","message":"good catch!","commit_id":"61f51c2f8cf0b2ad4c0f6900b04be2e232c85b32"}],"tests/test_api.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f306b9e877f6b0e0caa6d786043cf3982768f919","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        ret \u003d api_session.invoke_api(module, \u0027api\u0027)"},{"line_number":211,"context_line":"        self.assertEqual(response, ret)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def test_logout(self):"},{"line_number":214,"context_line":"        api_session \u003d self._create_api_session(True)"},{"line_number":215,"context_line":"        api_session.logout()"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9SFE%3D","line":213,"updated":"2014-04-07 12:37:34.000000000","message":"This is already covered by test_logout_calls_vim_logout. We can change this to test_logout_with_exception and test the case where vim.Logout raises an exception. We can assert that the _session_id remains unchanged.","commit_id":"ed4a2ccdc2870eeee5c92a91e02f2a61b323dc12"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8cfff455c2aa189bfcdd768fae36cca7cf358af6","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        ret \u003d api_session.invoke_api(module, \u0027api\u0027)"},{"line_number":211,"context_line":"        self.assertEqual(response, ret)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def test_logout(self):"},{"line_number":214,"context_line":"        api_session \u003d self._create_api_session(True)"},{"line_number":215,"context_line":"        api_session.logout()"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9RpI%3D","line":213,"in_reply_to":"AAAAWH%2F9SFE%3D","updated":"2014-04-07 13:45:56.000000000","message":"Done","commit_id":"ed4a2ccdc2870eeee5c92a91e02f2a61b323dc12"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f306b9e877f6b0e0caa6d786043cf3982768f919","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def test_logout_no_session(self):"},{"line_number":218,"context_line":"        api_session \u003d self._create_api_session(False)"},{"line_number":219,"context_line":"        api_session.logout()"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def test_logout_calls_vim_logout(self):"},{"line_number":222,"context_line":"        session \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9SGI%3D","line":219,"updated":"2014-04-07 12:37:34.000000000","message":"Do we need to assert that vim.Logout.call_count \u003d\u003d 0?","commit_id":"ed4a2ccdc2870eeee5c92a91e02f2a61b323dc12"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8cfff455c2aa189bfcdd768fae36cca7cf358af6","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def test_logout_no_session(self):"},{"line_number":218,"context_line":"        api_session \u003d self._create_api_session(False)"},{"line_number":219,"context_line":"        api_session.logout()"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def test_logout_calls_vim_logout(self):"},{"line_number":222,"context_line":"        session \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9Rwo%3D","line":219,"in_reply_to":"AAAAWH%2F9SGI%3D","updated":"2014-04-07 13:45:56.000000000","message":"Done","commit_id":"ed4a2ccdc2870eeee5c92a91e02f2a61b323dc12"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f306b9e877f6b0e0caa6d786043cf3982768f919","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            session_manager, userName\u003dVMwareAPISessionTest.USERNAME,"},{"line_number":233,"context_line":"            password\u003dVMwareAPISessionTest.PASSWORD)"},{"line_number":234,"context_line":"        api_session.logout()"},{"line_number":235,"context_line":"        vim_obj.Logout.assert_called_once_with("},{"line_number":236,"context_line":"            session_manager)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_invoke_api_with_expected_exception(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9SGg%3D","line":235,"updated":"2014-04-07 12:37:34.000000000","message":"can also assert _session_id is None","commit_id":"ed4a2ccdc2870eeee5c92a91e02f2a61b323dc12"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8cfff455c2aa189bfcdd768fae36cca7cf358af6","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            session_manager, userName\u003dVMwareAPISessionTest.USERNAME,"},{"line_number":233,"context_line":"            password\u003dVMwareAPISessionTest.PASSWORD)"},{"line_number":234,"context_line":"        api_session.logout()"},{"line_number":235,"context_line":"        vim_obj.Logout.assert_called_once_with("},{"line_number":236,"context_line":"            session_manager)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test_invoke_api_with_expected_exception(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F9RwE%3D","line":235,"in_reply_to":"AAAAWH%2F9SGg%3D","updated":"2014-04-07 13:45:56.000000000","message":"Done","commit_id":"ed4a2ccdc2870eeee5c92a91e02f2a61b323dc12"}]}
