示例#1
0
def get_transport(host, username, key):
    """ Create a transport object

        :param host: the hostname to connect to
        :type host: str
        :param username: SSH username
        :type username: str
        :param key: key object used for authentication
        :type key: paramiko.RSAKey

        :return: a transport object
        :rtype: paramiko.Transport
    """

    if host == shakedown.master_ip():
        transport = paramiko.Transport(host)
    else:
        transport_master = paramiko.Transport(shakedown.master_ip())
        transport_master = start_transport(transport_master, username, key)

        if not transport_master.is_authenticated():
            print("error: unable to authenticate {}@{} with key {}".format(
                username, shakedown.master_ip(), key))
            return False

        try:
            channel = transport_master.open_channel('direct-tcpip', (host, 22),
                                                    ('127.0.0.1', 0))
        except paramiko.SSHException:
            print("error: unable to connect to {}".format(host))
            return False

        transport = paramiko.Transport(channel)

    return transport
示例#2
0
文件: helpers.py 项目: dcos/shakedown
def get_transport(host, username, key):
    """ Create a transport object

        :param host: the hostname to connect to
        :type host: str
        :param username: SSH username
        :type username: str
        :param key: key object used for authentication
        :type key: paramiko.RSAKey

        :return: a transport object
        :rtype: paramiko.Transport
    """

    if host == shakedown.master_ip():
        transport = paramiko.Transport(host)
    else:
        transport_master = paramiko.Transport(shakedown.master_ip())
        transport_master = start_transport(transport_master, username, key)

        if not transport_master.is_authenticated():
            print("error: unable to authenticate {}@{} with key {}".format(username, shakedown.master_ip(), key))
            return False

        try:
            channel = transport_master.open_channel('direct-tcpip', (host, 22), ('127.0.0.1', 0))
        except paramiko.SSHException:
            print("error: unable to connect to {}".format(host))
            return False

        transport = paramiko.Transport(channel)

    return transport
示例#3
0
def get_transport(host, username, key):
    """ Create a transport object

        :param host: the hostname to connect to
        :type host: str
        :param username: SSH username
        :type username: str
        :param key: key object used for authentication
        :type key: paramiko.RSAKey

        :return: a transport object
        :rtype: paramiko.Transport
    """

    if host == shakedown.master_ip():
        transport = paramiko.Transport(host)
    else:
        transport_master = paramiko.Transport(shakedown.master_ip())
        transport_master = start_transport(transport_master, username, key)

        if not transport_master.is_authenticated():
            print('error: unable to authenticate ' + username + '@' +
                  shakedown.master_ip() + ' with key ' + key_path)
            return False

        channel = transport_master.open_channel('direct-tcpip', (host, 22),
                                                ('127.0.0.1', 0))
        transport = paramiko.Transport(channel)

    return transport
示例#4
0
def test_event_channel():
    """ Tests the event channel.  The way events are verified is by streaming the events
        to a events.txt file.   The fixture ensures the file is removed before and after the test.
        events checked are connecting, deploying a good task and killing a task.
    """
    app_def = apps.mesos_app()
    app_id = app_def['id']

    client = marathon.create_client()
    client.add_app(app_def)
    shakedown.deployment_wait()

    master_ip = shakedown.master_ip()

    @retrying.retry(wait_fixed=1000, stop_max_attempt_number=30, retry_on_exception=common.ignore_exception)
    def check_deployment_message():
        status, stdout = shakedown.run_command(master_ip, 'cat events.txt')
        assert 'event_stream_attached' in stdout, "event_stream_attached event has not been found"
        assert 'deployment_info' in stdout, "deployment_info event has not been found"
        assert 'deployment_step_success' in stdout, "deployment_step_success has not been found"

    check_deployment_message()
    client.remove_app(app_id, True)
    shakedown.deployment_wait()

    @retrying.retry(wait_fixed=1000, stop_max_attempt_number=30, retry_on_exception=common.ignore_exception)
    def check_kill_message():
        status, stdout = shakedown.run_command(master_ip, 'cat events.txt')
        assert 'KILLED' in stdout, "KILLED event has not been found"

    check_kill_message()
示例#5
0
def events_to_file():
    print("entering events_to_file fixture")
    shakedown.run_command_on_master('rm events.txt')

    # In strict mode marathon runs in SSL mode on port 8443 and requires authentication
    if shakedown.ee_version() == 'strict':
        shakedown.run_command_on_master(
            '(curl --compressed -H "Cache-Control: no-cache" -H "Accept: text/event-stream" '
            + '-H "Authorization: token={}" '.format(
                shakedown.dcos_acs_token()) +
            '-o events.txt -k https://leader.mesos:8443/v2/events; echo $? > events.exitcode) &'
        )

    # Otherwise marathon runs on HTTP mode on port 8080
    else:
        shakedown.run_command_on_master(
            '(curl --compressed -H "Cache-Control: no-cache" -H "Accept: text/event-stream" '
            '-o events.txt http://leader.mesos:8080/v2/events; echo $? > events.exitcode) &'
        )

    yield
    shakedown.kill_process_on_host(shakedown.master_ip(), '[c]url')
    shakedown.run_command_on_master('rm events.txt')
    shakedown.run_command_on_master('rm events.exitcode')
    print("exiting events_to_file fixture")
