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
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
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
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()
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")
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')
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)
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)
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')
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")
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
def get_master_ip(): return shakedown.master_ip()
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)