示例#1
0
    def save_service_state(self, service_id):
        """Save service state."""

        service = self.services[service_id]

        self.bootstrap[str(service.service_id)] = {
            "name": service.name,
            "params": serialize.serialize(service.params),
            "callbacks": serialize.serialize(service.callbacks),
            "configuration": serialize.serialize(service.configuration)
        }

        self.save()
示例#2
0
    def save_service_state(self, service_id):
        """Save service state."""

        service = self.services[service_id]

        self.bootstrap[str(service.service_id)] = {
            "name": service.name,
            "params": serialize.serialize(service.params)
        }

        self.storage[str(service.service_id)] = \
            serialize.serialize(service.storage)

        self.save()
示例#3
0
def connect(gargs, cmd, expected=200, request=None, headers=None):
    """ Run command. """

    if not headers:
        headers = get_headers(gargs)

    url = "%s://%s:%s" % (gargs.transport, gargs.host, gargs.port)
    method = getattr(requests, cmd[0].lower())

    response = method(url + cmd[1], headers=headers, json=serialize(request))

    try:
        data = json.loads(response.text)
    except json.decoder.JSONDecodeError:
        data = {}

    if response.status_code != expected:

        msg = "%u: %s (%s)" % \
            (data['status_code'], data['title'], data['detail'])

        print(msg)

        sys.exit()

    return response, data
示例#4
0
    def to_mongo(self, value):

        try:

            return serialize.serialize(value)

        except ValueError as ex:
            raise ValidationError(ex)
    def __write_points_worker(self, points):

        try:
            self.influxdb_client.write_points(points=serialize(points))
        except Exception as ex:
            self.log.exception(ex)
            return True

        return False
    def write_error(self, status_code, **kwargs):
        """Write error as JSON message."""

        self.set_header('Content-Type', 'application/json')

        value = {
            "title": self._reason,
            "status_code": status_code,
            "detail": kwargs.get("message"),
        }

        self.finish(json.dumps(serialize(value), indent=4))
示例#7
0
    def register_service(self, service_id, name, params):
        """Register new service."""

        if str(service_id) in self.bootstrap:
            raise ValueError("Worker %s already registered" % service_id)

        params['service_id'] = service_id
        params['project_id'] = self.project_id

        service = self._start_service(service_id, name, params)

        self.bootstrap[str(service_id)] = {
            "name": service.name,
            "params": serialize.serialize(service.params)
        }

        self.save()

        return self.services[service_id]
示例#8
0
    def handle_callbacks(self, params=None, name="default"):
        """Invoke registered callbacks."""

        if name not in self.callbacks:
            return

        callback_type = self.callbacks[name]['callback_type']
        argument = params if params else self
        callback = self.callbacks[name]['callback']

        self.log.info("Handling callback %s (%s)", name, callback_type)

        # if type is native just invoke it with the specified params
        if self.callbacks[name]['callback_type'] == CALLBACK_NATIVE:
            callback(params)
            return

        # if type is REST make a post with the serialized params
        if self.callbacks[name]['callback_type'] == CALLBACK_REST:
            response = requests.post(url=callback, json=serialize(argument))
            self.log.info("POST %s - %u", callback, response.status_code)
示例#9
0
    def write_as_json(self, value):
        """Return reply as a json document."""

        self.write(json.dumps(serialize(value), indent=4))