コード例 #1
0
ファイル: sysdig.py プロジェクト: rirwin/paasta
def paasta_sysdig(args):
    if not args.local:
        mesos_master = get_any_mesos_master(cluster=args.cluster)
        ssh_cmd = 'ssh -At -o LogLevel=QUIET {0} "sudo paasta {1} --local"'.format(
            mesos_master, ' '.join(sys.argv[1:]))
        return_code, output = _run(ssh_cmd)
        if return_code != 0:
            print output
            sys.exit(return_code)
        slave, command = output.split(':', 1)
        subprocess.call(
            shlex.split("ssh -tA {0} '{1}'".format(slave, command.strip())))
        return
    status = get_status_for_instance(cluster=args.cluster,
                                     service=args.service,
                                     instance=args.instance)
    slave = pick_slave_from_status(status=status, host=args.host)
    marathon_config = load_marathon_config()
    marathon_url = marathon_config.get_url()[0]
    marathon_user = marathon_config.get_username()
    marathon_pass = marathon_config.get_password()
    mesos_url = get_mesos_master().host
    marathon_parsed_url = urlparse(marathon_url)
    marathon_creds_url = marathon_parsed_url._replace(
        netloc="{0}:{1}@{2}".format(marathon_user, marathon_pass,
                                    marathon_parsed_url.netloc))
    print format_mesos_command(slave, status.marathon.app_id, mesos_url,
                               marathon_creds_url.geturl())
コード例 #2
0
ファイル: sysdig.py プロジェクト: oktopuz/paasta
def paasta_sysdig(args):
    if not args.local:
        mesos_master = get_any_mesos_master(cluster=args.cluster)
        ssh_cmd = 'ssh -At -o LogLevel=QUIET {0} "sudo paasta {1} --local"'.format(mesos_master, ' '.join(sys.argv[1:]))
        return_code, output = _run(ssh_cmd)
        if return_code != 0:
            print output
            sys.exit(return_code)
        slave, command = output.split(':', 1)
        subprocess.call(shlex.split("ssh -tA {0} '{1}'".format(slave, command.strip())))
        return
    status = get_status_for_instance(cluster=args.cluster,
                                     service=args.service,
                                     instance=args.instance)
    slave = pick_slave_from_status(status=status,
                                   host=args.host)
    marathon_config = load_marathon_config()
    marathon_url = marathon_config.get_url()[0]
    marathon_user = marathon_config.get_username()
    marathon_pass = marathon_config.get_password()
    mesos_url = get_mesos_master().host
    marathon_parsed_url = urlparse(marathon_url)
    marathon_creds_url = marathon_parsed_url._replace(netloc="{0}:{1}@{2}".format(marathon_user, marathon_pass,
                                                                                  marathon_parsed_url.netloc))
    print format_mesos_command(slave, status.marathon.app_id, mesos_url, marathon_creds_url.geturl())
コード例 #3
0
def paasta_docker_stop(args):
    status = get_status_for_instance(cluster=args.cluster,
                                     service=args.service,
                                     instance=args.instance)
    slave = pick_slave_from_status(status=status, host=args.host)
    container = get_container_name(status.marathon.app_id,
                                   slave_hostname=slave,
                                   task_id=args.mesos_id)
    command = "sudo docker stop {0}".format(container)
    subprocess.call(["ssh", "-o", "LogLevel=QUIET", "-tA", slave, command])
コード例 #4
0
ファイル: sysdig.py プロジェクト: white105/paasta
def paasta_sysdig(args):
    system_paasta_config = load_system_paasta_config()

    if not args.local:
        mesos_master = get_any_mesos_master(
            cluster=args.cluster, system_paasta_config=system_paasta_config)
        ssh_cmd = ('ssh -At -o StrictHostKeyChecking=no -o LogLevel=QUIET {0} '
                   '"sudo paasta {1} --local"').format(mesos_master,
                                                       ' '.join(sys.argv[1:]))
        return_code, output = _run(ssh_cmd)
        if return_code != 0:
            paasta_print(output)
            sys.exit(return_code)
        slave, command = output.split(':', 1)
        subprocess.call(
            shlex.split("ssh -tA {} '{}'".format(slave, command.strip())))
        return
    status = get_status_for_instance(
        cluster=args.cluster,
        service=args.service,
        instance=args.instance,
    )
    slave = pick_slave_from_status(
        status=status,
        host=args.host,
    )

    job_config = load_marathon_service_config(
        service=args.service,
        instance=args.instance,
        cluster=args.cluster,
    )

    marathon_servers = get_marathon_servers(system_paasta_config)
    marathon_clients = get_marathon_clients(marathon_servers)

    # Unfortunately, sysdig seems to only be able to take one marathon URL, so hopefully the service in question is not
    # currently moving between shards.
    client = marathon_clients.get_current_client_for_service(
        job_config=job_config, )
    marathon_url = client.servers[0]
    marathon_user, marathon_pass = client.auth

    mesos_url = get_mesos_master().host
    marathon_parsed_url = urlparse(marathon_url)
    marathon_creds_url = marathon_parsed_url._replace(netloc="{}:{}@{}".format(
        marathon_user,
        marathon_pass,
        marathon_parsed_url.netloc,
    ))
    paasta_print(
        format_mesos_command(slave, status.marathon.app_id, mesos_url,
                             marathon_creds_url.geturl()))
コード例 #5
0
ファイル: test_utils.py プロジェクト: xcorail/paasta
def test_pick_slave_from_status():
    mock_slaves = [1, 2]
    mock_status = mock.Mock(marathon=mock.Mock(slaves=mock_slaves))
    assert utils.pick_slave_from_status(mock_status, host=None) == 1
    assert utils.pick_slave_from_status(mock_status,
                                        host='lolhost') == 'lolhost'
コード例 #6
0
ファイル: test_utils.py プロジェクト: oktopuz/paasta
def test_pick_slave_from_status():
    mock_slaves = [1, 2]
    mock_status = mock.Mock(marathon=mock.Mock(slaves=mock_slaves))
    assert utils.pick_slave_from_status(mock_status, host=None) == 1
    assert utils.pick_slave_from_status(mock_status, host='lolhost') == 'lolhost'