From dd188af3af5963e5d6868e9e0c179c5c677267ef Mon Sep 17 00:00:00 2001 From: ImMin5 Date: Wed, 5 Mar 2025 10:22:09 +0900 Subject: [PATCH] fix: handle index errors when selecting plugin endpoints --- src/spaceone/plugin/service/plugin_service.py | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/spaceone/plugin/service/plugin_service.py b/src/spaceone/plugin/service/plugin_service.py index 885b303..2e23b77 100644 --- a/src/spaceone/plugin/service/plugin_service.py +++ b/src/spaceone/plugin/service/plugin_service.py @@ -264,9 +264,23 @@ def _select_endpoint(self, plugin_ref, updated_version=None): f"[_select_endpoint] select endpoint. (index = {current_index}, endpoints = {endpoints})" ) - endpoint = self._get_current_index_endpoint( - endpoints, installed_plugin.current_index, installed_plugin.plugin_id - ) + try: + endpoint = endpoints[current_index] + except IndexError: + _LOGGER.debug( + f"[_get_current_index_endpoint] Index Error plugin_id: {installed_plugin.plugin_id}," + f" current_index: {current_index}, endpoints: {endpoints}" + ) + return endpoints[0] + except Exception as e: + _LOGGER.error( + f"[_get_current_index_endpoint] plugin_id: {installed_plugin.plugin_id}, endpoints: {endpoints}, " + f" installed plugin index {installed_plugin.current_index}, current_index: {current_index}," + f" error: {e}" + ) + raise ERROR_PLUGIN_ENDPOINT_NOT_FOUND( + plugin_id=installed_plugin.plugin_id + ) endpoint_info = {"endpoint": endpoint} @@ -359,21 +373,3 @@ def verify(self, params: dict): self.plugin_mgr.verify_plugin( plugin_endpoint_info.get("endpoint"), api_class, options, secret_data ) - - @staticmethod - def _get_current_index_endpoint( - endpoints: list, current_index: int, plugin_id: str - ) -> str: - try: - return endpoints[current_index] - except IndexError: - randon_index = secrets.randbelow(len(endpoints)) - _LOGGER.debug( - f"[_get_current_index_endpoint] current_index: {current_index}, randon_index: {randon_index}" - ) - return endpoints[randon_index] - except Exception as e: - _LOGGER.error( - f"[_get_current_index_endpoint] plugin_id: {plugin_id}, endpoints: {endpoints}, current_index: {current_index}, error: {e}" - ) - raise ERROR_PLUGIN_ENDPOINT_NOT_FOUND(plugin_id=plugin_id)