def test_services(confirm, force, action, services, mock_client,
                  cluster_response, print_table, print_single_table):
    mock_client._request.return_value = cluster_response

    args = ['lava', 'clusters',  'services', action, 'cluster_id'] + services
    if force:
        args.append('--force')

    with patch('sys.argv', args):
        main()

    confirm.assert_not_called() if force else confirm.assert_called()

    mock_client._request.assert_called_with(
        'PUT', 'clusters/cluster_id',
        json={
            'cluster': {
                'control_services': {
                    'action': action,
                    'services': [{'name': name} for name in services],
                }
            }
        }
    )

    check_cluster_detail(print_single_table, print_table)
예제 #2
0
def test_create(services, node_groups, print_table, print_single_table,
                mock_client, stack_response):
    mock_client._request.return_value = stack_response

    args = ['lava', 'stacks', 'create', 'name', 'distro', json.dumps(services)]
    if node_groups:
        args.extend(['--node-groups', json.dumps(node_groups)])

    with patch('sys.argv', args):
        main()

    jsondata = mock_client._request.call_args[1]['json']['stack']
    assert jsondata['services'] == services
    if 'node_groups' in jsondata:
        assert jsondata['node_groups'] == node_groups

    assert print_single_table.call_count == 1
    (data, header), kwargs = print_single_table.call_args
    assert data[:5] == [
        'stack_id', 'stack_name', 'distro',
        datetime(2015, 1, 1), 'description'
    ]
    assert data[6] == 'id'
    pieces = list(
        sorted(data[5].strip('[]').strip('}{').replace('\n', '').split(',')))
    assert pieces == ['modes=[mode1]', 'name=service_name']
    assert header == StackDetail.table_header
    assert kwargs['title'] == 'Stack'

    assert print_table.call_count == 2

    (data, header), kwargs = print_table.call_args_list[0]
    assert list(data) == [['id', 'hadoop1-7', 10, 1024, 1, 10]]
    assert header == StackNodeGroup.table_header
    assert kwargs['title'] == 'Node Groups'
def test_ssh_proxy_errors(test_connection, popen, failure, mock_client,
                          cluster_response, nodes_response):
    del nodes_response['nodes'][0]['components'][0]['uri']

    popen.return_value = MagicMock(
        poll=MagicMock(return_value=None),
        communicate=MagicMock(return_value=('stdout', 'stderr'))
    )
    if failure:
        test_connection.side_effect = [failure, 200]
    else:
        test_connection.return_value = 200

    mock_client._request.side_effect = [cluster_response, nodes_response]

    with patch('sys.argv', ['lava', 'clusters', 'ssh_proxy', 'cluster_id',
                            '--node-name', 'NODENAME', '--port',
                            '54321']):
        main()

    popen.assert_called_with(
        ['ssh', '-o', 'PasswordAuthentication=no', '-o', 'BatchMode=yes',
         '-N', '-D', '54321', '[email protected]'],
        stderr=subprocess.STDOUT,
        stdout=subprocess.PIPE)
def test_services(confirm, force, action, services, mock_client,
                  cluster_response, print_table, print_single_table):
    mock_client._request.return_value = cluster_response

    args = ['lava', 'clusters',  'services', action, 'cluster_id'] + services
    if force:
        args.append('--force')

    with patch('sys.argv', args):
        main()

    confirm.assert_not_called() if force else confirm.assert_called()

    mock_client._request.assert_called_with(
        'PUT', 'clusters/cluster_id',
        json={
            'cluster': {
                'control_services': {
                    'action': action,
                    'services': [{'name': name} for name in services],
                }
            }
        }
    )

    check_cluster_detail(print_single_table, print_table)
