Ejemplo n.º 1
0
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))
Ejemplo n.º 2
0
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))
Ejemplo n.º 3
0
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))