)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"762ef83e803b866ecbfe170c4a2ab14e36bd63a0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"instances are deleted or moved."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch adds a periodic task to the compute manager"},{"line_number":16,"context_line":"to cleanup expired tokens. It also adds token cleanup"},{"line_number":17,"context_line":"for instances when deleted or live migrated."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Later patches in this series will add the code to put"},{"line_number":20,"context_line":"console auth tokens in the database."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"9f6a8fd7_2e4c0c9d","line":17,"range":{"start_line":16,"start_character":27,"end_line":17,"end_character":44},"updated":"2018-04-17 16:47:05.000000000","message":"Should probably mention the thing from:\n\nhttps://review.openstack.org/#/c/325381/18/nova/compute/manager.py@4727\n\nWhere shelve offload and resize/cold migrate aren\u0027t accounted for.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8a7e267965e745893ac9005b707f3a5dd06b9601","unresolved":false,"context_lines":[{"line_number":13,"context_line":"instances are deleted or moved."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch adds a periodic task to the compute manager"},{"line_number":16,"context_line":"to cleanup expired tokens. It also adds token cleanup"},{"line_number":17,"context_line":"for instances when deleted or live migrated."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Later patches in this series will add the code to put"},{"line_number":20,"context_line":"console auth tokens in the database."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"9f6a8fd7_f19ef505","line":17,"range":{"start_line":16,"start_character":27,"end_line":17,"end_character":44},"in_reply_to":"9f6a8fd7_2e4c0c9d","updated":"2018-04-17 17:06:46.000000000","message":"Ack.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"}],"nova/compute/api.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7c1d36e51724e9389861301b18f4181313f31cfb","unresolved":false,"context_lines":[{"line_number":1998,"context_line":"                # in both the consoleauth service and the database while"},{"line_number":1999,"context_line":"                # we convert to using the database. Remove the consoleauth"},{"line_number":2000,"context_line":"                # line below when authorizations are no longer being"},{"line_number":2001,"context_line":"                # stored in consoleauth."},{"line_number":2002,"context_line":"                self.consoleauth_rpcapi.delete_tokens_for_instance("},{"line_number":2003,"context_line":"                    context, instance.uuid)"},{"line_number":2004,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df3967d1_ca279e64","line":2001,"updated":"2017-07-31 14:30:49.000000000","message":"You should indicated that \u0027this change has been introduced for Queens and can be removed for R*\u0027 So we exactly know when we can drop that part.","commit_id":"99dc74448eacc8c266f7deba6cc339f4236d5630"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7c1d36e51724e9389861301b18f4181313f31cfb","unresolved":false,"context_lines":[{"line_number":4069,"context_line":"        # in both the consoleauth service and the database while"},{"line_number":4070,"context_line":"        # we convert to using the database. Remove the consoleauth"},{"line_number":4071,"context_line":"        # line below when authorizations are no longer being"},{"line_number":4072,"context_line":"        # stored in consoleauth."},{"line_number":4073,"context_line":"        self.consoleauth_rpcapi.delete_tokens_for_instance("},{"line_number":4074,"context_line":"            context, instance.uuid)"},{"line_number":4075,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df3967d1_6a1e720d","line":4072,"updated":"2017-07-31 14:30:49.000000000","message":"Same comment for here.","commit_id":"99dc74448eacc8c266f7deba6cc339f4236d5630"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fd773959ded34e6eaa4a6b396aedd902e9302bf","unresolved":false,"context_lines":[{"line_number":1869,"context_line":"            # NOTE(dtp): cells.enable \u003d False means \"use cells v2\"."},{"line_number":1870,"context_line":"            # Run everywhere except v1 compute cells."},{"line_number":1871,"context_line":"            if not CONF.cells.enable or self.cell_type \u003d\u003d \u0027api\u0027:"},{"line_number":1872,"context_line":"                # TODO(melwitt): In Queens, we store console authorizations"},{"line_number":1873,"context_line":"                # in both the consoleauth service and the database while"},{"line_number":1874,"context_line":"                # we convert to using the database. Remove the consoleauth"},{"line_number":1875,"context_line":"                # line below when authorizations are no longer being"}],"source_content_type":"text/x-python","patch_set":27,"id":"df7087c5_191cac68","line":1872,"range":{"start_line":1872,"start_character":36,"end_line":1872,"end_character":42},"updated":"2018-03-22 11:24:56.000000000","message":"Rocky?","commit_id":"a9521eaf64a4ec4da256e38d90eedaa651089822"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fd773959ded34e6eaa4a6b396aedd902e9302bf","unresolved":false,"context_lines":[{"line_number":1873,"context_line":"                # in both the consoleauth service and the database while"},{"line_number":1874,"context_line":"                # we convert to using the database. Remove the consoleauth"},{"line_number":1875,"context_line":"                # line below when authorizations are no longer being"},{"line_number":1876,"context_line":"                # stored in consoleauth, in the Rocky release."},{"line_number":1877,"context_line":"                self.consoleauth_rpcapi.delete_tokens_for_instance("},{"line_number":1878,"context_line":"                    context, instance.uuid)"},{"line_number":1879,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"df7087c5_d92714b6","line":1876,"range":{"start_line":1876,"start_character":48,"end_line":1876,"end_character":53},"updated":"2018-03-22 11:24:56.000000000","message":"S(olar)?","commit_id":"a9521eaf64a4ec4da256e38d90eedaa651089822"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5fd773959ded34e6eaa4a6b396aedd902e9302bf","unresolved":false,"context_lines":[{"line_number":4209,"context_line":"        self._record_action_start(context, instance,"},{"line_number":4210,"context_line":"                                  instance_actions.LIVE_MIGRATION)"},{"line_number":4211,"context_line":""},{"line_number":4212,"context_line":"        # TODO(melwitt): In Queens, we store console authorizations"},{"line_number":4213,"context_line":"        # in both the consoleauth service and the database while"},{"line_number":4214,"context_line":"        # we convert to using the database. Remove the consoleauth"},{"line_number":4215,"context_line":"        # line below when authorizations are no longer being"}],"source_content_type":"text/x-python","patch_set":27,"id":"df7087c5_39173048","line":4212,"range":{"start_line":4212,"start_character":28,"end_line":4212,"end_character":34},"updated":"2018-03-22 11:24:56.000000000","message":"Rocky?","commit_id":"a9521eaf64a4ec4da256e38d90eedaa651089822"}],"nova/compute/manager.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6b125aab8a14837bc7e6a2e8c925f5cecea93dc1","unresolved":false,"context_lines":[{"line_number":5370,"context_line":"                self.cells_rpcapi.consoleauth_delete_tokens("},{"line_number":5371,"context_line":"                    ctxt, instance.uuid)"},{"line_number":5372,"context_line":"            else:"},{"line_number":5373,"context_line":"                # NOTE(PaulMurray): console auth is being deprecated"},{"line_number":5374,"context_line":"                # and replaced by the console auth tokens in the database."},{"line_number":5375,"context_line":"                # During the deprecation period we will store tokens"},{"line_number":5376,"context_line":"                # in both database and consoleauth but validate using"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_9b8a3763","line":5373,"updated":"2016-06-16 10:55:39.000000000","message":"Should be more like a TODO since an action is probably required. Also it could be interesting to have inside this comment when you have introduced that change and when we should to remove call of delete_tokens_for_instance.","commit_id":"12946fa21d31bbb66a821bc2d43c088b4b2c7974"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a3fdb93f3296dbf917a5f2d9aa9928e63609e1e8","unresolved":false,"context_lines":[{"line_number":5370,"context_line":"                self.cells_rpcapi.consoleauth_delete_tokens("},{"line_number":5371,"context_line":"                    ctxt, instance.uuid)"},{"line_number":5372,"context_line":"            else:"},{"line_number":5373,"context_line":"                # NOTE(PaulMurray): console auth is being deprecated"},{"line_number":5374,"context_line":"                # and replaced by the console auth tokens in the database."},{"line_number":5375,"context_line":"                # During the deprecation period we will store tokens"},{"line_number":5376,"context_line":"                # in both database and consoleauth but validate using"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a9d85d2_4b049d14","line":5373,"updated":"2016-06-20 14:57:02.000000000","message":"Should be a TODO since an action is required. Also it should to have inside this comment an indication of when you have introduced that change and when we should to remove call of delete_tokens_for_instance.","commit_id":"bfbea2c4e045b7ffa5050740d77f79cb4cfc1ca8"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"fbdf7731a34eed5a7a6253b08440955df69ee97f","unresolved":false,"context_lines":[{"line_number":5370,"context_line":"                self.cells_rpcapi.consoleauth_delete_tokens("},{"line_number":5371,"context_line":"                    ctxt, instance.uuid)"},{"line_number":5372,"context_line":"            else:"},{"line_number":5373,"context_line":"                # NOTE(PaulMurray): console auth is being deprecated"},{"line_number":5374,"context_line":"                # and replaced by the console auth tokens in the database."},{"line_number":5375,"context_line":"                # During the deprecation period we will store tokens"},{"line_number":5376,"context_line":"                # in both database and consoleauth but validate using"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_01837557","line":5373,"in_reply_to":"5a9d85d2_4b049d14","updated":"2016-06-22 17:15:26.000000000","message":"Thanks Sahid, made it a TODO. Actually I realised there is no need to wait for a deprecation period. This is all internal - when we have converted all the code to use the database we can remove the code that deals with consoleauth. Deprecating consoleauth itself can be done seperately.","commit_id":"bfbea2c4e045b7ffa5050740d77f79cb4cfc1ca8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"30c7c360775abdb7fd8356c0ffe0b4d2b3b43726","unresolved":false,"context_lines":[{"line_number":6095,"context_line":""},{"line_number":6096,"context_line":"    def _clean_instance_console_tokens(self, ctxt, instance):"},{"line_number":6097,"context_line":"        \"\"\"Clean console tokens stored for an instance.\"\"\""},{"line_number":6098,"context_line":"        if self._consoles_enabled():"},{"line_number":6099,"context_line":"            if not CONF.cells.enable:"},{"line_number":6100,"context_line":"                obj_console_connection.ConsoleConnection.\\"},{"line_number":6101,"context_line":"                    clean_console_auths_for_instance(ctxt, instance.uuid)"},{"line_number":6102,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ff82abbf_6f14f644","line":6099,"range":{"start_line":6098,"start_character":0,"end_line":6099,"end_character":37},"updated":"2017-11-24 13:18:32.000000000","message":"nit: could flatten this or fast return\n\n  if CONF.cells.enable:\n      return\n\n  if self._consoles_enabled():\n      ...\n\nThen again, why do we even need this check when we don\u0027t have one in \u0027_cleanup_expired_console_auth_tokens\u0027. Would the called function not be a noop is no tokens existed?","commit_id":"9f8b295a6742d3b7c917537ad1d5b39e63c990dc"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1de7a4f1ea83c623757296c3e9796e58d03aa484","unresolved":false,"context_lines":[{"line_number":6095,"context_line":""},{"line_number":6096,"context_line":"    def _clean_instance_console_tokens(self, ctxt, instance):"},{"line_number":6097,"context_line":"        \"\"\"Clean console tokens stored for an instance.\"\"\""},{"line_number":6098,"context_line":"        if self._consoles_enabled():"},{"line_number":6099,"context_line":"            if not CONF.cells.enable:"},{"line_number":6100,"context_line":"                obj_console_connection.ConsoleConnection.\\"},{"line_number":6101,"context_line":"                    clean_console_auths_for_instance(ctxt, instance.uuid)"},{"line_number":6102,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"df87a7cf_1a23fa57","line":6099,"range":{"start_line":6098,"start_character":0,"end_line":6099,"end_character":37},"in_reply_to":"ff82abbf_6f14f644","updated":"2017-12-08 23:49:55.000000000","message":"There\u0027s a check here because if cells v1, we\u0027ll not be using the database backend for console auth, so clean_console_auths_for_instance wouldn\u0027t find anything (it\u0027s database-only).\n\nThere is no check in _cleanup_expired_console_auth_tokens because that goes through the database and removes expired records. It\u0027s a bit different in that it\u0027s not looking for anything based on instance UUID, but still a valid point that if cells v1, the database backend isn\u0027t being used, so why bother looking for expired tokens. It\u0027s a no-op but still a waste of effort. I\u0027ll add a check for that.","commit_id":"9f8b295a6742d3b7c917537ad1d5b39e63c990dc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e183fd6a06233e6a9d30d7ab8099644e169adc1e","unresolved":false,"context_lines":[{"line_number":4724,"context_line":"        self._nil_out_instance_obj_host_and_node(instance)"},{"line_number":4725,"context_line":"        instance.save(expected_task_state\u003dNone)"},{"line_number":4726,"context_line":""},{"line_number":4727,"context_line":"        self._delete_scheduler_instance_info(context, instance.uuid)"},{"line_number":4728,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":4729,"context_line":"                \u0027shelve_offload.end\u0027)"},{"line_number":4730,"context_line":"        compute_utils.notify_about_instance_action(context, instance,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf8cb3f7_0e149ef4","line":4727,"updated":"2017-12-22 22:43:22.000000000","message":"If you\u0027re shelve offloading from this host, don\u0027t you also need to delete the console token for the instance? Or does it not have anything to do with the host? What happens if the token expires but the time the instance is unshelved?\n\nBut I\u0027m also confused why we wouldn\u0027t handle cleanup here but we do in post live migration.\n\nAlso, what about evacuate and resize/cold migrate - why aren\u0027t those paths handled?","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"41d229054c3e3a6712c79aa94caea02bdecf4a3d","unresolved":false,"context_lines":[{"line_number":4724,"context_line":"        self._nil_out_instance_obj_host_and_node(instance)"},{"line_number":4725,"context_line":"        instance.save(expected_task_state\u003dNone)"},{"line_number":4726,"context_line":""},{"line_number":4727,"context_line":"        self._delete_scheduler_instance_info(context, instance.uuid)"},{"line_number":4728,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":4729,"context_line":"                \u0027shelve_offload.end\u0027)"},{"line_number":4730,"context_line":"        compute_utils.notify_about_instance_action(context, instance,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f91af0f_da039372","line":4727,"in_reply_to":"9f91af0f_77f07968","updated":"2018-01-05 18:53:27.000000000","message":"So ... I started to work on this and realized if we were to add additional token cleanup in here, we would be changing the existing behavior. This series is simply switching to a different backend (consoleauth service -\u003e database) and currently token cleaning only happens for instance delete and live migration. (See nova/compute/api.py on master).\n\nThe existing implementation deletes token authorizations at the beginning of instance delete and live migration in compute/api. In this series, it\u0027s doing it in the compute/manager. I don\u0027t know the history on why it moved from compute/api to compute/manager but my guess would be because the periodic task for cleanup could be most fine-grained and small if done on a per host basis like this.\n\nIn this series, tokens are cleaned up during post live migration and my guess on that is because probably an end user can interact on the console fine with the existing access url until the instance has fully moved over to the new host. Then new authorization is needed.\n\nOn the other types of moves, I\u0027m thinking we probably shouldn\u0027t change the existing behavior with this series and keep parity with what we\u0027re doing now with the consoleauth service, and add additional token invalidations later. I can\u0027t think of why other moves aren\u0027t handled in the current implementation and I\u0027d want to ask around if anyone might know why.","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1ec0fa8ce67e8c313d155dde35ca267674a35371","unresolved":false,"context_lines":[{"line_number":4724,"context_line":"        self._nil_out_instance_obj_host_and_node(instance)"},{"line_number":4725,"context_line":"        instance.save(expected_task_state\u003dNone)"},{"line_number":4726,"context_line":""},{"line_number":4727,"context_line":"        self._delete_scheduler_instance_info(context, instance.uuid)"},{"line_number":4728,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":4729,"context_line":"                \u0027shelve_offload.end\u0027)"},{"line_number":4730,"context_line":"        compute_utils.notify_about_instance_action(context, instance,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f6a8fd7_4e6860f4","line":4727,"in_reply_to":"9f91af0f_da039372","updated":"2018-04-17 16:35:48.000000000","message":"\u003e On the other types of moves, I\u0027m thinking we probably shouldn\u0027t change the existing behavior with this series and keep parity with what we\u0027re doing now with the consoleauth service, and add additional token invalidations later. I can\u0027t think of why other moves aren\u0027t handled in the current implementation and I\u0027d want to ask around if anyone might know why.\n\nShould probably at least leave TODOs in the other move operations so it\u0027s not forgotten.","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"94e924cc2240370c4d5f37776a9d1e3646bdc10f","unresolved":false,"context_lines":[{"line_number":4724,"context_line":"        self._nil_out_instance_obj_host_and_node(instance)"},{"line_number":4725,"context_line":"        instance.save(expected_task_state\u003dNone)"},{"line_number":4726,"context_line":""},{"line_number":4727,"context_line":"        self._delete_scheduler_instance_info(context, instance.uuid)"},{"line_number":4728,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":4729,"context_line":"                \u0027shelve_offload.end\u0027)"},{"line_number":4730,"context_line":"        compute_utils.notify_about_instance_action(context, instance,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f91af0f_77f07968","line":4727,"in_reply_to":"bf8cb3f7_0e149ef4","updated":"2018-01-04 19:43:52.000000000","message":"Hm, yeah I think any time the instance moves we\u0027d have to redo the console authorization because it\u0027s a call down to the driver to establish the connection. So ... it seems like those paths were missed and need to be added.\n\nIf the token expires, the end user will receive an error when they try to connect to the console, so they would have to make a new REST API call to get a new access url to use.","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e183fd6a06233e6a9d30d7ab8099644e169adc1e","unresolved":false,"context_lines":[{"line_number":6219,"context_line":""},{"line_number":6220,"context_line":"    def _clean_instance_console_tokens(self, ctxt, instance):"},{"line_number":6221,"context_line":"        \"\"\"Clean console tokens stored for an instance.\"\"\""},{"line_number":6222,"context_line":"        # If the database backend isn\u0027t in use, don\u0027t bother trying to clean"},{"line_number":6223,"context_line":"        # tokens."},{"line_number":6224,"context_line":"        if CONF.cells.enable:"},{"line_number":6225,"context_line":"            return"},{"line_number":6226,"context_line":"        if self._consoles_enabled():"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf8cb3f7_6e6d2a97","line":6223,"range":{"start_line":6222,"start_character":8,"end_line":6223,"end_character":17},"updated":"2017-12-22 22:43:22.000000000","message":"This isn\u0027t checking any option about a database backend...\n\nIs there supposed to be a CONF.console_tokens_backend check here?","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"94e924cc2240370c4d5f37776a9d1e3646bdc10f","unresolved":false,"context_lines":[{"line_number":6219,"context_line":""},{"line_number":6220,"context_line":"    def _clean_instance_console_tokens(self, ctxt, instance):"},{"line_number":6221,"context_line":"        \"\"\"Clean console tokens stored for an instance.\"\"\""},{"line_number":6222,"context_line":"        # If the database backend isn\u0027t in use, don\u0027t bother trying to clean"},{"line_number":6223,"context_line":"        # tokens."},{"line_number":6224,"context_line":"        if CONF.cells.enable:"},{"line_number":6225,"context_line":"            return"},{"line_number":6226,"context_line":"        if self._consoles_enabled():"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f91af0f_5738d53b","line":6223,"range":{"start_line":6222,"start_character":8,"end_line":6223,"end_character":17},"in_reply_to":"bf8cb3f7_6e6d2a97","updated":"2018-01-04 19:43:52.000000000","message":"No, the database backend isn\u0027t supported for cells v1, so this is based on CONF.cells.enable.","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e183fd6a06233e6a9d30d7ab8099644e169adc1e","unresolved":false,"context_lines":[{"line_number":7690,"context_line":"        instance. After a time they expire. We periodically remove any expired"},{"line_number":7691,"context_line":"        tokens from the database."},{"line_number":7692,"context_line":"        \"\"\""},{"line_number":7693,"context_line":"        # If the database backend isn\u0027t in use, don\u0027t bother looking for"},{"line_number":7694,"context_line":"        # expired tokens."},{"line_number":7695,"context_line":"        if not CONF.cells.enable:"},{"line_number":7696,"context_line":"            obj_console_connection.ConsoleConnection.\\"},{"line_number":7697,"context_line":"                clean_expired_console_auths_for_host(context, self.host)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf8cb3f7_4e0aa6d2","line":7694,"range":{"start_line":7693,"start_character":8,"end_line":7694,"end_character":25},"updated":"2017-12-22 22:43:22.000000000","message":"same as above","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"762ef83e803b866ecbfe170c4a2ab14e36bd63a0","unresolved":false,"context_lines":[{"line_number":4871,"context_line":"        self._nil_out_instance_obj_host_and_node(instance)"},{"line_number":4872,"context_line":"        instance.save(expected_task_state\u003dNone)"},{"line_number":4873,"context_line":""},{"line_number":4874,"context_line":"        self._delete_scheduler_instance_info(context, instance.uuid)"},{"line_number":4875,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":4876,"context_line":"                \u0027shelve_offload.end\u0027)"},{"line_number":4877,"context_line":"        compute_utils.notify_about_instance_action(context, instance,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_b1407d37","line":4874,"updated":"2018-04-17 16:47:05.000000000","message":"We should have a TODO about cleaning up console auth tokens here when we shelve offload.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8a7e267965e745893ac9005b707f3a5dd06b9601","unresolved":false,"context_lines":[{"line_number":4871,"context_line":"        self._nil_out_instance_obj_host_and_node(instance)"},{"line_number":4872,"context_line":"        instance.save(expected_task_state\u003dNone)"},{"line_number":4873,"context_line":""},{"line_number":4874,"context_line":"        self._delete_scheduler_instance_info(context, instance.uuid)"},{"line_number":4875,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":4876,"context_line":"                \u0027shelve_offload.end\u0027)"},{"line_number":4877,"context_line":"        compute_utils.notify_about_instance_action(context, instance,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_9151b9db","line":4874,"in_reply_to":"9f6a8fd7_b1407d37","updated":"2018-04-17 17:06:46.000000000","message":"Ack.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0781e93c6c25bb8b2ab0a4f57dca5223c040f416","unresolved":false,"context_lines":[{"line_number":6369,"context_line":"        # tokens. The database backend is not supported for cells v1."},{"line_number":6370,"context_line":"        if not CONF.cells.enable and self._consoles_enabled():"},{"line_number":6371,"context_line":"            obj_console_auth_token.ConsoleAuthToken.\\"},{"line_number":6372,"context_line":"                clean_console_auths_for_instance(ctxt, instance.uuid)"},{"line_number":6373,"context_line":""},{"line_number":6374,"context_line":"    @wrap_exception()"},{"line_number":6375,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_ee8294c8","line":6372,"updated":"2018-04-17 16:29:19.000000000","message":"Am I missing where we test this?","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8a7e267965e745893ac9005b707f3a5dd06b9601","unresolved":false,"context_lines":[{"line_number":6369,"context_line":"        # tokens. The database backend is not supported for cells v1."},{"line_number":6370,"context_line":"        if not CONF.cells.enable and self._consoles_enabled():"},{"line_number":6371,"context_line":"            obj_console_auth_token.ConsoleAuthToken.\\"},{"line_number":6372,"context_line":"                clean_console_auths_for_instance(ctxt, instance.uuid)"},{"line_number":6373,"context_line":""},{"line_number":6374,"context_line":"    @wrap_exception()"},{"line_number":6375,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_115fe9e2","line":6372,"in_reply_to":"9f6a8fd7_ee8294c8","updated":"2018-04-17 17:06:46.000000000","message":"Looks like I missed this. Will add.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0781e93c6c25bb8b2ab0a4f57dca5223c040f416","unresolved":false,"context_lines":[{"line_number":7827,"context_line":"        self.driver.unquiesce(context, instance, image_meta)"},{"line_number":7828,"context_line":""},{"line_number":7829,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.console_auth_cleanup_interval,"},{"line_number":7830,"context_line":"                                 run_immediately\u003dTrue)"},{"line_number":7831,"context_line":"    def _cleanup_expired_console_auth_tokens(self, context):"},{"line_number":7832,"context_line":"        \"\"\"Remove expired console auth tokens for this host."},{"line_number":7833,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_0e058877","line":7830,"updated":"2018-04-17 16:29:19.000000000","message":"I wonder if we should just use instance_delete_interval, which we use for cleaning up failed delete and migration residue already? I doubt anyone really needs to configure these to run at different intervals since they\u0027re already expired and it\u0027d be one less config option to add.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8a7e267965e745893ac9005b707f3a5dd06b9601","unresolved":false,"context_lines":[{"line_number":7827,"context_line":"        self.driver.unquiesce(context, instance, image_meta)"},{"line_number":7828,"context_line":""},{"line_number":7829,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.console_auth_cleanup_interval,"},{"line_number":7830,"context_line":"                                 run_immediately\u003dTrue)"},{"line_number":7831,"context_line":"    def _cleanup_expired_console_auth_tokens(self, context):"},{"line_number":7832,"context_line":"        \"\"\"Remove expired console auth tokens for this host."},{"line_number":7833,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_31f0ed67","line":7830,"in_reply_to":"9f6a8fd7_0e058877","updated":"2018-04-17 17:06:46.000000000","message":"Maybe, I hadn\u0027t considered that. I think my only concern with that would be that it would hide the ability to know how often expired tokens are cleared out and if we add it to the instance_delete_interval help [0], it would look out-of-place. I definitely think it should be documented in the help because it\u0027s about cleaning up records that could pile up over time and I wouldn\u0027t want a situation where no one can find how often that occurs without looking in compute/manager.py.\n\n[0] https://github.com/openstack/nova/blob/master/nova/conf/compute.py#L814","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7a6051f1b4887533fbc6fd79b8b5825467a6c65d","unresolved":false,"context_lines":[{"line_number":7827,"context_line":"        self.driver.unquiesce(context, instance, image_meta)"},{"line_number":7828,"context_line":""},{"line_number":7829,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.console_auth_cleanup_interval,"},{"line_number":7830,"context_line":"                                 run_immediately\u003dTrue)"},{"line_number":7831,"context_line":"    def _cleanup_expired_console_auth_tokens(self, context):"},{"line_number":7832,"context_line":"        \"\"\"Remove expired console auth tokens for this host."},{"line_number":7833,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_91fa1940","line":7830,"in_reply_to":"9f6a8fd7_0e058877","updated":"2018-04-17 17:13:10.000000000","message":"Yeah, have to agree with Dan on this. Better to use the existing instance_delete_interval option.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8c8c387a7a9c55f99f8b4fb614b1f8f9e85474d5","unresolved":false,"context_lines":[{"line_number":7827,"context_line":"        self.driver.unquiesce(context, instance, image_meta)"},{"line_number":7828,"context_line":""},{"line_number":7829,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.console_auth_cleanup_interval,"},{"line_number":7830,"context_line":"                                 run_immediately\u003dTrue)"},{"line_number":7831,"context_line":"    def _cleanup_expired_console_auth_tokens(self, context):"},{"line_number":7832,"context_line":"        \"\"\"Remove expired console auth tokens for this host."},{"line_number":7833,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_b735b6dc","line":7830,"in_reply_to":"9f6a8fd7_22065d88","updated":"2018-04-18 13:48:25.000000000","message":"FWIW, I don\u0027t think it\u0027s really all that important to have it documented. They\u0027re expired, they don\u0027t hurt anything if they\u0027re there and if we\u0027ll clean them up all the time, I don\u0027t see why anyone would care or come asking about them specifically.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b3f4312131600b1122f6914e3fbcc92bd0b08a23","unresolved":false,"context_lines":[{"line_number":7827,"context_line":"        self.driver.unquiesce(context, instance, image_meta)"},{"line_number":7828,"context_line":""},{"line_number":7829,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.console_auth_cleanup_interval,"},{"line_number":7830,"context_line":"                                 run_immediately\u003dTrue)"},{"line_number":7831,"context_line":"    def _cleanup_expired_console_auth_tokens(self, context):"},{"line_number":7832,"context_line":"        \"\"\"Remove expired console auth tokens for this host."},{"line_number":7833,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_22065d88","line":7830,"in_reply_to":"9f6a8fd7_91fa1940","updated":"2018-04-17 19:03:11.000000000","message":"Fine y\u0027all.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"79329981f914b4dcacc3468691807b28f17d14ce","unresolved":false,"context_lines":[{"line_number":7827,"context_line":"        self.driver.unquiesce(context, instance, image_meta)"},{"line_number":7828,"context_line":""},{"line_number":7829,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.console_auth_cleanup_interval,"},{"line_number":7830,"context_line":"                                 run_immediately\u003dTrue)"},{"line_number":7831,"context_line":"    def _cleanup_expired_console_auth_tokens(self, context):"},{"line_number":7832,"context_line":"        \"\"\"Remove expired console auth tokens for this host."},{"line_number":7833,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_50b8db74","line":7830,"in_reply_to":"9f6a8fd7_b735b6dc","updated":"2018-04-18 19:21:31.000000000","message":"Yeah, I can see that point of view. I think I\u0027m thinking back to issues from the past, for example, with expired keystone UUID-based tokens not getting removed from the database. After they piled up for awhile, keystone auth could take several seconds/minutes to complete.\n\nBut, in that scenario it took weeks/months for them to pile up so the equivalent here would be a disabled instance_delete_interval, in which case anyone would expect bad behavior. So, I think I agree it\u0027s not so important to document.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0781e93c6c25bb8b2ab0a4f57dca5223c040f416","unresolved":false,"context_lines":[{"line_number":7840,"context_line":"        # expired tokens. The database backend is not supported for cells v1."},{"line_number":7841,"context_line":"        if not CONF.cells.enable:"},{"line_number":7842,"context_line":"            obj_console_auth_token.ConsoleAuthToken.\\"},{"line_number":7843,"context_line":"                clean_expired_console_auths_for_host(context, self.host)"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_6e21a4fb","line":7843,"updated":"2018-04-17 16:29:19.000000000","message":"There\u0027s no test for this function is there?","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8a7e267965e745893ac9005b707f3a5dd06b9601","unresolved":false,"context_lines":[{"line_number":7840,"context_line":"        # expired tokens. The database backend is not supported for cells v1."},{"line_number":7841,"context_line":"        if not CONF.cells.enable:"},{"line_number":7842,"context_line":"            obj_console_auth_token.ConsoleAuthToken.\\"},{"line_number":7843,"context_line":"                clean_expired_console_auths_for_host(context, self.host)"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_d13bb135","line":7843,"in_reply_to":"9f6a8fd7_6e21a4fb","updated":"2018-04-17 17:06:46.000000000","message":"Looks like not. Maybe for these I had been thinking the unit test [0] for the object was testing the guts of what this does, but yeah, there needs to be tests for these actual functions that are guarded by cells v1 enable etc. Will add.\n\n[0] https://github.com/openstack/nova/blob/master/nova/tests/unit/objects/test_console_auth_token.py#L151","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"decfb9068c2336a687d1e491b9478bb7d9d598ba","unresolved":false,"context_lines":[{"line_number":4877,"context_line":"        self._nil_out_instance_obj_host_and_node(instance)"},{"line_number":4878,"context_line":"        instance.save(expected_task_state\u003dNone)"},{"line_number":4879,"context_line":""},{"line_number":4880,"context_line":"        # TODO(melwitt): We should clean up instance console tokens here. The"},{"line_number":4881,"context_line":"        # instance is on a new host and will need to establish a new console"},{"line_number":4882,"context_line":"        # connection."},{"line_number":4883,"context_line":"        self._delete_scheduler_instance_info(context, instance.uuid)"},{"line_number":4884,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":4885,"context_line":"                \u0027shelve_offload.end\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9f6a8fd7_93c53991","line":4882,"range":{"start_line":4880,"start_character":74,"end_line":4882,"end_character":21},"updated":"2018-04-17 21:04:55.000000000","message":"Bah, forgot to change this to something like, \"The instance is no longer on a host\"","commit_id":"b8ff95599dd7e8413a5a6f1b4337a1c894afbbf2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d0bdaae3b946da5df63190d66d13319b201ddbff","unresolved":false,"context_lines":[{"line_number":4877,"context_line":"        self._nil_out_instance_obj_host_and_node(instance)"},{"line_number":4878,"context_line":"        instance.save(expected_task_state\u003dNone)"},{"line_number":4879,"context_line":""},{"line_number":4880,"context_line":"        # TODO(melwitt): We should clean up instance console tokens here. The"},{"line_number":4881,"context_line":"        # instance is on a new host and will need to establish a new console"},{"line_number":4882,"context_line":"        # connection."},{"line_number":4883,"context_line":"        self._delete_scheduler_instance_info(context, instance.uuid)"},{"line_number":4884,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":4885,"context_line":"                \u0027shelve_offload.end\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9f6a8fd7_d06dcb98","line":4882,"range":{"start_line":4880,"start_character":74,"end_line":4882,"end_character":21},"in_reply_to":"9f6a8fd7_93c53991","updated":"2018-04-18 18:59:37.000000000","message":"yup, you\u0027ve been shelved","commit_id":"b8ff95599dd7e8413a5a6f1b4337a1c894afbbf2"}],"nova/conf/compute.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7c1d36e51724e9389861301b18f4181313f31cfb","unresolved":false,"context_lines":[{"line_number":886,"context_line":"    cfg.IntOpt(\u0027console_auth_cleanup_interval\u0027,"},{"line_number":887,"context_line":"        default\u003d3600,"},{"line_number":888,"context_line":"        help\u003d\"\"\""},{"line_number":889,"context_line":"Interval in seconds for clearing expired console authorization tokens from the"},{"line_number":890,"context_line":"database. Each compute manager is responsible for cleaning up its own expired"},{"line_number":891,"context_line":"tokens. Set to -1 to disable."},{"line_number":892,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":13,"id":"df3967d1_2a9bca72","line":889,"updated":"2017-07-31 14:30:49.000000000","message":"Don\u0027t we have something like a pattern to write the \u0027help\u0027 of the conf?\n\nOne line title then a description and the possible values (which -1 seems to be a special case)?","commit_id":"99dc74448eacc8c266f7deba6cc339f4236d5630"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"30c7c360775abdb7fd8356c0ffe0b4d2b3b43726","unresolved":false,"context_lines":[{"line_number":872,"context_line":"* Any positive integer in seconds."},{"line_number":873,"context_line":"\"\"\"),"},{"line_number":874,"context_line":"    cfg.IntOpt(\u0027console_auth_cleanup_interval\u0027,"},{"line_number":875,"context_line":"        default\u003d3600,"},{"line_number":876,"context_line":"        help\u003d\"\"\""},{"line_number":877,"context_line":"Interval for clearing expired console authorization tokens from the database."},{"line_number":878,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ff82abbf_ef4ec66d","line":875,"range":{"start_line":875,"start_character":8,"end_line":875,"end_character":21},"updated":"2017-11-24 13:18:32.000000000","message":"Notes for self.\n\n- This can be negative to disable the option, so there\u0027s no need for a \u0027min\u0027 option. \n- The default is oslo.service is 60 seconds, which would presumably be far too frequent hence 3600","commit_id":"9f8b295a6742d3b7c917537ad1d5b39e63c990dc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e183fd6a06233e6a9d30d7ab8099644e169adc1e","unresolved":false,"context_lines":[{"line_number":885,"context_line":""},{"line_number":886,"context_line":"Possible values:"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"* 0: Will run at the default periodic interval."},{"line_number":889,"context_line":"* Any value \u003c 0: Disables the option."},{"line_number":890,"context_line":"* Any positive integer in seconds."},{"line_number":891,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf8cb3f7_2e2e4243","line":888,"range":{"start_line":888,"start_character":5,"end_line":888,"end_character":47},"updated":"2017-12-22 22:43:22.000000000","message":"which is what? i know what it is (60 seconds), but we should mention it in the docs","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4b748d759546a4cf5c23b1ec7b08baee734ceff2","unresolved":false,"context_lines":[{"line_number":885,"context_line":""},{"line_number":886,"context_line":"Possible values:"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"* 0: Will run at the default periodic interval."},{"line_number":889,"context_line":"* Any value \u003c 0: Disables the option."},{"line_number":890,"context_line":"* Any positive integer in seconds."},{"line_number":891,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f91af0f_b4002869","line":888,"range":{"start_line":888,"start_character":5,"end_line":888,"end_character":47},"in_reply_to":"9f91af0f_17680d1f","updated":"2018-01-05 17:00:24.000000000","message":"\u003e None of the other defaults say the default from oslo.service (60\n \u003e seconds) so I kept consistent with that. The only reason I can\n \u003e think not to mention it is if oslo.service ever changes its\n \u003e default.\n\nBUSTED\n\nhttps://github.com/openstack/nova/blob/master/nova/conf/scheduler.py#L87","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"91a4347802ae22fb2c6177f3739c51241e618e24","unresolved":false,"context_lines":[{"line_number":885,"context_line":""},{"line_number":886,"context_line":"Possible values:"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"* 0: Will run at the default periodic interval."},{"line_number":889,"context_line":"* Any value \u003c 0: Disables the option."},{"line_number":890,"context_line":"* Any positive integer in seconds."},{"line_number":891,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f91af0f_5fc5355a","line":888,"range":{"start_line":888,"start_character":5,"end_line":888,"end_character":47},"in_reply_to":"9f91af0f_b4002869","updated":"2018-01-05 17:32:33.000000000","message":"I found that after I commented and I wondered if you\u0027d notice it! So that\u0027s why I added (60 seconds) in the next PS. :)","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"94e924cc2240370c4d5f37776a9d1e3646bdc10f","unresolved":false,"context_lines":[{"line_number":885,"context_line":""},{"line_number":886,"context_line":"Possible values:"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"* 0: Will run at the default periodic interval."},{"line_number":889,"context_line":"* Any value \u003c 0: Disables the option."},{"line_number":890,"context_line":"* Any positive integer in seconds."},{"line_number":891,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f91af0f_17680d1f","line":888,"range":{"start_line":888,"start_character":5,"end_line":888,"end_character":47},"in_reply_to":"bf8cb3f7_2e2e4243","updated":"2018-01-04 19:43:52.000000000","message":"None of the other defaults say the default from oslo.service (60 seconds) so I kept consistent with that. The only reason I can think not to mention it is if oslo.service ever changes its default.","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0781e93c6c25bb8b2ab0a4f57dca5223c040f416","unresolved":false,"context_lines":[{"line_number":891,"context_line":"Possible values:"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"* 0: Will run at the default periodic interval (60 seconds)."},{"line_number":894,"context_line":"* Any value \u003c 0: Disables the option."},{"line_number":895,"context_line":"* Any positive integer in seconds."},{"line_number":896,"context_line":"\"\"\"),"},{"line_number":897,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_ce3b1036","line":894,"updated":"2018-04-17 16:29:19.000000000","message":"The only reason to disable this is if you\u0027re not using consoles at all, or are on cellsv1 right? So isn\u0027t the check in the code enough without needing this?","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b3f4312131600b1122f6914e3fbcc92bd0b08a23","unresolved":false,"context_lines":[{"line_number":891,"context_line":"Possible values:"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"* 0: Will run at the default periodic interval (60 seconds)."},{"line_number":894,"context_line":"* Any value \u003c 0: Disables the option."},{"line_number":895,"context_line":"* Any positive integer in seconds."},{"line_number":896,"context_line":"\"\"\"),"},{"line_number":897,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_82f08992","line":894,"in_reply_to":"9f6a8fd7_712e65a6","updated":"2018-04-17 19:03:11.000000000","message":"Yes. But I assume he wrote this comment before writing the other comment.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8a7e267965e745893ac9005b707f3a5dd06b9601","unresolved":false,"context_lines":[{"line_number":891,"context_line":"Possible values:"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"* 0: Will run at the default periodic interval (60 seconds)."},{"line_number":894,"context_line":"* Any value \u003c 0: Disables the option."},{"line_number":895,"context_line":"* Any positive integer in seconds."},{"line_number":896,"context_line":"\"\"\"),"},{"line_number":897,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_5189e172","line":894,"in_reply_to":"9f6a8fd7_ce3b1036","updated":"2018-04-17 17:06:46.000000000","message":"Maybe, but this is a standard behavior for the values of a oslo periodic task, so this describes the behavior if you were to set it \u003c 0. Even if I left out the help that explains it, it would still behave in that way.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7a6051f1b4887533fbc6fd79b8b5825467a6c65d","unresolved":false,"context_lines":[{"line_number":891,"context_line":"Possible values:"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"* 0: Will run at the default periodic interval (60 seconds)."},{"line_number":894,"context_line":"* Any value \u003c 0: Disables the option."},{"line_number":895,"context_line":"* Any positive integer in seconds."},{"line_number":896,"context_line":"\"\"\"),"},{"line_number":897,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_712e65a6","line":894,"in_reply_to":"9f6a8fd7_ce3b1036","updated":"2018-04-17 17:13:10.000000000","message":"meh, would be a moot point if we just went with instance_delete_interval, right?","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d0bdaae3b946da5df63190d66d13319b201ddbff","unresolved":false,"context_lines":[{"line_number":794,"context_line":"* Any positive integer in seconds: The instance will exist for"},{"line_number":795,"context_line":"  the specified number of seconds before being offloaded."},{"line_number":796,"context_line":"\"\"\"),"},{"line_number":797,"context_line":"    cfg.IntOpt(\u0027instance_delete_interval\u0027,"},{"line_number":798,"context_line":"        default\u003d300,"},{"line_number":799,"context_line":"        help\u003d\"\"\""},{"line_number":800,"context_line":"Interval for retrying failed instance file deletes."}],"source_content_type":"text/x-python","patch_set":29,"id":"9f6a8fd7_50abfb87","line":797,"updated":"2018-04-18 18:59:37.000000000","message":"I do feel a bit weird about re-using this without at least mentioning how it\u0027s also used for cleaning up expired tokens now. Yes it\u0027s used for two periodic tasks today, but those both cleanup instance files on the host for deleted (or migrated) instances, so the help here about instance file deletes is at least close. The token cleanup is something else entirely, but in the same vein for cleanup.\n\nI don\u0027t feel too strongly either way, but could see this as being confusing for developers looking at the code and looking at this help text. If we want to keep the token cleanup out of the docs, then you could at least put a NOTE code comment with this option to mention it\u0027s also used to cleanup expired tokens but we don\u0027t advertise that in the docs for whatever reason.","commit_id":"b8ff95599dd7e8413a5a6f1b4337a1c894afbbf2"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"305acae1d3e0eafc5cec9499b07b36e5beb39c89","unresolved":false,"context_lines":[{"line_number":794,"context_line":"* Any positive integer in seconds: The instance will exist for"},{"line_number":795,"context_line":"  the specified number of seconds before being offloaded."},{"line_number":796,"context_line":"\"\"\"),"},{"line_number":797,"context_line":"    cfg.IntOpt(\u0027instance_delete_interval\u0027,"},{"line_number":798,"context_line":"        default\u003d300,"},{"line_number":799,"context_line":"        help\u003d\"\"\""},{"line_number":800,"context_line":"Interval for retrying failed instance file deletes."}],"source_content_type":"text/x-python","patch_set":29,"id":"9f6a8fd7_d02e2ba4","line":797,"in_reply_to":"9f6a8fd7_50abfb87","updated":"2018-04-18 19:27:53.000000000","message":"Yeah, that\u0027s how I was thinking at first too. But this is indeed related to \"cleaning up no longer needed instance stuff\" but yeah, doesn\u0027t have to be a deleted instance. I can add a code comment. Leaving it out of the docs would be to just not introduce confusing/unhelpful detail to the operator. If I were to add to the help, I would say \"this is also used for removing expired console authorizations\". But I was concerned it would sound too random along with the other text. I dunno, I also don\u0027t feel strongly about it.","commit_id":"b8ff95599dd7e8413a5a6f1b4337a1c894afbbf2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"148f2ad9b1746652b89848578ac8af08aec5bb35","unresolved":false,"context_lines":[{"line_number":794,"context_line":"* Any positive integer in seconds: The instance will exist for"},{"line_number":795,"context_line":"  the specified number of seconds before being offloaded."},{"line_number":796,"context_line":"\"\"\"),"},{"line_number":797,"context_line":"    cfg.IntOpt(\u0027instance_delete_interval\u0027,"},{"line_number":798,"context_line":"        default\u003d300,"},{"line_number":799,"context_line":"        help\u003d\"\"\""},{"line_number":800,"context_line":"Interval for retrying failed instance file deletes."}],"source_content_type":"text/x-python","patch_set":29,"id":"9f6a8fd7_93843d60","line":797,"in_reply_to":"9f6a8fd7_d02e2ba4","updated":"2018-04-18 19:34:07.000000000","message":"A code comment works for me.","commit_id":"b8ff95599dd7e8413a5a6f1b4337a1c894afbbf2"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"1e7f41bf81cd1da149979c8edfdb2dedb25d4a16","unresolved":false,"context_lines":[{"line_number":6684,"context_line":"        migrate_data.old_vol_attachment_ids \u003d {volume_id: orig_attachment_id}"},{"line_number":6685,"context_line":"        image_bdm.attachment_id \u003d uuids.attachment3"},{"line_number":6686,"context_line":""},{"line_number":6687,"context_line":"        @mock.patch.object(compute, \u0027_get_resource_tracker\u0027)"},{"line_number":6688,"context_line":"        @mock.patch.object(vol_bdm, \u0027save\u0027)"},{"line_number":6689,"context_line":"        @mock.patch.object(compute, \u0027update_available_resource\u0027)"},{"line_number":6690,"context_line":"        @mock.patch.object(compute.volume_api, \u0027attachment_delete\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f4b6375_0350560a","line":6687,"updated":"2017-10-26 09:09:30.000000000","message":"The \u0027clean_console_auths_for_instance\u0027 method of nova.objects.ConsoleConnection should be mocked.","commit_id":"9f8b295a6742d3b7c917537ad1d5b39e63c990dc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3768232c216edbf112301f3627e05ca4602f9f3a","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        self.assertTrue(mock_log.warning.called)"},{"line_number":275,"context_line":"        self.assertFalse(mock_log.error.called)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    @mock.patch(\u0027nova.objects.ConsoleConnection.\u0027"},{"line_number":278,"context_line":"                \u0027clean_console_auths_for_instance\u0027,"},{"line_number":279,"context_line":"                new\u003dclassmethod(lambda *a: None))"},{"line_number":280,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_instance_action\u0027)"},{"line_number":281,"context_line":"    def test_delete_instance_without_info_cache(self, mock_notify):"},{"line_number":282,"context_line":"        instance \u003d fake_instance.fake_instance_obj("}],"source_content_type":"text/x-python","patch_set":16,"id":"df87a7cf_5d90384f","line":279,"range":{"start_line":277,"start_character":0,"end_line":279,"end_character":49},"updated":"2017-12-13 18:09:13.000000000","message":"More for curiosity than anything, what\u0027s going on here?","commit_id":"212d9f23505cf6cd25bc9dae9377f457e60b7cc3"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2289d4e9187f11e3762f0c30d9bde5be650871dc","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        self.assertTrue(mock_log.warning.called)"},{"line_number":275,"context_line":"        self.assertFalse(mock_log.error.called)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    @mock.patch(\u0027nova.objects.ConsoleConnection.\u0027"},{"line_number":278,"context_line":"                \u0027clean_console_auths_for_instance\u0027,"},{"line_number":279,"context_line":"                new\u003dclassmethod(lambda *a: None))"},{"line_number":280,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_instance_action\u0027)"},{"line_number":281,"context_line":"    def test_delete_instance_without_info_cache(self, mock_notify):"},{"line_number":282,"context_line":"        instance \u003d fake_instance.fake_instance_obj("}],"source_content_type":"text/x-python","patch_set":16,"id":"df87a7cf_778d147a","line":279,"range":{"start_line":277,"start_character":0,"end_line":279,"end_character":49},"in_reply_to":"df87a7cf_5d90384f","updated":"2017-12-13 23:24:54.000000000","message":"This is a way to avoid having to add Yet Another Mock Parameter to the decorated test.\n\n\"If patch() is used as a decorator and new is omitted, the created mock is passed in as an extra argument to the decorated function.\"\n\nSpecifying \"new\" specifies a function to replace the patched function with. Now that I\u0027ve explained it, maybe it\u0027s more confusing than it\u0027s worth, but I saw other uses of it in this file.\n\n[1] https://docs.python.org/3/library/unittest.mock.html#patch","commit_id":"212d9f23505cf6cd25bc9dae9377f457e60b7cc3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"49c76764f051a7ed8f1448124c04b9cbd1884446","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        self.assertTrue(mock_log.warning.called)"},{"line_number":275,"context_line":"        self.assertFalse(mock_log.error.called)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    @mock.patch(\u0027nova.objects.ConsoleConnection.\u0027"},{"line_number":278,"context_line":"                \u0027clean_console_auths_for_instance\u0027,"},{"line_number":279,"context_line":"                new\u003dclassmethod(lambda *a: None))"},{"line_number":280,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_instance_action\u0027)"},{"line_number":281,"context_line":"    def test_delete_instance_without_info_cache(self, mock_notify):"},{"line_number":282,"context_line":"        instance \u003d fake_instance.fake_instance_obj("}],"source_content_type":"text/x-python","patch_set":16,"id":"df87a7cf_657d4ce6","line":279,"range":{"start_line":277,"start_character":0,"end_line":279,"end_character":49},"in_reply_to":"df87a7cf_778d147a","updated":"2017-12-14 14:24:44.000000000","message":"Nope, once I\u0027m aware of the pattern it\u0027s all good","commit_id":"212d9f23505cf6cd25bc9dae9377f457e60b7cc3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e183fd6a06233e6a9d30d7ab8099644e169adc1e","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    @mock.patch(\u0027nova.objects.ConsoleConnection.\u0027"},{"line_number":278,"context_line":"                \u0027clean_console_auths_for_instance\u0027,"},{"line_number":279,"context_line":"                new\u003dclassmethod(lambda *a: None))"},{"line_number":280,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_instance_action\u0027)"},{"line_number":281,"context_line":"    def test_delete_instance_without_info_cache(self, mock_notify):"},{"line_number":282,"context_line":"        instance \u003d fake_instance.fake_instance_obj("}],"source_content_type":"text/x-python","patch_set":18,"id":"bf8cb3f7_cef556cd","line":279,"range":{"start_line":279,"start_character":16,"end_line":279,"end_character":48},"updated":"2017-12-22 22:43:22.000000000","message":"I\u0027m not sure why this is needed.","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"94e924cc2240370c4d5f37776a9d1e3646bdc10f","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    @mock.patch(\u0027nova.objects.ConsoleConnection.\u0027"},{"line_number":278,"context_line":"                \u0027clean_console_auths_for_instance\u0027,"},{"line_number":279,"context_line":"                new\u003dclassmethod(lambda *a: None))"},{"line_number":280,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_instance_action\u0027)"},{"line_number":281,"context_line":"    def test_delete_instance_without_info_cache(self, mock_notify):"},{"line_number":282,"context_line":"        instance \u003d fake_instance.fake_instance_obj("}],"source_content_type":"text/x-python","patch_set":18,"id":"9f91af0f_7762b940","line":279,"range":{"start_line":279,"start_character":16,"end_line":279,"end_character":48},"in_reply_to":"bf8cb3f7_cef556cd","updated":"2018-01-04 19:43:52.000000000","message":"It\u0027s not, I should have just added another mock arg to the test.","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7a6051f1b4887533fbc6fd79b8b5825467a6c65d","unresolved":false,"context_lines":[{"line_number":7192,"context_line":"        def _test(mock_get_bdms, mock_net_api, mock_notify, mock_driver,"},{"line_number":7193,"context_line":"                  mock_rpc, mock_get_bdm_info, mock_attach_delete,"},{"line_number":7194,"context_line":"                  mock_update_resource, mock_bdm_save, mock_rt, mock_ga,"},{"line_number":7195,"context_line":"                  mock_clean):"},{"line_number":7196,"context_line":"            mock_rt.return_value \u003d mock.Mock()"},{"line_number":7197,"context_line":"            mock_get_bdms.return_value \u003d [vol_bdm, image_bdm]"},{"line_number":7198,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_24ff4d02","line":7195,"range":{"start_line":7195,"start_character":18,"end_line":7195,"end_character":28},"updated":"2018-04-17 17:13:10.000000000","message":"here and above... did you want to assert that we called it?","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b3f4312131600b1122f6914e3fbcc92bd0b08a23","unresolved":false,"context_lines":[{"line_number":7192,"context_line":"        def _test(mock_get_bdms, mock_net_api, mock_notify, mock_driver,"},{"line_number":7193,"context_line":"                  mock_rpc, mock_get_bdm_info, mock_attach_delete,"},{"line_number":7194,"context_line":"                  mock_update_resource, mock_bdm_save, mock_rt, mock_ga,"},{"line_number":7195,"context_line":"                  mock_clean):"},{"line_number":7196,"context_line":"            mock_rt.return_value \u003d mock.Mock()"},{"line_number":7197,"context_line":"            mock_get_bdms.return_value \u003d [vol_bdm, image_bdm]"},{"line_number":7198,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9f6a8fd7_222bbdeb","line":7195,"range":{"start_line":7195,"start_character":18,"end_line":7195,"end_character":28},"in_reply_to":"9f6a8fd7_24ff4d02","updated":"2018-04-17 19:03:11.000000000","message":"No, but I should.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"}],"releasenotes/notes/console-auth-cleanup-1fc45b47d2aaf209.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e183fd6a06233e6a9d30d7ab8099644e169adc1e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new configuration option ``[compute]/console_auth_cleanup_interval`` has"},{"line_number":5,"context_line":"    been added to specify the frequency at which expired console authorization"},{"line_number":6,"context_line":"    tokens are cleaned up in seconds (default is 3600). A value of 0 will run"},{"line_number":7,"context_line":"    at the default periodic interval (60) and any negative value disables"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"bf8cb3f7_6e020ab7","line":4,"range":{"start_line":4,"start_character":33,"end_line":4,"end_character":42},"updated":"2017-12-22 22:43:22.000000000","message":"It\u0027s not actually in a compute group, it\u0027s in the DEFAULT group.","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"94e924cc2240370c4d5f37776a9d1e3646bdc10f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new configuration option ``[compute]/console_auth_cleanup_interval`` has"},{"line_number":5,"context_line":"    been added to specify the frequency at which expired console authorization"},{"line_number":6,"context_line":"    tokens are cleaned up in seconds (default is 3600). A value of 0 will run"},{"line_number":7,"context_line":"    at the default periodic interval (60) and any negative value disables"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"9f91af0f_1751ed62","line":4,"range":{"start_line":4,"start_character":33,"end_line":4,"end_character":42},"in_reply_to":"bf8cb3f7_6e020ab7","updated":"2018-01-04 19:43:52.000000000","message":"Sorry, got confused by the fact that it\u0027s in nova/conf/compute.py.","commit_id":"a5fd9c1436ac418f3bf3e97dda84eee5c8e810b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"762ef83e803b866ecbfe170c4a2ab14e36bd63a0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new configuration option ``[DEFAULT]/console_auth_cleanup_interval`` has"},{"line_number":5,"context_line":"    been added to specify the frequency at which expired console authorization"},{"line_number":6,"context_line":"    tokens are cleaned up in seconds (default is 3600). A value of 0 will run"},{"line_number":7,"context_line":"    at the default periodic interval (60) and any negative value disables"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"9f6a8fd7_b1ae3de5","line":4,"range":{"start_line":4,"start_character":34,"end_line":4,"end_character":41},"updated":"2018-04-17 16:47:05.000000000","message":"We should put this in the [compute] group if that\u0027s the only place it\u0027s used.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8a7e267965e745893ac9005b707f3a5dd06b9601","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new configuration option ``[DEFAULT]/console_auth_cleanup_interval`` has"},{"line_number":5,"context_line":"    been added to specify the frequency at which expired console authorization"},{"line_number":6,"context_line":"    tokens are cleaned up in seconds (default is 3600). A value of 0 will run"},{"line_number":7,"context_line":"    at the default periodic interval (60) and any negative value disables"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"9f6a8fd7_d1c2d185","line":4,"range":{"start_line":4,"start_character":34,"end_line":4,"end_character":41},"in_reply_to":"9f6a8fd7_b1ae3de5","updated":"2018-04-17 17:06:46.000000000","message":"I put it with all of the other interval_opts in the list [0], and those all go under [DEFAULT]. Do you really want to separate out one of the interval opts to go under the [compute] group? Currently, there is only one option in the [compute] group and it\u0027s the consecutive_build_service_disable_threshold.\n\n[0] https://github.com/openstack/nova/blob/master/nova/conf/compute.py#L665","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b3f4312131600b1122f6914e3fbcc92bd0b08a23","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new configuration option ``[DEFAULT]/console_auth_cleanup_interval`` has"},{"line_number":5,"context_line":"    been added to specify the frequency at which expired console authorization"},{"line_number":6,"context_line":"    tokens are cleaned up in seconds (default is 3600). A value of 0 will run"},{"line_number":7,"context_line":"    at the default periodic interval (60) and any negative value disables"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"9f6a8fd7_023a3935","line":4,"range":{"start_line":4,"start_character":34,"end_line":4,"end_character":41},"in_reply_to":"9f6a8fd7_d1c2d185","updated":"2018-04-17 19:03:11.000000000","message":"Guess I can kill this release note too.","commit_id":"9209eff1ca986fd24a8c8e1826ca50f9e9e5a99f"}]}