def test_ssh_tunnel_component(popen, mock_client, cluster_response, nodes_response):
    popen.return_value = MagicMock(
        poll=MagicMock(return_value=None), communicate=MagicMock(return_value=("stdout", "stderr"))
    )
    mock_client._request.side_effect = [cluster_response, nodes_response]

    with patch(
        "sys.argv", ["lava", "clusters", "ssh_tunnel", "cluster_id", "123", "456", "--component", "component_name"]
    ):
        main()

    popen.assert_called_with(
        [
            "ssh",
            "-o",
            "PasswordAuthentication=no",
            "-o",
            "BatchMode=yes",
            "-N",
            "-L",
            "123:NODENAME:456",
            "[email protected]",
        ],
        stderr=subprocess.STDOUT,
        stdout=subprocess.PIPE,
    )
def test_delete(mock_client):
    pytest.skip('Delete is not yet supported')

    main()
    args = mock_client._request.call_args[0]

    assert args == ('DELETE', 'stacks/stack_id')
def test_update(name, url, script_type, print_single_table, mock_client,
                script_response):
    mock_client._request.return_value = script_response
    args = ['lava', 'scripts', 'update', 'script_id']
    if name:
        args.extend(['--name', name])
    if url:
        args.extend(['--url', url])
    if script_type:
        args.extend(['--type', script_type])

    with patch('sys.argv', args):
        main()

    kwargs = mock_client._request.call_args[1]
    assert kwargs['json']['script'].get('name') == name
    assert kwargs['json']['script'].get('url') == url

    stype = script_type.upper() if script_type else None
    assert kwargs['json']['script'].get('type') == stype

    (data, header), kwargs = print_single_table.call_args
    assert data == [
        'id', 'name', 'POST_INIT', True,
        datetime(2015, 1, 1), 'url'
    ]
    assert header == Script.table_header
    assert kwargs['title'] is None
def test_ssh_proxy_errors(test_connection, popen, failure, mock_client,
                          cluster_response, nodes_response):
    del nodes_response['nodes'][0]['components'][0]['uri']

    popen.return_value = MagicMock(
        poll=MagicMock(return_value=None),
        communicate=MagicMock(return_value=('stdout', 'stderr'))
    )
    if failure:
        test_connection.side_effect = [failure, 200]
    else:
        test_connection.return_value = 200

    mock_client._request.side_effect = [cluster_response, nodes_response]

    with patch('sys.argv', ['lava', 'clusters', 'ssh_proxy', 'cluster_id',
                            '--node-name', 'NODENAME', '--port',
                            '54321']):
        main()

    popen.assert_called_with(
        ['ssh', '-o', 'PasswordAuthentication=no', '-o', 'BatchMode=yes',
         '-N', '-D', '54321', '[email protected]'],
        stderr=subprocess.STDOUT,
        stdout=subprocess.PIPE)
def test_list_noformat(sixprint, mock_client, nodes_response):
    mock_client._request.return_value = nodes_response
    main()

    sixprint.assert_has_calls([
        call('node_id,NODENAME,node_group,ACTIVE,1.2.3.4,5.6.7.8')
    ])
def test_update(name, url, script_type, print_single_table,
                mock_client, script_response):
    mock_client._request.return_value = script_response
    args = ['lava', 'scripts', 'update', 'script_id']
    if name:
        args.extend(['--name', name])
    if url:
        args.extend(['--url', url])
    if script_type:
        args.extend(['--type', script_type])

    with patch('sys.argv', args):
        main()

    kwargs = mock_client._request.call_args[1]
    assert kwargs['json']['script'].get('name') == name
    assert kwargs['json']['script'].get('url') == url

    stype = script_type.upper() if script_type else None
    assert kwargs['json']['script'].get('type') == stype

    (data, header), kwargs = print_single_table.call_args
    assert data == ['id', 'name', 'POST_INIT', True, datetime(2015, 1, 1),
                    'url']
    assert header == Script.table_header
    assert kwargs['title'] is None
def test_list(print_table, mock_client, workloads_response):
    mock_client._request.return_value = workloads_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [['id', 'name', 'caption', 'description']]
    assert header == Workload.table_header
    assert kwargs['title'] is None
