示例#1
0
    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
示例#2
0
    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()
示例#3
0
    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}'
            )
示例#4
0
 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__)