python-openstackclient 10.0.0__py3-none-any.whl → 10.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openstackclient/common/availability_zone.py +1 -1
- openstackclient/common/module.py +21 -27
- openstackclient/common/pagination.py +42 -4
- openstackclient/common/project_cleanup.py +1 -2
- openstackclient/common/quota.py +9 -5
- openstackclient/compute/v2/flavor.py +3 -1
- openstackclient/compute/v2/hypervisor.py +2 -0
- openstackclient/compute/v2/keypair.py +6 -2
- openstackclient/compute/v2/server.py +21 -12
- openstackclient/compute/v2/server_event.py +8 -1
- openstackclient/compute/v2/server_group.py +2 -0
- openstackclient/compute/v2/server_migration.py +3 -0
- openstackclient/compute/v2/server_volume.py +3 -1
- openstackclient/compute/v2/service.py +3 -1
- openstackclient/compute/v2/usage.py +2 -2
- openstackclient/identity/common.py +5 -1
- openstackclient/identity/v3/access_rule.py +6 -0
- openstackclient/identity/v3/application_credential.py +10 -3
- openstackclient/identity/v3/credential.py +4 -2
- openstackclient/identity/v3/domain.py +4 -2
- openstackclient/identity/v3/endpoint.py +57 -45
- openstackclient/identity/v3/federation_protocol.py +7 -5
- openstackclient/identity/v3/group.py +11 -10
- openstackclient/identity/v3/identity_provider.py +4 -1
- openstackclient/identity/v3/limit.py +5 -2
- openstackclient/identity/v3/mapping.py +36 -19
- openstackclient/identity/v3/project.py +18 -5
- openstackclient/identity/v3/region.py +4 -2
- openstackclient/identity/v3/registered_limit.py +3 -2
- openstackclient/identity/v3/role.py +2 -1
- openstackclient/identity/v3/role_assignment.py +3 -2
- openstackclient/identity/v3/service.py +4 -2
- openstackclient/identity/v3/service_provider.py +4 -2
- openstackclient/identity/v3/trust.py +8 -5
- openstackclient/identity/v3/user.py +38 -11
- openstackclient/image/v2/cache.py +2 -2
- openstackclient/image/v2/image.py +15 -9
- openstackclient/image/v2/metadef_namespaces.py +11 -10
- openstackclient/image/v2/metadef_objects.py +5 -5
- openstackclient/image/v2/metadef_properties.py +7 -4
- openstackclient/image/v2/task.py +11 -22
- openstackclient/network/utils.py +0 -41
- openstackclient/network/v2/address_group.py +13 -1
- openstackclient/network/v2/address_scope.py +13 -8
- openstackclient/network/v2/bgpvpn/bgpvpn.py +33 -19
- openstackclient/network/v2/bgpvpn/network_association.py +25 -13
- openstackclient/network/v2/bgpvpn/port_association.py +35 -21
- openstackclient/network/v2/bgpvpn/router_association.py +27 -14
- openstackclient/network/v2/default_security_group_rule.py +14 -6
- openstackclient/network/v2/floating_ip.py +12 -4
- openstackclient/network/v2/floating_ip_port_forwarding.py +12 -2
- openstackclient/network/v2/fwaas/group.py +34 -1
- openstackclient/network/v2/fwaas/rule.py +39 -3
- openstackclient/network/v2/ip_availability.py +13 -4
- openstackclient/network/v2/l3_conntrack_helper.py +14 -1
- openstackclient/network/v2/local_ip.py +4 -1
- openstackclient/network/v2/local_ip_association.py +4 -1
- openstackclient/network/v2/ndp_proxy.py +4 -1
- openstackclient/network/v2/network.py +87 -20
- openstackclient/network/v2/network_agent.py +32 -10
- openstackclient/network/v2/network_auto_allocated_topology.py +6 -5
- openstackclient/network/v2/network_flavor.py +19 -6
- openstackclient/network/v2/network_flavor_profile.py +20 -6
- openstackclient/network/v2/network_meter.py +19 -6
- openstackclient/network/v2/network_meter_rule.py +20 -2
- openstackclient/network/v2/network_qos_policy.py +15 -7
- openstackclient/network/v2/network_qos_rule.py +16 -1
- openstackclient/network/v2/network_qos_rule_type.py +16 -5
- openstackclient/network/v2/network_rbac.py +12 -5
- openstackclient/network/v2/network_segment.py +13 -1
- openstackclient/network/v2/network_segment_range.py +15 -3
- openstackclient/network/v2/network_trunk.py +4 -1
- openstackclient/network/v2/port.py +88 -12
- openstackclient/network/v2/router.py +27 -16
- openstackclient/network/v2/security_group.py +18 -49
- openstackclient/network/v2/security_group_rule.py +18 -5
- openstackclient/network/v2/subnet.py +15 -7
- openstackclient/network/v2/subnet_pool.py +13 -8
- openstackclient/network/v2/taas/tap_flow.py +13 -3
- openstackclient/network/v2/taas/tap_mirror.py +7 -4
- openstackclient/network/v2/taas/tap_service.py +4 -1
- openstackclient/object/v1/container.py +3 -1
- openstackclient/object/v1/object.py +3 -1
- openstackclient/tests/functional/identity/v3/common.py +34 -0
- openstackclient/tests/functional/identity/v3/test_application_credential.py +1 -1
- openstackclient/tests/functional/identity/v3/test_mapping.py +81 -0
- openstackclient/tests/functional/volume/v3/test_volume_group.py +163 -0
- openstackclient/tests/unit/common/test_limits.py +1 -1
- openstackclient/tests/unit/common/test_module.py +77 -44
- openstackclient/tests/unit/common/test_quota.py +9 -0
- openstackclient/tests/unit/compute/v2/fakes.py +1 -57
- openstackclient/tests/unit/compute/v2/test_agent.py +4 -4
- openstackclient/tests/unit/compute/v2/test_aggregate.py +1 -1
- openstackclient/tests/unit/compute/v2/test_console.py +2 -2
- openstackclient/tests/unit/compute/v2/test_console_connection.py +1 -1
- openstackclient/tests/unit/compute/v2/test_flavor.py +1 -1
- openstackclient/tests/unit/compute/v2/test_host.py +3 -3
- openstackclient/tests/unit/compute/v2/test_hypervisor.py +2 -2
- openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +1 -1
- openstackclient/tests/unit/compute/v2/test_keypair.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server.py +15 -15
- openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_event.py +2 -2
- openstackclient/tests/unit/compute/v2/test_server_group.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_image.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_migration.py +4 -4
- openstackclient/tests/unit/compute/v2/test_server_share.py +4 -4
- openstackclient/tests/unit/compute/v2/test_server_volume.py +2 -2
- openstackclient/tests/unit/compute/v2/test_service.py +3 -3
- openstackclient/tests/unit/compute/v2/test_usage.py +1 -1
- openstackclient/tests/unit/identity/v2_0/fakes.py +3 -7
- openstackclient/tests/unit/identity/v2_0/test_endpoint.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_project.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_role.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_service.py +1 -1
- openstackclient/tests/unit/identity/v2_0/test_token.py +2 -2
- openstackclient/tests/unit/identity/v2_0/test_user.py +1 -1
- openstackclient/tests/unit/identity/v3/fakes.py +5 -38
- openstackclient/tests/unit/identity/v3/test_access_rule.py +3 -3
- openstackclient/tests/unit/identity/v3/test_application_credential.py +4 -4
- openstackclient/tests/unit/identity/v3/test_credential.py +5 -5
- openstackclient/tests/unit/identity/v3/test_domain.py +5 -5
- openstackclient/tests/unit/identity/v3/test_endpoint.py +6 -6
- openstackclient/tests/unit/identity/v3/test_endpoint_group.py +1 -1
- openstackclient/tests/unit/identity/v3/test_group.py +8 -8
- openstackclient/tests/unit/identity/v3/test_implied_role.py +1 -1
- openstackclient/tests/unit/identity/v3/test_limit.py +5 -5
- openstackclient/tests/unit/identity/v3/test_mappings.py +163 -79
- openstackclient/tests/unit/identity/v3/test_project.py +28 -5
- openstackclient/tests/unit/identity/v3/test_protocol.py +3 -3
- openstackclient/tests/unit/identity/v3/test_region.py +5 -5
- openstackclient/tests/unit/identity/v3/test_registered_limit.py +5 -5
- openstackclient/tests/unit/identity/v3/test_role.py +8 -8
- openstackclient/tests/unit/identity/v3/test_role_assignment.py +1 -1
- openstackclient/tests/unit/identity/v3/test_service.py +5 -5
- openstackclient/tests/unit/identity/v3/test_token.py +2 -2
- openstackclient/tests/unit/identity/v3/test_trust.py +4 -4
- openstackclient/tests/unit/identity/v3/test_user.py +73 -6
- openstackclient/tests/unit/network/v2/fakes.py +5 -77
- openstackclient/tests/unit/network/v2/fwaas/test_group.py +28 -2
- openstackclient/tests/unit/network/v2/fwaas/test_rule.py +28 -3
- openstackclient/tests/unit/network/v2/test_address_group.py +24 -0
- openstackclient/tests/unit/network/v2/test_address_scope.py +24 -0
- openstackclient/tests/unit/network/v2/test_floating_ip.py +24 -0
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +24 -0
- openstackclient/tests/unit/network/v2/test_ip_availability.py +25 -0
- openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +29 -3
- openstackclient/tests/unit/network/v2/test_network.py +74 -12
- openstackclient/tests/unit/network/v2/test_network_agent.py +50 -1
- openstackclient/tests/unit/network/v2/test_network_flavor.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_meter.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_rbac.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_segment.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +24 -0
- openstackclient/tests/unit/network/v2/test_port.py +166 -0
- openstackclient/tests/unit/network/v2/test_router.py +28 -7
- openstackclient/tests/unit/network/v2/test_security_group.py +22 -0
- openstackclient/tests/unit/network/v2/test_security_group_rule.py +25 -0
- openstackclient/tests/unit/network/v2/test_subnet.py +28 -4
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +24 -0
- openstackclient/tests/unit/volume/v2/fakes.py +20 -140
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +5 -9
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +6 -0
- openstackclient/tests/unit/volume/v3/fakes.py +204 -100
- openstackclient/tests/unit/volume/v3/test_backup_record.py +114 -0
- openstackclient/tests/unit/volume/v3/test_consistency_group.py +720 -0
- openstackclient/tests/unit/volume/v3/test_consistency_group_snapshot.py +354 -0
- openstackclient/tests/unit/volume/v3/test_qos_specs.py +455 -0
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +2 -0
- openstackclient/tests/unit/volume/v3/test_volume_backend.py +158 -0
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +5 -9
- openstackclient/tests/unit/volume/v3/test_volume_group_type.py +65 -0
- openstackclient/tests/unit/volume/v3/test_volume_host.py +115 -0
- openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +6 -0
- openstackclient/volume/v2/volume.py +4 -2
- openstackclient/volume/v2/volume_backup.py +2 -3
- openstackclient/volume/v2/volume_snapshot.py +3 -4
- openstackclient/volume/v3/backup_record.py +94 -0
- openstackclient/volume/v3/consistency_group.py +400 -0
- openstackclient/volume/v3/consistency_group_snapshot.py +225 -0
- openstackclient/volume/v3/qos_specs.py +389 -0
- openstackclient/volume/v3/volume.py +4 -2
- openstackclient/volume/v3/volume_attachment.py +5 -1
- openstackclient/volume/v3/volume_backend.py +130 -0
- openstackclient/volume/v3/volume_backup.py +2 -3
- openstackclient/volume/v3/volume_group_snapshot.py +4 -6
- openstackclient/volume/v3/volume_group_type.py +1 -1
- openstackclient/volume/v3/volume_host.py +74 -0
- openstackclient/volume/v3/volume_message.py +3 -1
- openstackclient/volume/v3/volume_snapshot.py +2 -1
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/METADATA +3 -4
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/RECORD +202 -188
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/entry_points.txt +24 -24
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/licenses/AUTHORS +5 -0
- python_openstackclient-10.1.0.dist-info/pbr.json +1 -0
- python_openstackclient-10.0.0.dist-info/pbr.json +0 -1
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/WHEEL +0 -0
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/licenses/LICENSE +0 -0
- {python_openstackclient-10.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/top_level.txt +0 -0
|
@@ -19,11 +19,13 @@ from collections.abc import Iterable, Sequence
|
|
|
19
19
|
from typing import Any
|
|
20
20
|
|
|
21
21
|
from cliff import columns as cliff_columns
|
|
22
|
+
from openstack.network.v2 import agent as _agent
|
|
22
23
|
from osc_lib.cli import format_columns
|
|
23
24
|
from osc_lib import exceptions
|
|
24
25
|
from osc_lib import utils
|
|
25
26
|
|
|
26
27
|
from openstackclient import command
|
|
28
|
+
from openstackclient.common import pagination
|
|
27
29
|
from openstackclient.i18n import _
|
|
28
30
|
|
|
29
31
|
LOG = logging.getLogger(__name__)
|
|
@@ -48,7 +50,9 @@ _formatters = {
|
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
|
|
51
|
-
def _get_network_columns(
|
|
53
|
+
def _get_network_columns(
|
|
54
|
+
item: _agent.Agent,
|
|
55
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
52
56
|
column_data_mapping = {
|
|
53
57
|
'admin_state_up': 'is_admin_state_up',
|
|
54
58
|
'agent_type': 'agent_type',
|
|
@@ -118,6 +122,15 @@ class AddRouterToAgent(command.Command):
|
|
|
118
122
|
parser.add_argument(
|
|
119
123
|
'--l3', action='store_true', help=_('Add router to an L3 agent')
|
|
120
124
|
)
|
|
125
|
+
parser.add_argument(
|
|
126
|
+
'--ha-chassis-priority',
|
|
127
|
+
metavar='<ha-chassis-priority>',
|
|
128
|
+
type=int,
|
|
129
|
+
help=_(
|
|
130
|
+
"HA Chassis priority, ranging from [0, 32767]. "
|
|
131
|
+
"Only used with --l3 and for ML2/OVN L3 agents"
|
|
132
|
+
),
|
|
133
|
+
)
|
|
121
134
|
parser.add_argument(
|
|
122
135
|
'agent_id',
|
|
123
136
|
metavar='<agent-id>',
|
|
@@ -136,7 +149,11 @@ class AddRouterToAgent(command.Command):
|
|
|
136
149
|
agent = client.get_agent(parsed_args.agent_id)
|
|
137
150
|
router = client.find_router(parsed_args.router, ignore_missing=False)
|
|
138
151
|
if parsed_args.l3:
|
|
139
|
-
client.add_router_to_agent(
|
|
152
|
+
client.add_router_to_agent(
|
|
153
|
+
agent,
|
|
154
|
+
router,
|
|
155
|
+
ha_chassis_priority=parsed_args.ha_chassis_priority,
|
|
156
|
+
)
|
|
140
157
|
|
|
141
158
|
|
|
142
159
|
class DeleteNetworkAgent(command.Command):
|
|
@@ -177,8 +194,6 @@ class DeleteNetworkAgent(command.Command):
|
|
|
177
194
|
raise exceptions.CommandError(msg)
|
|
178
195
|
|
|
179
196
|
|
|
180
|
-
# TODO(huanxuan): Use the SDK resource mapped attribute names once the
|
|
181
|
-
# OSC minimum requirements include SDK 1.0.
|
|
182
197
|
class ListNetworkAgent(command.Lister):
|
|
183
198
|
_description = _("List network agents")
|
|
184
199
|
_supported_agents = {
|
|
@@ -235,6 +250,7 @@ class ListNetworkAgent(command.Lister):
|
|
|
235
250
|
default=False,
|
|
236
251
|
help=_("List additional fields in output"),
|
|
237
252
|
)
|
|
253
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
238
254
|
|
|
239
255
|
return parser
|
|
240
256
|
|
|
@@ -262,12 +278,19 @@ class ListNetworkAgent(command.Lister):
|
|
|
262
278
|
)
|
|
263
279
|
|
|
264
280
|
filters = {}
|
|
265
|
-
|
|
281
|
+
if parsed_args.marker is not None:
|
|
282
|
+
filters['marker'] = parsed_args.marker
|
|
283
|
+
if parsed_args.limit is not None:
|
|
284
|
+
filters['limit'] = parsed_args.limit
|
|
285
|
+
if parsed_args.max_items is not None:
|
|
286
|
+
filters['max_items'] = parsed_args.max_items
|
|
287
|
+
|
|
288
|
+
data: list[_agent.Agent]
|
|
266
289
|
if parsed_args.network is not None:
|
|
267
290
|
network = client.find_network(
|
|
268
291
|
parsed_args.network, ignore_missing=False
|
|
269
292
|
)
|
|
270
|
-
data = client.network_hosting_dhcp_agents(network)
|
|
293
|
+
data = list(client.network_hosting_dhcp_agents(network))
|
|
271
294
|
elif parsed_args.router is not None:
|
|
272
295
|
if parsed_args.long:
|
|
273
296
|
columns += ('ha_state',)
|
|
@@ -275,7 +298,7 @@ class ListNetworkAgent(command.Lister):
|
|
|
275
298
|
router = client.find_router(
|
|
276
299
|
parsed_args.router, ignore_missing=False
|
|
277
300
|
)
|
|
278
|
-
data = client.routers_hosting_l3_agents(router)
|
|
301
|
+
data = list(client.routers_hosting_l3_agents(router))
|
|
279
302
|
else:
|
|
280
303
|
if parsed_args.agent_type is not None:
|
|
281
304
|
filters['agent_type'] = self._supported_agents[
|
|
@@ -284,7 +307,8 @@ class ListNetworkAgent(command.Lister):
|
|
|
284
307
|
if parsed_args.host is not None:
|
|
285
308
|
filters['host'] = parsed_args.host
|
|
286
309
|
|
|
287
|
-
data = client.agents(**filters)
|
|
310
|
+
data = list(client.agents(**filters))
|
|
311
|
+
|
|
288
312
|
return (
|
|
289
313
|
column_headers,
|
|
290
314
|
(
|
|
@@ -365,8 +389,6 @@ class RemoveRouterFromAgent(command.Command):
|
|
|
365
389
|
client.remove_router_from_agent(agent, router)
|
|
366
390
|
|
|
367
391
|
|
|
368
|
-
# TODO(huanxuan): Use the SDK resource mapped attribute names once the
|
|
369
|
-
# OSC minimum requirements include SDK 1.0.
|
|
370
392
|
class SetNetworkAgent(command.Command):
|
|
371
393
|
_description = _("Set network agent properties")
|
|
372
394
|
|
|
@@ -18,6 +18,9 @@ import logging
|
|
|
18
18
|
from collections.abc import Iterable, Sequence
|
|
19
19
|
from typing import Any
|
|
20
20
|
|
|
21
|
+
from openstack.network.v2 import (
|
|
22
|
+
auto_allocated_topology as _auto_allocated_topology,
|
|
23
|
+
)
|
|
21
24
|
from osc_lib import utils
|
|
22
25
|
|
|
23
26
|
from openstackclient import command
|
|
@@ -27,7 +30,9 @@ from openstackclient.identity import common as identity_common
|
|
|
27
30
|
LOG = logging.getLogger(__name__)
|
|
28
31
|
|
|
29
32
|
|
|
30
|
-
def _get_columns(
|
|
33
|
+
def _get_columns(
|
|
34
|
+
item: _auto_allocated_topology.AutoAllocatedTopology,
|
|
35
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
31
36
|
hidden_columns = ['name', 'location', 'tenant_id']
|
|
32
37
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
33
38
|
item, {}, hidden_columns
|
|
@@ -63,8 +68,6 @@ def _get_attrs(
|
|
|
63
68
|
return attrs
|
|
64
69
|
|
|
65
70
|
|
|
66
|
-
# TODO(ankur-gupta-f): Use the SDK resource mapped attribute names once the
|
|
67
|
-
# OSC minimum requirements include SDK 1.0.
|
|
68
71
|
class CreateAutoAllocatedTopology(command.ShowOne):
|
|
69
72
|
_description = _("Create the auto allocated topology for project")
|
|
70
73
|
|
|
@@ -130,8 +133,6 @@ class CreateAutoAllocatedTopology(command.ShowOne):
|
|
|
130
133
|
return (columns, data)
|
|
131
134
|
|
|
132
135
|
|
|
133
|
-
# TODO(ankur-gupta-f): Use the SDK resource mapped attribute names once the
|
|
134
|
-
# OSC minimum requirements include SDK 1.0.
|
|
135
136
|
class DeleteAutoAllocatedTopology(command.Command):
|
|
136
137
|
_description = _("Delete auto allocated topology for project")
|
|
137
138
|
|
|
@@ -18,10 +18,12 @@ import logging
|
|
|
18
18
|
from collections.abc import Iterable, Sequence
|
|
19
19
|
from typing import Any
|
|
20
20
|
|
|
21
|
+
from openstack.network.v2 import flavor as _flavor
|
|
21
22
|
from osc_lib import exceptions
|
|
22
23
|
from osc_lib import utils
|
|
23
24
|
|
|
24
25
|
from openstackclient import command
|
|
26
|
+
from openstackclient.common import pagination
|
|
25
27
|
from openstackclient.i18n import _
|
|
26
28
|
from openstackclient.identity import common as identity_common
|
|
27
29
|
from openstackclient.network import common
|
|
@@ -29,7 +31,9 @@ from openstackclient.network import common
|
|
|
29
31
|
LOG = logging.getLogger(__name__)
|
|
30
32
|
|
|
31
33
|
|
|
32
|
-
def _get_columns(
|
|
34
|
+
def _get_columns(
|
|
35
|
+
item: _flavor.Flavor,
|
|
36
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
33
37
|
column_map = {
|
|
34
38
|
'is_enabled': 'enabled',
|
|
35
39
|
}
|
|
@@ -92,8 +96,6 @@ class AddNetworkFlavorToProfile(command.Command):
|
|
|
92
96
|
)
|
|
93
97
|
|
|
94
98
|
|
|
95
|
-
# TODO(dasanind): Use the SDK resource mapped attribute names once the
|
|
96
|
-
# OSC minimum requirements include SDK 1.0.
|
|
97
99
|
class CreateNetworkFlavor(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
98
100
|
_description = _("Create new network flavor")
|
|
99
101
|
|
|
@@ -192,6 +194,11 @@ class DeleteNetworkFlavor(command.Command):
|
|
|
192
194
|
class ListNetworkFlavor(command.Lister):
|
|
193
195
|
_description = _("List network flavors")
|
|
194
196
|
|
|
197
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
198
|
+
parser = super().get_parser(prog_name)
|
|
199
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
200
|
+
return parser
|
|
201
|
+
|
|
195
202
|
def take_action(
|
|
196
203
|
self, parsed_args: argparse.Namespace
|
|
197
204
|
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
@@ -206,7 +213,15 @@ class ListNetworkFlavor(command.Lister):
|
|
|
206
213
|
'Description',
|
|
207
214
|
)
|
|
208
215
|
|
|
209
|
-
|
|
216
|
+
filters = {}
|
|
217
|
+
if parsed_args.marker is not None:
|
|
218
|
+
filters['marker'] = parsed_args.marker
|
|
219
|
+
if parsed_args.limit is not None:
|
|
220
|
+
filters['limit'] = parsed_args.limit
|
|
221
|
+
if parsed_args.max_items is not None:
|
|
222
|
+
filters['max_items'] = parsed_args.max_items
|
|
223
|
+
|
|
224
|
+
data = client.flavors(**filters)
|
|
210
225
|
return (
|
|
211
226
|
column_headers,
|
|
212
227
|
(
|
|
@@ -247,8 +262,6 @@ class RemoveNetworkFlavorFromProfile(command.Command):
|
|
|
247
262
|
)
|
|
248
263
|
|
|
249
264
|
|
|
250
|
-
# TODO(dasanind): Use only the SDK resource mapped attribute names once the
|
|
251
|
-
# OSC minimum requirements include SDK 1.0.
|
|
252
265
|
class SetNetworkFlavor(common.NeutronCommandWithExtraArgs):
|
|
253
266
|
_description = _("Set network flavor properties")
|
|
254
267
|
|
|
@@ -16,17 +16,21 @@ import logging
|
|
|
16
16
|
from collections.abc import Iterable, Sequence
|
|
17
17
|
from typing import Any
|
|
18
18
|
|
|
19
|
+
from openstack.network.v2 import service_profile as _service_profile
|
|
19
20
|
from osc_lib import exceptions
|
|
20
21
|
from osc_lib import utils
|
|
21
22
|
|
|
22
23
|
from openstackclient import command
|
|
24
|
+
from openstackclient.common import pagination
|
|
23
25
|
from openstackclient.i18n import _
|
|
24
26
|
from openstackclient.network import common
|
|
25
27
|
|
|
26
28
|
LOG = logging.getLogger(__name__)
|
|
27
29
|
|
|
28
30
|
|
|
29
|
-
def _get_columns(
|
|
31
|
+
def _get_columns(
|
|
32
|
+
item: _service_profile.ServiceProfile,
|
|
33
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
30
34
|
column_map = {
|
|
31
35
|
'is_enabled': 'enabled',
|
|
32
36
|
}
|
|
@@ -55,8 +59,6 @@ def _get_attrs(
|
|
|
55
59
|
return attrs
|
|
56
60
|
|
|
57
61
|
|
|
58
|
-
# TODO(ndahiwade): Use the SDK resource mapped attribute names once the
|
|
59
|
-
# OSC minimum requirements include SDK 1.0.
|
|
60
62
|
class CreateNetworkFlavorProfile(
|
|
61
63
|
command.ShowOne, common.NeutronCommandWithExtraArgs
|
|
62
64
|
):
|
|
@@ -161,6 +163,11 @@ class DeleteNetworkFlavorProfile(command.Command):
|
|
|
161
163
|
class ListNetworkFlavorProfile(command.Lister):
|
|
162
164
|
_description = _("List network flavor profile(s)")
|
|
163
165
|
|
|
166
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
167
|
+
parser = super().get_parser(prog_name)
|
|
168
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
169
|
+
return parser
|
|
170
|
+
|
|
164
171
|
def take_action(
|
|
165
172
|
self, parsed_args: argparse.Namespace
|
|
166
173
|
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
@@ -181,7 +188,16 @@ class ListNetworkFlavorProfile(command.Lister):
|
|
|
181
188
|
'Description',
|
|
182
189
|
)
|
|
183
190
|
|
|
184
|
-
|
|
191
|
+
filters = {}
|
|
192
|
+
if parsed_args.marker is not None:
|
|
193
|
+
filters['marker'] = parsed_args.marker
|
|
194
|
+
if parsed_args.limit is not None:
|
|
195
|
+
filters['limit'] = parsed_args.limit
|
|
196
|
+
if parsed_args.max_items is not None:
|
|
197
|
+
filters['max_items'] = parsed_args.max_items
|
|
198
|
+
|
|
199
|
+
data = client.service_profiles(**filters)
|
|
200
|
+
|
|
185
201
|
return (
|
|
186
202
|
column_headers,
|
|
187
203
|
(
|
|
@@ -194,8 +210,6 @@ class ListNetworkFlavorProfile(command.Lister):
|
|
|
194
210
|
)
|
|
195
211
|
|
|
196
212
|
|
|
197
|
-
# TODO(ndahiwade): Use the SDK resource mapped attribute names once the
|
|
198
|
-
# OSC minimum requirements include SDK 1.0.
|
|
199
213
|
class SetNetworkFlavorProfile(common.NeutronCommandWithExtraArgs):
|
|
200
214
|
_description = _("Set network flavor profile properties")
|
|
201
215
|
|
|
@@ -18,10 +18,12 @@ import logging
|
|
|
18
18
|
from collections.abc import Iterable, Sequence
|
|
19
19
|
from typing import Any
|
|
20
20
|
|
|
21
|
+
from openstack.network.v2 import metering_label as _metering_label
|
|
21
22
|
from osc_lib import exceptions
|
|
22
23
|
from osc_lib import utils
|
|
23
24
|
|
|
24
25
|
from openstackclient import command
|
|
26
|
+
from openstackclient.common import pagination
|
|
25
27
|
from openstackclient.i18n import _
|
|
26
28
|
from openstackclient.identity import common as identity_common
|
|
27
29
|
from openstackclient.network import common
|
|
@@ -29,7 +31,9 @@ from openstackclient.network import common
|
|
|
29
31
|
LOG = logging.getLogger(__name__)
|
|
30
32
|
|
|
31
33
|
|
|
32
|
-
def _get_columns(
|
|
34
|
+
def _get_columns(
|
|
35
|
+
item: _metering_label.MeteringLabel,
|
|
36
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
33
37
|
column_map = {
|
|
34
38
|
'is_shared': 'shared',
|
|
35
39
|
}
|
|
@@ -64,8 +68,6 @@ def _get_attrs(
|
|
|
64
68
|
return attrs
|
|
65
69
|
|
|
66
70
|
|
|
67
|
-
# TODO(ankur-gupta-f): Use the SDK resource mapped attribute names once the
|
|
68
|
-
# OSC minimum requirements include SDK 1.0.
|
|
69
71
|
class CreateMeter(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
70
72
|
_description = _("Create network meter")
|
|
71
73
|
|
|
@@ -119,8 +121,6 @@ class CreateMeter(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
119
121
|
return (display_columns, data)
|
|
120
122
|
|
|
121
123
|
|
|
122
|
-
# TODO(ankur-gupta-f): Use the SDK resource mapped attribute names once the
|
|
123
|
-
# OSC minimum requirements include SDK 1.0.
|
|
124
124
|
class DeleteMeter(command.Command):
|
|
125
125
|
_description = _("Delete network meter")
|
|
126
126
|
|
|
@@ -161,6 +161,11 @@ class DeleteMeter(command.Command):
|
|
|
161
161
|
class ListMeter(command.Lister):
|
|
162
162
|
_description = _("List network meters")
|
|
163
163
|
|
|
164
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
165
|
+
parser = super().get_parser(prog_name)
|
|
166
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
167
|
+
return parser
|
|
168
|
+
|
|
164
169
|
def take_action(
|
|
165
170
|
self, parsed_args: argparse.Namespace
|
|
166
171
|
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
@@ -179,7 +184,15 @@ class ListMeter(command.Lister):
|
|
|
179
184
|
'Shared',
|
|
180
185
|
)
|
|
181
186
|
|
|
182
|
-
|
|
187
|
+
filters = {}
|
|
188
|
+
if parsed_args.marker is not None:
|
|
189
|
+
filters['marker'] = parsed_args.marker
|
|
190
|
+
if parsed_args.limit is not None:
|
|
191
|
+
filters['limit'] = parsed_args.limit
|
|
192
|
+
if parsed_args.max_items is not None:
|
|
193
|
+
filters['max_items'] = parsed_args.max_items
|
|
194
|
+
|
|
195
|
+
data = client.metering_labels(**filters)
|
|
183
196
|
return (
|
|
184
197
|
column_headers,
|
|
185
198
|
(
|
|
@@ -18,10 +18,12 @@ import logging
|
|
|
18
18
|
from collections.abc import Iterable, Sequence
|
|
19
19
|
from typing import Any
|
|
20
20
|
|
|
21
|
+
from openstack.network.v2 import metering_label_rule as _metering_label_rule
|
|
21
22
|
from osc_lib import exceptions
|
|
22
23
|
from osc_lib import utils
|
|
23
24
|
|
|
24
25
|
from openstackclient import command
|
|
26
|
+
from openstackclient.common import pagination
|
|
25
27
|
from openstackclient.i18n import _
|
|
26
28
|
from openstackclient.identity import common as identity_common
|
|
27
29
|
from openstackclient.network import common
|
|
@@ -29,7 +31,9 @@ from openstackclient.network import common
|
|
|
29
31
|
LOG = logging.getLogger(__name__)
|
|
30
32
|
|
|
31
33
|
|
|
32
|
-
def _get_columns(
|
|
34
|
+
def _get_columns(
|
|
35
|
+
item: _metering_label_rule.MeteringLabelRule,
|
|
36
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
33
37
|
hidden_columns = ['location', 'tenant_id']
|
|
34
38
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
35
39
|
item, {}, hidden_columns
|
|
@@ -189,6 +193,11 @@ class DeleteMeterRule(command.Command):
|
|
|
189
193
|
class ListMeterRule(command.Lister):
|
|
190
194
|
_description = _("List meter rules")
|
|
191
195
|
|
|
196
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
197
|
+
parser = super().get_parser(prog_name)
|
|
198
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
199
|
+
return parser
|
|
200
|
+
|
|
192
201
|
def take_action(
|
|
193
202
|
self, parsed_args: argparse.Namespace
|
|
194
203
|
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
@@ -210,7 +219,16 @@ class ListMeterRule(command.Lister):
|
|
|
210
219
|
'Source IP Prefix',
|
|
211
220
|
'Destination IP Prefix',
|
|
212
221
|
)
|
|
213
|
-
|
|
222
|
+
|
|
223
|
+
filters = {}
|
|
224
|
+
if parsed_args.marker is not None:
|
|
225
|
+
filters['marker'] = parsed_args.marker
|
|
226
|
+
if parsed_args.limit is not None:
|
|
227
|
+
filters['limit'] = parsed_args.limit
|
|
228
|
+
if parsed_args.max_items is not None:
|
|
229
|
+
filters['max_items'] = parsed_args.max_items
|
|
230
|
+
|
|
231
|
+
data = client.metering_label_rules(**filters)
|
|
214
232
|
return (
|
|
215
233
|
column_headers,
|
|
216
234
|
(
|
|
@@ -19,10 +19,12 @@ import logging
|
|
|
19
19
|
from typing import Any
|
|
20
20
|
|
|
21
21
|
from cliff import columns as cliff_columns
|
|
22
|
+
from openstack.network.v2 import qos_policy as _qos_policy
|
|
22
23
|
from osc_lib import exceptions
|
|
23
24
|
from osc_lib import utils
|
|
24
25
|
|
|
25
26
|
from openstackclient import command
|
|
27
|
+
from openstackclient.common import pagination
|
|
26
28
|
from openstackclient.i18n import _
|
|
27
29
|
from openstackclient.identity import common as identity_common
|
|
28
30
|
from openstackclient.network import common
|
|
@@ -40,7 +42,9 @@ _formatters = {
|
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
|
|
43
|
-
def _get_columns(
|
|
45
|
+
def _get_columns(
|
|
46
|
+
item: _qos_policy.QoSPolicy,
|
|
47
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
44
48
|
column_map = {
|
|
45
49
|
'is_shared': 'shared',
|
|
46
50
|
}
|
|
@@ -82,8 +86,6 @@ def _get_attrs(
|
|
|
82
86
|
return attrs
|
|
83
87
|
|
|
84
88
|
|
|
85
|
-
# TODO(abhiraut): Use the SDK resource mapped attribute names once the
|
|
86
|
-
# OSC minimum requirements include SDK 1.0.
|
|
87
89
|
class CreateNetworkQosPolicy(
|
|
88
90
|
command.ShowOne, common.NeutronCommandWithExtraArgs
|
|
89
91
|
):
|
|
@@ -186,8 +188,6 @@ class DeleteNetworkQosPolicy(command.Command):
|
|
|
186
188
|
raise exceptions.CommandError(msg)
|
|
187
189
|
|
|
188
190
|
|
|
189
|
-
# TODO(abhiraut): Use only the SDK resource mapped attribute names once the
|
|
190
|
-
# OSC minimum requirements include SDK 1.0.
|
|
191
191
|
class ListNetworkQosPolicy(command.Lister):
|
|
192
192
|
_description = _("List QoS policies")
|
|
193
193
|
|
|
@@ -213,6 +213,7 @@ class ListNetworkQosPolicy(command.Lister):
|
|
|
213
213
|
action='store_true',
|
|
214
214
|
help=_("List only QoS policies not shared between projects"),
|
|
215
215
|
)
|
|
216
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
216
217
|
return parser
|
|
217
218
|
|
|
218
219
|
def take_action(
|
|
@@ -233,7 +234,16 @@ class ListNetworkQosPolicy(command.Lister):
|
|
|
233
234
|
'Default',
|
|
234
235
|
'Project',
|
|
235
236
|
)
|
|
237
|
+
|
|
236
238
|
attrs = _get_attrs(self.app.client_manager, parsed_args)
|
|
239
|
+
|
|
240
|
+
if parsed_args.marker is not None:
|
|
241
|
+
attrs['marker'] = parsed_args.marker
|
|
242
|
+
if parsed_args.limit is not None:
|
|
243
|
+
attrs['limit'] = parsed_args.limit
|
|
244
|
+
if parsed_args.max_items is not None:
|
|
245
|
+
attrs['max_items'] = parsed_args.max_items
|
|
246
|
+
|
|
237
247
|
data = client.qos_policies(**attrs)
|
|
238
248
|
return (
|
|
239
249
|
column_headers,
|
|
@@ -248,8 +258,6 @@ class ListNetworkQosPolicy(command.Lister):
|
|
|
248
258
|
)
|
|
249
259
|
|
|
250
260
|
|
|
251
|
-
# TODO(abhiraut): Use the SDK resource mapped attribute names once the
|
|
252
|
-
# OSC minimum requirements include SDK 1.0.
|
|
253
261
|
class SetNetworkQosPolicy(common.NeutronCommandWithExtraArgs):
|
|
254
262
|
_description = _("Set QoS policy properties")
|
|
255
263
|
|
|
@@ -18,6 +18,13 @@ from collections.abc import Iterable, Sequence
|
|
|
18
18
|
import itertools
|
|
19
19
|
from typing import Any, cast
|
|
20
20
|
|
|
21
|
+
from openstack.network.v2 import (
|
|
22
|
+
qos_bandwidth_limit_rule as _qos_bandwidth_limit_rule,
|
|
23
|
+
qos_dscp_marking_rule as _qos_dscp_marking_rule,
|
|
24
|
+
qos_minimum_bandwidth_rule as _qos_minimum_bandwidth_rule,
|
|
25
|
+
qos_minimum_packet_rate_rule as _qos_minimum_packet_rate_rule,
|
|
26
|
+
qos_packet_rate_limit_rule as _qos_packet_rate_limit_rule,
|
|
27
|
+
)
|
|
21
28
|
from osc_lib import exceptions
|
|
22
29
|
from osc_lib import utils
|
|
23
30
|
|
|
@@ -75,7 +82,15 @@ ACTION_SET = 'update'
|
|
|
75
82
|
ACTION_SHOW = 'get'
|
|
76
83
|
|
|
77
84
|
|
|
78
|
-
def _get_columns(
|
|
85
|
+
def _get_columns(
|
|
86
|
+
item: (
|
|
87
|
+
_qos_bandwidth_limit_rule.QoSBandwidthLimitRule
|
|
88
|
+
| _qos_dscp_marking_rule.QoSDSCPMarkingRule
|
|
89
|
+
| _qos_minimum_bandwidth_rule.QoSMinimumBandwidthRule
|
|
90
|
+
| _qos_minimum_packet_rate_rule.QoSMinimumPacketRateRule
|
|
91
|
+
| _qos_packet_rate_limit_rule.QoSPacketRateLimitRule
|
|
92
|
+
),
|
|
93
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
79
94
|
hidden_columns = ['location', 'name', 'tenant_id']
|
|
80
95
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
81
96
|
item, {}, hidden_columns
|
|
@@ -17,13 +17,17 @@ import argparse
|
|
|
17
17
|
from collections.abc import Iterable, Sequence
|
|
18
18
|
from typing import Any
|
|
19
19
|
|
|
20
|
+
from openstack.network.v2 import qos_rule_type as _qos_rule_type
|
|
20
21
|
from osc_lib import utils
|
|
21
22
|
|
|
22
23
|
from openstackclient import command
|
|
24
|
+
from openstackclient.common import pagination
|
|
23
25
|
from openstackclient.i18n import _
|
|
24
26
|
|
|
25
27
|
|
|
26
|
-
def _get_columns(
|
|
28
|
+
def _get_columns(
|
|
29
|
+
item: _qos_rule_type.QoSRuleType,
|
|
30
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
27
31
|
column_map = {
|
|
28
32
|
"type": "rule_type_name",
|
|
29
33
|
"drivers": "drivers",
|
|
@@ -56,6 +60,7 @@ class ListNetworkQosRuleType(command.Lister):
|
|
|
56
60
|
"List all QoS rule types implemented in Neutron QoS driver"
|
|
57
61
|
),
|
|
58
62
|
)
|
|
63
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
59
64
|
return parser
|
|
60
65
|
|
|
61
66
|
def take_action(
|
|
@@ -65,12 +70,18 @@ class ListNetworkQosRuleType(command.Lister):
|
|
|
65
70
|
columns = ('type',)
|
|
66
71
|
column_headers = ('Type',)
|
|
67
72
|
|
|
68
|
-
|
|
73
|
+
filters = {}
|
|
74
|
+
if parsed_args.marker is not None:
|
|
75
|
+
filters['marker'] = parsed_args.marker
|
|
76
|
+
if parsed_args.limit is not None:
|
|
77
|
+
filters['limit'] = parsed_args.limit
|
|
78
|
+
if parsed_args.max_items is not None:
|
|
79
|
+
filters['max_items'] = parsed_args.max_items
|
|
69
80
|
if parsed_args.all_supported:
|
|
70
|
-
|
|
81
|
+
filters['all_supported'] = True
|
|
71
82
|
elif parsed_args.all_rules:
|
|
72
|
-
|
|
73
|
-
data = client.qos_rule_types(**
|
|
83
|
+
filters['all_rules'] = True
|
|
84
|
+
data = client.qos_rule_types(**filters)
|
|
74
85
|
|
|
75
86
|
return (
|
|
76
87
|
column_headers,
|
|
@@ -18,10 +18,12 @@ from collections.abc import Iterable, Sequence
|
|
|
18
18
|
import logging
|
|
19
19
|
from typing import Any
|
|
20
20
|
|
|
21
|
+
from openstack.network.v2 import rbac_policy as _rbac_policy
|
|
21
22
|
from osc_lib import exceptions
|
|
22
23
|
from osc_lib import utils
|
|
23
24
|
|
|
24
25
|
from openstackclient import command
|
|
26
|
+
from openstackclient.common import pagination
|
|
25
27
|
from openstackclient.i18n import _
|
|
26
28
|
from openstackclient.identity import common as identity_common
|
|
27
29
|
from openstackclient.network import common
|
|
@@ -29,7 +31,9 @@ from openstackclient.network import common
|
|
|
29
31
|
LOG = logging.getLogger(__name__)
|
|
30
32
|
|
|
31
33
|
|
|
32
|
-
def _get_columns(
|
|
34
|
+
def _get_columns(
|
|
35
|
+
item: _rbac_policy.RBACPolicy,
|
|
36
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
33
37
|
column_map = {
|
|
34
38
|
'target_tenant': 'target_project_id',
|
|
35
39
|
}
|
|
@@ -95,8 +99,6 @@ def _get_attrs(
|
|
|
95
99
|
return attrs
|
|
96
100
|
|
|
97
101
|
|
|
98
|
-
# TODO(abhiraut): Use the SDK resource mapped attribute names once the
|
|
99
|
-
# OSC minimum requirements include SDK 1.0.
|
|
100
102
|
class CreateNetworkRBAC(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
101
103
|
_description = _("Create network RBAC policy")
|
|
102
104
|
|
|
@@ -270,6 +272,7 @@ class ListNetworkRBAC(command.Lister):
|
|
|
270
272
|
default=False,
|
|
271
273
|
help=_("List additional fields in output"),
|
|
272
274
|
)
|
|
275
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
273
276
|
return parser
|
|
274
277
|
|
|
275
278
|
def take_action(
|
|
@@ -306,6 +309,12 @@ class ListNetworkRBAC(command.Lister):
|
|
|
306
309
|
parsed_args.target_project,
|
|
307
310
|
).id
|
|
308
311
|
query['target_project_id'] = project_id
|
|
312
|
+
if parsed_args.marker is not None:
|
|
313
|
+
query['marker'] = parsed_args.marker
|
|
314
|
+
if parsed_args.limit is not None:
|
|
315
|
+
query['limit'] = parsed_args.limit
|
|
316
|
+
if parsed_args.max_items is not None:
|
|
317
|
+
query['max_items'] = parsed_args.max_items
|
|
309
318
|
|
|
310
319
|
data = client.rbac_policies(**query)
|
|
311
320
|
|
|
@@ -321,8 +330,6 @@ class ListNetworkRBAC(command.Lister):
|
|
|
321
330
|
)
|
|
322
331
|
|
|
323
332
|
|
|
324
|
-
# TODO(abhiraut): Use the SDK resource mapped attribute names once the
|
|
325
|
-
# OSC minimum requirements include SDK 1.0.
|
|
326
333
|
class SetNetworkRBAC(common.NeutronCommandWithExtraArgs):
|
|
327
334
|
_description = _("Set network RBAC policy properties")
|
|
328
335
|
|
|
@@ -18,17 +18,21 @@ from collections.abc import Iterable, Sequence
|
|
|
18
18
|
import logging
|
|
19
19
|
from typing import Any
|
|
20
20
|
|
|
21
|
+
from openstack.network.v2 import segment as _segment
|
|
21
22
|
from osc_lib import exceptions
|
|
22
23
|
from osc_lib import utils
|
|
23
24
|
|
|
24
25
|
from openstackclient import command
|
|
26
|
+
from openstackclient.common import pagination
|
|
25
27
|
from openstackclient.i18n import _
|
|
26
28
|
from openstackclient.network import common
|
|
27
29
|
|
|
28
30
|
LOG = logging.getLogger(__name__)
|
|
29
31
|
|
|
30
32
|
|
|
31
|
-
def _get_columns(
|
|
33
|
+
def _get_columns(
|
|
34
|
+
item: _segment.Segment,
|
|
35
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
32
36
|
hidden_columns = ['location', 'tenant_id']
|
|
33
37
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
34
38
|
item, {}, hidden_columns
|
|
@@ -169,6 +173,7 @@ class ListNetworkSegment(command.Lister):
|
|
|
169
173
|
'network (name or ID)'
|
|
170
174
|
),
|
|
171
175
|
)
|
|
176
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
172
177
|
return parser
|
|
173
178
|
|
|
174
179
|
def take_action(
|
|
@@ -182,6 +187,13 @@ class ListNetworkSegment(command.Lister):
|
|
|
182
187
|
parsed_args.network, ignore_missing=False
|
|
183
188
|
)
|
|
184
189
|
filters = {'network_id': _network.id}
|
|
190
|
+
if parsed_args.marker is not None:
|
|
191
|
+
filters['marker'] = parsed_args.marker
|
|
192
|
+
if parsed_args.limit is not None:
|
|
193
|
+
filters['limit'] = parsed_args.limit
|
|
194
|
+
if parsed_args.max_items is not None:
|
|
195
|
+
filters['max_items'] = parsed_args.max_items
|
|
196
|
+
|
|
185
197
|
data = network_client.segments(**filters)
|
|
186
198
|
|
|
187
199
|
headers: tuple[str, ...] = (
|