def test_list(print_table, mock_client, clusters_response):
    mock_client._request.return_value = clusters_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [["cluster_id", "cluster_name", "ACTIVE", "stack_id", datetime(2014, 1, 1)]]
    assert header == Cluster.table_header
    assert kwargs["title"] is None
def test_list(print_table, mock_client, distros_response):
    mock_client._request.return_value = distros_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [['HDP2.2', 'HortonWorks Data Platform', '2.2']]
    assert header == ['ID', 'Name', 'Version']
    assert kwargs['title'] is None
예제 #14
0
def test_list(print_table, mock_client, distros_response):
    mock_client._request.return_value = distros_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [['HDP2.2', 'HortonWorks Data Platform', '2.2']]
    assert header == ['ID', 'Name', 'Version']
    assert kwargs['title'] is None
def test_create_regions(mock_client, cluster_response, region):
    mock_client._request.return_value = cluster_response
    args = ["lava", "clusters", "create", "name", "stack_id", "--cluster-region", region]
    with patch("sys.argv", args):
        main()

    kwargs = mock_client._request.call_args[1]
    assert kwargs["json"]["cluster"]["region"] == region
def test_create_ssh_keys(args, keys, mock_client, print_table, print_single_table, cluster_response):
    mock_client._request.return_value = cluster_response

    base_args = ["lava", "clusters", "create", "name", "stack_id"]
    with patch("sys.argv", base_args + args):
        main()

        kwargs = mock_client._request.call_args[1]
        assert kwargs["json"]["cluster"].get("ssh_keys") == keys
def test_list(print_table, mock_client, scripts_response):
    mock_client._request.return_value = scripts_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [['id', 'name', 'POST_INIT', True,
                           datetime(2015, 1, 1), 'url']]
    assert header == Script.table_header
    assert kwargs['title'] is None
def test_create_with_scripts(print_table, print_single_table, mock_client, cluster_response):
    mock_client._request.return_value = cluster_response

    with patch(
        "sys.argv", ["lava", "clusters", "create", "name", "stack_id", "--user-script", "id1", "--user-script", "id2"]
    ):
        main()
        kwargs = mock_client._request.call_args[1]
        assert kwargs["json"]["cluster"].get("scripts") == [{"id": "id1"}, {"id": "id2"}]
def test_create_ssh_key(print_single_table, mock_client, ssh_key_response):
    mock_client._request.return_value = ssh_key_response
    main()

    assert print_single_table.call_count == 1
    (data, header), kwargs = print_single_table.call_args
    assert data == ['SSH Key', 'mykey']
    assert header == ('Type', 'Name')
    assert kwargs['title'] is None
def test_create_regions(mock_client, cluster_response, region):
    mock_client._request.return_value = cluster_response
    args = ['lava', 'clusters', 'create', 'name', 'stack_id',
            '--cluster-region', region]
    with patch('sys.argv', args):
        main()

    kwargs = mock_client._request.call_args[1]
    assert kwargs['json']['cluster']['region'] == region
def test_list_ambari(print_table, mock_client, ambari_creds_response):
    mock_client._request.return_value = ambari_creds_response
    main()

    assert print_table.call_count == 1
    (data, header), kwargs = print_table.call_args
    assert list(data) == [['Ambari', 'username']]
    assert header == ['Type', 'Username']
    assert kwargs['title'] is None
def test_list(print_table, mock_client, clusters_response):
    mock_client._request.return_value = clusters_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [['cluster_id', 'cluster_name', 'ACTIVE',
                           'stack_id', datetime(2014, 1, 1)]]
    assert header == Cluster.table_header
    assert kwargs['title'] is None
def test_list_ssh_keys(print_table, mock_client, ssh_keys_response):
    mock_client._request.return_value = ssh_keys_response
    main()

    assert print_table.call_count == 1
    (data, header), kwargs = print_table.call_args
    assert list(data) == [['SSH Key', 'mykey']]
    assert header == ('Type', 'Name')
    assert kwargs['title'] is None
