def has_updates(self) -> bool: """ check if updates are available Returns: True else raise error """ from cmdb.updater import UpdaterModule from cmdb.utils.system_reader import SystemSettingsReader, SectionError try: ssr = SystemSettingsReader(self.setup_database_manager) ssr.get_all_values_from_section('updater') upd_module = UpdaterModule(ssr) new_version = upd_module.get_last_version()['version'] current_version = upd_module.settings.version if new_version > current_version: LOGGER.error( f'Please run an update. There are new updates available.' f'Current Updater Version: {current_version} ' f'Newest Update Version: {new_version}' ) return False except SectionError as err: LOGGER.error(err.message) return False return True
def run_updates(self, version: int, ssr: SystemSettingsReader): from cmdb.updater import UpdaterModule ssr.get_all_values_from_section('updater') updater_instance = UpdaterModule(ssr) versions = updater_instance.__UPDATER_VERSIONS_POOL__ current_version = updater_instance.get_last_version()['version'] for num, file in enumerate(sorted(versions)): if current_version > version: process_bar('Process', len(versions), num + 1) updater_class = load_class( f'cmdb.updater.versions.updater_{current_version}.Update{current_version}' ) updater_instance = updater_class() updater_instance.start_update()
def update_db_version(self): # update version updater settings try: updater_settings_values = UpdaterModule.__DEFAULT_SETTINGS__ ssr = SystemSettingsReader(self.setup_database_manager) try: updater_settings_values = ssr.get_all_values_from_section( 'updater') updater_setting_instance = UpdateSettings( **updater_settings_values) except Exception: # create updater section if not exist system_setting_writer: SystemSettingsWriter = SystemSettingsWriter( self.setup_database_manager) updater_setting_instance = UpdateSettings( **updater_settings_values) system_setting_writer.write( _id='updater', data=updater_setting_instance.__dict__) # start running update files updater_setting_instance.run_updates( updater_settings_values.get('version'), ssr) except Exception as err: self.status = UpdateRoutine.UpateStatus.ERROR raise RuntimeError( f'Something went wrong during the generation of the updater module. \n Error: {err}' )
def increase_updater_version(self, value: int): ssr = SystemSettingsReader(self.database_manager) system_setting_writer: SystemSettingsWriter = SystemSettingsWriter( self.database_manager) updater_settings_values = ssr.get_all_values_from_section('updater') updater_setting_instance = UpdateSettings(**updater_settings_values) updater_setting_instance.version = value system_setting_writer.write(_id='updater', data=updater_setting_instance.__dict__)