def on_post(self, req: falcon.request.Request, resp: falcon.response.Response, task_name: str) -> None: try: (task, validation), preprocessors = self._tasks[task_name] except KeyError: raise falcon.HTTPBadRequest( "Undefined task", "{} is undefined task".format(task_name)) payload = self._validate_payload(req) logger.info("Received message for Queue %s, Task %s, %s", self._queue_name, task_name, payload) try: message = payload['message'] except KeyError: raise falcon.HTTPBadRequest("Invalid JSON", "JSON must have message field") task.apply_async(kwargs=_validate( self._recurse(message, preprocessors), validation), serializer='json', compression='zlib', countdown=payload.get('delay', 0)) if self._enable_database: parsely.database.MessageLog.create(self._queue_name, task_name, json.dumps(message)) parsely.database.MessageLog.eliminate(self._queue_name, task_name) resp.status = falcon.HTTP_202 resp.body = "{}"
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response): version = self.__rancher_manager.getVersion() if version: resp.body = version resp.status = falcon.HTTP_200 else: resp.status = falcon.HTTP_404
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response, service, api, resource=None): reqDebugLog(req) try: if service not in self.__srv_map: raise RuntimeError(falcon.HTTP_404) url = self.__srv_map[service] + "/" + api if resource: url = url + "/" + resource response = requests.get(url=url, params=req.params) if not response.status_code == 200: raise RuntimeError("{} {}".format(response.status_code, response.reason)) resp.body = response.content resp.content_type = response.headers.get("content-type") except RuntimeError as ex: resp.status = str(ex) reqErrorLog(req, ex) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_post(self, req: falcon.request.Request, resp: falcon.response.Response, service, api, resource=None): reqDebugLog(req) try: if service not in self.__srv_map: raise RuntimeError(falcon.HTTP_404) url = self.__srv_map[service] + "/" + api if resource: url = url + "/" + resource response = requests.post( url=url, data=req.bounded_stream.read(), params=req.params, headers={"Content-Type": req.content_type}) if not response.status_code == 200: raise RuntimeError("{} {}".format(response.status_code, response.reason)) resp.status = falcon.HTTP_200 except RuntimeError as ex: resp.status = str(ex) reqErrorLog(req, ex) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_patch(self, req: falcon.request.Request, resp: falcon.response.Response, module): reqDebugLog(req) if not req.content_type == falcon.MEDIA_JSON: resp.status = falcon.HTTP_415 reqErrorLog(req, "wrong content type - '{}'".format(req.content_type)) else: try: data = json.load(req.bounded_stream) m_data = json.loads(self.__kvs.get(module)) worker = self.__wm.getWorker(module) if data["state"] == ModuleState.active: if not data["state"] == m_data["state"]: response = requests.get(url="{}/{}/{}".format(mm_conf.CS.url, mm_conf.CS.api, module)) if response.status_code == 200: configs = response.json() worker.setTask(activateModule, kvs=self.__kvs, mod=module, configs=configs, m_data=m_data) worker.start() else: raise Exception("can't retrieve configs for '{}' - {}".format(module, response.status_code)) elif data["state"] == ModuleState.inactive: if not data["state"] == m_data["state"]: worker.setTask(deactivateModule, kvs=self.__kvs, mod=module, m_data=m_data) worker.start() else: raise ValueError("unknown state '{}'".format(data["state"])) resp.status = falcon.HTTP_200 except KeyError as ex: resp.status = falcon.HTTP_400 reqErrorLog(req, ex) except snorkels.GetError as ex: resp.status = falcon.HTTP_404 reqErrorLog(req, ex) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_post(self, req: falcon.request.Request, resp: falcon.response.Response): reqDebugLog(req) if not req.content_type == falcon.MEDIA_JSON: resp.status = falcon.HTTP_415 else: try: data = json.load(req.bounded_stream) if data["name"] in self.__ce_adapter.listContainers(): raise RuntimeError("container '{}' already exists".format( data["name"])) self.__ce_adapter.createContainer(data["name"], data["deployment_configs"], data.get("service_configs"), data.get("runtime_vars")) resp.status = falcon.HTTP_200 except KeyError as ex: resp.status = falcon.HTTP_400 reqErrorLog(req, ex) except RuntimeError as ex: resp.status = falcon.HTTP_409 reqErrorLog(req, ex) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_patch(self, req: falcon.request.Request, resp: falcon.response.Response, deployment): reqDebugLog(req) if not req.content_type == falcon.MEDIA_JSON: resp.status = falcon.HTTP_415 else: try: data = json.load(req.bounded_stream) if data["state"] == ContainerState.running: self.__ce_adapter.startContainer(deployment) elif data["state"] == ContainerState.stopped: self.__ce_adapter.stopContainer(deployment) else: raise ValueError("unknown state '{}'".format( data["state"])) resp.status = falcon.HTTP_200 except KeyError as ex: resp.status = falcon.HTTP_400 reqErrorLog(req, ex) except NotFound as ex: resp.status = falcon.HTTP_404 reqErrorLog(req, ex) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_delete(self, req: falcon.request.Request, resp: falcon.response.Response, module): reqDebugLog(req) try: self.__kvs.delete(module) resp.status = falcon.HTTP_200 except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response, filename: str) -> None: resp.content_type = { '.css': "text/css", '.js': "application/javascript", }[os.path.splitext(filename)[1]] resp.body = self._read_resource(filename)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response, project, namespace): try: items = self.__browser.listWorkloads(project, namespace) resp.status = falcon.HTTP_200 resp.content_type = falcon.MEDIA_JSON resp.body = json.dumps(items) except Exception: resp.status = falcon.HTTP_404
def on_post(self, req: falcon.request.Request, resp: falcon.response.Response, job): reqDebugLog(req) try: self.__job_handler.add_data_source(job, self.__stg_handler.save(req.stream)) resp.status = falcon.HTTP_200 except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_delete(self, req: falcon.request.Request, resp: falcon.response.Response, model_id: str): reqDebugLog(req) try: self.__db_handler.delete(b"models-", model_id.encode()) resp.status = falcon.HTTP_200 except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response): try: resp.status = falcon.HTTP_200 resp.content_type = falcon.MEDIA_TEXT resp.body = yaml.dump(self.__workload_configs.list()) except Exception as ex: logger.error("can't list workload configs - {}".format(ex)) resp.status = falcon.HTTP_500
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response): reqDebugLog(req) try: resp.content_type = falcon.MEDIA_JSON resp.body = json.dumps(self.__dm.devices()) resp.status = falcon.HTTP_200 except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response): resp.status = falcon.HTTP_200 resp.content_type = falcon.MEDIA_TEXT resp.body = json.dumps( { "name": config.Assistant.name, }, indent=4 )
def on_post(self, req: falcon.request.Request, resp: falcon.response.Response): reqDebugLog(req) try: self.__bk_handler.add(req.stream) resp.status = falcon.HTTP_200 except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response): reqDebugLog(req) try: resp.content_type = falcon.MEDIA_JSON resp.body = json.dumps(self.__db_handler.list_keys(b"models-")) resp.status = falcon.HTTP_200 except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_post(self, req: falcon.request.Request, resp: falcon.response.Response): reqDebugLog(req) try: req_body = json.load(req.bounded_stream) resp.body = self.__jobs_handler.create(req_body["model_id"]) resp.content_type = falcon.MEDIA_TEXT resp.status = falcon.HTTP_200 except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_get( self, req: falcon.request.Request, resp: falcon.response.Response, ) -> None: task_names = self._tasks.keys() resp.content_type = 'text/html' resp.body = self._rendler.render("task_list.html", queue_name=self._queue_name, task_names=task_names)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response, name): reqDebugLog(req) try: if req.params: params = req.params.copy() if set(params).issubset(self.__rel_parameters): utc_tstp_format = "%Y-%m-%dT%H:%M:%SZ" for key in params: params[key] = int(datetime.datetime.strptime(params[key], utc_tstp_format).replace(tzinfo=datetime.timezone.utc).timestamp()) resp.body = self.__ce_adapter.getRelative(name, **params) elif set(params).issubset(self.__abs_parameters): for key in params: params[key] = int(params[key]) resp.body = self.__ce_adapter.getAbsolut(name, **params) else: raise TypeError("unknown arguments") else: resp.body = self.__ce_adapter.getRelative(name) resp.content_type = falcon.MEDIA_TEXT resp.status = falcon.HTTP_200 except TypeError as ex: resp.status = falcon.HTTP_400 reqErrorLog(req, ex) except ValueError as ex: resp.status = falcon.HTTP_400 reqErrorLog(req, ex) except NotFound as ex: resp.status = falcon.HTTP_404 reqErrorLog(req, ex) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response): resp.status = falcon.HTTP_200 resp.content_type = falcon.MEDIA_TEXT resp.body = json.dumps( { "server": config.Rancher.server, "default_context_name": config.Rancher.default_context_name, "default_context": config.Rancher.default_context, "bearer_token": config.Rancher.bearer_token }, indent=4 )
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response, module): reqDebugLog(req) try: resp.body = self.__kvs.get(module) resp.status = falcon.HTTP_200 resp.content_type = falcon.MEDIA_JSON except snorkels.GetError as ex: resp.status = falcon.HTTP_404 reqErrorLog(req, ex) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_patch(self, req: falcon.request.Request, resp: falcon.response.Response, backup): reqDebugLog(req) try: self.__bk_handler.apply(backup) resp.status = falcon.HTTP_200 except FileNotFoundError as ex: resp.status = falcon.HTTP_404 reqErrorLog(req, ex) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response): reqDebugLog(req) try: data = dict() for key in self.__kvs.keys(): data[key.decode()] = json.loads(self.__kvs.get(key)) resp.status = falcon.HTTP_200 resp.content_type = falcon.MEDIA_JSON resp.body = json.dumps(data) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response, model_id: str): reqDebugLog(req) try: resp.content_type = falcon.MEDIA_JSON resp.body = self.__db_handler.get(b"models-", model_id.encode()) resp.status = falcon.HTTP_200 except KeyError as ex: resp.status = falcon.HTTP_404 reqErrorLog(req, ex) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_delete(self, req: falcon.request.Request, resp: falcon.response.Response, resource): reqDebugLog(req) try: self.__kvs.delete(resource) resp.status = falcon.HTTP_200 except snorkels.DeleteError as ex: resp.status = falcon.HTTP_404 reqErrorLog(req, ex) except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response): try: kubeconfig = getKubeconfig("{}/{}".format(config.Kubeconfig.path, config.Kubeconfig.file)) if kubeconfig: resp.status = falcon.HTTP_200 resp.content_type = falcon.MEDIA_TEXT resp.body = kubeconfig else: resp.status = falcon.HTTP_404 except Exception as ex: logger.error("can't get kubeconfig at '{}/{}' - {}".format(config.Kubeconfig.path, config.Kubeconfig.file, ex)) resp.status = falcon.HTTP_500
def on_post(self, req: falcon.request.Request, resp: falcon.response.Response, ds_id): reqDebugLog(req) try: f_name, hash = self.__stg_handler.save(req.stream) event = self.__notif_handler.add(hash, ds_id, f_name) event.wait() resp.content_type = falcon.MEDIA_JSON resp.body = json.dumps({"checksum": hash, "job_id": event.job_id}) resp.status = falcon.HTTP_200 except Exception as ex: resp.status = falcon.HTTP_500 reqErrorLog(req, ex)
def on_get(self, req: falcon.request.Request, resp: falcon.response.Response, task_name: str) -> None: if self._enable_database: messages = parsely.database.MessageLog.iter_by_queue_name_and_task_name( self._queue_name, task_name) else: messages = iter([]) resp.content_type = 'text/html' resp.body = self._rendler.render("enqueue.html", queue_name=self._queue_name, task_name=task_name, messages=messages)
def on_put(self, req: falcon.request.Request, resp: falcon.response.Response): if not req.content_type in ("text/plain;charset=UTF-8", falcon.MEDIA_TEXT): resp.status = falcon.HTTP_415 else: try: data = req.bounded_stream.read() data = [item for item in data.decode().split("\n") if item] self.__blacklist.update(data) self.__browser.read() resp.status = falcon.HTTP_200 except Exception as ex: logger.error("could not update blacklist - {}".format(ex)) resp.status = falcon.HTTP_500