Exemplo n.º 1
0
 def on_post(self, req: falcon.request.Request,
             resp: falcon.response.Response):
     reqDebugLog(req)
     try:
         data = json.load(req.bounded_stream)
         job_id = base64.urlsafe_b64encode(
             hashlib.md5("{}{}".format(data[model.NewJobRequest.ds_id],
                                       data[model.NewJobRequest.hash]).
                         encode()).digest()).decode().rstrip('=')
         if job_id.encode() not in self.__kvs.keys():
             logger.info("new job '{}'".format(job_id))
             job_data = dict()
             job_data[model.Job.ds_id] = data[model.NewJobRequest.ds_id]
             job_data[model.Job.init_sources] = [{
                 "init_source":
                 data[model.NewJobRequest.file_name]
             }]
             job_data[model.Job.status] = model.JobStatus.pending
             job_data[model.Job.stages] = dict()
             job_data[model.Job.pipeline_id] = None
             job_data[model.Job.created] = '{}Z'.format(
                 datetime.datetime.utcnow().isoformat())
             self.__kvs.set(job_id, json.dumps(job_data))
             self.__job_queue.put_nowait(job_id)
             resp.content_type = falcon.MEDIA_TEXT
             resp.body = job_id
             resp.status = falcon.HTTP_200
         else:
             resp.content_type = falcon.MEDIA_TEXT
             resp.body = job_id
             resp.status = falcon.HTTP_409
     except Exception as ex:
         resp.status = falcon.HTTP_500
         reqErrorLog(req, ex)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 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
     )
Exemplo n.º 10
0
 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)
Exemplo n.º 11
0
 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)
Exemplo n.º 12
0
 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
     )
Exemplo n.º 13
0
 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)
Exemplo n.º 14
0
 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)
Exemplo n.º 15
0
 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
Exemplo n.º 16
0
 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)
Exemplo n.º 17
0
    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)
Exemplo n.º 18
0
 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)
Exemplo n.º 19
0
 def on_get(self, req: falcon.request.Request,
            resp: falcon.response.Response, job):
     reqDebugLog(req)
     try:
         data = self.__kvs.get(job)
         resp.content_type = falcon.MEDIA_JSON
         resp.body = data.decode()
         resp.status = falcon.HTTP_200
     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_get(self, req: falcon.request.Request, resp: falcon.response.Response, job):
     reqDebugLog(req)
     try:
         resp.content_type = falcon.MEDIA_JSON
         data = dict(self.__job_handler.get_job(job))
         data["models"] = [model.id for model in data["models"]]
         resp.body = json.dumps(data)
         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)
Exemplo n.º 21
0
 def on_get(self, req: falcon.request.Request,
            resp: falcon.response.Response, resource):
     reqDebugLog(req)
     try:
         data = self.__kvs.get(resource)
         resp.content_type = crud_conf.Endpoint.content_type
         resp.body = data.decode()
         resp.status = falcon.HTTP_200
     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)
Exemplo n.º 22
0
 def on_get(self, req: falcon.request.Request,
            resp: falcon.response.Response):
     reqDebugLog(req)
     try:
         items = self.__ce_adapter.listContainers()
         resp.content_type = falcon.MEDIA_JSON
         resp.body = json.dumps(items)
         resp.status = falcon.HTTP_200
     except NotFound as ex:
         resp.status = falcon.HTTP_404
         reqErrorLog(req, ex)
     except Exception as ex:
         resp.status = falcon.HTTP_500
         reqErrorLog(req, ex)
Exemplo n.º 23
0
 def on_get(self, req: falcon.request.Request, resp: falcon.response.Response, job_id):
     reqDebugLog(req)
     try:
         resp.content_type = falcon.MEDIA_JSON
         try:
             resp.body = json.dumps(dict(self.__jobs_handler.get_job(job_id)))
         except KeyError:
             resp.body = self.__db_handler.get(b"jobs-", job_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)
Exemplo n.º 24
0
 def on_get(self, req: falcon.request.Request,
            resp: falcon.response.Response, backup):
     reqDebugLog(req)
     try:
         resp.stream, resp.content_length, f_name = self.__bk_handler.get(
             backup)
         resp.downloadable_as = f_name.replace(":", "-")
         resp.content_type = falcon.MEDIA_JSON
         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)
