Skip to content

Commit 383289e

Browse files
committed
Implements hide image
openstack image set [--hidden|--unhidden] IMAGE openstack image list --hidden Task: 41734 Story: 2008581 Change-Id: Ie84f10c0f7aa2e7b7f78bfadc70132a10673866e
1 parent 01a53fa commit 383289e

3 files changed

Lines changed: 103 additions & 0 deletions

File tree

openstackclient/image/v2/image.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,12 @@ def get_parser(self, prog_name):
615615
default=None,
616616
help=_('Filter images based on tag.'),
617617
)
618+
parser.add_argument(
619+
'--hidden',
620+
action='store_true',
621+
default=False,
622+
help=_('List hidden images'),
623+
)
618624
parser.add_argument(
619625
'--long',
620626
action='store_true',
@@ -686,6 +692,8 @@ def take_action(self, parsed_args):
686692
parsed_args.project_domain,
687693
).id
688694
kwargs['owner'] = project_id
695+
if parsed_args.hidden:
696+
kwargs['is_hidden'] = True
689697
if parsed_args.long:
690698
columns = (
691699
'ID',
@@ -1016,6 +1024,22 @@ def get_parser(self, prog_name):
10161024
action="store_true",
10171025
help=_("Reset the image membership to 'pending'"),
10181026
)
1027+
1028+
hidden_group = parser.add_mutually_exclusive_group()
1029+
hidden_group.add_argument(
1030+
"--hidden",
1031+
dest='hidden',
1032+
default=None,
1033+
action="store_true",
1034+
help=_("Hide the image"),
1035+
)
1036+
hidden_group.add_argument(
1037+
"--unhidden",
1038+
dest='hidden',
1039+
default=None,
1040+
action="store_false",
1041+
help=_("Unhide the image"),
1042+
)
10191043
return parser
10201044

10211045
def take_action(self, parsed_args):
@@ -1106,6 +1130,9 @@ def take_action(self, parsed_args):
11061130
# Tags should be extended, but duplicates removed
11071131
kwargs['tags'] = list(set(image.tags).union(set(parsed_args.tags)))
11081132

1133+
if parsed_args.hidden is not None:
1134+
kwargs['is_hidden'] = parsed_args.hidden
1135+
11091136
try:
11101137
image = image_client.update_image(image.id, **kwargs)
11111138
except Exception:

openstackclient/tests/unit/image/v2/test_image.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -837,6 +837,20 @@ def test_image_list_status_option(self):
837837
status='active'
838838
)
839839

840+
def test_image_list_hidden_option(self):
841+
arglist = [
842+
'--hidden',
843+
]
844+
verifylist = [
845+
('hidden', True),
846+
]
847+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
848+
849+
columns, data = self.cmd.take_action(parsed_args)
850+
self.client.images.assert_called_with(
851+
is_hidden=True
852+
)
853+
840854
def test_image_list_tag_option(self):
841855
arglist = [
842856
'--tag', 'abc',
@@ -1439,6 +1453,60 @@ def test_image_set_numeric_options_to_zero(self):
14391453
)
14401454
self.assertIsNone(result)
14411455

1456+
def test_image_set_hidden(self):
1457+
arglist = [
1458+
'--hidden',
1459+
'--public',
1460+
image_fakes.image_name,
1461+
]
1462+
verifylist = [
1463+
('hidden', True),
1464+
('public', True),
1465+
('private', False),
1466+
('image', image_fakes.image_name),
1467+
]
1468+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1469+
1470+
result = self.cmd.take_action(parsed_args)
1471+
1472+
kwargs = {
1473+
'is_hidden': True,
1474+
'visibility': 'public',
1475+
}
1476+
# ImageManager.update(image, **kwargs)
1477+
self.client.update_image.assert_called_with(
1478+
self._image.id,
1479+
**kwargs
1480+
)
1481+
self.assertIsNone(result)
1482+
1483+
def test_image_set_unhidden(self):
1484+
arglist = [
1485+
'--unhidden',
1486+
'--public',
1487+
image_fakes.image_name,
1488+
]
1489+
verifylist = [
1490+
('hidden', False),
1491+
('public', True),
1492+
('private', False),
1493+
('image', image_fakes.image_name),
1494+
]
1495+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1496+
1497+
result = self.cmd.take_action(parsed_args)
1498+
1499+
kwargs = {
1500+
'is_hidden': False,
1501+
'visibility': 'public',
1502+
}
1503+
# ImageManager.update(image, **kwargs)
1504+
self.client.update_image.assert_called_with(
1505+
self._image.id,
1506+
**kwargs
1507+
)
1508+
self.assertIsNone(result)
1509+
14421510

14431511
class TestImageShow(TestImage):
14441512

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
features:
3+
- |
4+
Add mutually exclusive options ``--hidden`` and ``--unhidden`` to
5+
``image set`` command to hide or unhide an image (``is_hidden``
6+
attribute).
7+
- |
8+
Add option ``--hidden`` to ``image list`` command to list hidden images.

0 commit comments

Comments
 (0)