def ssh_status_detecting(operation, config): """ :Return Code Description: 0: 执行中 1: 已完成 2: 内部错误 """ ID = operation.get('OPT_ID', 0) API_URL = '%s/operation/%s' % (config.get('SETTINGS_API_BASIC_URL', None), ID) env.user = operation.get('SSH_USERNAME', 'root') env.password = operation.get('SSH_PASSWORD', 'password') env.port = operation.get('SSH_PORT', 22) env.key_filename = generate_private_path(operation.get('SSH_PRIVATE_KEY', 'default.key'), config.get('SETTINGS_PRIVATE_KEY_PATH')) with hide('everything'): result = execute(basic_remote_runner, 'ls', dict(), hosts=operation.get('OPT_SERVER_LIST', '').split()) data = json.dumps(dict(id=ID, status=1, result=result), ensure_ascii=False) response = requests.put(API_URL, data=data, headers={'content-type': 'application/json'}) if response.status_code != requests.codes.ok: message = response.json.get('message', 'unknown errors') logger.error(u'UPDATE OPERATION FAILS| Operation ID is %s, Message is %s' % (ID, message))
def fabfile_execute(operation, config, tasks): """ :Return: 0: 执行中 1: 已完成 2: 内部错误 """ ID = operation.get('OPT_ID', 0) API_URL = '%s/operation/%s' % (config.get('SETTINGS_API_BASIC_URL', None), ID) env.user = operation.get('SSH_USERNAME', 'root') env.password = operation.get('SSH_PASSWORD', 'password') env.port = operation.get('SSH_PORT', 22) env.key_filename = generate_private_path(operation.get('SSH_PRIVATE_KEY', 'default.key'), config.get('SETTINGS_PRIVATE_KEY_PATH')) task = tasks.get(operation.get('FABFILE_NAME', 'default'), None) with hide('everything'): connectivity = execute(basic_remote_runner, 'ls', dict(), stderr=True, hosts=operation.get('OPT_SERVER_LIST', '').split()) connectivity_nodes = list() for (k, v) in connectivity.items(): if v.get('code', 1) == 0: connectivity_nodes.append(k) with hide('everything'): result = execute(task, ext_vars=json.loads(operation.get('OPT_EXT_VARIABLES', dict())), hosts=connectivity_nodes) connectivity.update(result) data = json.dumps(dict(id=ID, status=1, result=connectivity), ensure_ascii=False) response = requests.put(API_URL, data=data, headers={'content-type': 'application/json'}) if response.status_code != requests.codes.ok: message = response.json.get('message', 'unknown errors') logger.error(u'UPDATE OPERATION FAILS| Operation ID is %s, Message is %s' % (ID, message))
def custom_script_execute(operation, config): """ :Return Code Description: 0: 执行中 1: 已完成 2: 内部错误 """ ID = operation.get('OPT_ID', 0) API_URL = '%s/operation/%s' % (config.get('SETTINGS_API_BASIC_URL', None), ID) env.user = operation.get('SSH_USERNAME', 'root') env.password = operation.get('SSH_PASSWORD', 'password') env.port = operation.get('SSH_PORT', 22) env.key_filename = generate_private_path( operation.get('SSH_PRIVATE_KEY', 'default.key'), config.get('SETTINGS_PRIVATE_KEY_PATH')) with hide('everything'): result = execute(basic_remote_runner, operation.get('OPT_SCRIPT_TEMPLATE', 'ls'), json.loads(operation.get('OPT_EXT_VARIABLES', dict())), stdout=True, stderr=True, hosts=operation.get('OPT_SERVER_LIST', '').split()) data = json.dumps(dict(id=ID, status=1, result=result), ensure_ascii=False) response = requests.put(API_URL, data=data, headers={'content-type': 'application/json'}) if response.status_code != requests.codes.ok: message = response.json.get('message', 'unknown errors') logger.error( u'UPDATE OPERATION FAILS| Operation ID is %s, Message is %s' % (ID, message))