def validate_schema(file_name, topology): with open(os.path.join(topo_models_path, file_name)) as f: try: jsonschema.validate(topology, json.loads(f.read())) return True except jsonschema.SchemaError as e: logger.error("Schema '{}' is malformed. Error: {}".format(file_name, e.message)) return False except ValueError as e: logger.error("Schema '{}' or payload is not a valid JSON. Error: {}".format(file_name, e.message)) return False except jsonschema.ValidationError: return False
def get(self, app): if app_connector.is_app_connected(self.application, app) is False: error_message = "App '{}' is not installed".format(app) logger.error(error_message) self.set_status(FORBIDDEN, error_message) self.finish() else: topology_parser = app_connector.get_topology_parser( self.application, app)() try: res, parsed_topology = TopologyHandler.get_topology( topology_parser) except Exception as e: logger.error("Topology fetch failed. Error: {}".format( e.message)) if DEBUG: self.set_status(INTERNAL_SERVER_ERROR, e.message) else: self.set_status(INTERNAL_SERVER_ERROR) self.finish() else: if res is True: logger.debug("Parsed topology: {}".format(parsed_topology)) if parsed_topology: self.set_header("Content-Type", "application/json") self.write(parsed_topology) else: logger.error("Failed to parse topology") else: logger.error( "Failed to parse topology. Received controller topology: {}" .format(parsed_topology))
def get(self, app): if app_connector.is_app_connected(self.application, app) is False: error_message = "App '{}' is not installed".format(app) logger.error(error_message) self.set_status(FORBIDDEN, error_message) self.finish() else: topology_parser = app_connector.get_topology_parser(self.application, app)() try: res, parsed_topology = TopologyHandler.get_topology(topology_parser) except Exception as e: logger.error("Topology fetch failed. Error: {}".format(e.message)) if DEBUG: self.set_status(INTERNAL_SERVER_ERROR, e.message) else: self.set_status(INTERNAL_SERVER_ERROR) self.finish() else: if res is True: logger.debug("Parsed topology: {}".format(parsed_topology)) if parsed_topology: self.set_header("Content-Type", "application/json") self.write(parsed_topology) else: logger.error("Failed to parse topology") else: logger.error("Failed to parse topology. Received controller topology: {}".format(parsed_topology))
def validate_schema(file_name, topology): with open(os.path.join(topo_models_path, file_name)) as f: try: jsonschema.validate(topology, json.loads(f.read())) return True except jsonschema.SchemaError as e: logger.error("Schema '{}' is malformed. Error: {}".format( file_name, e.message)) return False except ValueError as e: logger.error( "Schema '{}' or payload is not a valid JSON. Error: {}". format(file_name, e.message)) return False except jsonschema.ValidationError: return False
def connect_apps(main_app): apps = {} for app_name in list(map(format_app_name, INSTALLED_APPS)): try: importlib.import_module('.'.join([base_package_name, 'apps', app_name])) # init app topology_module = importlib.import_module('.'.join([base_package_name, 'apps', app_name, 'topology_parser'])) handler_module = importlib.import_module('.'.join([base_package_name, 'apps', app_name, 'handler'])) except ImportError as e: error = "Failed connecting app {}. Reason: {}".format(app_name, e.message) logger.error(error) else: app = { 'topology_parser': topology_module.Topology, 'handler': handler_module.Handler } apps[app_name] = app logger.info("Connected app: {}".format(app_name)) main_app.set_global_vars({'connected_apps': apps})
def connect_apps(main_app): apps = {} for app_name in list(map(format_app_name, INSTALLED_APPS)): try: importlib.import_module('.'.join( [base_package_name, 'apps', app_name])) # init app topology_module = importlib.import_module('.'.join( [base_package_name, 'apps', app_name, 'topology_parser'])) handler_module = importlib.import_module('.'.join( [base_package_name, 'apps', app_name, 'handler'])) except ImportError as e: error = "Failed connecting app {}. Reason: {}".format( app_name, e.message) logger.error(error) else: app = { 'topology_parser': topology_module.Topology, 'handler': handler_module.Handler } apps[app_name] = app logger.info("Connected app: {}".format(app_name)) main_app.set_global_vars({'connected_apps': apps})