Exemplo n.º 1
0
    def _update(self, version, key=None, cert=None):
        node = self.node
        worker = node.worker(Q_FAST)
        logger.debug('Running node "%s" system update to version: "%s"', node,
                     version)
        reply = worker_command('system_update',
                               worker,
                               version=version,
                               key=key,
                               cert=cert,
                               timeout=600)

        if reply is None:
            raise GatewayTimeout('Node worker is not responding')

        response_class, result = process_update_reply(reply, node, version)
        response = response_class(self.request,
                                  result,
                                  task_id=self.task_id,
                                  obj=node,
                                  msg=LOG_SYSTEM_UPDATE,
                                  detail_dict=result,
                                  dc_bound=False)

        if response.status_code == 200:
            # Restart all erigonesd workers
            ctrl = NodeServiceControl(node)

            for service in ctrl.app_services:
                ctrl.restart(service)

        return response
Exemplo n.º 2
0
def system_update(task_id,
                  dc_id=None,
                  version=None,
                  key=None,
                  cert=None,
                  force=None,
                  **kwargs):
    """
    Updated system on mgmt by running esdc-git-update.
    """
    assert dc_id
    assert version

    SystemUpdateStarted(
        task_id).send()  # Send info to all active socket.io users
    error = None

    try:
        dc = Dc.objects.get_by_id(dc_id)
        assert dc.is_default()

        reply = update_command(version,
                               key=key,
                               cert=cert,
                               force=force,
                               sudo=not settings.DEBUG,
                               run=True)
        result, error = process_update_reply(reply,
                                             'system',
                                             version,
                                             logger=logger)

        if error:
            raise MgmtTaskException(result['message'])
        else:
            task_log_success(task_id,
                             kwargs['meta'].get('msg'),
                             obj=dc,
                             task_result=result)

        return result
    finally:
        SystemUpdateFinished(
            task_id,
            error=error).send()  # Send info to all active socket.io users
Exemplo n.º 3
0
    def _update_v2(self, version, key=None, cert=None):
        from api.system.update.utils import process_update_reply

        node = self.node
        worker = node.worker(Q_FAST)
        logger.info(
            'Running oldstyle (v2.x) node "%s" system update to version: "%s"',
            node, version)
        reply = worker_command('system_update',
                               worker,
                               version=version,
                               key=key,
                               cert=cert,
                               timeout=600)

        if reply is None:
            raise GatewayTimeout('Node worker is not responding')

        result, error = process_update_reply(reply, node, version)

        if error:
            response_class = FailureTaskResponse
        else:
            response_class = SuccessTaskResponse

        detail_dict = result.copy()
        detail_dict['version'] = version
        response = response_class(self.request,
                                  result,
                                  obj=node,
                                  msg=LOG_SYSTEM_UPDATE,
                                  dc_bound=False,
                                  detail_dict=detail_dict)

        if response.status_code == 200:
            # Restart all erigonesd workers
            ctrl = NodeServiceControl(node)

            for service in ctrl.app_services:
                ctrl.restart(service)

        return response
Exemplo n.º 4
0
    def _update(self, version, key=None, cert=None):
        logger.debug('Running system update to version: "%s"', version)
        reply = update_command(version,
                               key=key,
                               cert=cert,
                               sudo=not settings.DEBUG)
        response_class, result = process_update_reply(reply, 'system', version)
        response = response_class(self.request,
                                  result,
                                  task_id=self.task_id,
                                  msg=LOG_SYSTEM_UPDATE,
                                  detail_dict=result,
                                  dc_bound=False)

        if response.status_code == 200:
            # Restart all gunicorns and erigonesd!
            SystemReloadThread(task_id=self.task_id,
                               request=self.request,
                               reason='system_update').start()

        return response