def test_list_s3(print_table, mock_client, s3_creds_response):
    mock_client._request.return_value = s3_creds_response
    main()

    assert print_table.call_count == 1
    (data, header), kwargs = print_table.call_args
    assert list(data) == [['Amazon S3', 'access_key_id']]
    assert header == ('Type', 'Access Key ID')
    assert kwargs['title'] is None
def test_list(print_table, mock_client, flavors_response):
    mock_client._request.return_value = flavors_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [['hadoop1-15', 'Medium Hadoop Instance', 15360, 4,
                           2500]]
    assert header == Flavor.table_header
    assert kwargs['title'] is None
예제 #26
0
def test_delete(mock_client, node_response):
    mock_client._request.return_value = node_response

    main()

    assert mock_client._request.call_count == 1

    call1 = mock_client._request.call_args
    assert call1 == call('DELETE', 'clusters/cluster_id/nodes/node_id')
def test_create_with_scripts(print_table, print_single_table, mock_client,
                             cluster_response):
    mock_client._request.return_value = cluster_response

    with patch('sys.argv', ['lava', 'clusters', 'create', 'name', 'stack_id',
                            '--user-script', 'id1', '--user-script', 'id2']):
        main()
        kwargs = mock_client._request.call_args[1]
        assert kwargs['json']['cluster'].get('scripts') == [{'id': 'id1'},
                                                            {'id': 'id2'}]
def test_resize(args, node_groups, print_table, print_single_table, mock_client, cluster_response):
    mock_client._request.return_value = cluster_response

    base_args = ["lava", "clusters", "resize", "cluster_id"]

    with patch("sys.argv", base_args + args):
        main()

        kwargs = mock_client._request.call_args[1]
        assert kwargs["json"]["cluster"].get("node_groups") == node_groups
def test_create_ssh_keys(args, keys, mock_client, print_table,
                         print_single_table, cluster_response):
    mock_client._request.return_value = cluster_response

    base_args = ['lava', 'clusters', 'create', 'name', 'stack_id']
    with patch('sys.argv', base_args + args):
        main()

        kwargs = mock_client._request.call_args[1]
        assert kwargs['json']['cluster'].get('ssh_keys') == keys
def test_delete(mock_client, cluster_response, print_single_table):
    mock_client._request.return_value = cluster_response

    main()
    assert mock_client._request.call_count == 2

    call1, call2 = mock_client._request.call_args_list

    assert call1[0] == ('GET', 'clusters/cluster_id')
    assert call2[0] == ('DELETE', 'clusters/cluster_id')
def test_create_no_ssh_key(mock_client, cluster_response, ssh_key_response):
    mock_client._request.side_effect = [
        RequestError('Cannot find requested ssh_keys: {0}'.format(
            [DEFAULT_SSH_KEY])),
        ssh_key_response,
        cluster_response,
    ]

    main()
    assert mock_client._request.call_count == 3
def test_list(print_table, mock_client, workloads_response):
    pytest.skip('Workloads is disabled for now')

    mock_client._request.return_value = workloads_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [['id', 'name', 'caption', 'description']]
    assert header == Workload.table_header
    assert kwargs['title'] is None
def test_list(print_table, mock_client, flavors_response):
    mock_client._request.return_value = flavors_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [[
        'hadoop1-15', 'Medium Hadoop Instance', 15360, 4, 2500
    ]]
    assert header == Flavor.table_header
    assert kwargs['title'] is None
def test_create_cloud_files(print_single_table, mock_client,
                            cloud_files_cred_response):
    mock_client._request.return_value = cloud_files_cred_response
    main()

    assert print_single_table.call_count == 1
    (data, header), kwargs = print_single_table.call_args
    assert data == ['Cloud Files', 'username']
    assert header == ('Type', 'Username')
    assert kwargs['title'] is None