示例#6
0
def test_event_channel():
    """ Tests the event channel.  The way events are verified is by streaming the events
        to a events.txt file.   The fixture ensures the file is removed before and after the test.
        events checked are connecting, deploying a good task and killing a task.
    """
    app_def = apps.mesos_app()
    app_id = app_def['id']

    client = marathon.create_client()
    client.add_app(app_def)
    shakedown.deployment_wait()

    master_ip = shakedown.master_ip()

    @retrying.retry(wait_fixed=1000, stop_max_attempt_number=30, retry_on_exception=common.ignore_exception)
    def check_deployment_message():
        status, stdout = shakedown.run_command(master_ip, 'cat events.txt')
        assert 'event_stream_attached' in stdout, "event_stream_attached event has not been found"
        assert 'deployment_info' in stdout, "deployment_info event has not been found"
        assert 'deployment_step_success' in stdout, "deployment_step_success has not been found"

    check_deployment_message()
    client.remove_app(app_id, True)
    shakedown.deployment_wait()

    @retrying.retry(wait_fixed=1000, stop_max_attempt_number=30, retry_on_exception=common.ignore_exception)
    def check_kill_message():
        status, stdout = shakedown.run_command(master_ip, 'cat events.txt')
        assert 'KILLED' in stdout, "KILLED event has not been found"

    check_kill_message()
示例#7
0
文件: file.py 项目: loren/shakedown
def copy_file_from_master(remote_path,
                          file_path='.',
                          username='******',
                          key_path=None):
    """ Copy a file to the Mesos master
    """

    return copy_file(shakedown.master_ip(), file_path, remote_path, username,
                     key_path, 'get')
示例#8
0
def copy_file_to_master(file_path,
                        remote_path='.',
                        username=None,
                        key_path=None):
    """ Copy a file to the Mesos master
    """

    return copy_file(shakedown.master_ip(), file_path, remote_path, username,
                     key_path)
示例#9
0
文件: command.py 项目: dcos/shakedown
def run_command_on_master(
        command,
        username=None,
        key_path=None,
        noisy=True
):
    """ Run a command on the Mesos master
    """

    return run_command(shakedown.master_ip(), command, username, key_path, noisy)
示例#10
0
文件: file.py 项目: dcos/shakedown
def copy_file_from_master(
        remote_path,
        file_path='.',
        username=None,
        key_path=None
):
    """ Copy a file to the Mesos master
    """

    return copy_file(shakedown.master_ip(), file_path, remote_path, username, key_path, 'get')
示例#11
0
def run_command_on_master(
        command,
        username=None,
        key_path=None,
        noisy=True
):
    """ Run a command on the Mesos master
    """

    return run_command(shakedown.master_ip(), command, username, key_path, noisy)
示例#12
0
def events_to_file():
    print("entering events_to_file fixture")
    shakedown.run_command_on_master('rm events.txt')
    shakedown.run_command_on_master(
        'curl --compressed -H "Cache-Control: no-cache" -H "Accept: text/event-stream" '
        '-o events.txt leader.mesos:8080/v2/events &')
    yield
    shakedown.kill_process_on_host(shakedown.master_ip(), '[c]url')
    shakedown.run_command_on_master('rm events.txt')
    print("exiting events_to_file fixture")
示例#13
0
def events_to_file():
    print("entering events_to_file fixture")
    shakedown.run_command_on_master('rm events.txt')
    shakedown.run_command_on_master(
        'curl --compressed -H "Cache-Control: no-cache" -H "Accept: text/event-stream" '
        '-o events.txt leader.mesos:8080/v2/events &')
    yield
    shakedown.kill_process_on_host(shakedown.master_ip(), '[c]url')
    shakedown.run_command_on_master('rm events.txt')
    print("exiting events_to_file fixture")
示例#14
0
def get_transport(host, username, key):
    """ Create a transport object

        :param host: the hostname to connect to
        :type host: str
        :param username: SSH username
        :type username: str
        :param key: key object used for authentication
        :type key: paramiko.RSAKey

        :return: a transport object
        :rtype: paramiko.Transport
    """

    if host == '34.217.31.163':  # shakedown.master_ip():
        transport = paramiko.Transport("34.217.31.163")
    else:
        # transport_master = paramiko.Transport("shakedown.master_ip())
        print("MDS Debugging.. 34.217.31.163, " + username)
        transport_master = paramiko.Transport("34.217.31.163")
        print("MDS Debugging1.. 34.217.31.163, " + username)
        transport_master = start_transport(transport_master, username, key)
        print("MDS Debugging2.. 34.217.31.163, " + username)

        if not transport_master.is_authenticated():
            print("error: unable to authenticate {}@{} with key {}".format(
                username, shakedown.master_ip(), key_path))
            return False

        try:
            channel = transport_master.open_channel('direct-tcpip', (host, 22),
                                                    ('10.0.0.205', 34567))
        except paramiko.SSHException as e:
            print("error: unable to connect to {}".format(host))
            print("Printing the exception..")
            str(e)
            return False

        transport = paramiko.Transport(channel)

    return transport
示例#15
0
 def get_master_ip():
     return shakedown.master_ip()
示例#16
0
def run_command_on_master(command, username='******', key_path=None):
    """ Run a command on the Mesos master
    """

    return run_command(shakedown.master_ip(), command, username, key_path)