Esempio n. 1
0
    def on_get(self, req, resp, id):
        topology_id = self.validated_params['id']
        try:
            topology = MongodbFactory.get_topology(topology_id)
            if topology is None:
                return ResponsesHandler.handle_404(resp, 'Topology not found')

            text = LogViewer.get_log(topology[TopologyConst.FIELD_NAME])

            return ResponsesHandler.handle_200(resp, {
                'id': topology_id,
                'log': text
            })

        except TopologyInvalidId as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_404(resp, Ex.message)
        except MissingMandatoryFields as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_409(resp)
        except Error as Ex:
            logger.critical(Ex.message)
            return ResponsesHandler.handle_500(resp)
        except Exception as Ex:
            logger.critical(Ex.message)
            return ResponsesHandler.handle_500(resp)
Esempio n. 2
0
    def on_delete(self, req, res, id, version_id):
        module_id = self.validated_params['id']
        module_version_id = self.validated_params['version_id']
        compiler = None
        try:
            module = MongodbFactory.get_module(module_id)
            module_version = MongodbFactory.get_module_version(
                module_version_id)

            if not module or not module_version:
                return ResponsesHandler.handle_404(res, 'Module not found')

            m_name = module[ModuleConst.FIELD_NAME]
            m_version = module_version[ModuleVersionConst.FIELD_VERSION_CODE]
            compiler = Compiler.delete_module(m_name, m_version)

        except ModuleVersionInvalidId as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_404(res, msg=Ex.message)
        except MissingMandatoryFields as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_409(res)
        except Error as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_400(res)
        except Exception as e:
            logger.critical(e.message)
            return ResponsesHandler.handle_500(res)
        finally:
            if compiler:
                compiler.remove()

        return ResponsesHandler.handle_200(res)
Esempio n. 3
0
    def on_post(self, req, resp, id):
        topology_id = self.validated_params['id']

        try:
            topology = MongodbFactory.get_topology(topology_id)

            if not topology:
                return ResponsesHandler.handle_404(resp, 'Topology not found')

            info = StormUI.kill_topology_by_name(
                topology[TopologyConst.FIELD_NAME])

            if info['status'] == 'success':
                MongodbFactory.update_stopped_state(topology_id)
                return ResponsesHandler.handle_200(
                    resp, {
                        'id': topology_id,
                        'status': TopologyConst.STATUS_STOPPED
                    })
            else:
                return ResponsesHandler.handle_409(resp, {
                    'id': topology_id,
                    'status': info['status']
                })

        except TopologyInvalidId as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_404(resp)
        except MissingMandatoryFields as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_409(resp)
        except TopologyNotInCluster as Ex:
            MongodbFactory.update_stopped_state(topology_id)
            logger.error(Ex.message)
            return ResponsesHandler.handle_409(resp)
        except Error as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_500(resp)
        except Exception as Ex:
            logger.critical(Ex.message)
            return ResponsesHandler.handle_500(resp)
Esempio n. 4
0
    def on_post(self, req, resp, id):
        topology_id = self.validated_params['id']
        builder = None
        try:
            topology = MongodbFactory.get_topology(topology_id)
            if not topology:
                return ResponsesHandler.handle_404(resp, 'Topology not found')

            topology_name = topology[TopologyConst.FIELD_NAME]
            try:
                StormUI.kill_topology_by_name(topology_name)
            except TopologyNotInCluster:
                pass

            logger.debug('Creating topology project...')
            builder = TopologyBuilder(topology)

            logger.debug('Building topology jar...')
            builder.build_jar_with_dependencies()

            logger.debug('Uploading topology to storm...')
            result = StormProcess.launch_topology_cmd(
                topology_name,
                os.path.join(builder.base_path, 'target', builder.jar_name))

            logger.debug(result.stdout)
            MongodbFactory.update_running_state(topology_id)

            return ResponsesHandler.handle_200(
                resp, {
                    'id': topology_id,
                    'status': TopologyConst.STATUS_RUNNING
                })

        except TopologyInvalidId as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_404(resp)
        except CommandException as Ex:
            logger.error(Ex.message)
            logger.debug(Ex.log())
            return ResponsesHandler.handle_500(resp)
        except Error as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_500(resp)
        except Exception as e:
            logger.critical(e.message)
            return ResponsesHandler.handle_500(resp)
        finally:
            if builder is not None:
                builder.remove()