def test_create_with_scripts(print_table, print_single_table, mock_client,
                             cluster_response):
    mock_client._request.return_value = cluster_response

    with patch('sys.argv', ['lava', 'clusters', 'create', 'name', 'stack_id',
                            '--user-script', 'id1', '--user-script', 'id2']):
        main()
        kwargs = mock_client._request.call_args[1]
        assert kwargs['json']['cluster'].get('scripts') == [{'id': 'id1'},
                                                            {'id': 'id2'}]
def test_nodes(print_table, mock_client, nodes_response):
    mock_client._request.return_value = nodes_response
    main()

    (data, header), kwargs = print_table.call_args
    alldata = [entry for entry in list(data)[0]]
    assert alldata[:6] == ['node_id', 'NODENAME', '[]', 'ACTIVE', '1.2.3.4',
                           '5.6.7.8']
    assert header == Node.table_header
    assert kwargs['title'] is None
def test_create_ssh_keys(args, keys, mock_client, print_table,
                         print_single_table, cluster_response):
    mock_client._request.return_value = cluster_response

    base_args = ['lava', 'clusters', 'create', 'name', 'stack_id']
    with patch('sys.argv', base_args + args):
        main()

        kwargs = mock_client._request.call_args[1]
        assert kwargs['json']['cluster'].get('ssh_keys') == keys
def test_delete(mock_client, cluster_response, print_single_table):
    mock_client._request.return_value = cluster_response

    main()
    assert mock_client._request.call_count == 2

    call1, call2 = mock_client._request.call_args_list

    assert call1[0] == ('GET', 'clusters/cluster_id')
    assert call2[0] == ('DELETE', 'clusters/cluster_id')
def test_list(print_table_, mock_client, credentials_response):
    mock_client._request.return_value = credentials_response
    main()

    assert print_table_.call_count == 1
    (data, header), kwargs = print_table_.call_args
    assert list(data) == [('SSH Key', 'mykey'),
                          ('Cloud Files', 'username'),
                          ('Amazon S3', 'access_key_id')]
    assert header == ('Type', 'Name')
    assert 'title' not in kwargs
def test_list(print_table, mock_client, scripts_response):
    mock_client._request.return_value = scripts_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [[
        'id', 'name', 'POST_INIT', True,
        datetime(2015, 1, 1), 'url'
    ]]
    assert header == Script.table_header
    assert kwargs['title'] is None
def test_resize(args, node_groups, print_table, print_single_table,
                mock_client, cluster_response):
    mock_client._request.return_value = cluster_response

    base_args = ['lava', 'clusters', 'resize', 'cluster_id']

    with patch('sys.argv', base_args + args):
        main()

        kwargs = mock_client._request.call_args[1]
        assert kwargs['json']['cluster'].get('node_groups') == node_groups
def test_resize(args, node_groups, print_table, print_single_table,
                mock_client, cluster_response):
    mock_client._request.return_value = cluster_response

    base_args = ['lava', 'clusters', 'resize', 'cluster_id']

    with patch('sys.argv', base_args + args):
        main()

        kwargs = mock_client._request.call_args[1]
        assert kwargs['json']['cluster'].get('node_groups') == node_groups
def test_get(print_table, mock_client, limits_response):
    mock_client._request.return_value = limits_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [
        ('Nodes', 10, 0),
        ('RAM', 10, 0),
        ('Disk', 10, 0),
        ('VCPUs', 10, 0),
    ]
    assert header == ('Property', 'Limit', 'Remaining')
    assert kwargs['title'] is 'Quotas'
def test_get(print_table, mock_client, limits_response):
    mock_client._request.return_value = limits_response
    main()

    (data, header), kwargs = print_table.call_args
    assert list(data) == [
        ('Nodes', 10, 0),
        ('RAM', 10, 0),
        ('Disk', 10, 0),
        ('VCPUs', 10, 0),
    ]
    assert header == ('Property', 'Limit', 'Remaining')
    assert kwargs['title'] is 'Quotas'
