Пример #1
0
 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)
Пример #2
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)
Пример #3
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)
Пример #4
0
 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)
Пример #5
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)
Пример #6
0
 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)
Пример #7
0
 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
Пример #8
0
 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)
Пример #9
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
Пример #10
0
 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)
Пример #11
0
 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)
Пример #12
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
 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)
Пример #14
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)
Пример #15
0
 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)
Пример #16
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)
Пример #17
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)
Пример #18
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
Пример #19
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)
Пример #20
0
 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)
Пример #21
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)
Пример #22
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)
Пример #23
0
 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)
Пример #24
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)
Пример #25
0
 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
Пример #26
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)
Пример #27
0
 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()
             if data:
                 self.__workload_configs.update(yaml.load(data.decode(), Loader=yaml.SafeLoader))
                 resp.status = falcon.HTTP_200
             else:
                 resp.status = falcon.HTTP_400
         except Exception as ex:
             logger.error("can't update workload configs - {}".format(ex))
             resp.status = falcon.HTTP_500
Пример #28
0
 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()
             if data:
                 setKubeconfig("{}/{}".format(config.Kubeconfig.path, config.Kubeconfig.file), data.decode())
                 resp.status = falcon.HTTP_200
             else:
                 resp.status = falcon.HTTP_400
         except Exception as ex:
             logger.error("can't write kubeconfig to '{}/{}' - {}".format(config.Kubeconfig.path, config.Kubeconfig.file, ex))
             resp.status = falcon.HTTP_500
 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)
Пример #30
0
 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 = json.load(req.bounded_stream)
             if data:
                 config.Assistant.name = data["name"]
                 resp.status = falcon.HTTP_200
             else:
                 resp.status = falcon.HTTP_400
         except Exception as ex:
             logger.error("can't update assistant config - {}".format(ex))
             resp.status = falcon.HTTP_500