Remove the Inventory object from the Client
As a matter of design and practicality, we have decided to remove the Inventory object which was awkward, underspecified, and frankly the wrong layer of abstraction from the Client. Hosts, Cells, etc. will now be accessible directly from the client itself. Change-Id: I4a65761ad39d0b7cb881a97c5f3367cafa9db557
This commit is contained in:
parent
9260ffdefa
commit
5e53de8ac2
@ -19,17 +19,13 @@ from cratonclient import exceptions as exc
|
|||||||
from cratonclient.v1 import cells
|
from cratonclient.v1 import cells
|
||||||
|
|
||||||
|
|
||||||
@cliutils.arg('region',
|
|
||||||
metavar='<region>',
|
|
||||||
type=int,
|
|
||||||
help='ID of the region that the cell belongs to.')
|
|
||||||
@cliutils.arg('id',
|
@cliutils.arg('id',
|
||||||
metavar='<cell>',
|
metavar='<cell>',
|
||||||
type=int,
|
type=int,
|
||||||
help='ID of the cell.')
|
help='ID of the cell.')
|
||||||
def do_cell_show(cc, args):
|
def do_cell_show(cc, args):
|
||||||
"""Show detailed information about a cell."""
|
"""Show detailed information about a cell."""
|
||||||
cell = cc.inventory(args.region).cells.get(args.id)
|
cell = cc.cells.get(args.id)
|
||||||
data = {f: getattr(cell, f, '') for f in cells.CELL_FIELDS}
|
data = {f: getattr(cell, f, '') for f in cells.CELL_FIELDS}
|
||||||
cliutils.print_dict(data, wrap=72)
|
cliutils.print_dict(data, wrap=72)
|
||||||
|
|
||||||
@ -98,8 +94,9 @@ def do_cell_list(cc, args):
|
|||||||
)
|
)
|
||||||
params['sort_key'] = sort_key
|
params['sort_key'] = sort_key
|
||||||
params['sort_dir'] = args.sort_dir
|
params['sort_dir'] = args.sort_dir
|
||||||
|
params['region_id'] = args.region
|
||||||
|
|
||||||
listed_cells = cc.inventory(args.region).cells.list(**params)
|
listed_cells = cc.cells.list(**params)
|
||||||
cliutils.print_list(listed_cells, list(fields))
|
cliutils.print_list(listed_cells, list(fields))
|
||||||
|
|
||||||
|
|
||||||
@ -119,15 +116,11 @@ def do_cell_create(cc, args):
|
|||||||
"""Register a new cell with the Craton service."""
|
"""Register a new cell with the Craton service."""
|
||||||
fields = {k: v for (k, v) in vars(args).items()
|
fields = {k: v for (k, v) in vars(args).items()
|
||||||
if k in cells.CELL_FIELDS and not (v is None)}
|
if k in cells.CELL_FIELDS and not (v is None)}
|
||||||
cell = cc.inventory(args.region_id).cells.create(**fields)
|
cell = cc.cells.create(**fields)
|
||||||
data = {f: getattr(cell, f, '') for f in cells.CELL_FIELDS}
|
data = {f: getattr(cell, f, '') for f in cells.CELL_FIELDS}
|
||||||
cliutils.print_dict(data, wrap=72)
|
cliutils.print_dict(data, wrap=72)
|
||||||
|
|
||||||
|
|
||||||
@cliutils.arg('region',
|
|
||||||
metavar='<region>',
|
|
||||||
type=int,
|
|
||||||
help='Current ID of the region that the cell belongs to.')
|
|
||||||
@cliutils.arg('id',
|
@cliutils.arg('id',
|
||||||
metavar='<cell>',
|
metavar='<cell>',
|
||||||
type=int,
|
type=int,
|
||||||
@ -152,15 +145,11 @@ def do_cell_update(cc, args):
|
|||||||
'Nothing to update... Please specify one of --name, --region, '
|
'Nothing to update... Please specify one of --name, --region, '
|
||||||
'or --note'
|
'or --note'
|
||||||
)
|
)
|
||||||
cell = cc.inventory(args.region).cells.update(cell_id, **fields)
|
cell = cc.cells.update(cell_id, **fields)
|
||||||
data = {f: getattr(cell, f, '') for f in cells.CELL_FIELDS}
|
data = {f: getattr(cell, f, '') for f in cells.CELL_FIELDS}
|
||||||
cliutils.print_dict(data, wrap=72)
|
cliutils.print_dict(data, wrap=72)
|
||||||
|
|
||||||
|
|
||||||
@cliutils.arg('region',
|
|
||||||
metavar='<region>',
|
|
||||||
type=int,
|
|
||||||
help='ID of the region that the cell belongs to.')
|
|
||||||
@cliutils.arg('id',
|
@cliutils.arg('id',
|
||||||
metavar='<cell>',
|
metavar='<cell>',
|
||||||
type=int,
|
type=int,
|
||||||
@ -168,7 +157,7 @@ def do_cell_update(cc, args):
|
|||||||
def do_cell_delete(cc, args):
|
def do_cell_delete(cc, args):
|
||||||
"""Delete a cell that is registered with the Craton service."""
|
"""Delete a cell that is registered with the Craton service."""
|
||||||
try:
|
try:
|
||||||
response = cc.inventory(args.region).cells.delete(args.id)
|
response = cc.cells.delete(args.id)
|
||||||
except exc.ClientException as client_exc:
|
except exc.ClientException as client_exc:
|
||||||
raise exc.CommandError(
|
raise exc.CommandError(
|
||||||
'Failed to delete cell {} due to "{}:{}"'.format(
|
'Failed to delete cell {} due to "{}:{}"'.format(
|
||||||
|
@ -19,17 +19,13 @@ from cratonclient import exceptions as exc
|
|||||||
from cratonclient.v1 import hosts
|
from cratonclient.v1 import hosts
|
||||||
|
|
||||||
|
|
||||||
@cliutils.arg('region',
|
|
||||||
metavar='<region>',
|
|
||||||
type=int,
|
|
||||||
help='ID of the region that the host belongs to.')
|
|
||||||
@cliutils.arg('id',
|
@cliutils.arg('id',
|
||||||
metavar='<host>',
|
metavar='<host>',
|
||||||
type=int,
|
type=int,
|
||||||
help='ID of the host.')
|
help='ID of the host.')
|
||||||
def do_host_show(cc, args):
|
def do_host_show(cc, args):
|
||||||
"""Show detailed information about a host."""
|
"""Show detailed information about a host."""
|
||||||
host = cc.inventory(args.region).hosts.get(args.id)
|
host = cc.hosts.get(args.id)
|
||||||
data = {f: getattr(host, f, '') for f in hosts.HOST_FIELDS}
|
data = {f: getattr(host, f, '') for f in hosts.HOST_FIELDS}
|
||||||
cliutils.print_dict(data, wrap=72)
|
cliutils.print_dict(data, wrap=72)
|
||||||
|
|
||||||
@ -104,8 +100,9 @@ def do_host_list(cc, args):
|
|||||||
)
|
)
|
||||||
params['sort_key'] = sort_key
|
params['sort_key'] = sort_key
|
||||||
params['sort_dir'] = args.sort_dir
|
params['sort_dir'] = args.sort_dir
|
||||||
|
params['region_id'] = args.region
|
||||||
|
|
||||||
host_list = cc.inventory(args.region).hosts.list(**params)
|
host_list = cc.hosts.list(**params)
|
||||||
cliutils.print_list(host_list, list(fields))
|
cliutils.print_list(host_list, list(fields))
|
||||||
|
|
||||||
|
|
||||||
@ -150,15 +147,11 @@ def do_host_create(cc, args):
|
|||||||
"""Register a new host with the Craton service."""
|
"""Register a new host with the Craton service."""
|
||||||
fields = {k: v for (k, v) in vars(args).items()
|
fields = {k: v for (k, v) in vars(args).items()
|
||||||
if k in hosts.HOST_FIELDS and (v or v is False)}
|
if k in hosts.HOST_FIELDS and (v or v is False)}
|
||||||
host = cc.inventory(args.region_id).hosts.create(**fields)
|
host = cc.hosts.create(**fields)
|
||||||
data = {f: getattr(host, f, '') for f in hosts.HOST_FIELDS}
|
data = {f: getattr(host, f, '') for f in hosts.HOST_FIELDS}
|
||||||
cliutils.print_dict(data, wrap=72)
|
cliutils.print_dict(data, wrap=72)
|
||||||
|
|
||||||
|
|
||||||
@cliutils.arg('region',
|
|
||||||
metavar='<region>',
|
|
||||||
type=int,
|
|
||||||
help='Current ID of the region that the host belongs to.')
|
|
||||||
@cliutils.arg('id',
|
@cliutils.arg('id',
|
||||||
metavar='<host>',
|
metavar='<host>',
|
||||||
type=int,
|
type=int,
|
||||||
@ -197,16 +190,12 @@ def do_host_update(cc, args):
|
|||||||
fields = {k: v for (k, v) in vars(args).items()
|
fields = {k: v for (k, v) in vars(args).items()
|
||||||
if k in hosts.HOST_FIELDS and (v or v is False)}
|
if k in hosts.HOST_FIELDS and (v or v is False)}
|
||||||
item_id = fields.pop('id')
|
item_id = fields.pop('id')
|
||||||
host = cc.inventory(args.region).hosts.update(item_id, **fields)
|
host = cc.hosts.update(item_id, **fields)
|
||||||
print("Host {0} has been successfully updated.".format(host.id))
|
print("Host {0} has been successfully updated.".format(host.id))
|
||||||
data = {f: getattr(host, f, '') for f in hosts.HOST_FIELDS}
|
data = {f: getattr(host, f, '') for f in hosts.HOST_FIELDS}
|
||||||
cliutils.print_dict(data, wrap=72)
|
cliutils.print_dict(data, wrap=72)
|
||||||
|
|
||||||
|
|
||||||
@cliutils.arg('region',
|
|
||||||
metavar='<region>',
|
|
||||||
type=int,
|
|
||||||
help='ID of the region that the host belongs to.')
|
|
||||||
@cliutils.arg('id',
|
@cliutils.arg('id',
|
||||||
metavar='<host>',
|
metavar='<host>',
|
||||||
type=int,
|
type=int,
|
||||||
@ -214,7 +203,7 @@ def do_host_update(cc, args):
|
|||||||
def do_host_delete(cc, args):
|
def do_host_delete(cc, args):
|
||||||
"""Delete a host that is registered with the Craton service."""
|
"""Delete a host that is registered with the Craton service."""
|
||||||
try:
|
try:
|
||||||
response = cc.inventory(args.region).hosts.delete(args.id)
|
response = cc.hosts.delete(args.id)
|
||||||
except exc.ClientException as client_exc:
|
except exc.ClientException as client_exc:
|
||||||
raise exc.CommandError(
|
raise exc.CommandError(
|
||||||
'Failed to delete cell {} due to "{}:{}"'.format(
|
'Failed to delete cell {} due to "{}:{}"'.format(
|
||||||
|
@ -58,7 +58,11 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
def test_cell_list_limit_0_success(self, mock_list):
|
def test_cell_list_limit_0_success(self, mock_list):
|
||||||
"""Verify that --limit 0 prints out all project cells."""
|
"""Verify that --limit 0 prints out all project cells."""
|
||||||
self.shell('cell-list -r 1 --limit 0')
|
self.shell('cell-list -r 1 --limit 0')
|
||||||
mock_list.assert_called_once_with(limit=0, sort_dir='asc')
|
mock_list.assert_called_once_with(
|
||||||
|
limit=0,
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch('cratonclient.v1.cells.CellManager.list')
|
@mock.patch('cratonclient.v1.cells.CellManager.list')
|
||||||
def test_cell_list_limit_positive_num_success(self, mock_list):
|
def test_cell_list_limit_positive_num_success(self, mock_list):
|
||||||
@ -67,7 +71,11 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
The command will print out X number of project cells.
|
The command will print out X number of project cells.
|
||||||
"""
|
"""
|
||||||
self.shell('cell-list -r 1 --limit 1')
|
self.shell('cell-list -r 1 --limit 1')
|
||||||
mock_list.assert_called_once_with(limit=1, sort_dir='asc')
|
mock_list.assert_called_once_with(
|
||||||
|
limit=1,
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
def test_cell_list_limit_negative_num_failure(self):
|
def test_cell_list_limit_negative_num_failure(self):
|
||||||
"""Verify --limit X, where X is a negative integer, fails.
|
"""Verify --limit X, where X is a negative integer, fails.
|
||||||
@ -82,14 +90,21 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
def test_cell_list_detail_success(self, mock_list):
|
def test_cell_list_detail_success(self, mock_list):
|
||||||
"""Verify --detail argument successfully pass detail to Client."""
|
"""Verify --detail argument successfully pass detail to Client."""
|
||||||
self.shell('cell-list -r 1 --detail')
|
self.shell('cell-list -r 1 --detail')
|
||||||
mock_list.assert_called_once_with(detail=True, sort_dir='asc')
|
mock_list.assert_called_once_with(
|
||||||
|
detail=True,
|
||||||
|
region_id=1,
|
||||||
|
sort_dir='asc',
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch('cratonclient.v1.cells.CellManager.list')
|
@mock.patch('cratonclient.v1.cells.CellManager.list')
|
||||||
@mock.patch('cratonclient.common.cliutils.print_list')
|
@mock.patch('cratonclient.common.cliutils.print_list')
|
||||||
def test_cell_list_fields_success(self, mock_printlist, mock_list):
|
def test_cell_list_fields_success(self, mock_printlist, mock_list):
|
||||||
"""Verify --fields argument successfully passed to Client."""
|
"""Verify --fields argument successfully passed to Client."""
|
||||||
self.shell('cell-list -r 1 --fields id name')
|
self.shell('cell-list -r 1 --fields id name')
|
||||||
mock_list.assert_called_once_with(sort_dir='asc')
|
mock_list.assert_called_once_with(
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
mock_printlist.assert_called_once_with(mock.ANY,
|
mock_printlist.assert_called_once_with(mock.ANY,
|
||||||
list({'id': 'ID',
|
list({'id': 'ID',
|
||||||
'name': 'Name'}))
|
'name': 'Name'}))
|
||||||
@ -98,8 +113,11 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
def test_cell_list_sort_key_field_key_success(self, mock_list):
|
def test_cell_list_sort_key_field_key_success(self, mock_list):
|
||||||
"""Verify --sort-key arguments successfully passed to Client."""
|
"""Verify --sort-key arguments successfully passed to Client."""
|
||||||
self.shell('cell-list -r 1 --sort-key name')
|
self.shell('cell-list -r 1 --sort-key name')
|
||||||
mock_list.assert_called_once_with(sort_key='name',
|
mock_list.assert_called_once_with(
|
||||||
sort_dir='asc')
|
sort_key='name',
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
def test_cell_list_sort_key_invalid(self):
|
def test_cell_list_sort_key_invalid(self):
|
||||||
"""Verify --sort-key with invalid args, fails with Command Error."""
|
"""Verify --sort-key with invalid args, fails with Command Error."""
|
||||||
@ -111,15 +129,21 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
def test_cell_list_sort_dir_asc_success(self, mock_list):
|
def test_cell_list_sort_dir_asc_success(self, mock_list):
|
||||||
"""Verify --sort-dir asc successfully passed to Client."""
|
"""Verify --sort-dir asc successfully passed to Client."""
|
||||||
self.shell('cell-list -r 1 --sort-key name --sort-dir asc')
|
self.shell('cell-list -r 1 --sort-key name --sort-dir asc')
|
||||||
mock_list.assert_called_once_with(sort_key='name',
|
mock_list.assert_called_once_with(
|
||||||
sort_dir='asc')
|
sort_key='name',
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch('cratonclient.v1.cells.CellManager.list')
|
@mock.patch('cratonclient.v1.cells.CellManager.list')
|
||||||
def test_cell_list_sort_dir_desc_success(self, mock_list):
|
def test_cell_list_sort_dir_desc_success(self, mock_list):
|
||||||
"""Verify --sort-dir desc successfully passed to Client."""
|
"""Verify --sort-dir desc successfully passed to Client."""
|
||||||
self.shell('cell-list -r 1 --sort-key name --sort-dir desc')
|
self.shell('cell-list -r 1 --sort-key name --sort-dir desc')
|
||||||
mock_list.assert_called_once_with(sort_key='name',
|
mock_list.assert_called_once_with(
|
||||||
sort_dir='desc')
|
sort_key='name',
|
||||||
|
sort_dir='desc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
def test_cell_list_sort_dir_invalid_value(self):
|
def test_cell_list_sort_dir_invalid_value(self):
|
||||||
"""Verify --sort-dir with invalid args, fails with Command Error."""
|
"""Verify --sort-dir with invalid args, fails with Command Error."""
|
||||||
@ -144,12 +168,10 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
def test_do_cell_create_calls_cell_manager_with_fields(self, mock_create):
|
def test_do_cell_create_calls_cell_manager_with_fields(self, mock_create):
|
||||||
"""Verify that do cell create calls CellManager create."""
|
"""Verify that do cell create calls CellManager create."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.cells = cells.CellManager(
|
||||||
inventory.cells = cells.CellManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
cells_shell.do_cell_create(client, self.cell_valid_fields)
|
cells_shell.do_cell_create(client, self.cell_valid_fields)
|
||||||
mock_create.assert_called_once_with(**vars(self.cell_valid_fields))
|
mock_create.assert_called_once_with(**vars(self.cell_valid_fields))
|
||||||
|
|
||||||
@ -157,12 +179,10 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
def test_do_cell_create_ignores_unknown_fields(self, mock_create):
|
def test_do_cell_create_ignores_unknown_fields(self, mock_create):
|
||||||
"""Verify that do cell create ignores unknown field."""
|
"""Verify that do cell create ignores unknown field."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.cells = cells.CellManager(
|
||||||
inventory.cells = cells.CellManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
cells_shell.do_cell_create(client, self.cell_invalid_field)
|
cells_shell.do_cell_create(client, self.cell_invalid_field)
|
||||||
mock_create.assert_called_once_with(**vars(self.cell_valid_fields))
|
mock_create.assert_called_once_with(**vars(self.cell_valid_fields))
|
||||||
|
|
||||||
@ -182,12 +202,10 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
def test_do_cell_update_calls_cell_manager_with_fields(self, mock_update):
|
def test_do_cell_update_calls_cell_manager_with_fields(self, mock_update):
|
||||||
"""Verify that do cell update calls CellManager update."""
|
"""Verify that do cell update calls CellManager update."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.cells = cells.CellManager(
|
||||||
inventory.cells = cells.CellManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
valid_input = Namespace(region=1,
|
valid_input = Namespace(region=1,
|
||||||
id=1,
|
id=1,
|
||||||
name='mock_cell')
|
name='mock_cell')
|
||||||
@ -198,12 +216,10 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
def test_do_cell_update_ignores_unknown_fields(self, mock_update):
|
def test_do_cell_update_ignores_unknown_fields(self, mock_update):
|
||||||
"""Verify that do cell update ignores unknown field."""
|
"""Verify that do cell update ignores unknown field."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.cells = cells.CellManager(
|
||||||
inventory.cells = cells.CellManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
invalid_input = Namespace(region=1,
|
invalid_input = Namespace(region=1,
|
||||||
id=1,
|
id=1,
|
||||||
name='mock_cell',
|
name='mock_cell',
|
||||||
@ -227,13 +243,11 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
def test_do_cell_show_calls_cell_manager_with_fields(self, mock_get):
|
def test_do_cell_show_calls_cell_manager_with_fields(self, mock_get):
|
||||||
"""Verify that do cell show calls CellManager get."""
|
"""Verify that do cell show calls CellManager get."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.cells = cells.CellManager(
|
||||||
inventory.cells = cells.CellManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
test_args = Namespace(id=1)
|
||||||
client.inventory.return_value = inventory
|
|
||||||
test_args = Namespace(id=1, region=1)
|
|
||||||
cells_shell.do_cell_show(client, test_args)
|
cells_shell.do_cell_show(client, test_args)
|
||||||
mock_get.assert_called_once_with(vars(test_args)['id'])
|
mock_get.assert_called_once_with(vars(test_args)['id'])
|
||||||
|
|
||||||
@ -252,12 +266,10 @@ class TestCellsShell(base.ShellTestCase):
|
|||||||
def test_do_cell_delete_calls_cell_manager_with_fields(self, mock_delete):
|
def test_do_cell_delete_calls_cell_manager_with_fields(self, mock_delete):
|
||||||
"""Verify that do cell delete calls CellManager delete."""
|
"""Verify that do cell delete calls CellManager delete."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.cells = cells.CellManager(
|
||||||
inventory.cells = cells.CellManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
test_args = Namespace(id=1, region=1)
|
test_args = Namespace(id=1, region=1)
|
||||||
cells_shell.do_cell_delete(client, test_args)
|
cells_shell.do_cell_delete(client, test_args)
|
||||||
mock_delete.assert_called_once_with(vars(test_args)['id'])
|
mock_delete.assert_called_once_with(vars(test_args)['id'])
|
||||||
|
@ -62,7 +62,11 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
def test_host_list_limit_0_success(self, mock_list):
|
def test_host_list_limit_0_success(self, mock_list):
|
||||||
"""Verify that --limit 0 prints out all project hosts."""
|
"""Verify that --limit 0 prints out all project hosts."""
|
||||||
self.shell('host-list -r 1 --limit 0')
|
self.shell('host-list -r 1 --limit 0')
|
||||||
mock_list.assert_called_once_with(limit=0, sort_dir='asc')
|
mock_list.assert_called_once_with(
|
||||||
|
limit=0,
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch('cratonclient.v1.hosts.HostManager.list')
|
@mock.patch('cratonclient.v1.hosts.HostManager.list')
|
||||||
def test_host_list_limit_positive_num_success(self, mock_list):
|
def test_host_list_limit_positive_num_success(self, mock_list):
|
||||||
@ -71,7 +75,11 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
The command will print out X number of project hosts.
|
The command will print out X number of project hosts.
|
||||||
"""
|
"""
|
||||||
self.shell('host-list -r 1 --limit 1')
|
self.shell('host-list -r 1 --limit 1')
|
||||||
mock_list.assert_called_once_with(limit=1, sort_dir='asc')
|
mock_list.assert_called_once_with(
|
||||||
|
limit=1,
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
def test_host_list_limit_negative_num_failure(self):
|
def test_host_list_limit_negative_num_failure(self):
|
||||||
"""Verify --limit X, where X is a negative integer, fails.
|
"""Verify --limit X, where X is a negative integer, fails.
|
||||||
@ -87,21 +95,32 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
"""Verify --cell arguments successfully pass cell to Client."""
|
"""Verify --cell arguments successfully pass cell to Client."""
|
||||||
for cell_arg in ['-c', '--cell']:
|
for cell_arg in ['-c', '--cell']:
|
||||||
self.shell('host-list -r 1 {0} 1'.format(cell_arg))
|
self.shell('host-list -r 1 {0} 1'.format(cell_arg))
|
||||||
mock_list.assert_called_once_with(cell_id=1, sort_dir='asc')
|
mock_list.assert_called_once_with(
|
||||||
|
cell_id=1,
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
mock_list.reset_mock()
|
mock_list.reset_mock()
|
||||||
|
|
||||||
@mock.patch('cratonclient.v1.hosts.HostManager.list')
|
@mock.patch('cratonclient.v1.hosts.HostManager.list')
|
||||||
def test_host_list_detail_success(self, mock_list):
|
def test_host_list_detail_success(self, mock_list):
|
||||||
"""Verify --detail argument successfully pass detail to Client."""
|
"""Verify --detail argument successfully pass detail to Client."""
|
||||||
self.shell('host-list -r 1 --detail')
|
self.shell('host-list -r 1 --detail')
|
||||||
mock_list.assert_called_once_with(detail=True, sort_dir='asc')
|
mock_list.assert_called_once_with(
|
||||||
|
detail=True,
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch('cratonclient.v1.hosts.HostManager.list')
|
@mock.patch('cratonclient.v1.hosts.HostManager.list')
|
||||||
@mock.patch('cratonclient.common.cliutils.print_list')
|
@mock.patch('cratonclient.common.cliutils.print_list')
|
||||||
def test_host_list_fields_success(self, mock_printlist, mock_list):
|
def test_host_list_fields_success(self, mock_printlist, mock_list):
|
||||||
"""Verify --fields argument successfully passed to Client."""
|
"""Verify --fields argument successfully passed to Client."""
|
||||||
self.shell('host-list -r 1 --fields id name')
|
self.shell('host-list -r 1 --fields id name')
|
||||||
mock_list.assert_called_once_with(sort_dir='asc')
|
mock_list.assert_called_once_with(
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
mock_printlist.assert_called_once_with(mock.ANY,
|
mock_printlist.assert_called_once_with(mock.ANY,
|
||||||
list({'id': 'ID',
|
list({'id': 'ID',
|
||||||
'name': 'Name'}))
|
'name': 'Name'}))
|
||||||
@ -110,8 +129,11 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
def test_host_list_sort_key_field_key_success(self, mock_list):
|
def test_host_list_sort_key_field_key_success(self, mock_list):
|
||||||
"""Verify --sort-key arguments successfully passed to Client."""
|
"""Verify --sort-key arguments successfully passed to Client."""
|
||||||
self.shell('host-list -r 1 --sort-key cell_id')
|
self.shell('host-list -r 1 --sort-key cell_id')
|
||||||
mock_list.assert_called_once_with(sort_key='cell_id',
|
mock_list.assert_called_once_with(
|
||||||
sort_dir='asc')
|
sort_key='cell_id',
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
def test_host_list_sort_key_invalid(self):
|
def test_host_list_sort_key_invalid(self):
|
||||||
"""Verify --sort-key with invalid args, fails with Command Error."""
|
"""Verify --sort-key with invalid args, fails with Command Error."""
|
||||||
@ -123,21 +145,30 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
def test_host_list_sort_dir_not_passed_without_sort_key(self, mock_list):
|
def test_host_list_sort_dir_not_passed_without_sort_key(self, mock_list):
|
||||||
"""Verify --sort-dir arg ignored without --sort-key."""
|
"""Verify --sort-dir arg ignored without --sort-key."""
|
||||||
self.shell('host-list -r 1 --sort-dir desc')
|
self.shell('host-list -r 1 --sort-dir desc')
|
||||||
mock_list.assert_called_once_with(sort_dir='desc')
|
mock_list.assert_called_once_with(
|
||||||
|
sort_dir='desc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch('cratonclient.v1.hosts.HostManager.list')
|
@mock.patch('cratonclient.v1.hosts.HostManager.list')
|
||||||
def test_host_list_sort_dir_asc_success(self, mock_list):
|
def test_host_list_sort_dir_asc_success(self, mock_list):
|
||||||
"""Verify --sort-dir asc successfully passed to Client."""
|
"""Verify --sort-dir asc successfully passed to Client."""
|
||||||
self.shell('host-list -r 1 --sort-key name --sort-dir asc')
|
self.shell('host-list -r 1 --sort-key name --sort-dir asc')
|
||||||
mock_list.assert_called_once_with(sort_key='name',
|
mock_list.assert_called_once_with(
|
||||||
sort_dir='asc')
|
sort_key='name',
|
||||||
|
sort_dir='asc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch('cratonclient.v1.hosts.HostManager.list')
|
@mock.patch('cratonclient.v1.hosts.HostManager.list')
|
||||||
def test_host_list_sort_dir_desc_success(self, mock_list):
|
def test_host_list_sort_dir_desc_success(self, mock_list):
|
||||||
"""Verify --sort-dir desc successfully passed to Client."""
|
"""Verify --sort-dir desc successfully passed to Client."""
|
||||||
self.shell('host-list -r 1 --sort-key name --sort-dir desc')
|
self.shell('host-list -r 1 --sort-key name --sort-dir desc')
|
||||||
mock_list.assert_called_once_with(sort_key='name',
|
mock_list.assert_called_once_with(
|
||||||
sort_dir='desc')
|
sort_key='name',
|
||||||
|
sort_dir='desc',
|
||||||
|
region_id=1,
|
||||||
|
)
|
||||||
|
|
||||||
def test_host_list_sort_dir_invalid_value(self):
|
def test_host_list_sort_dir_invalid_value(self):
|
||||||
"""Verify --sort-dir with invalid args, fails with Command Error."""
|
"""Verify --sort-dir with invalid args, fails with Command Error."""
|
||||||
@ -162,12 +193,10 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
def test_do_host_create_calls_host_manager_with_fields(self, mock_create):
|
def test_do_host_create_calls_host_manager_with_fields(self, mock_create):
|
||||||
"""Verify that do host create calls HostManager create."""
|
"""Verify that do host create calls HostManager create."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.hosts = hosts.HostManager(
|
||||||
inventory.hosts = hosts.HostManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
hosts_shell.do_host_create(client, self.host_valid_fields)
|
hosts_shell.do_host_create(client, self.host_valid_fields)
|
||||||
mock_create.assert_called_once_with(**vars(self.host_valid_fields))
|
mock_create.assert_called_once_with(**vars(self.host_valid_fields))
|
||||||
|
|
||||||
@ -175,12 +204,10 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
def test_do_host_create_ignores_unknown_fields(self, mock_create):
|
def test_do_host_create_ignores_unknown_fields(self, mock_create):
|
||||||
"""Verify that do host create ignores unknown field."""
|
"""Verify that do host create ignores unknown field."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.hosts = hosts.HostManager(
|
||||||
inventory.hosts = hosts.HostManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
hosts_shell.do_host_create(client, self.host_invalid_field)
|
hosts_shell.do_host_create(client, self.host_invalid_field)
|
||||||
mock_create.assert_called_once_with(**vars(self.host_valid_fields))
|
mock_create.assert_called_once_with(**vars(self.host_valid_fields))
|
||||||
|
|
||||||
@ -200,12 +227,10 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
def test_do_host_update_calls_host_manager_with_fields(self, mock_update):
|
def test_do_host_update_calls_host_manager_with_fields(self, mock_update):
|
||||||
"""Verify that do host update calls HostManager update."""
|
"""Verify that do host update calls HostManager update."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.hosts = hosts.HostManager(
|
||||||
inventory.hosts = hosts.HostManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
valid_input = Namespace(region=1,
|
valid_input = Namespace(region=1,
|
||||||
id=1,
|
id=1,
|
||||||
name='mock_host')
|
name='mock_host')
|
||||||
@ -216,12 +241,10 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
def test_do_host_update_ignores_unknown_fields(self, mock_update):
|
def test_do_host_update_ignores_unknown_fields(self, mock_update):
|
||||||
"""Verify that do host update ignores unknown field."""
|
"""Verify that do host update ignores unknown field."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.hosts = hosts.HostManager(
|
||||||
inventory.hosts = hosts.HostManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
invalid_input = Namespace(region=1,
|
invalid_input = Namespace(region=1,
|
||||||
id=1,
|
id=1,
|
||||||
name='mock_host',
|
name='mock_host',
|
||||||
@ -245,12 +268,10 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
def test_do_host_show_calls_host_manager_with_fields(self, mock_get):
|
def test_do_host_show_calls_host_manager_with_fields(self, mock_get):
|
||||||
"""Verify that do host show calls HostManager get."""
|
"""Verify that do host show calls HostManager get."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.hosts = hosts.HostManager(
|
||||||
inventory.hosts = hosts.HostManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
test_args = Namespace(id=1, region=1)
|
test_args = Namespace(id=1, region=1)
|
||||||
hosts_shell.do_host_show(client, test_args)
|
hosts_shell.do_host_show(client, test_args)
|
||||||
mock_get.assert_called_once_with(vars(test_args)['id'])
|
mock_get.assert_called_once_with(vars(test_args)['id'])
|
||||||
@ -270,12 +291,10 @@ class TestHostsShell(base.ShellTestCase):
|
|||||||
def test_do_host_delete_calls_host_manager_with_fields(self, mock_delete):
|
def test_do_host_delete_calls_host_manager_with_fields(self, mock_delete):
|
||||||
"""Verify that do host delete calls HostManager delete."""
|
"""Verify that do host delete calls HostManager delete."""
|
||||||
client = mock.Mock()
|
client = mock.Mock()
|
||||||
inventory = mock.Mock()
|
client.hosts = hosts.HostManager(
|
||||||
inventory.hosts = hosts.HostManager(mock.ANY,
|
mock.ANY, 'http://127.0.0.1/',
|
||||||
'http://127.0.0.1/',
|
region_id=mock.ANY,
|
||||||
region_id=mock.ANY)
|
)
|
||||||
client.inventory = mock.Mock(name='inventory')
|
|
||||||
client.inventory.return_value = inventory
|
|
||||||
test_args = Namespace(id=1, region=1)
|
test_args = Namespace(id=1, region=1)
|
||||||
hosts_shell.do_host_delete(client, test_args)
|
hosts_shell.do_host_delete(client, test_args)
|
||||||
mock_delete.assert_called_once_with(vars(test_args)['id'])
|
mock_delete.assert_called_once_with(vars(test_args)['id'])
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
"""Tests for `cratonclient` module."""
|
|
||||||
import mock
|
|
||||||
|
|
||||||
from cratonclient.tests import base
|
|
||||||
from cratonclient.v1 import client
|
|
||||||
|
|
||||||
|
|
||||||
class TestCratonclient(base.TestCase):
|
|
||||||
"""Tests for the top-level module."""
|
|
||||||
|
|
||||||
def test_something(self):
|
|
||||||
"""Do nothing."""
|
|
||||||
pass
|
|
||||||
|
|
||||||
@mock.patch('cratonclient.v1.inventory.Inventory')
|
|
||||||
def test_client_creates_inventory(self, mock_inventory):
|
|
||||||
"""Verify that Craton client creates Inventory."""
|
|
||||||
session = mock.Mock()
|
|
||||||
url = 'https://10.1.1.8080'
|
|
||||||
region_id = 1
|
|
||||||
craton = client.Client(session, url)
|
|
||||||
craton.inventory(region_id)
|
|
||||||
mock_inventory.assert_called_once_with(region_id=region_id,
|
|
||||||
session=session,
|
|
||||||
url=url + '/v1')
|
|
@ -32,8 +32,7 @@ class TestDoShellShow(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
cells_shell.do_cell_show(self.craton_client, args)
|
cells_shell.do_cell_show(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.get.assert_called_once_with(456)
|
||||||
self.inventory.cells.get.assert_called_once_with(456)
|
|
||||||
self.print_dict.assert_called_once_with(
|
self.print_dict.assert_called_once_with(
|
||||||
{f: mock.ANY for f in cells.CELL_FIELDS},
|
{f: mock.ANY for f in cells.CELL_FIELDS},
|
||||||
wrap=72,
|
wrap=72,
|
||||||
@ -64,8 +63,10 @@ class TestDoCellList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
cells_shell.do_cell_list(self.craton_client, args)
|
cells_shell.do_cell_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.list.assert_called_once_with(
|
||||||
self.inventory.cells.list.assert_called_once_with(sort_dir='asc')
|
sort_dir='asc',
|
||||||
|
region_id=123,
|
||||||
|
)
|
||||||
self.assertTrue(self.print_list.called)
|
self.assertTrue(self.print_list.called)
|
||||||
self.assertEqual(['id', 'name'],
|
self.assertEqual(['id', 'name'],
|
||||||
sorted(self.print_list.call_args[0][-1]))
|
sorted(self.print_list.call_args[0][-1]))
|
||||||
@ -83,10 +84,10 @@ class TestDoCellList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
cells_shell.do_cell_list(self.craton_client, args)
|
cells_shell.do_cell_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.list.assert_called_once_with(
|
||||||
self.inventory.cells.list.assert_called_once_with(
|
|
||||||
limit=5,
|
limit=5,
|
||||||
sort_dir='asc',
|
sort_dir='asc',
|
||||||
|
region_id=123,
|
||||||
)
|
)
|
||||||
self.assertTrue(self.print_list.called)
|
self.assertTrue(self.print_list.called)
|
||||||
self.assertEqual(['id', 'name'],
|
self.assertEqual(['id', 'name'],
|
||||||
@ -98,10 +99,10 @@ class TestDoCellList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
cells_shell.do_cell_list(self.craton_client, args)
|
cells_shell.do_cell_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.list.assert_called_once_with(
|
||||||
self.inventory.cells.list.assert_called_once_with(
|
|
||||||
sort_dir='asc',
|
sort_dir='asc',
|
||||||
sort_key='name',
|
sort_key='name',
|
||||||
|
region_id=123,
|
||||||
)
|
)
|
||||||
self.assertTrue(self.print_list.called)
|
self.assertTrue(self.print_list.called)
|
||||||
self.assertEqual(['id', 'name'],
|
self.assertEqual(['id', 'name'],
|
||||||
@ -120,10 +121,10 @@ class TestDoCellList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
cells_shell.do_cell_list(self.craton_client, args)
|
cells_shell.do_cell_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.list.assert_called_once_with(
|
||||||
self.inventory.cells.list.assert_called_once_with(
|
|
||||||
sort_dir='asc',
|
sort_dir='asc',
|
||||||
detail=True,
|
detail=True,
|
||||||
|
region_id=123,
|
||||||
)
|
)
|
||||||
self.assertEqual(sorted(list(cells.CELL_FIELDS)),
|
self.assertEqual(sorted(list(cells.CELL_FIELDS)),
|
||||||
sorted(self.print_list.call_args[0][-1]))
|
sorted(self.print_list.call_args[0][-1]))
|
||||||
@ -144,9 +145,9 @@ class TestDoCellList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
cells_shell.do_cell_list(self.craton_client, args)
|
cells_shell.do_cell_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.list.assert_called_once_with(
|
||||||
self.inventory.cells.list.assert_called_once_with(
|
|
||||||
sort_dir='asc',
|
sort_dir='asc',
|
||||||
|
region_id=123,
|
||||||
)
|
)
|
||||||
self.assertEqual(['id', 'name', 'note'],
|
self.assertEqual(['id', 'name', 'note'],
|
||||||
sorted(self.print_list.call_args[0][-1]))
|
sorted(self.print_list.call_args[0][-1]))
|
||||||
@ -175,8 +176,7 @@ class TestDoCellCreate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
cells_shell.do_cell_create(self.craton_client, args)
|
cells_shell.do_cell_create(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.create.assert_called_once_with(
|
||||||
self.inventory.cells.create.assert_called_once_with(
|
|
||||||
name='New Cell',
|
name='New Cell',
|
||||||
region_id=123,
|
region_id=123,
|
||||||
)
|
)
|
||||||
@ -188,8 +188,7 @@ class TestDoCellCreate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
cells_shell.do_cell_create(self.craton_client, args)
|
cells_shell.do_cell_create(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.create.assert_called_once_with(
|
||||||
self.inventory.cells.create.assert_called_once_with(
|
|
||||||
name='New Cell',
|
name='New Cell',
|
||||||
region_id=123,
|
region_id=123,
|
||||||
note='This is a note',
|
note='This is a note',
|
||||||
@ -203,7 +202,6 @@ class TestDoCellUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
def args_for(self, **kwargs):
|
def args_for(self, **kwargs):
|
||||||
"""Generate arguments for cell-update command."""
|
"""Generate arguments for cell-update command."""
|
||||||
kwargs.setdefault('id', 123)
|
kwargs.setdefault('id', 123)
|
||||||
kwargs.setdefault('region', 345)
|
|
||||||
kwargs.setdefault('name', None)
|
kwargs.setdefault('name', None)
|
||||||
kwargs.setdefault('region_id', None)
|
kwargs.setdefault('region_id', None)
|
||||||
kwargs.setdefault('note', None)
|
kwargs.setdefault('note', None)
|
||||||
@ -222,8 +220,7 @@ class TestDoCellUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
cells_shell.do_cell_update(self.craton_client, args)
|
cells_shell.do_cell_update(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(345)
|
self.craton_client.cells.update.assert_called_once_with(
|
||||||
self.inventory.cells.update.assert_called_once_with(
|
|
||||||
123,
|
123,
|
||||||
name='New name',
|
name='New name',
|
||||||
)
|
)
|
||||||
@ -235,8 +232,7 @@ class TestDoCellUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
cells_shell.do_cell_update(self.craton_client, args)
|
cells_shell.do_cell_update(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(345)
|
self.craton_client.cells.update.assert_called_once_with(
|
||||||
self.inventory.cells.update.assert_called_once_with(
|
|
||||||
123,
|
123,
|
||||||
region_id=678,
|
region_id=678,
|
||||||
)
|
)
|
||||||
@ -248,8 +244,7 @@ class TestDoCellUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
cells_shell.do_cell_update(self.craton_client, args)
|
cells_shell.do_cell_update(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(345)
|
self.craton_client.cells.update.assert_called_once_with(
|
||||||
self.inventory.cells.update.assert_called_once_with(
|
|
||||||
123,
|
123,
|
||||||
note='A new note',
|
note='A new note',
|
||||||
)
|
)
|
||||||
@ -265,8 +260,7 @@ class TestDoCellUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
cells_shell.do_cell_update(self.craton_client, args)
|
cells_shell.do_cell_update(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(345)
|
self.craton_client.cells.update.assert_called_once_with(
|
||||||
self.inventory.cells.update.assert_called_once_with(
|
|
||||||
123,
|
123,
|
||||||
name='A new name for a new region',
|
name='A new name for a new region',
|
||||||
region_id=678,
|
region_id=678,
|
||||||
@ -293,39 +287,35 @@ class TestDoCellDelete(base.TestShellCommand):
|
|||||||
|
|
||||||
def test_successful(self):
|
def test_successful(self):
|
||||||
"""Verify the message we print when successful."""
|
"""Verify the message we print when successful."""
|
||||||
self.inventory.cells.delete.return_value = True
|
self.craton_client.cells.delete.return_value = True
|
||||||
args = self.args_for(
|
args = self.args_for(
|
||||||
region=123,
|
|
||||||
id=456,
|
id=456,
|
||||||
)
|
)
|
||||||
|
|
||||||
cells_shell.do_cell_delete(self.craton_client, args)
|
cells_shell.do_cell_delete(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.delete.assert_called_once_with(456)
|
||||||
self.inventory.cells.delete.assert_called_once_with(456)
|
|
||||||
self.print_func.assert_called_once_with(
|
self.print_func.assert_called_once_with(
|
||||||
'Cell 456 was successfully deleted.'
|
'Cell 456 was successfully deleted.'
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_failed(self):
|
def test_failed(self):
|
||||||
"""Verify the message we print when deletion fails."""
|
"""Verify the message we print when deletion fails."""
|
||||||
self.inventory.cells.delete.return_value = False
|
self.craton_client.cells.delete.return_value = False
|
||||||
args = self.args_for(
|
args = self.args_for(
|
||||||
region=123,
|
|
||||||
id=456,
|
id=456,
|
||||||
)
|
)
|
||||||
|
|
||||||
cells_shell.do_cell_delete(self.craton_client, args)
|
cells_shell.do_cell_delete(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.delete.assert_called_once_with(456)
|
||||||
self.inventory.cells.delete.assert_called_once_with(456)
|
|
||||||
self.print_func.assert_called_once_with(
|
self.print_func.assert_called_once_with(
|
||||||
'Cell 456 was not deleted.'
|
'Cell 456 was not deleted.'
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_failed_with_exception(self):
|
def test_failed_with_exception(self):
|
||||||
"""Verify the message we print when deletion fails."""
|
"""Verify the message we print when deletion fails."""
|
||||||
self.inventory.cells.delete.side_effect = exceptions.NotFound
|
self.craton_client.cells.delete.side_effect = exceptions.NotFound
|
||||||
args = self.args_for(
|
args = self.args_for(
|
||||||
region=123,
|
region=123,
|
||||||
id=456,
|
id=456,
|
||||||
@ -333,6 +323,5 @@ class TestDoCellDelete(base.TestShellCommand):
|
|||||||
|
|
||||||
self.assertRaisesCommandErrorWith(cells_shell.do_cell_delete, args)
|
self.assertRaisesCommandErrorWith(cells_shell.do_cell_delete, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.cells.delete.assert_called_once_with(456)
|
||||||
self.inventory.cells.delete.assert_called_once_with(456)
|
|
||||||
self.assertFalse(self.print_func.called)
|
self.assertFalse(self.print_func.called)
|
||||||
|
@ -32,8 +32,7 @@ class TestDoHostShow(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
hosts_shell.do_host_show(self.craton_client, args)
|
hosts_shell.do_host_show(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(135)
|
self.craton_client.hosts.get.assert_called_once_with(246)
|
||||||
self.inventory.hosts.get.assert_called_once_with(246)
|
|
||||||
self.print_dict.assert_called_once_with(
|
self.print_dict.assert_called_once_with(
|
||||||
{f: mock.ANY for f in hosts.HOST_FIELDS},
|
{f: mock.ANY for f in hosts.HOST_FIELDS},
|
||||||
wrap=72,
|
wrap=72,
|
||||||
@ -60,8 +59,10 @@ class TestDoHostList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
hosts_shell.do_host_list(self.craton_client, args)
|
hosts_shell.do_host_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(246)
|
self.craton_client.hosts.list.assert_called_once_with(
|
||||||
self.inventory.hosts.list.assert_called_once_with(sort_dir='asc')
|
sort_dir='asc',
|
||||||
|
region_id=246,
|
||||||
|
)
|
||||||
self.assertSortedPrintListFieldsEqualTo([
|
self.assertSortedPrintListFieldsEqualTo([
|
||||||
'active', 'cell_id', 'device_type', 'id', 'name'
|
'active', 'cell_id', 'device_type', 'id', 'name'
|
||||||
])
|
])
|
||||||
@ -72,10 +73,10 @@ class TestDoHostList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
hosts_shell.do_host_list(self.craton_client, args)
|
hosts_shell.do_host_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(246)
|
self.craton_client.hosts.list.assert_called_once_with(
|
||||||
self.inventory.hosts.list.assert_called_once_with(
|
|
||||||
cell_id=789,
|
cell_id=789,
|
||||||
sort_dir='asc',
|
sort_dir='asc',
|
||||||
|
region_id=246,
|
||||||
)
|
)
|
||||||
self.assertSortedPrintListFieldsEqualTo([
|
self.assertSortedPrintListFieldsEqualTo([
|
||||||
'active', 'cell_id', 'device_type', 'id', 'name',
|
'active', 'cell_id', 'device_type', 'id', 'name',
|
||||||
@ -87,10 +88,10 @@ class TestDoHostList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
hosts_shell.do_host_list(self.craton_client, args)
|
hosts_shell.do_host_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(246)
|
self.craton_client.hosts.list.assert_called_once_with(
|
||||||
self.inventory.hosts.list.assert_called_once_with(
|
|
||||||
detail=True,
|
detail=True,
|
||||||
sort_dir='asc',
|
sort_dir='asc',
|
||||||
|
region_id=246,
|
||||||
)
|
)
|
||||||
self.assertSortedPrintListFieldsEqualTo([
|
self.assertSortedPrintListFieldsEqualTo([
|
||||||
'access_secret_id',
|
'access_secret_id',
|
||||||
@ -114,10 +115,10 @@ class TestDoHostList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
hosts_shell.do_host_list(self.craton_client, args)
|
hosts_shell.do_host_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(246)
|
self.craton_client.hosts.list.assert_called_once_with(
|
||||||
self.inventory.hosts.list.assert_called_once_with(
|
|
||||||
limit=20,
|
limit=20,
|
||||||
sort_dir='asc',
|
sort_dir='asc',
|
||||||
|
region_id=246,
|
||||||
)
|
)
|
||||||
self.assertSortedPrintListFieldsEqualTo([
|
self.assertSortedPrintListFieldsEqualTo([
|
||||||
'active', 'cell_id', 'device_type', 'id', 'name'
|
'active', 'cell_id', 'device_type', 'id', 'name'
|
||||||
@ -136,8 +137,10 @@ class TestDoHostList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
hosts_shell.do_host_list(self.craton_client, args)
|
hosts_shell.do_host_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(246)
|
self.craton_client.hosts.list.assert_called_once_with(
|
||||||
self.inventory.hosts.list.assert_called_once_with(sort_dir='asc')
|
sort_dir='asc',
|
||||||
|
region_id=246,
|
||||||
|
)
|
||||||
self.assertSortedPrintListFieldsEqualTo([
|
self.assertSortedPrintListFieldsEqualTo([
|
||||||
'cell_id', 'id', 'name',
|
'cell_id', 'id', 'name',
|
||||||
])
|
])
|
||||||
@ -157,10 +160,10 @@ class TestDoHostList(base.TestShellCommandUsingPrintList):
|
|||||||
|
|
||||||
hosts_shell.do_host_list(self.craton_client, args)
|
hosts_shell.do_host_list(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(246)
|
self.craton_client.hosts.list.assert_called_once_with(
|
||||||
self.inventory.hosts.list.assert_called_once_with(
|
|
||||||
sort_key='ip_address',
|
sort_key='ip_address',
|
||||||
sort_dir='asc',
|
sort_dir='asc',
|
||||||
|
region_id=246,
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_fields_and_detail_raise_command_error(self):
|
def test_fields_and_detail_raise_command_error(self):
|
||||||
@ -205,8 +208,7 @@ class TestDoHostCreate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
hosts_shell.do_host_create(self.craton_client, args)
|
hosts_shell.do_host_create(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.create.assert_called_once_with(
|
||||||
self.inventory.hosts.create.assert_called_once_with(
|
|
||||||
name='test-hostname',
|
name='test-hostname',
|
||||||
ip_address='10.0.1.10',
|
ip_address='10.0.1.10',
|
||||||
cell_id=246,
|
cell_id=246,
|
||||||
@ -225,8 +227,7 @@ class TestDoHostCreate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
hosts_shell.do_host_create(self.craton_client, args)
|
hosts_shell.do_host_create(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.create.assert_called_once_with(
|
||||||
self.inventory.hosts.create.assert_called_once_with(
|
|
||||||
name='test-hostname',
|
name='test-hostname',
|
||||||
ip_address='10.0.1.10',
|
ip_address='10.0.1.10',
|
||||||
cell_id=246,
|
cell_id=246,
|
||||||
@ -246,8 +247,7 @@ class TestDoHostCreate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
hosts_shell.do_host_create(self.craton_client, args)
|
hosts_shell.do_host_create(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.create.assert_called_once_with(
|
||||||
self.inventory.hosts.create.assert_called_once_with(
|
|
||||||
name='test-hostname',
|
name='test-hostname',
|
||||||
ip_address='10.0.1.10',
|
ip_address='10.0.1.10',
|
||||||
cell_id=246,
|
cell_id=246,
|
||||||
@ -267,8 +267,7 @@ class TestDoHostCreate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
hosts_shell.do_host_create(self.craton_client, args)
|
hosts_shell.do_host_create(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.create.assert_called_once_with(
|
||||||
self.inventory.hosts.create.assert_called_once_with(
|
|
||||||
name='test-hostname',
|
name='test-hostname',
|
||||||
ip_address='10.0.1.10',
|
ip_address='10.0.1.10',
|
||||||
cell_id=246,
|
cell_id=246,
|
||||||
@ -293,7 +292,7 @@ class TestDoHostUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
'cratonclient.shell.v1.hosts_shell.print'
|
'cratonclient.shell.v1.hosts_shell.print'
|
||||||
)
|
)
|
||||||
self.print_mock = self.print_mocker.start()
|
self.print_mock = self.print_mocker.start()
|
||||||
self.inventory.hosts.update.return_value = mock.Mock(id=246)
|
self.craton_client.hosts.update.return_value = mock.Mock(id=246)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
"""Stop mocking print."""
|
"""Stop mocking print."""
|
||||||
@ -320,8 +319,7 @@ class TestDoHostUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
hosts_shell.do_host_update(self.craton_client, args)
|
hosts_shell.do_host_update(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.update.assert_called_once_with(
|
||||||
self.inventory.hosts.update.assert_called_once_with(
|
|
||||||
246,
|
246,
|
||||||
active=True,
|
active=True,
|
||||||
)
|
)
|
||||||
@ -339,8 +337,7 @@ class TestDoHostUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
hosts_shell.do_host_update(self.craton_client, args)
|
hosts_shell.do_host_update(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.update.assert_called_once_with(
|
||||||
self.inventory.hosts.update.assert_called_once_with(
|
|
||||||
246,
|
246,
|
||||||
name='New name',
|
name='New name',
|
||||||
active=True,
|
active=True,
|
||||||
@ -359,8 +356,7 @@ class TestDoHostUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
hosts_shell.do_host_update(self.craton_client, args)
|
hosts_shell.do_host_update(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.update.assert_called_once_with(
|
||||||
self.inventory.hosts.update.assert_called_once_with(
|
|
||||||
246,
|
246,
|
||||||
ip_address='10.1.0.10',
|
ip_address='10.1.0.10',
|
||||||
active=True,
|
active=True,
|
||||||
@ -379,8 +375,7 @@ class TestDoHostUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
hosts_shell.do_host_update(self.craton_client, args)
|
hosts_shell.do_host_update(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.update.assert_called_once_with(
|
||||||
self.inventory.hosts.update.assert_called_once_with(
|
|
||||||
246,
|
246,
|
||||||
active=False,
|
active=False,
|
||||||
)
|
)
|
||||||
@ -406,8 +401,7 @@ class TestDoHostUpdate(base.TestShellCommandUsingPrintDict):
|
|||||||
|
|
||||||
hosts_shell.do_host_update(self.craton_client, args)
|
hosts_shell.do_host_update(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.update.assert_called_once_with(
|
||||||
self.inventory.hosts.update.assert_called_once_with(
|
|
||||||
246,
|
246,
|
||||||
active=True,
|
active=True,
|
||||||
name='New name',
|
name='New name',
|
||||||
@ -445,7 +439,7 @@ class TestDoHostDelete(base.TestShellCommand):
|
|||||||
|
|
||||||
def test_successful(self):
|
def test_successful(self):
|
||||||
"""Verify we print our successful message."""
|
"""Verify we print our successful message."""
|
||||||
self.inventory.hosts.delete.return_value = True
|
self.craton_client.hosts.delete.return_value = True
|
||||||
args = self.args_for(
|
args = self.args_for(
|
||||||
region=123,
|
region=123,
|
||||||
id=246,
|
id=246,
|
||||||
@ -453,15 +447,14 @@ class TestDoHostDelete(base.TestShellCommand):
|
|||||||
|
|
||||||
hosts_shell.do_host_delete(self.craton_client, args)
|
hosts_shell.do_host_delete(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.delete.assert_called_once_with(246)
|
||||||
self.inventory.hosts.delete.assert_called_once_with(246)
|
|
||||||
self.print_mock.assert_called_once_with(
|
self.print_mock.assert_called_once_with(
|
||||||
'Host 246 was successfully deleted.'
|
'Host 246 was successfully deleted.'
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_failed(self):
|
def test_failed(self):
|
||||||
"""Verify the message we print when deletion fails."""
|
"""Verify the message we print when deletion fails."""
|
||||||
self.inventory.hosts.delete.return_value = False
|
self.craton_client.hosts.delete.return_value = False
|
||||||
args = self.args_for(
|
args = self.args_for(
|
||||||
region=123,
|
region=123,
|
||||||
id=246,
|
id=246,
|
||||||
@ -469,15 +462,14 @@ class TestDoHostDelete(base.TestShellCommand):
|
|||||||
|
|
||||||
hosts_shell.do_host_delete(self.craton_client, args)
|
hosts_shell.do_host_delete(self.craton_client, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.delete.assert_called_once_with(246)
|
||||||
self.inventory.hosts.delete.assert_called_once_with(246)
|
|
||||||
self.print_mock.assert_called_once_with(
|
self.print_mock.assert_called_once_with(
|
||||||
'Host 246 was not deleted.'
|
'Host 246 was not deleted.'
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_failed_with_exception(self):
|
def test_failed_with_exception(self):
|
||||||
"""Verify we raise a CommandError on client exceptions."""
|
"""Verify we raise a CommandError on client exceptions."""
|
||||||
self.inventory.hosts.delete.side_effect = exceptions.NotFound
|
self.craton_client.hosts.delete.side_effect = exceptions.NotFound
|
||||||
args = self.args_for(
|
args = self.args_for(
|
||||||
region=123,
|
region=123,
|
||||||
id=246,
|
id=246,
|
||||||
@ -485,6 +477,5 @@ class TestDoHostDelete(base.TestShellCommand):
|
|||||||
|
|
||||||
self.assertRaisesCommandErrorWith(hosts_shell.do_host_delete, args)
|
self.assertRaisesCommandErrorWith(hosts_shell.do_host_delete, args)
|
||||||
|
|
||||||
self.craton_client.inventory.assert_called_once_with(123)
|
self.craton_client.hosts.delete.assert_called_once_with(246)
|
||||||
self.inventory.hosts.delete.assert_called_once_with(246)
|
|
||||||
self.assertFalse(self.print_mock.called)
|
self.assertFalse(self.print_mock.called)
|
||||||
|
@ -12,7 +12,9 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
"""Top-level client for version 1 of Craton's API."""
|
"""Top-level client for version 1 of Craton's API."""
|
||||||
from cratonclient.v1 import inventory
|
from cratonclient.v1 import cells
|
||||||
|
from cratonclient.v1 import hosts
|
||||||
|
from cratonclient.v1 import regions
|
||||||
|
|
||||||
|
|
||||||
class Client(object):
|
class Client(object):
|
||||||
@ -35,9 +37,7 @@ class Client(object):
|
|||||||
if not self._url.endswith('/v1'):
|
if not self._url.endswith('/v1'):
|
||||||
self._url += '/v1'
|
self._url += '/v1'
|
||||||
|
|
||||||
self._manager_kwargs = {'session': self._session, 'url': self._url}
|
manager_kwargs = {'session': self._session, 'url': self._url}
|
||||||
|
self.hosts = hosts.HostManager(**manager_kwargs)
|
||||||
def inventory(self, region_id):
|
self.cells = cells.CellManager(**manager_kwargs)
|
||||||
"""Retrieve inventory for a given region."""
|
self.regions = regions.RegionManager(**manager_kwargs)
|
||||||
self._manager_kwargs['region_id'] = region_id
|
|
||||||
return inventory.Inventory(**self._manager_kwargs)
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user