예제 #45
0
def test_list(print_table, mock_client, stacks_response):
    mock_client._request.return_value = stacks_response
    main()

    assert print_table.call_count == 2
    (data, header), kwargs = print_table.call_args_list[0]
    alldata = list(data)
    assert len(alldata) == 1
    assert list(item[:5] for item in alldata) == [[
        1, 'stack_id', 'stack_name', 'distro', 'description'
    ]]
    assert header == ['', 'ID', 'Name', 'Distro', 'Description']
    assert kwargs['title'] is 'Stacks'
def test_update_credentials(args, expected, print_table, print_single_table,
                            mock_client, cluster_response):
    mock_client._request.return_value = cluster_response

    base_args = ['lava', 'clusters', 'update_credentials', 'cluster_id']

    with patch('sys.argv', base_args + args):
        main()

        kwargs = mock_client._request.call_args[1]
        creds = kwargs['json']['cluster']['credentials']
        assert len(creds) == len(expected)
        for cred in creds:
            assert cred in expected
def test_create_no_ssh_key(confirm, mock_client, cluster_response,
                           ssh_key_response):
    mock_client._request.side_effect = [
        RequestError('Cannot find requested ssh_keys: {0}'.format(
            [DEFAULT_SSH_KEY])),
        ssh_key_response,
        cluster_response,
    ]
    confirm.return_value = True

    with patch.object(mock_client.clusters._args, 'headless', False):
        main()

    assert confirm.called
    assert mock_client._request.call_count == 3
def test_delete_ssh_credentials(print_table, print_single_table,
                                mock_client, cluster_response):
    mock_client._request.return_value = cluster_response

    args = ['lava', 'clusters', 'delete_ssh_credentials', 'cluster_id',
            'delete_this_key', 'delete_that_key']
    expected = {'remove_credentials':
                [{'name': 'delete_this_key',
                  'type': 'ssh_keys'},
                 {'name': 'delete_that_key',
                  'type': 'ssh_keys'}]}
    with patch('sys.argv', args):
        main()

        kwargs = mock_client._request.call_args[1]
        assert kwargs['json']['cluster'] == expected
def test_ssh_tunnel_component(popen, mock_client, cluster_response,
                              nodes_response):
    popen.return_value = MagicMock(
        poll=MagicMock(return_value=None),
        communicate=MagicMock(return_value=('stdout', 'stderr'))
    )
    mock_client._request.side_effect = [cluster_response, nodes_response]

    with patch('sys.argv', ['lava', 'clusters', 'ssh_tunnel', 'cluster_id',
                            '123', '456', '--component', 'component_name']):
        main()

    popen.assert_called_with(
        ['ssh', '-o', 'PasswordAuthentication=no', '-o', 'BatchMode=yes',
         '-N', '-L', '123:NODENAME:456', '[email protected]'],
        stderr=subprocess.STDOUT,
        stdout=subprocess.PIPE)
def test_nodes(print_table, mock_client, nodes_response):
    mock_client._request.return_value = nodes_response
    main()

    assert print_table.call_count == 2
    (data, header), kwargs = print_table.call_args_list[0]
    alldata = [entry for entry in list(data)[0]]
    assert alldata[:6] == ['node_id', 'NODENAME', 'node_group', 'ACTIVE',
                           '1.2.3.4', '5.6.7.8']
    assert header == Node.table_header
    assert kwargs['title'] == 'Nodes'

    (data, header), kwargs = print_table.call_args_list[1]
    alldata = [entry for entry in list(data)[0]]
    assert alldata[:6] == ['NODENAME', 'component_name', 'Component name',
                           'http://host']
    assert header == ('Node', 'ID', 'Name', 'URI')
    assert kwargs['title'] == 'Components'
