)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":35230,"name":"Gustavo Herzmann","email":"gustavo.herzmann@windriver.com","username":"gherzman"},"change_message_id":"9b142b1cdb12400d8a032f2db33b42d03b052ccc","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Hugo Brito \u003chugo.brito@windriver.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-09-20 17:22:19 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support patch removal for patch legacy orchestration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case of a rollback to a subcloud n-1, it\u0027s necessary to remove the"},{"line_number":10,"context_line":"applied patch using the patch orchestration legacy. This commit adds"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"e802eaad_2d964d29","line":7,"range":{"start_line":7,"start_character":26,"end_line":7,"end_character":52},"updated":"2024-09-23 17:49:59.000000000","message":"legacy patch orchestration","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"18daee84d0bf78d64c90b951f21d3c62c68e8667","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Hugo Brito \u003chugo.brito@windriver.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-09-20 17:22:19 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support patch removal for patch legacy orchestration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case of a rollback to a subcloud n-1, it\u0027s necessary to remove the"},{"line_number":10,"context_line":"applied patch using the patch orchestration legacy. This commit adds"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"44b040ae_675ac077","line":7,"range":{"start_line":7,"start_character":26,"end_line":7,"end_character":52},"in_reply_to":"e802eaad_2d964d29","updated":"2024-09-24 14:05:30.000000000","message":"Done","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":35230,"name":"Gustavo Herzmann","email":"gustavo.herzmann@windriver.com","username":"gherzman"},"change_message_id":"9b142b1cdb12400d8a032f2db33b42d03b052ccc","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support patch removal for patch legacy orchestration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case of a rollback to a subcloud n-1, it\u0027s necessary to remove the"},{"line_number":10,"context_line":"applied patch using the patch orchestration legacy. This commit adds"},{"line_number":11,"context_line":"support for patch removal by introducing a new `remove` parameter in"},{"line_number":12,"context_line":"the `patch` strategy, allowing users to remove the specified patch_id."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"4c2aa035_1eff66cd","line":9,"range":{"start_line":9,"start_character":27,"end_line":9,"end_character":39},"updated":"2024-09-23 17:49:59.000000000","message":"N-1 subcloud","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"18daee84d0bf78d64c90b951f21d3c62c68e8667","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support patch removal for patch legacy orchestration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case of a rollback to a subcloud n-1, it\u0027s necessary to remove the"},{"line_number":10,"context_line":"applied patch using the patch orchestration legacy. This commit adds"},{"line_number":11,"context_line":"support for patch removal by introducing a new `remove` parameter in"},{"line_number":12,"context_line":"the `patch` strategy, allowing users to remove the specified patch_id."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"f17b5cfc_08e7045c","line":9,"range":{"start_line":9,"start_character":27,"end_line":9,"end_character":39},"in_reply_to":"4c2aa035_1eff66cd","updated":"2024-09-24 14:05:30.000000000","message":"Done","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":35230,"name":"Gustavo Herzmann","email":"gustavo.herzmann@windriver.com","username":"gherzman"},"change_message_id":"9b142b1cdb12400d8a032f2db33b42d03b052ccc","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Support patch removal for patch legacy orchestration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case of a rollback to a subcloud n-1, it\u0027s necessary to remove the"},{"line_number":10,"context_line":"applied patch using the patch orchestration legacy. This commit adds"},{"line_number":11,"context_line":"support for patch removal by introducing a new `remove` parameter in"},{"line_number":12,"context_line":"the `patch` strategy, allowing users to remove the specified patch_id."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"47f196fa_fa3702de","line":10,"range":{"start_line":10,"start_character":24,"end_line":10,"end_character":50},"updated":"2024-09-23 17:49:59.000000000","message":"legacy patch orchestration","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"18daee84d0bf78d64c90b951f21d3c62c68e8667","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support patch removal for patch legacy orchestration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case of a rollback to a subcloud n-1, it\u0027s necessary to remove the"},{"line_number":10,"context_line":"applied patch using the patch orchestration legacy. This commit adds"},{"line_number":11,"context_line":"support for patch removal by introducing a new `remove` parameter in"},{"line_number":12,"context_line":"the `patch` strategy, allowing users to remove the specified patch_id."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"8b865443_38290522","line":10,"range":{"start_line":10,"start_character":24,"end_line":10,"end_character":50},"in_reply_to":"47f196fa_fa3702de","updated":"2024-09-24 14:05:30.000000000","message":"Done","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"}],"distributedcloud/dccommon/drivers/openstack/vim.py":[{"author":{"_account_id":35230,"name":"Gustavo Herzmann","email":"gustavo.herzmann@windriver.com","username":"gherzman"},"change_message_id":"9b142b1cdb12400d8a032f2db33b42d03b052ccc","unresolved":true,"context_lines":[{"line_number":202,"context_line":"            # Use the REST Api directly to the subcloud to get the strategy for"},{"line_number":203,"context_line":"            # legacy patch orchestration"},{"line_number":204,"context_line":"            if strategy_name \u003d\u003d STRATEGY_NAME_SW_PATCH:"},{"line_number":205,"context_line":"                return self._get_strategy_sw_patch()"},{"line_number":206,"context_line":"            strategy \u003d sw_update.get_strategies("},{"line_number":207,"context_line":"                self.token,"},{"line_number":208,"context_line":"                url,"}],"source_content_type":"text/x-python","patch_set":6,"id":"531d7557_427906c8","line":205,"range":{"start_line":205,"start_character":16,"end_line":205,"end_character":52},"updated":"2024-09-23 17:49:59.000000000","message":"Instead of returning the strategy immediately, set \u0027strategy \u003d self._get_strategy_sw_patch()\u0027 so that the validation on line 216 is still executed for the legacy patch strategy.","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"18daee84d0bf78d64c90b951f21d3c62c68e8667","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            # Use the REST Api directly to the subcloud to get the strategy for"},{"line_number":203,"context_line":"            # legacy patch orchestration"},{"line_number":204,"context_line":"            if strategy_name \u003d\u003d STRATEGY_NAME_SW_PATCH:"},{"line_number":205,"context_line":"                return self._get_strategy_sw_patch()"},{"line_number":206,"context_line":"            strategy \u003d sw_update.get_strategies("},{"line_number":207,"context_line":"                self.token,"},{"line_number":208,"context_line":"                url,"}],"source_content_type":"text/x-python","patch_set":6,"id":"a0483822_9114f8d1","line":205,"range":{"start_line":205,"start_character":16,"end_line":205,"end_character":52},"in_reply_to":"531d7557_427906c8","updated":"2024-09-24 14:05:30.000000000","message":"Since we are replicating the API here, we can\u0027t have a situation where the strategy is None. An exception will be raised earlier and caught at line 214.","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":31954,"name":"Yuxing Jiang","email":"Yuxing.Jiang@windriver.com","username":"yuxing"},"change_message_id":"82323438c190dbf6595dd6c15f7577f21859e3ed","unresolved":true,"context_lines":[{"line_number":223,"context_line":"        return strategy"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    # # TODO(nicodemos): Delete this method once sw-patch is deprecated"},{"line_number":226,"context_line":"    def _get_strategy_sw_patch(self):"},{"line_number":227,"context_line":"        \"\"\"Get legacy SW patch strategy\"\"\""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        response \u003d self._send_api_request("}],"source_content_type":"text/x-python","patch_set":6,"id":"68c666b4_35429a2c","line":226,"updated":"2024-09-23 17:45:43.000000000","message":"aligns with _create_strategy_sw_patch. Is there any reason we use the API directly rather than the nfv_client?","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"18daee84d0bf78d64c90b951f21d3c62c68e8667","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        return strategy"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    # # TODO(nicodemos): Delete this method once sw-patch is deprecated"},{"line_number":226,"context_line":"    def _get_strategy_sw_patch(self):"},{"line_number":227,"context_line":"        \"\"\"Get legacy SW patch strategy\"\"\""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        response \u003d self._send_api_request("}],"source_content_type":"text/x-python","patch_set":6,"id":"3fc79d7a_d568ad50","line":226,"in_reply_to":"68c666b4_35429a2c","updated":"2024-09-24 14:05:30.000000000","message":"We use the nfv_client from the SystemController, but the request response is no longer compatible with n-1 subclouds.","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":35230,"name":"Gustavo Herzmann","email":"gustavo.herzmann@windriver.com","username":"gherzman"},"change_message_id":"9b142b1cdb12400d8a032f2db33b42d03b052ccc","unresolved":true,"context_lines":[{"line_number":308,"context_line":"    # # TODO(nicodemos): Delete this method once sw-patch is deprecated"},{"line_number":309,"context_line":"    def _send_api_request(self, method, api_path, payload\u003dNone):"},{"line_number":310,"context_line":"        \"\"\"Helper to send an API request to the VIM orchestration system\"\"\""},{"line_number":311,"context_line":"        api_cmd \u003d f\"{self.endpoint}{api_path}\""},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        headers \u003d {"},{"line_number":314,"context_line":"            \"Content-Type\": \"application/json\","}],"source_content_type":"text/x-python","patch_set":6,"id":"a6af5f7a_7b24a2df","line":311,"range":{"start_line":311,"start_character":18,"end_line":311,"end_character":46},"updated":"2024-09-23 17:49:59.000000000","message":"Suggestion: use urllib.parse.urljoin instead to ensure proper joining of URLs","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"18daee84d0bf78d64c90b951f21d3c62c68e8667","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    # # TODO(nicodemos): Delete this method once sw-patch is deprecated"},{"line_number":309,"context_line":"    def _send_api_request(self, method, api_path, payload\u003dNone):"},{"line_number":310,"context_line":"        \"\"\"Helper to send an API request to the VIM orchestration system\"\"\""},{"line_number":311,"context_line":"        api_cmd \u003d f\"{self.endpoint}{api_path}\""},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        headers \u003d {"},{"line_number":314,"context_line":"            \"Content-Type\": \"application/json\","}],"source_content_type":"text/x-python","patch_set":6,"id":"6d4d7dc2_0ad14d0f","line":311,"range":{"start_line":311,"start_character":18,"end_line":311,"end_character":46},"in_reply_to":"a6af5f7a_7b24a2df","updated":"2024-09-24 14:05:30.000000000","message":"ack. Since this will be removed and there are no plans to change it, I\u0027ll leave it as is.","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":35230,"name":"Gustavo Herzmann","email":"gustavo.herzmann@windriver.com","username":"gherzman"},"change_message_id":"9b142b1cdb12400d8a032f2db33b42d03b052ccc","unresolved":true,"context_lines":[{"line_number":328,"context_line":"        \"\"\"Add response for all strategy phases\"\"\""},{"line_number":329,"context_line":"        if response.get(\"strategy\"):"},{"line_number":330,"context_line":"            for phase in [\"build-phase\", \"apply-phase\", \"abort-phase\"]:"},{"line_number":331,"context_line":"                response[\"strategy\"][phase][\"response\"] \u003d \"success\""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        return sw_update._get_strategy_object_from_response(response)"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"8c65b2f4_df3f5214","line":331,"range":{"start_line":331,"start_character":16,"end_line":331,"end_character":67},"updated":"2024-09-23 17:49:59.000000000","message":"Q: Why do we need to set the response to \u0027success\u0027?","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"18daee84d0bf78d64c90b951f21d3c62c68e8667","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        \"\"\"Add response for all strategy phases\"\"\""},{"line_number":329,"context_line":"        if response.get(\"strategy\"):"},{"line_number":330,"context_line":"            for phase in [\"build-phase\", \"apply-phase\", \"abort-phase\"]:"},{"line_number":331,"context_line":"                response[\"strategy\"][phase][\"response\"] \u003d \"success\""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        return sw_update._get_strategy_object_from_response(response)"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"18ab0b6b_ed15fc07","line":331,"range":{"start_line":331,"start_character":16,"end_line":331,"end_character":67},"in_reply_to":"8c65b2f4_df3f5214","updated":"2024-09-24 14:05:30.000000000","message":"This is new for N subclouds but not used for N-1. I\u0027m adding it here to avoid breaking _get_strategy_object_from_response(), and the success message is the default one.","commit_id":"ba12b1d16c5696f7827c381f990e1e4ae30ffe3e"}]}
