Пример #1
0
 def __init__(self,
              class_external_system,
              destination_parms,
              export_vars,
              event=None):
     self.__destination_parms = destination_parms
     self.__export_vars = export_vars
     external_system_class = load_class(class_external_system)
     self.__external_system = external_system_class(
         self.__destination_parms, self.__export_vars, event)
Пример #2
0
def get_external_system_variables(class_external_system):
    try:
        external_system_class = load_class(
            "cmdb.exportd.externals.external_systems.{}".format(
                class_external_system))
        list_of_parameters = external_system_class.variables
    except CMDBError as e:
        return abort(404, jsonify(message='Not Found', error=str(e)))
    except Exception as e:
        return abort(400, e)
    return make_response(list_of_parameters)
Пример #3
0
def export_file():
    try:
        _object_ids = request.args.get('ids', [])
        _class = request.args.get('classname', '')
        _zipping = request.args.get('zip', False) in ['true', 'True']

        if _zipping:
            export_type_class = load_class('cmdb.file_export.export_types.' + 'ZipExportType')()
            file_export = FileExporter('object', export_type_class, _object_ids, _class)
        else:
            export_type_class = load_class('cmdb.file_export.export_types.' + _class)()
            file_export = FileExporter('object', export_type_class, _object_ids)

    except TypeNotFoundError as e:
        return abort(400, e.message)
    except ModuleNotFoundError as e:
        return abort(400, e)
    except CMDBError as e:
        return abort(404, jsonify(message='Not Found', error=e.message))

    return file_export.export()
Пример #4
0
def export_file_by_type_id(public_id, export_class):
    try:
        export_type_class = load_class('cmdb.file_export.export_types.' + export_class)
        export_type = export_type_class()
        file_export = FileExporter(None, export_type, public_id)
    except TypeNotFoundError as e:
        return abort(400, e.message)
    except ModuleNotFoundError as e:
        return abort(400, e)
    except CMDBError as e:
        return abort(404, jsonify(message='Not Found', error=e.message))

    return file_export.export()
Пример #5
0
    def export(self, data: List[RenderResult], *args):
        """
        Export a zip file, containing the object list sorted by type in several files.

        Args:
            data: List of objects to be exported
            args: the filetype with which the objects are stored

        Returns:
            zip file containing object files separated by types
        """

        # check what export type is requested and intitializes a new zip file in memory
        export_type = load_class(
            f'cmdb.exporter.exporter_base.{args[0].get("classname", "")}')()
        zipped_file = io.BytesIO()

        # Build .zip file
        with zipfile.ZipFile(zipped_file, "a", zipfile.ZIP_DEFLATED,
                             False) as f:

            # Enters loop until the object list is empty
            while len(data) > 0:

                # Set what type the loop filters to and makes an empty list
                type_id = data[len(data) - 1].type_information['type_id']
                type_name = data[len(data) - 1].type_information['type_name']
                type_list = []

                # Filters object list to the current type_id and inserts it into type_list
                # When an object is inserted into type_list it gets deleted from object_list
                for i in range(len(data) - 1, -1, -1):
                    if data[i].type_information['type_id'] == type_id:
                        type_list.append(data[i])
                        del data[i]

                # Runs the requested export function and returns the output in the export variable
                export = export_type.export(type_list)

                # check if export output is a string, bytes or a file and inserts it into the zip file
                if isinstance(export, str) or isinstance(export, bytes):
                    f.writestr((type_name + "_ID_" + str(type_id) + "." +
                                export_type.FILE_EXTENSION).format(i), export)
                else:
                    f.writestr((type_name + "_ID_" + str(type_id) + "." +
                                export_type.FILE_EXTENSION).format(i),
                               export.getvalue())

        # returns zipped file
        zipped_file.seek(0)
        return zipped_file
Пример #6
0
def export_file_by_type_id(type_id, export_class, request_user: UserModel):
    try:
        export_type_class = load_class('cmdb.file_export.export_types.' + export_class)
        export_type = export_type_class()
        file_export = FileExporter(export_type, type_id)
        file_export.objects = file_export.from_database(user=request_user, permission=AccessControlPermission.READ)
    except TypeNotFoundError as e:
        return abort(400, e.message)
    except ModuleNotFoundError as e:
        return abort(400, e)
    except CMDBError as e:
        return abort(404, jsonify(message='Not Found', error=e.message))

    return file_export.export()
