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
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
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
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