[LYN-4288] Adding error page if resource mapping tool has invalid setup (#1219)
This commit is contained in:
@@ -48,11 +48,15 @@ class ConfigurationManager(object):
|
||||
def configuration(self, new_configuration: ConfigurationManager) -> None:
|
||||
self._configuration = new_configuration
|
||||
|
||||
def setup(self, config_path: str) -> bool:
|
||||
def setup(self, profile_name: str, config_path: str) -> bool:
|
||||
result: bool = True
|
||||
logger.info("Setting up default configuration ...")
|
||||
logger.debug("Setting up default configuration ...")
|
||||
try:
|
||||
normalized_config_path: str = file_utils.normalize_file_path(config_path);
|
||||
logger.debug("Setting up boto3 default session ...")
|
||||
aws_utils.setup_default_session(profile_name)
|
||||
|
||||
logger.debug("Setting up config directory and files ...")
|
||||
normalized_config_path: str = file_utils.normalize_file_path(config_path)
|
||||
if normalized_config_path:
|
||||
self._configuration.config_directory = normalized_config_path
|
||||
else:
|
||||
@@ -61,6 +65,7 @@ class ConfigurationManager(object):
|
||||
file_utils.find_files_with_suffix_under_directory(self._configuration.config_directory,
|
||||
constants.RESOURCE_MAPPING_CONFIG_FILE_NAME_SUFFIX)
|
||||
|
||||
logger.debug("Setting up aws account id and region ...")
|
||||
self._configuration.account_id = aws_utils.get_default_account_id()
|
||||
self._configuration.region = aws_utils.get_default_region()
|
||||
except (RuntimeError, FileNotFoundError) as e:
|
||||
|
||||
@@ -12,6 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
from __future__ import annotations
|
||||
import logging
|
||||
|
||||
from controller.error_controller import ErrorController
|
||||
from controller.import_resources_controller import ImportResourcesController
|
||||
from controller.view_edit_controller import ViewEditController
|
||||
from model import error_messages
|
||||
@@ -33,8 +34,9 @@ class ControllerManager(object):
|
||||
|
||||
def __init__(self) -> None:
|
||||
if ControllerManager.__instance is None:
|
||||
self._view_edit_controller: ViewEditController = ViewEditController()
|
||||
self._import_resources_controller: ImportResourcesController = ImportResourcesController()
|
||||
self._error_controller: ErrorController = None
|
||||
self._view_edit_controller: ViewEditController = None
|
||||
self._import_resources_controller: ImportResourcesController = None
|
||||
ControllerManager.__instance = self
|
||||
else:
|
||||
raise AssertionError(error_messages.SINGLETON_OBJECT_ERROR_MESSAGE.format("ControllerManager"))
|
||||
@@ -47,9 +49,17 @@ class ControllerManager(object):
|
||||
def view_edit_controller(self) -> ViewEditController:
|
||||
return self._view_edit_controller
|
||||
|
||||
def setup(self) -> None:
|
||||
logger.info("Setting up ViewEdit and ImportResource controllers ...")
|
||||
self._view_edit_controller.setup()
|
||||
self._import_resources_controller.setup()
|
||||
self._import_resources_controller.add_import_resources_sender.connect(
|
||||
self._view_edit_controller.add_import_resources_receiver)
|
||||
def setup(self, setup_error: bool) -> None:
|
||||
if setup_error:
|
||||
logger.debug("Setting up Error controllers ...")
|
||||
self._error_controller = ErrorController()
|
||||
self._error_controller.setup()
|
||||
else:
|
||||
logger.debug("Setting up ViewEdit and ImportResource controllers ...")
|
||||
self._view_edit_controller = ViewEditController()
|
||||
self._import_resources_controller = ImportResourcesController()
|
||||
|
||||
self._view_edit_controller.setup()
|
||||
self._import_resources_controller.setup()
|
||||
self._import_resources_controller.add_import_resources_sender.connect(
|
||||
self._view_edit_controller.add_import_resources_receiver)
|
||||
|
||||
@@ -37,10 +37,13 @@ class ThreadManager(object):
|
||||
else:
|
||||
raise AssertionError(error_messages.SINGLETON_OBJECT_ERROR_MESSAGE.format("ThreadManager"))
|
||||
|
||||
def setup(self, thread_count: int = 1) -> None:
|
||||
# Based on prototype use case, we just need 1 thread
|
||||
logger.info(f"Setting up thread pool with MaxThreadCount={thread_count} ...")
|
||||
self._thread_pool.setMaxThreadCount(thread_count)
|
||||
def setup(self, setup_error: bool, thread_count: int = 1) -> None:
|
||||
if setup_error:
|
||||
logger.debug("Skip thread pool creation, as there is major setup error.")
|
||||
else:
|
||||
# Based on prototype use case, we just need 1 thread
|
||||
logger.debug(f"Setting up thread pool with MaxThreadCount={thread_count} ...")
|
||||
self._thread_pool.setMaxThreadCount(thread_count)
|
||||
|
||||
"""Reserves a thread and uses it to run runnable worker, unless this thread will make
|
||||
the current thread count exceed max thread count. In that case, runnable is added to a run queue instead."""
|
||||
|
||||
@@ -16,6 +16,7 @@ from PySide2.QtGui import QIcon
|
||||
from PySide2.QtWidgets import (QMainWindow, QStackedWidget, QWidget)
|
||||
|
||||
from model import (error_messages, view_size_constants)
|
||||
from view.error_page import ErrorPage
|
||||
from view.import_resources_page import ImportResourcesPage
|
||||
from view.view_edit_page import ViewEditPage
|
||||
|
||||
@@ -27,6 +28,10 @@ class ViewManagerConstants(object):
|
||||
IMPORT_RESOURCES_PAGE_INDEX: int = 1
|
||||
|
||||
|
||||
# Error page will be a single page
|
||||
ERROR_PAGE_INDEX: int = 0
|
||||
|
||||
|
||||
class ViewManager(object):
|
||||
"""
|
||||
View manager maintains the main stacked pages for this tool, which
|
||||
@@ -58,21 +63,32 @@ class ViewManager(object):
|
||||
ViewManager.__instance = self
|
||||
else:
|
||||
raise AssertionError(error_messages.SINGLETON_OBJECT_ERROR_MESSAGE.format("ViewManager"))
|
||||
|
||||
|
||||
def get_error_page(self) -> QWidget:
|
||||
return self._resource_mapping_stacked_pages.widget(ERROR_PAGE_INDEX)
|
||||
|
||||
def get_view_edit_page(self) -> QWidget:
|
||||
return self._resource_mapping_stacked_pages.widget(ViewManagerConstants.VIEW_AND_EDIT_PAGE_INDEX)
|
||||
|
||||
def get_import_resources_page(self) -> QWidget:
|
||||
return self._resource_mapping_stacked_pages.widget(ViewManagerConstants.IMPORT_RESOURCES_PAGE_INDEX)
|
||||
|
||||
def setup(self) -> None:
|
||||
logger.debug("Setting up ViewEdit and ImportResources view pages ...")
|
||||
self._resource_mapping_stacked_pages.addWidget(ViewEditPage())
|
||||
self._resource_mapping_stacked_pages.addWidget(ImportResourcesPage())
|
||||
def setup(self, setup_error: bool) -> None:
|
||||
if setup_error:
|
||||
logger.debug("Setting up Error view pages ...")
|
||||
self._resource_mapping_stacked_pages.addWidget(ErrorPage())
|
||||
self._main_window.adjustSize() # fit error page size
|
||||
else:
|
||||
logger.debug("Setting up ViewEdit and ImportResources view pages ...")
|
||||
self._resource_mapping_stacked_pages.addWidget(ViewEditPage())
|
||||
self._resource_mapping_stacked_pages.addWidget(ImportResourcesPage())
|
||||
|
||||
def show(self) -> None:
|
||||
def show(self, setup_error: bool) -> None:
|
||||
"""Show up the tool view by setting default page index and showing main widget"""
|
||||
self._resource_mapping_stacked_pages.setCurrentIndex(ViewManagerConstants.VIEW_AND_EDIT_PAGE_INDEX)
|
||||
if setup_error:
|
||||
self._resource_mapping_stacked_pages.setCurrentIndex(ERROR_PAGE_INDEX)
|
||||
else:
|
||||
self._resource_mapping_stacked_pages.setCurrentIndex(ViewManagerConstants.VIEW_AND_EDIT_PAGE_INDEX)
|
||||
self._main_window.show()
|
||||
|
||||
def switch_to_view_edit_page(self) -> None:
|
||||
|
||||
Reference in New Issue
Block a user