Esempio n. 5
0
    def on_post(self, req, res, id, version_id):
        module_id = self.validated_params['id']
        module_version_id = self.validated_params['version_id']
        compiler = None
        try:
            module = MongodbFactory.get_module(module_id)
            module_version = MongodbFactory.get_module_version(
                module_version_id)

            if not module_version or not module:
                return ResponsesHandler.handle_404(res, 'Module not found')

            if not module_version[ModuleVersionConst.FIELD_SOURCE_CODE]:
                raise ModuleException('The module\'s ' +
                                      ModuleVersionConst.FIELD_SOURCE_CODE +
                                      ' is mandatory.')

            m_name = module[ModuleConst.FIELD_NAME]
            m_type = module.get(ModuleConst.FIELD_TYPE)

            if not m_type and not module['container']:
                raise ModuleException('We can not found the module\'s type')
            elif not m_type:
                m_type = module['container'][ModuleConst.FIELD_TYPE]

            m_lang = module[ModuleConst.FIELD_LANG].lower()
            m_code = module_version[ModuleVersionConst.FIELD_SOURCE_CODE]
            m_version = str(
                module_version[ModuleVersionConst.FIELD_VERSION_CODE])
            m_libraries = module_version.get(
                ModuleVersionConst.FIELD_LIBRARIES)

            if m_libraries is not None:
                dependencies = list(
                    map(Compiler.build_mvn_dependency_from_url, [
                        l[ModuleVersionConst.FIELD_LIBRARY_URL]
                        for l in m_libraries
                    ]))
            else:
                dependencies = list()

            compiler = Compiler(m_name,
                                m_version,
                                m_type,
                                m_lang,
                                m_code,
                                dependencies=dependencies)
            MongodbFactory.update_status_builder_module(
                module_version_id, ModuleVersionConst.BUILD_STATUS_SUCCESS)
            MongodbFactory.update_module_last_modify(module_id)
            compiler.install_jar()

        except ModuleInvalidId as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_404(res, msg=Ex.message)
        except ModuleVersionInvalidId as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_404(res, msg=Ex.message)
        except MissingMandatoryFields as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_409(res, Ex.message)
        except ModuleException as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_803(res, data=Ex.message)
        except ModuleInvalidLanguage as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_803(res, data=Ex.message)
        except ModuleErrorCompilingException as Ex:
            logger.error(Ex.message)
            MongodbFactory.update_status_builder_module(
                module_version_id, ModuleVersionConst.BUILD_STATUS_FAILURE)
            MongodbFactory.update_module_last_modify(module_id)
            return ResponsesHandler.handle_804(res, trace=Ex.message)
        except CommandException as Ex:
            logger.error(Ex.log())
            return ResponsesHandler.handle_500(res)
        except Error as Ex:
            logger.error(Ex.message)
            return ResponsesHandler.handle_500(res)
        except Exception as e:
            logger.critical(e.message)
            return ResponsesHandler.handle_500(res)
        finally:
            if compiler:
                compiler.remove()

        return ResponsesHandler.handle_200(res)
Esempio n. 6
0
 def on_post(self, req, res):
     return ResponsesHandler.handle_200(res, msg='SinfonierAPI is running!')
Esempio n. 7
0
 def on_patch(self, req, res, **params):
     ResponsesHandler.handle_400(res)
Esempio n. 8
0
 def on_options(self, req, res, **params):
     ResponsesHandler.handle_400(res)
Esempio n. 9
0
 def on_delete(self, req, res, **params):
     ResponsesHandler.handle_400(res)