Exemple #1
0
    def instruct(self, payload, ignore_response=False, timeout=None):
        connection = Connection(self.endpoint, timeout=timeout)
        try:
            response = connection.request('POST', body=payload,
                mimetype='application/json', serialize=True)
        except ConnectionFailed:
            if ignore_response:
                return
            else:
                raise

        if ignore_response:
            return
        elif not response.ok:
            raise Exception('response invalid: %s' % response.status)

        content = response.unserialize()
        if content['status'] == 'ready':
            self.status = 'ready'
            self.stage = None
        else:
            self.status = content['status']
            self.stage = content['stage']

        if self.status == 'restarting':
            self.registered = False
Exemple #2
0
    def instruct(self, payload, ignore_response=False, timeout=None):
        connection = Connection(self.endpoint, timeout=timeout)
        try:
            response = connection.request('POST',
                                          body=payload,
                                          mimetype='application/json',
                                          serialize=True)
        except ConnectionFailed:
            if ignore_response:
                return
            else:
                raise

        if ignore_response:
            return
        elif not response.ok:
            raise Exception('response invalid: %s' % response.status)

        content = response.unserialize()
        if content['status'] == 'ready':
            self.status = 'ready'
            self.stage = None
        else:
            self.status = content['status']
            self.stage = content['stage']

        if self.status == 'restarting':
            self.registered = False
Exemple #3
0
    def _register_services(self, dispatcher):
        url = self.parameters.get("registration_url")
        if not url:
            return

        services = self.parameters.get("services")
        if not services:
            return

        for service in services:
            if service.get("enabled", True):
                break
        else:
            return

        connection = Connection(url)
        for _ in range(10):
            try:
                connection.request("GET")
            except (ConnectionFailed, IOError):
                sleep(3)
            else:
                break
        else:
            raise Exception("failed to register services")

        host = self.host
        for service in services:
            if service.get("enabled", True):
                path = "/spire.service/%s" % service["id"]
                dispatcher.mount(ServiceEndpoint(self, service, path=path, shared_path="/spire.service"))

                body = {
                    "id": service["id"],
                    "pid": self.pid,
                    "required": service["required"],
                    "endpoint": "http://%s%s" % (host, path),
                }
                if "dependencies" in service:
                    body["dependencies"] = service["dependencies"]

                connection.request("POST", body=body, mimetype="application/json", serialize=True)
Exemple #4
0
    def _register_services(self, dispatcher):
        url = self.parameters.get('registration_url')
        if not url:
            return

        services = self.parameters.get('services')
        if not services:
            return

        for service in services:
            if service.get('enabled', True):
                break
        else:
            return

        connection = Connection(url)
        for _ in range(10):
            try:
                connection.request('GET')
            except (ConnectionFailed, IOError):
                sleep(3)
            else:
                break
        else:
            raise Exception('failed to register services')

        host = self.host
        for service in services:
            if service.get('enabled', True):
                path = '/spire.service/%s' % service['id']
                dispatcher.mount(ServiceEndpoint(self, service, path=path,
                    shared_path='/spire.service'))

                body = {'id': service['id'], 'pid': self.pid, 'required': service['required'],
                    'endpoint': 'http://%s%s' % (host, path)}
                if 'dependencies' in service:
                    body['dependencies'] = service['dependencies']

                connection.request('POST', body=body, mimetype='application/json',
                    serialize=True)
Exemple #5
0
    def _register_services(self, dispatcher):
        url = self.parameters.get('registration_url')
        if not url:
            return

        services = self.parameters.get('services')
        if not services:
            return

        for service in services:
            if service.get('enabled', True):
                break
        else:
            return

        connection = Connection(url)
        for _ in range(10):
            try:
                connection.request('GET')
            except (ConnectionFailed, IOError):
                sleep(3)
            else:
                break
        else:
            raise Exception('failed to register services')

        host = self.host
        for service in services:
            if service.get('enabled', True):
                path = '/spire.service/%s' % service['id']
                dispatcher.mount(
                    ServiceEndpoint(self,
                                    service,
                                    path=path,
                                    shared_path='/spire.service'))

                body = {
                    'id': service['id'],
                    'pid': self.pid,
                    'required': service['required'],
                    'endpoint': 'http://%s%s' % (host, path)
                }
                if 'dependencies' in service:
                    body['dependencies'] = service['dependencies']

                connection.request('POST',
                                   body=body,
                                   mimetype='application/json',
                                   serialize=True)