Exemplo n.º 25
0
 def on_get(self, req: falcon.request.Request,
            resp: falcon.response.Response):
     reqDebugLog(req)
     try:
         if crud_conf.Endpoint.full_collection:
             data = dict()
             for key in self.__kvs.keys():
                 data[key.decode()] = self.__kvs.get(key).decode()
         else:
             data = [key.decode() for key in self.__kvs.keys()]
         resp.content_type = falcon.MEDIA_JSON
         resp.body = json.dumps(data)
         resp.status = falcon.HTTP_200
     except Exception as ex:
         resp.status = falcon.HTTP_500
         reqErrorLog(req, ex)
Exemplo n.º 26
0
 def on_get(self, req: falcon.request.Request,
            resp: falcon.response.Response, source_id: str):
     reqDebugLog(req)
     try:
         data_item = models.DataItem(
             json.loads(self.__db_handler.get(b"data-",
                                              source_id.encode())))
         if data_item.file:
             resp.stream, resp.content_length = self.__data_handler.open(
                 data_item.file)
             resp.content_type = "application/octet-stream"
             resp.status = falcon.HTTP_200
         else:
             resp.status = falcon.HTTP_404
     except (KeyError, FileNotFoundError) as ex:
         resp.status = falcon.HTTP_404
         reqErrorLog(req, ex)
     except Exception as ex:
         resp.status = falcon.HTTP_500
         reqErrorLog(req, ex)
Exemplo n.º 27
0
 def on_post(self, req: falcon.request.Request,
             resp: falcon.response.Response):
     reqDebugLog(req)
     if not crud_conf.Endpoint.allow_post:
         resp.status = falcon.HTTP_405
         reqErrorLog(req, "method disabled in configuration")
     else:
         if not req.content_type == crud_conf.Endpoint.content_type:
             resp.status = falcon.HTTP_415
             reqErrorLog(
                 req, "wrong content type - '{}'".format(req.content_type))
         else:
             try:
                 data = req.bounded_stream.read()
                 r_id = str(uuid.uuid4())
                 self.__kvs.set(r_id, data)
                 resp.content_type = falcon.MEDIA_JSON
                 resp.body = json.dumps({"resource": r_id})
                 resp.status = falcon.HTTP_200
             except Exception as ex:
                 resp.status = falcon.HTTP_500
                 reqErrorLog(req, ex)
Exemplo n.º 28
0
 def on_post(self, req: falcon.request.Request, resp: falcon.response.Response):
     reqDebugLog(req)
     try:
         model_req = models.ModelRequest(json.load(req.bounded_stream))
         model_resp = models.ModelResponse(available=list(), pending=list())
         for m_id, m_conf in handlers.configs.get_model_id_config_list(service_id=model_req.service_id, config=model_req.ml_config):
             try:
                 model = models.Model(json.loads(self.__db_handler.get(b"models-", m_id.encode())))
                 if model.data:
                     model_resp.available.append(m_id)
                 else:
                     model_resp.pending.append(m_id)
             except KeyError:
                 model = models.Model(service_id=model_req.service_id, id=m_id, config=m_conf)
                 self.__db_handler.put(b"models-", model.id.encode(), json.dumps(dict(model)).encode())
                 self.__jobs_handler.create(model_id=model.id)
                 model_resp.pending.append(m_id)
         resp.content_type = falcon.MEDIA_JSON
         resp.body = json.dumps(dict(model_resp))
         resp.status = falcon.HTTP_200
     except Exception as ex:
         resp.status = falcon.HTTP_500
         reqErrorLog(req, ex)
Exemplo n.º 29
0
 def on_get(self, req: falcon.request.Request,
            resp: falcon.response.Response):
     reqDebugLog(req)
     try:
         if req.params:
             if "refresh" in req.params and req.params["refresh"] == "true":
                 resp.body = json.dumps(
                     self.__updater.getAvailableUpdates(refresh=True))
             else:
                 raise BadRequest(
                     "unknown parameters or values - {}".format(req.params))
         else:
             resp.body = json.dumps(self.__updater.getAvailableUpdates())
         resp.content_type = falcon.MEDIA_JSON
         resp.status = falcon.HTTP_200
     except BadRequest as ex:
         resp.status = falcon.HTTP_400
         reqErrorLog(req, ex)
     except UpdateCheckInProgress as ex:
         resp.status = falcon.HTTP_503
         reqErrorLog(req, ex)
     except Exception as ex:
         resp.status = falcon.HTTP_500
         reqErrorLog(req, ex)
Exemplo n.º 30
0
 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 = "\n".join(self.__blacklist.list())