)]}'
{"nova/compute/rpcapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"122b9171562e500ee0d6d596677a2580372dd6a2","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        # NOTE(danms): If we have a connection to the api database,"},{"line_number":391,"context_line":"        # we should iterate all cells. If not, we must only look locally."},{"line_number":392,"context_line":"        if CONF.api_database.connection:"},{"line_number":393,"context_line":"            service_version \u003d service_obj.get_minimum_version_all_cells("},{"line_number":394,"context_line":"                context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            service_version \u003d objects.Service.get_minimum_version("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_22c1b983","line":393,"range":{"start_line":393,"start_character":42,"end_line":393,"end_character":71},"updated":"2018-12-11 15:27:32.000000000","message":"Thoughts on passing require_all\u003dTrue here so we don\u0027t fudge an upgrade because there are down cells with older compute service versions, i.e. let\u0027s say we are upgrading from rocky to stein, restarting the API in stein and all but one cell is upgraded and reporting in to stein, but there is one cell still with rocky computes, so the upgrade level for compat would be stein. Then if that rocky cell comes online, we would be sending stein RPC versions to rocky computes which would fail. Maybe that\u0027s really out of scope and as an operator you shouldn\u0027t enable that cell while the computes are backlevel, but the enable/disable cell stuff doesn\u0027t really have anything to do with whether or not you can send RPC messages to it. Anyway, this method will log a warning if there are down cells so maybe that\u0027s good enough. Otherwise nova-api would fail to start if there are down cells and we likely don\u0027t want that.","commit_id":"d779b33d72d6ef41651ce7b93fe982f121bae2d7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fbdfc488878a2dedf43d3f96a00c872abfda121a","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        # NOTE(danms): If we have a connection to the api database,"},{"line_number":391,"context_line":"        # we should iterate all cells. If not, we must only look locally."},{"line_number":392,"context_line":"        if CONF.api_database.connection:"},{"line_number":393,"context_line":"            service_version \u003d service_obj.get_minimum_version_all_cells("},{"line_number":394,"context_line":"                context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            service_version \u003d objects.Service.get_minimum_version("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_fd184287","line":393,"range":{"start_line":393,"start_character":42,"end_line":393,"end_character":71},"in_reply_to":"3f79a3b5_22c1b983","updated":"2018-12-11 16:43:49.000000000","message":"Yeah, my thought was just that we should come up and determine what we need to do with what is available at the moment. That may be too high a version in the situation you describe. However, if we always fail, until all cells are up, we\u0027d return zero here and just assume the latest version below anyway. If you have multiple cells down for the upgrade and the only one still up is old (i.e. where most of your important stuff is), then we\u0027d want to choose a version that is appropriate for that cell and not just default to latest.","commit_id":"d779b33d72d6ef41651ce7b93fe982f121bae2d7"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"950b7adf0063270e489cd5fefa2019c35e7d7e26","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        # NOTE(danms): If we have a connection to the api database,"},{"line_number":391,"context_line":"        # we should iterate all cells. If not, we must only look locally."},{"line_number":392,"context_line":"        if CONF.api_database.connection:"},{"line_number":393,"context_line":"            service_version \u003d service_obj.get_minimum_version_all_cells("},{"line_number":394,"context_line":"                context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            service_version \u003d objects.Service.get_minimum_version("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_c31320b1","line":393,"range":{"start_line":393,"start_character":42,"end_line":393,"end_character":71},"in_reply_to":"3f79a3b5_430950d9","updated":"2018-12-12 00:07:38.000000000","message":"Also, I was thinking another way of handling Matt\u0027s scenario would be if we had some way of defaulting to RPC version N (instead of N+1) if we detect any down cells. But... I could easily see operators potentially not wanting that behavior and preferring for the upgrade to behave transparent to the down cell and let them have control over when the bring the down cell back in and at what version, etc.","commit_id":"d779b33d72d6ef41651ce7b93fe982f121bae2d7"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9697370d3f5756b6ae712e1ca8ffb368bf66b1d2","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        # NOTE(danms): If we have a connection to the api database,"},{"line_number":391,"context_line":"        # we should iterate all cells. If not, we must only look locally."},{"line_number":392,"context_line":"        if CONF.api_database.connection:"},{"line_number":393,"context_line":"            service_version \u003d service_obj.get_minimum_version_all_cells("},{"line_number":394,"context_line":"                context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            service_version \u003d objects.Service.get_minimum_version("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_705f5b78","line":393,"range":{"start_line":393,"start_character":42,"end_line":393,"end_character":71},"in_reply_to":"3f79a3b5_554c9473","updated":"2018-12-12 17:15:33.000000000","message":"Ah, compute\u003drocky, got it. OK, I guess we\u0027re covered here then.","commit_id":"d779b33d72d6ef41651ce7b93fe982f121bae2d7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"63c5ba7ee33df1c2f114cf7d4567beacb605375f","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        # NOTE(danms): If we have a connection to the api database,"},{"line_number":391,"context_line":"        # we should iterate all cells. If not, we must only look locally."},{"line_number":392,"context_line":"        if CONF.api_database.connection:"},{"line_number":393,"context_line":"            service_version \u003d service_obj.get_minimum_version_all_cells("},{"line_number":394,"context_line":"                context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            service_version \u003d objects.Service.get_minimum_version("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_554c9473","line":393,"range":{"start_line":393,"start_character":42,"end_line":393,"end_character":71},"in_reply_to":"3f79a3b5_c31320b1","updated":"2018-12-12 14:33:41.000000000","message":"\u003e Also, I was thinking another way of handling Matt\u0027s scenario would\n \u003e be if we had some way of defaulting to RPC version N (instead of\n \u003e N+1) if we detect any down cells. But... I could easily see\n \u003e operators potentially not wanting that behavior and preferring for\n \u003e the upgrade to behave transparent to the down cell and let them\n \u003e have control over when the bring the down cell back in and at what\n \u003e version, etc.\n\nYou can already do this by not setting compute\u003dauto, but compute\u003drocky or compute\u003dX.Y. Rolling back to an older version because a cell (of potentially new hosts) would have api implications and other undesirable effects.","commit_id":"d779b33d72d6ef41651ce7b93fe982f121bae2d7"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"4d539d360afdbdf1aa54206dcc67e3238ef183d3","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        # NOTE(danms): If we have a connection to the api database,"},{"line_number":391,"context_line":"        # we should iterate all cells. If not, we must only look locally."},{"line_number":392,"context_line":"        if CONF.api_database.connection:"},{"line_number":393,"context_line":"            service_version \u003d service_obj.get_minimum_version_all_cells("},{"line_number":394,"context_line":"                context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            service_version \u003d objects.Service.get_minimum_version("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_49edf121","line":393,"range":{"start_line":393,"start_character":42,"end_line":393,"end_character":71},"in_reply_to":"3f79a3b5_c31320b1","updated":"2018-12-12 01:58:20.000000000","message":"We should probably add something in the upgrade guide, as in Matt\u0027s case, even when we restart API after we bring the old computes online, it still be time window for sending bad RPCs as the old compute is online before you can restart the API, othterwise it makes no sence, So I guess we should either find a way to detect old compute getting online or we should write in the guide that this kind of operation is not cool.","commit_id":"d779b33d72d6ef41651ce7b93fe982f121bae2d7"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b4a6ce809356cb51142c4fd04b8aed54ee3f2ed6","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        # NOTE(danms): If we have a connection to the api database,"},{"line_number":391,"context_line":"        # we should iterate all cells. If not, we must only look locally."},{"line_number":392,"context_line":"        if CONF.api_database.connection:"},{"line_number":393,"context_line":"            service_version \u003d service_obj.get_minimum_version_all_cells("},{"line_number":394,"context_line":"                context.get_admin_context(), [\u0027nova-compute\u0027])"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            service_version \u003d objects.Service.get_minimum_version("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_430950d9","line":393,"range":{"start_line":393,"start_character":42,"end_line":393,"end_character":71},"in_reply_to":"3f79a3b5_fd184287","updated":"2018-12-11 23:48:38.000000000","message":"In the scenario where a cell with rocky computes is down and nova-api comes up and figures it should send stein RPC versions, when the rocky computes cell comes back, the situation could be fixed by restarting nova-api again. Is that right? If so, that seems like a not-so-bad way out of that bind.","commit_id":"d779b33d72d6ef41651ce7b93fe982f121bae2d7"}],"nova/tests/unit/compute/test_rpcapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"122b9171562e500ee0d6d596677a2580372dd6a2","unresolved":false,"context_lines":[{"line_number":609,"context_line":""},{"line_number":610,"context_line":"    @mock.patch(\u0027nova.objects.Service.get_minimum_version\u0027)"},{"line_number":611,"context_line":"    @mock.patch(\u0027nova.objects.service.get_minimum_version_all_cells\u0027)"},{"line_number":612,"context_line":"    def test_version_cap_all_cells(self, mock_allcells, mock_minver):"},{"line_number":613,"context_line":"        self.flags(connection\u003d\u0027sqlite:///\u0027, group\u003d\u0027api_database\u0027)"},{"line_number":614,"context_line":"        self.flags(compute\u003d\u0027auto\u0027, group\u003d\u0027upgrade_levels\u0027)"},{"line_number":615,"context_line":"        compute_rpcapi.LAST_VERSION \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_a262a9a6","line":612,"range":{"start_line":612,"start_character":8,"end_line":612,"end_character":34},"updated":"2018-12-11 15:27:32.000000000","message":"This is sort of redundant with test_auto_pin right? The only difference is that test doesn\u0027t assert nova.objects.Service.get_minimum_version is *not* called.","commit_id":"d779b33d72d6ef41651ce7b93fe982f121bae2d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"122b9171562e500ee0d6d596677a2580372dd6a2","unresolved":false,"context_lines":[{"line_number":612,"context_line":"    def test_version_cap_all_cells(self, mock_allcells, mock_minver):"},{"line_number":613,"context_line":"        self.flags(connection\u003d\u0027sqlite:///\u0027, group\u003d\u0027api_database\u0027)"},{"line_number":614,"context_line":"        self.flags(compute\u003d\u0027auto\u0027, group\u003d\u0027upgrade_levels\u0027)"},{"line_number":615,"context_line":"        compute_rpcapi.LAST_VERSION \u003d None"},{"line_number":616,"context_line":"        mock_allcells.return_value \u003d 0"},{"line_number":617,"context_line":"        compute_rpcapi.ComputeAPI()"},{"line_number":618,"context_line":"        mock_allcells.assert_called_once_with(mock.ANY, [\u0027nova-compute\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_025efd12","line":615,"range":{"start_line":615,"start_character":8,"end_line":615,"end_character":42},"updated":"2018-12-11 15:27:32.000000000","message":"Not sure why we don\u0027t just do this in setUp so each individual test doesn\u0027t need to remember to do it, but that could be done as a cleanup follow up (same for NO_COMPUTES_WARNING really).","commit_id":"d779b33d72d6ef41651ce7b93fe982f121bae2d7"}]}
