def paasta_docker_exec(args): try: task = get_task_from_instance( cluster=args.cluster, service=args.service, instance=args.instance, slave_hostname=args.host, task_id=args.mesos_id, ) except PaastaTaskNotFound: sys.exit(1) container = get_container_name(task) slave = task.slave["hostname"] user_args = ("--user", args.user) if args.user else () command = ( "sudo", "docker", "exec", "-ti", *user_args, container, *shlex.split(args.exec_command), ) command = " ".join(shlex.quote(arg) for arg in command) subprocess.call(["ssh", "-o", "LogLevel=QUIET", "-tA", slave, command])
def test_get_task_from_instance(mock_client): mock_client.get_paasta_api_client.return_value = None with raises(utils.PaastaTaskNotFound): utils.get_task_from_instance('cluster1', 'my-service', 'main') mock_client.get_paasta_api_client.assert_called_with(cluster='cluster1') mock_api = mock.Mock() mock_client.get_paasta_api_client.return_value = mock_api mock_task_1 = mock.Mock() mock_task_2 = mock.Mock() mock_tasks = [mock_task_1, mock_task_2] mock_result = mock.Mock(return_value=mock_tasks) mock_task_result = mock.Mock(return_value=mock_task_2) mock_api.service.tasks_instance.return_value = mock.Mock(result=mock_result) mock_api.service.task_instance.return_value = mock.Mock(result=mock_task_result) ret = utils.get_task_from_instance('cluster1', 'my-service', 'main', task_id='123') assert ret == mock_task_2 mock_api.service.task_instance.assert_called_with( service='my-service', instance='main', verbose=True, task_id='123', ) ret = utils.get_task_from_instance('cluster1', 'my-service', 'main') assert ret == mock_task_1 mock_api.service.tasks_instance.assert_called_with( service='my-service', instance='main', verbose=True, slave_hostname=None, ) mock_result = mock.Mock(return_value=[]) mock_api.service.tasks_instance.return_value = mock.Mock(result=mock_result) with raises(utils.PaastaTaskNotFound): ret = utils.get_task_from_instance( 'cluster1', 'my-service', 'main', slave_hostname='test', ) mock_api.service.tasks_instance.side_effect = HTTPError(response=mock.Mock(status_code=500)) with raises(utils.PaastaTaskNotFound): ret = utils.get_task_from_instance( 'cluster1', 'my-service', 'main', slave_hostname='test', ) mock_api.service.tasks_instance.assert_called_with( service='my-service', instance='main', verbose=True, slave_hostname='test', ) mock_api.service.tasks_instance.side_effect = HTTPNotFound(response=mock.Mock(status_code=404)) with raises(utils.PaastaTaskNotFound): ret = utils.get_task_from_instance( 'cluster1', 'my-service', 'main', slave_hostname='test', )
def paasta_docker_stop(args): try: task = get_task_from_instance(cluster=args.cluster, service=args.service, instance=args.instance, slave_hostname=args.host, task_id=args.mesos_id) except PaastaTaskNotFound: sys.exit(1) container = get_container_name(task) slave = task.slave['hostname'] command = "sudo docker stop {0}".format(container) subprocess.call(["ssh", "-o", "LogLevel=QUIET", "-tA", slave, command])
def paasta_docker_exec(args): try: task = get_task_from_instance(cluster=args.cluster, service=args.service, instance=args.instance, slave_hostname=args.host, task_id=args.mesos_id) except PaastaTaskNotFound: sys.exit(1) container = get_container_name(task) slave = task.slave['hostname'] command = "sudo docker exec -ti {0} ''{1}''".format(container, args.exec_command) subprocess.call(["ssh", "-o", "LogLevel=QUIET", "-tA", slave, command])
def paasta_docker_exec(args): try: task = get_task_from_instance( cluster=args.cluster, service=args.service, instance=args.instance, slave_hostname=args.host, task_id=args.mesos_id, ) except PaastaTaskNotFound: sys.exit(1) container = get_container_name(task) slave = task.slave['hostname'] command = f"sudo docker exec -ti {container} ''{args.exec_command}''" subprocess.call(["ssh", "-o", "LogLevel=QUIET", "-tA", slave, command])
def test_get_task_from_instance(mock_client): mock_client.get_paasta_api_client.return_value = None with raises(utils.PaastaTaskNotFound): utils.get_task_from_instance('cluster1', 'my-service', 'main') mock_client.get_paasta_api_client.assert_called_with(cluster='cluster1') mock_api = mock.Mock() mock_client.get_paasta_api_client.return_value = mock_api mock_task_1 = mock.Mock() mock_task_2 = mock.Mock() mock_tasks = [mock_task_1, mock_task_2] mock_result = mock.Mock(return_value=mock_tasks) mock_task_result = mock.Mock(return_value=mock_task_2) mock_api.service.tasks_instance.return_value = mock.Mock(result=mock_result) mock_api.service.task_instance.return_value = mock.Mock(result=mock_task_result) ret = utils.get_task_from_instance('cluster1', 'my-service', 'main', task_id='123') assert ret == mock_task_2 mock_api.service.task_instance.assert_called_with(service='my-service', instance='main', verbose=True, task_id='123') ret = utils.get_task_from_instance('cluster1', 'my-service', 'main') assert ret == mock_task_1 mock_api.service.tasks_instance.assert_called_with(service='my-service', instance='main', verbose=True, slave_hostname=None) mock_result = mock.Mock(return_value=[]) mock_api.service.tasks_instance.return_value = mock.Mock(result=mock_result) with raises(utils.PaastaTaskNotFound): ret = utils.get_task_from_instance('cluster1', 'my-service', 'main', slave_hostname='test') mock_api.service.tasks_instance.side_effect = HTTPError(response=mock.Mock(status_code=500)) with raises(utils.PaastaTaskNotFound): ret = utils.get_task_from_instance('cluster1', 'my-service', 'main', slave_hostname='test') mock_api.service.tasks_instance.assert_called_with(service='my-service', instance='main', verbose=True, slave_hostname='test') mock_api.service.tasks_instance.side_effect = HTTPNotFound(response=mock.Mock(status_code=404)) with raises(utils.PaastaTaskNotFound): ret = utils.get_task_from_instance('cluster1', 'my-service', 'main', slave_hostname='test')