Adds --filter to search for resources
openstack resource list --filter implements blueprint heat-support-python-openstackclient implements blueprint heat-stack-resource-search Change-Id: I9ca33a0743bfad88190509351e8aca08ce7d2c0f
This commit is contained in:
parent
413b5f2dbd
commit
79742a3d67
|
@ -97,8 +97,16 @@ class ResourceList(lister.Lister):
|
|||
type=int,
|
||||
help=_('Depth of nested stacks from which to display resources')
|
||||
)
|
||||
# TODO(jonesbr):
|
||||
# Add --filter once https://review.openstack.org/#/c/257864/ is merged
|
||||
|
||||
parser.add_argument(
|
||||
'--filter',
|
||||
metavar='<key=value>',
|
||||
action='append',
|
||||
help=_('Filter parameters to apply on returned resources based on '
|
||||
'their name, status, type, action, id and '
|
||||
'physcial_resource_id')
|
||||
)
|
||||
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
|
@ -109,6 +117,7 @@ class ResourceList(lister.Lister):
|
|||
fields = {
|
||||
'nested_depth': parsed_args.nested_depth,
|
||||
'with_detail': parsed_args.long,
|
||||
'filters': heat_utils.format_parameters(parsed_args.filter),
|
||||
}
|
||||
|
||||
try:
|
|
@ -17,7 +17,7 @@ import mock
|
|||
from openstackclient.common import exceptions as exc
|
||||
|
||||
from heatclient import exc as heat_exc
|
||||
from heatclient.osc.v1 import resources
|
||||
from heatclient.osc.v1 import resource
|
||||
from heatclient.tests.unit.osc.v1 import fakes as orchestration_fakes
|
||||
from heatclient.v1 import resources as v1_resources
|
||||
|
||||
|
@ -50,7 +50,7 @@ class TestStackResourceShow(TestResource):
|
|||
|
||||
def setUp(self):
|
||||
super(TestStackResourceShow, self).setUp()
|
||||
self.cmd = resources.ResourceShow(self.app, None)
|
||||
self.cmd = resource.ResourceShow(self.app, None)
|
||||
self.resource_client.get = mock.MagicMock(
|
||||
return_value=v1_resources.Resource(None, self.response))
|
||||
|
||||
|
@ -118,7 +118,7 @@ class TestStackResourceList(TestResource):
|
|||
|
||||
def setUp(self):
|
||||
super(TestStackResourceList, self).setUp()
|
||||
self.cmd = resources.ResourceList(self.app, None)
|
||||
self.cmd = resource.ResourceList(self.app, None)
|
||||
self.resource_client.list = mock.MagicMock(
|
||||
return_value=[v1_resources.Resource(None, self.response)])
|
||||
|
||||
|
@ -129,7 +129,10 @@ class TestStackResourceList(TestResource):
|
|||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.resource_client.list.assert_called_with(
|
||||
'my_stack', with_detail=False, nested_depth=None)
|
||||
'my_stack',
|
||||
filters={},
|
||||
with_detail=False,
|
||||
nested_depth=None)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(tuple(self.data), list(data)[0])
|
||||
|
||||
|
@ -151,7 +154,10 @@ class TestStackResourceList(TestResource):
|
|||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.resource_client.list.assert_called_with(
|
||||
'my_stack', with_detail=True, nested_depth=None)
|
||||
'my_stack',
|
||||
filters={},
|
||||
with_detail=True,
|
||||
nested_depth=None)
|
||||
self.assertEqual(cols, columns)
|
||||
self.assertEqual(tuple(out), list(data)[0])
|
||||
|
||||
|
@ -166,7 +172,10 @@ class TestStackResourceList(TestResource):
|
|||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.resource_client.list.assert_called_with(
|
||||
'my_stack', with_detail=False, nested_depth=3)
|
||||
'my_stack',
|
||||
filters={},
|
||||
with_detail=False,
|
||||
nested_depth=3)
|
||||
self.assertEqual(cols, columns)
|
||||
self.assertEqual(tuple(out), list(data)[0])
|
||||
|
||||
|
@ -185,15 +194,32 @@ class TestStackResourceList(TestResource):
|
|||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.resource_client.list.assert_called_with(
|
||||
'my_stack', with_detail=False, nested_depth=None)
|
||||
'my_stack',
|
||||
filters={},
|
||||
with_detail=False,
|
||||
nested_depth=None)
|
||||
self.assertEqual(cols, columns)
|
||||
|
||||
def test_resource_list_filter(self):
|
||||
arglist = ['my_stack', '--filter', 'name=my_resource']
|
||||
out = copy.deepcopy(self.data)
|
||||
parsed_args = self.check_parser(self.cmd, arglist, [])
|
||||
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
|
||||
self.resource_client.list.assert_called_with(
|
||||
'my_stack',
|
||||
filters=dict(name='my_resource'),
|
||||
with_detail=False,
|
||||
nested_depth=None)
|
||||
self.assertEqual(tuple(out), list(data)[0])
|
||||
|
||||
|
||||
class TestResourceMetadata(TestResource):
|
||||
|
||||
def setUp(self):
|
||||
super(TestResourceMetadata, self).setUp()
|
||||
self.cmd = resources.ResourceMetadata(self.app, None)
|
||||
self.cmd = resource.ResourceMetadata(self.app, None)
|
||||
self.resource_client.metadata = mock.Mock(return_value={})
|
||||
|
||||
def test_resource_metadata(self):
|
||||
|
@ -230,7 +256,7 @@ class TestResourceSignal(TestResource):
|
|||
|
||||
def setUp(self):
|
||||
super(TestResourceSignal, self).setUp()
|
||||
self.cmd = resources.ResourceSignal(self.app, None)
|
||||
self.cmd = resource.ResourceSignal(self.app, None)
|
||||
self.resource_client.signal = mock.Mock()
|
||||
|
||||
def test_resource_signal(self):
|
|
@ -53,10 +53,10 @@ openstack.orchestration.v1 =
|
|||
stack_list = heatclient.osc.v1.stack:ListStack
|
||||
stack_output_list = heatclient.osc.v1.stack:OutputListStack
|
||||
stack_output_show = heatclient.osc.v1.stack:OutputShowStack
|
||||
stack_resource_list = heatclient.osc.v1.resources:ResourceList
|
||||
stack_resource_metadata = heatclient.osc.v1.resources:ResourceMetadata
|
||||
stack_resource_show = heatclient.osc.v1.resources:ResourceShow
|
||||
stack_resource_signal = heatclient.osc.v1.resources:ResourceSignal
|
||||
stack_resource_list = heatclient.osc.v1.resource:ResourceList
|
||||
stack_resource_metadata = heatclient.osc.v1.resource:ResourceMetadata
|
||||
stack_resource_show = heatclient.osc.v1.resource:ResourceShow
|
||||
stack_resource_signal = heatclient.osc.v1.resource:ResourceSignal
|
||||
stack_resume = heatclient.osc.v1.stack:ResumeStack
|
||||
stack_show = heatclient.osc.v1.stack:ShowStack
|
||||
stack_snapshot_create = heatclient.osc.v1.snapshot:CreateSnapshot
|
||||
|
|
Loading…
Reference in New Issue