Merge "Add is_shared to security_groups"

This commit is contained in:
Zuul
2025-07-15 15:32:51 +00:00
committed by Gerrit Code Review
4 changed files with 53 additions and 8 deletions

View File

@@ -90,10 +90,7 @@ def _get_columns(item):
column_map = {
'security_group_rules': 'rules',
}
# FIXME(lajoskatona): Stop hiding is_shared when
# https://review.opendev.org/c/openstack/openstacksdk/+/950305
# is released and SDK version is bumped
hidden_columns = ['location', 'tenant_id', 'is_shared']
hidden_columns = ['location', 'tenant_id']
return utils.get_osc_show_columns_for_sdk_resource(
item, column_map, hidden_columns
)
@@ -225,7 +222,14 @@ class DeleteSecurityGroup(common.NetworkAndComputeDelete):
# the OSC minimum requirements include SDK 1.0.
class ListSecurityGroup(common.NetworkAndComputeLister):
_description = _("List security groups")
FIELDS_TO_RETRIEVE = ['id', 'name', 'description', 'project_id', 'tags']
FIELDS_TO_RETRIEVE = [
'id',
'name',
'description',
'project_id',
'tags',
'shared',
]
def update_parser_network(self, parser):
if not self.is_docs_build:
@@ -248,6 +252,23 @@ class ListSecurityGroup(common.NetworkAndComputeLister):
identity_common.add_project_domain_option_to_parser(
parser, enhance_help=self.enhance_help_neutron
)
shared_group = parser.add_mutually_exclusive_group()
shared_group.add_argument(
'--share',
action='store_true',
dest='shared',
default=None,
help=_("List security groups shared between projects"),
)
shared_group.add_argument(
'--no-share',
action='store_false',
dest='shared',
default=None,
help=_("List security groups not shared between projects"),
)
_tag.add_tag_filtering_option_to_parser(
parser, _('security group'), enhance_help=self.enhance_help_neutron
)
@@ -275,13 +296,30 @@ class ListSecurityGroup(common.NetworkAndComputeLister):
).id
filters['project_id'] = project_id
if parsed_args.shared is not None:
filters['shared'] = parsed_args.shared
_tag.get_tag_filtering_args(parsed_args, filters)
data = client.security_groups(
fields=self.FIELDS_TO_RETRIEVE, **filters
)
columns = ("id", "name", "description", "project_id", "tags")
column_headers = ("ID", "Name", "Description", "Project", "Tags")
columns = (
"id",
"name",
"description",
"project_id",
"tags",
"is_shared",
)
column_headers = (
"ID",
"Name",
"Description",
"Project",
"Tags",
"Shared",
)
return (
column_headers,
(

View File

@@ -1412,6 +1412,7 @@ def create_one_security_group(attrs=None):
'security_group_rules': [],
'tags': [],
'location': 'MUNCHMUNCHMUNCH',
'is_shared': False,
}
# Overwrite default attributes.

View File

@@ -42,6 +42,7 @@ class TestCreateSecurityGroupNetwork(TestSecurityGroupNetwork):
'created_at',
'description',
'id',
'is_shared',
'name',
'project_id',
'revision_number',
@@ -55,6 +56,7 @@ class TestCreateSecurityGroupNetwork(TestSecurityGroupNetwork):
_security_group.created_at,
_security_group.description,
_security_group.id,
_security_group.is_shared,
_security_group.name,
_security_group.project_id,
_security_group.revision_number,
@@ -274,6 +276,7 @@ class TestListSecurityGroupNetwork(TestSecurityGroupNetwork):
'Description',
'Project',
'Tags',
'Shared',
)
data = []
@@ -285,6 +288,7 @@ class TestListSecurityGroupNetwork(TestSecurityGroupNetwork):
grp.description,
grp.project_id,
grp.tags,
grp.is_shared,
)
)
@@ -524,6 +528,7 @@ class TestShowSecurityGroupNetwork(TestSecurityGroupNetwork):
'created_at',
'description',
'id',
'is_shared',
'name',
'project_id',
'revision_number',
@@ -537,6 +542,7 @@ class TestShowSecurityGroupNetwork(TestSecurityGroupNetwork):
_security_group.created_at,
_security_group.description,
_security_group.id,
_security_group.is_shared,
_security_group.name,
_security_group.project_id,
_security_group.revision_number,

View File

@@ -7,7 +7,7 @@ pbr!=2.1.0,>=2.0.0 # Apache-2.0
cryptography>=2.7 # BSD/Apache-2.0
cliff>=4.8.0 # Apache-2.0
iso8601>=0.1.11 # MIT
openstacksdk>=4.5.0 # Apache-2.0
openstacksdk>=4.6.0 # Apache-2.0
osc-lib>=2.3.0 # Apache-2.0
oslo.i18n>=3.15.3 # Apache-2.0
python-keystoneclient>=3.22.0 # Apache-2.0