Exemple #1
0
    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
Exemple #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)
Exemple #4
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)
Exemple #5
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)
Exemple #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)
Exemple #7
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)
Exemple #8
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)
Exemple #9
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)
 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)
Exemple #12
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)
 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
Exemple #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)
 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
     )
Exemple #16
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)
Exemple #17
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)
Exemple #18
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)
Exemple #19
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)
Exemple #20
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)
 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
     )
Exemple #22
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)
Exemple #23
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)
Exemple #24
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)
Exemple #25
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)
Exemple #26
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)
 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
Exemple #28
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)
Exemple #29
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)
 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