Adding region deletion functionality to clients.

Adding region-delete to CLI and region.delete() to python clients

Change-Id: I54c97633df33b87f3bad13c4dcab9c0ba65e9bcc
Implements: blueprint craton-client-access-inventory (partial)
Closes-Bug: #1613339
This commit is contained in:
Chris Spencer 2016-08-19 10:44:23 -07:00
parent 4c7569df22
commit d021b036c0
5 changed files with 44 additions and 12 deletions

View File

@ -40,3 +40,14 @@ def do_region_show(cc, args):
region = cc.regions.get(args.id)
data = {f: getattr(region, f, '') for f in r_fields}
cliutils.print_dict(data, wrap=72)
@cliutils.arg('id',
metavar='<region>',
type=int,
help='ID of the region.')
def do_region_delete(cc, args):
"""Delete a region that is registered with the Craton service."""
response = cc.regions.delete(args.id)
print("Region {0} was {1}successfully deleted.".
format(args.id, '' if response else 'un'))

View File

@ -191,7 +191,7 @@ class TestCellsShell(base.ShellTestCase):
@mock.patch('cratonclient.v1.cells.CellManager.update')
def test_do_cell_update_calls_cell_manager_with_fields(self, mock_update):
"""Verify that do cell update calls CellManager create."""
"""Verify that do cell update calls CellManager update."""
client = mock.Mock()
inventory = mock.Mock()
inventory.cells = cells.CellManager(mock.ANY,
@ -208,7 +208,7 @@ class TestCellsShell(base.ShellTestCase):
@mock.patch('cratonclient.v1.cells.CellManager.update')
def test_do_cell_update_ignores_unknown_fields(self, mock_update):
"""Verify that do cell create ignores unknown field."""
"""Verify that do cell update ignores unknown field."""
client = mock.Mock()
inventory = mock.Mock()
inventory.cells = cells.CellManager(mock.ANY,
@ -239,7 +239,7 @@ class TestCellsShell(base.ShellTestCase):
@mock.patch('cratonclient.v1.cells.CellManager.get')
def test_do_cell_show_calls_cell_manager_with_fields(self, mock_get):
"""Verify that do cell update calls CellManager create."""
"""Verify that do cell show calls CellManager get."""
client = mock.Mock()
inventory = mock.Mock()
inventory.cells = cells.CellManager(mock.ANY,
@ -264,7 +264,7 @@ class TestCellsShell(base.ShellTestCase):
@mock.patch('cratonclient.v1.cells.CellManager.delete')
def test_do_cell_delete_calls_cell_manager_with_fields(self, mock_delete):
"""Verify that do cell update calls CellManager create."""
"""Verify that do cell delete calls CellManager delete."""
client = mock.Mock()
inventory = mock.Mock()
inventory.cells = cells.CellManager(mock.ANY,

View File

@ -203,7 +203,7 @@ class TestHostsShell(base.ShellTestCase):
@mock.patch('cratonclient.v1.hosts.HostManager.update')
def test_do_host_update_calls_host_manager_with_fields(self, mock_update):
"""Verify that do host update calls HostManager create."""
"""Verify that do host update calls HostManager update."""
client = mock.Mock()
inventory = mock.Mock()
inventory.hosts = hosts.HostManager(mock.ANY,
@ -220,7 +220,7 @@ class TestHostsShell(base.ShellTestCase):
@mock.patch('cratonclient.v1.hosts.HostManager.update')
def test_do_host_update_ignores_unknown_fields(self, mock_update):
"""Verify that do host create ignores unknown field."""
"""Verify that do host update ignores unknown field."""
client = mock.Mock()
inventory = mock.Mock()
inventory.hosts = hosts.HostManager(mock.ANY,
@ -251,7 +251,7 @@ class TestHostsShell(base.ShellTestCase):
@mock.patch('cratonclient.v1.hosts.HostManager.get')
def test_do_host_show_calls_host_manager_with_fields(self, mock_get):
"""Verify that do host update calls HostManager create."""
"""Verify that do host show calls HostManager get."""
client = mock.Mock()
inventory = mock.Mock()
inventory.hosts = hosts.HostManager(mock.ANY,
@ -276,7 +276,7 @@ class TestHostsShell(base.ShellTestCase):
@mock.patch('cratonclient.v1.hosts.HostManager.delete')
def test_do_host_delete_calls_host_manager_with_fields(self, mock_delete):
"""Verify that do host update calls HostManager create."""
"""Verify that do host delete calls HostManager delete."""
client = mock.Mock()
inventory = mock.Mock()
inventory.hosts = hosts.HostManager(mock.ANY,

View File

@ -52,7 +52,7 @@ class TestRegionsShell(base.ShellTestCase):
matchers.MatchesRegex(r, self.re_options))
@mock.patch('cratonclient.v1.regions.RegionManager.create')
def test_do_region_create_calls_host_manager(self, mock_create):
def test_do_region_create_calls_region_manager(self, mock_create):
"""Verify that do region create calls RegionManager create."""
client = mock.Mock()
session = mock.Mock()
@ -63,7 +63,7 @@ class TestRegionsShell(base.ShellTestCase):
@mock.patch('cratonclient.v1.regions.RegionManager.create')
def test_do_region_create_ignores_unknown_fields(self, mock_create):
"""Verify that do host create ignores unknown field."""
"""Verify that do region create ignores unknown field."""
client = mock.Mock()
session = mock.Mock()
session.project_id = 1
@ -85,7 +85,7 @@ class TestRegionsShell(base.ShellTestCase):
@mock.patch('cratonclient.v1.regions.RegionManager.get')
def test_do_region_show_calls_region_manager_with_fields(self, mock_get):
"""Verify that do host update calls HostManager create."""
"""Verify that do region show calls RegionManager get."""
client = mock.Mock()
session = mock.Mock()
session.project_id = 1
@ -93,3 +93,25 @@ class TestRegionsShell(base.ShellTestCase):
test_args = Namespace(id=1)
regions_shell.do_region_show(client, test_args)
mock_get.assert_called_once_with(vars(test_args)['id'])
def test_region_delete_missing_required_args(self):
"""Verify that missing required args results in error message."""
expected_responses = [
'.*?^usage: craton region-delete',
'.*?^craton region-delete: error:.*$',
]
stdout, stderr = self.shell('region-delete')
for r in expected_responses:
self.assertThat((stdout + stderr),
matchers.MatchesRegex(r, self.re_options))
@mock.patch('cratonclient.v1.regions.RegionManager.delete')
def test_do_region_delete_calls_region_manager(self, mock_delete):
"""Verify that do region delete calls RegionManager delete."""
client = mock.Mock()
session = mock.Mock()
session.project_id = 1
client.regions = regions.RegionManager(session, 'http://127.0.0.1/')
test_args = Namespace(id=1)
regions_shell.do_region_delete(client, test_args)
mock_delete.assert_called_once_with(vars(test_args)['id'])

View File

@ -29,7 +29,6 @@ class RegionManager(crud.CRUDClient):
resource_class = Region
project_id = 0
REGION_FIELDS = {
'id': 'ID',
'project_id': 'Project ID',