Пример #7
0
def export_file(request_user: UserModel):
    import json
    try:
        _object_ids = json.loads(request.args.get('ids', []))
        _class = request.args.get('classname', '')
        _zipping = request.args.get('zip', False) in ['true', 'True']

        if _zipping:
            export_type_class = load_class('cmdb.file_export.export_types.' + 'ZipExportType')()
            file_export = FileExporter(export_type_class, _object_ids, 'object', _class)
        else:
            export_type_class = load_class('cmdb.file_export.export_types.' + _class)()
            file_export = FileExporter(export_type_class, _object_ids, 'object')

        file_export.objects = file_export.from_database(user=request_user, permission=AccessControlPermission.READ)
    except TypeNotFoundError as e:
        return abort(400, e.message)
    except ModuleNotFoundError as e:
        return abort(400, e)
    except CMDBError as e:
        return abort(404, jsonify(message='Not Found', error=e.message))

    return file_export.export()
Пример #8
0
 def convert_to(self):
     """Converts the supported export types inside the list to a passed ExportType type list."""
     _list = []
     for type_element in self.get_extensions():
         type_element_class = load_class('cmdb.file_export.export_types.' +
                                         type_element)
         _list.append({
             'extension': type_element,
             'label': type_element_class.LABEL,
             'icon': type_element_class.ICON,
             'multiTypeSupport': type_element_class.MULTITYPE_SUPPORT,
             'helperText': type_element_class.DESCRIPTION,
             'active': type_element_class.ACTIVE
         })
     return _list
Пример #9
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()
Пример #10
0
 def start_app(self) -> bool:
     """start all services from service definitions"""
     for service_def in self.__service_defs:
         service_name = service_def.get_name()
         service_class = load_class(service_def.get_class())
         process = multiprocessing.Process(target=service_class().start,
                                           name=service_name)
         process.start()
         self.__process_list.append(process)
         # start process controller
         proc_controller = ProcessController(process, self.__flag_shutdown,
                                             self.stop_app)
         proc_controller.start()
         self.__process_controllers.append(proc_controller)
     return True
Пример #11
0
def get_filetypes():
    filetypes = FileExporter.get_filetypes()
    filetype_list = []
    for filetype in filetypes:
        filetype_class = load_class('cmdb.file_export.export_types.' + filetype)
        filetype_properties = {
                'id': filetype,
                'label': filetype_class.LABEL,
                'icon': filetype_class.ICON,
                'multiTypeSupport': filetype_class.MULTITYPE_SUPPORT,
                'helperText': filetype_class.DESCRIPTION,
                'active': filetype_class.ACTIVE
        }
        filetype_list.append(filetype_properties)

    return make_response(filetype_list)
Пример #12
0
def get_export_file_types():
    _types = FileExporter.get_type_list()
    _list = []

    for type_element in _types:
        type_element_class = load_class('cmdb.file_export.export_types.' + type_element)
        type_element_properties = {
                'id': type_element,
                'label': type_element_class.LABEL,
                'icon': type_element_class.ICON,
                'multiTypeSupport': type_element_class.MULTITYPE_SUPPORT,
                'helperText': type_element_class.DESCRIPTION,
                'active': type_element_class.ACTIVE
        }
        _list.append(type_element_properties)

    return make_response(_list)
Пример #13
0
def export_objects(params: CollectionParameters, request_user: UserModel):
    try:
        _config = ExporterConfig(parameters=params, options=params.optional)
        _class = 'ZipExportType' if params.optional.get('zip', False) in ['true'] \
            else params.optional.get('classname', 'JsonExportType')

        exporter_class = load_class('cmdb.exporter.exporter_base.' + _class)()
        exporter = BaseExportWriter(exporter_class, _config)
        exporter.from_database(database_manager=current_app.database_manager, user=request_user,
                               permission=AccessControlPermission.READ)
    except TypeNotFoundError as e:
        return abort(400, e.message)
    except ModuleNotFoundError as e:
        return abort(400, e)
    except CMDBError as e:
        return abort(404, jsonify(message='Not Found', error=e.message))

    return exporter.export()