예제 #51
0
def test_get(print_table, print_single_table, mock_client, distro_response):
    mock_client._request.return_value = distro_response
    main()

    assert print_single_table.call_count == 1
    (data, header), kwargs = print_single_table.call_args
    assert data == ['HDP2.2', 'HortonWorks Data Platform', '2.2']
    assert header == DistroDetail.table_header
    assert kwargs['title'] is 'Distro'

    assert print_table.call_count == 1

    (data, header), kwargs = print_table.call_args_list[0]
    assert list(data) == [[
        'name', 'version', '[{name=component}]', 'description'
    ]]
    assert header == DistroService.table_header
    assert kwargs['title'] == 'Services'
def test_recommendations(persistence, print_table, mock_client,
                         recommendations_response):
    pytest.skip('Workloads is disabled for now')

    mock_client._request.return_value = recommendations_response

    with patch(
            'sys.argv',
        ['lava', 'workloads', 'recommendations', 'id', '128', persistence]):
        main()

    params = mock_client._request.call_args[1]['params']
    assert params['storagesize'] == 128
    assert params['persistent'] == persistence

    (data, header), kwargs = print_table.call_args
    assert len(list(data)) == 1
    assert header == ('Name', 'Requires', 'Description', 'Flavor', 'Minutes',
                      'Nodes', 'Recommended')
    assert 'title' not in kwargs
예제 #53
0
def test_get(print_table, print_single_table, mock_client, stack_response):
    mock_client._request.return_value = stack_response
    main()

    assert print_single_table.call_count == 1
    (data, header), kwargs = print_single_table.call_args
    assert data[:5] == [
        'stack_id', 'stack_name', 'distro',
        datetime(2015, 1, 1), 'description'
    ]
    assert data[6] == 'id'
    pieces = list(
        sorted(data[5].strip('[]').strip('}{').replace('\n', '').split(',')))
    assert pieces == ['modes=[mode1]', 'name=service_name']
    assert header == StackDetail.table_header
    assert kwargs['title'] == 'Stack'

    assert print_table.call_count == 2

    (data, header), kwargs = print_table.call_args_list[0]
    assert list(data) == [['id', 'hadoop1-7', 10, 1024, 1, 10]]
    assert header == StackNodeGroup.table_header
    assert kwargs['title'] == 'Node Groups'
def test_wait(stdout, print_table, print_single_table, mock_client,
              cluster_response):
    building = deepcopy(cluster_response)
    building['cluster']['status'] = 'BUILDING'
    configuring = deepcopy(cluster_response)
    configuring['cluster']['status'] = 'CONFIGURING'
    active = deepcopy(cluster_response)
    active['cluster']['status'] = 'ACTIVE'

    mock_client._request.side_effect = [building, configuring, active]

    with patch.object(mock_client.clusters, '_command_line', True):
        main()
        stdout.write.assert_has_calls([
            call('Waiting for cluster cluster_id'),
            call('\n'),
            call('Status: BUILDING (Elapsed time: 0.0 minutes)'),
            call('{0}Status: CONFIGURING (Elapsed time: 1.0 minutes)'.format(
                '\b' * 44)),
            call('{0}Status: ACTIVE (Elapsed time: 2.0 minutes)'.format(
                '\b' * 47)),
        ])

    check_cluster_detail(print_single_table, print_table)
def test_list_noformat(sixprint, mock_client, nodes_response):
    mock_client._request.return_value = nodes_response
    main()

    sixprint.assert_has_calls(
        [call('node_id,NODENAME,node_group,ACTIVE,1.2.3.4,5.6.7.8')])
def test_delete(mock_client):
    main()
    args = mock_client._request.call_args[0]

    assert args == ('DELETE', 'scripts/script_id')
예제 #57
0
def test_delete(print_table, print_single_table, mock_client, stack_response):
    mock_client._request.return_value = stack_response
    main()
    args = mock_client._request.call_args[0]

    assert args == ('DELETE', 'stacks/stack_id')
def test_get(print_table, print_single_table, mock_client, cluster_response):
    mock_client._request.return_value = cluster_response
    main()

    check_cluster_detail(print_single_table, print_table)