python-openstackclient 9.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/__init__.py +2 -6
- openstackclient/api/api.py +41 -23
- openstackclient/api/compute_v2.py +44 -25
- openstackclient/api/object_store_v1.py +75 -97
- openstackclient/api/volume_v2.py +2 -1
- openstackclient/api/volume_v3.py +2 -1
- openstackclient/common/availability_zone.py +59 -43
- openstackclient/common/clientmanager.py +56 -29
- openstackclient/common/configuration.py +10 -3
- openstackclient/common/envvars.py +2 -2
- openstackclient/common/extension.py +14 -5
- openstackclient/common/limits.py +10 -5
- openstackclient/common/module.py +36 -34
- openstackclient/common/pagination.py +50 -6
- openstackclient/common/progressbar.py +7 -6
- openstackclient/common/project_cleanup.py +11 -6
- openstackclient/common/quota.py +105 -103
- openstackclient/common/versions.py +8 -2
- openstackclient/compute/client.py +7 -3
- openstackclient/compute/v2/agent.py +17 -10
- openstackclient/compute/v2/aggregate.py +36 -22
- openstackclient/compute/v2/console.py +14 -8
- openstackclient/compute/v2/console_connection.py +11 -3
- openstackclient/compute/v2/flavor.py +42 -22
- openstackclient/compute/v2/host.py +14 -6
- openstackclient/compute/v2/hypervisor.py +16 -5
- openstackclient/compute/v2/hypervisor_stats.py +10 -2
- openstackclient/compute/v2/keypair.py +35 -16
- openstackclient/compute/v2/server.py +268 -179
- openstackclient/compute/v2/server_backup.py +10 -4
- openstackclient/compute/v2/server_event.py +28 -12
- openstackclient/compute/v2/server_group.py +23 -11
- openstackclient/compute/v2/server_image.py +19 -10
- openstackclient/compute/v2/server_migration.py +27 -10
- openstackclient/compute/v2/server_share.py +274 -0
- openstackclient/compute/v2/server_volume.py +13 -5
- openstackclient/compute/v2/service.py +17 -8
- openstackclient/compute/v2/usage.py +28 -23
- openstackclient/identity/client.py +8 -3
- openstackclient/identity/common.py +82 -47
- openstackclient/identity/v2_0/catalog.py +14 -7
- openstackclient/identity/v2_0/ec2creds.py +21 -10
- openstackclient/identity/v2_0/endpoint.py +23 -11
- openstackclient/identity/v2_0/project.py +25 -14
- openstackclient/identity/v2_0/role.py +28 -14
- openstackclient/identity/v2_0/role_assignment.py +9 -3
- openstackclient/identity/v2_0/service.py +23 -11
- openstackclient/identity/v2_0/token.py +12 -5
- openstackclient/identity/v2_0/user.py +26 -15
- openstackclient/identity/v3/access_rule.py +32 -12
- openstackclient/identity/v3/application_credential.py +66 -24
- openstackclient/identity/v3/catalog.py +14 -7
- openstackclient/identity/v3/consumer.py +22 -11
- openstackclient/identity/v3/credential.py +39 -17
- openstackclient/identity/v3/domain.py +40 -19
- openstackclient/identity/v3/ec2creds.py +25 -12
- openstackclient/identity/v3/endpoint.py +98 -64
- openstackclient/identity/v3/endpoint_group.py +28 -17
- openstackclient/identity/v3/federation_protocol.py +44 -20
- openstackclient/identity/v3/group.py +64 -40
- openstackclient/identity/v3/identity_provider.py +95 -57
- openstackclient/identity/v3/implied_role.py +21 -9
- openstackclient/identity/v3/limit.py +42 -17
- openstackclient/identity/v3/mapping.py +58 -28
- openstackclient/identity/v3/policy.py +23 -12
- openstackclient/identity/v3/project.py +59 -26
- openstackclient/identity/v3/region.py +39 -17
- openstackclient/identity/v3/registered_limit.py +41 -16
- openstackclient/identity/v3/role.py +62 -31
- openstackclient/identity/v3/role_assignment.py +25 -7
- openstackclient/identity/v3/service.py +39 -17
- openstackclient/identity/v3/service_provider.py +40 -16
- openstackclient/identity/v3/tag.py +23 -6
- openstackclient/identity/v3/token.py +30 -14
- openstackclient/identity/v3/trust.py +39 -18
- openstackclient/identity/v3/unscoped_saml.py +10 -2
- openstackclient/identity/v3/user.py +86 -36
- openstackclient/image/client.py +7 -3
- openstackclient/image/v1/image.py +33 -26
- openstackclient/image/v2/cache.py +16 -11
- openstackclient/image/v2/image.py +88 -56
- openstackclient/image/v2/info.py +7 -1
- openstackclient/image/v2/metadef_namespaces.py +117 -20
- openstackclient/image/v2/metadef_objects.py +32 -19
- openstackclient/image/v2/metadef_properties.py +30 -16
- openstackclient/image/v2/metadef_resource_type_association.py +14 -7
- openstackclient/image/v2/metadef_resource_types.py +7 -1
- openstackclient/image/v2/task.py +25 -27
- openstackclient/locale/tr_TR/LC_MESSAGES/openstackclient.po +7 -192
- openstackclient/network/client.py +7 -2
- openstackclient/network/common.py +16 -241
- openstackclient/network/utils.py +27 -54
- openstackclient/network/v2/address_group.py +39 -16
- openstackclient/network/v2/address_scope.py +36 -20
- openstackclient/network/v2/bgpvpn/bgpvpn.py +477 -0
- openstackclient/network/v2/bgpvpn/constants.py +30 -0
- openstackclient/network/v2/bgpvpn/network_association.py +226 -0
- openstackclient/network/v2/bgpvpn/port_association.py +504 -0
- openstackclient/network/v2/bgpvpn/router_association.py +301 -0
- openstackclient/network/v2/default_security_group_rule.py +31 -14
- openstackclient/network/v2/floating_ip.py +121 -162
- openstackclient/network/v2/floating_ip_port_forwarding.py +41 -19
- openstackclient/network/v2/fwaas/__init__.py +0 -0
- openstackclient/network/v2/fwaas/group.py +499 -0
- openstackclient/network/v2/fwaas/policy.py +518 -0
- openstackclient/network/v2/fwaas/rule.py +610 -0
- openstackclient/network/v2/ip_availability.py +25 -8
- openstackclient/network/v2/l3_conntrack_helper.py +35 -13
- openstackclient/network/v2/local_ip.py +27 -13
- openstackclient/network/v2/local_ip_association.py +17 -7
- openstackclient/network/v2/ndp_proxy.py +23 -11
- openstackclient/network/v2/network.py +213 -213
- openstackclient/network/v2/network_agent.py +77 -34
- openstackclient/network/v2/network_auto_allocated_topology.py +27 -15
- openstackclient/network/v2/network_flavor.py +45 -21
- openstackclient/network/v2/network_flavor_profile.py +42 -17
- openstackclient/network/v2/network_meter.py +39 -15
- openstackclient/network/v2/network_meter_rule.py +40 -12
- openstackclient/network/v2/network_qos_policy.py +39 -21
- openstackclient/network/v2/network_qos_rule.py +48 -18
- openstackclient/network/v2/network_qos_rule_type.py +28 -9
- openstackclient/network/v2/network_rbac.py +34 -16
- openstackclient/network/v2/network_segment.py +32 -11
- openstackclient/network/v2/network_segment_range.py +70 -31
- openstackclient/network/v2/network_service_provider.py +7 -1
- openstackclient/network/v2/network_trunk.py +41 -22
- openstackclient/network/v2/port.py +141 -40
- openstackclient/network/v2/router.py +101 -67
- openstackclient/network/v2/security_group.py +97 -198
- openstackclient/network/v2/security_group_rule.py +115 -282
- openstackclient/network/v2/subnet.py +63 -34
- openstackclient/network/v2/subnet_pool.py +42 -24
- openstackclient/network/v2/taas/tap_flow.py +35 -14
- openstackclient/network/v2/taas/tap_mirror.py +28 -14
- openstackclient/network/v2/taas/tap_service.py +26 -12
- openstackclient/object/client.py +7 -2
- openstackclient/object/v1/account.py +13 -6
- openstackclient/object/v1/container.py +28 -16
- openstackclient/object/v1/object.py +28 -16
- openstackclient/py.typed +0 -0
- openstackclient/shell.py +46 -10
- openstackclient/tests/functional/base.py +55 -20
- openstackclient/tests/functional/common/test_extension.py +4 -0
- openstackclient/tests/functional/common/test_quota.py +3 -1
- openstackclient/tests/functional/compute/v2/common.py +14 -13
- openstackclient/tests/functional/compute/v2/test_flavor.py +3 -1
- openstackclient/tests/functional/compute/v2/test_server.py +3 -0
- openstackclient/tests/functional/identity/v2/common.py +10 -6
- openstackclient/tests/functional/identity/v2/test_role.py +4 -4
- openstackclient/tests/functional/identity/v3/common.py +59 -19
- openstackclient/tests/functional/identity/v3/test_application_credential.py +1 -1
- openstackclient/tests/functional/identity/v3/test_group.py +20 -20
- openstackclient/tests/functional/identity/v3/test_idp.py +3 -1
- openstackclient/tests/functional/identity/v3/test_mapping.py +81 -0
- openstackclient/tests/functional/identity/v3/test_project.py +10 -10
- openstackclient/tests/functional/identity/v3/test_role.py +18 -18
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +12 -12
- openstackclient/tests/functional/identity/v3/test_user.py +8 -8
- openstackclient/tests/functional/image/base.py +1 -6
- openstackclient/tests/functional/network/v2/common.py +5 -2
- openstackclient/tests/functional/network/v2/test_floating_ip.py +10 -4
- openstackclient/tests/functional/network/v2/test_ip_availability.py +4 -0
- openstackclient/tests/functional/network/v2/test_network_meter_rule.py +3 -2
- openstackclient/tests/functional/network/v2/test_network_segment.py +5 -0
- openstackclient/tests/functional/network/v2/test_subnet.py +13 -9
- openstackclient/tests/functional/object/v1/common.py +4 -0
- openstackclient/tests/functional/volume/v2/common.py +4 -0
- openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +27 -11
- openstackclient/tests/functional/volume/v2/test_volume_type.py +2 -2
- openstackclient/tests/functional/volume/v3/common.py +4 -0
- openstackclient/tests/functional/volume/v3/test_volume_group.py +163 -0
- openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +11 -7
- openstackclient/tests/functional/volume/v3/test_volume_type.py +2 -2
- openstackclient/tests/unit/common/test_availability_zone.py +35 -49
- openstackclient/tests/unit/common/test_extension.py +2 -2
- openstackclient/tests/unit/common/test_limits.py +1 -1
- openstackclient/tests/unit/common/test_module.py +82 -44
- openstackclient/tests/unit/common/test_project_cleanup.py +3 -1
- openstackclient/tests/unit/common/test_quota.py +15 -26
- openstackclient/tests/unit/compute/v2/fakes.py +26 -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 +29 -3
- 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 +7 -7
- openstackclient/tests/unit/compute/v2/test_server.py +26 -111
- 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 +287 -0
- 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 +8 -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 +12 -22
- openstackclient/tests/unit/identity/v3/test_identity_provider.py +303 -299
- 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 +77 -10
- openstackclient/tests/unit/image/v2/test_image.py +11 -11
- openstackclient/tests/unit/image/v2/test_metadef_namespaces.py +105 -6
- openstackclient/tests/unit/network/test_common.py +0 -155
- openstackclient/tests/unit/network/v2/bgpvpn/__init__.py +0 -0
- openstackclient/tests/unit/network/v2/bgpvpn/fakes.py +179 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_bgpvpn.py +584 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_network_association.py +285 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_port_association.py +384 -0
- openstackclient/tests/unit/network/v2/bgpvpn/test_router_association.py +297 -0
- openstackclient/tests/unit/network/v2/fakes.py +5 -77
- openstackclient/tests/unit/network/v2/fwaas/__init__.py +0 -0
- openstackclient/tests/unit/network/v2/fwaas/test_group.py +923 -0
- openstackclient/tests/unit/network/v2/fwaas/test_policy.py +869 -0
- openstackclient/tests/unit/network/v2/fwaas/test_rule.py +1005 -0
- openstackclient/tests/unit/network/v2/taas/{test_osc_tap_flow.py → test_tap_flow.py} +18 -25
- openstackclient/tests/unit/network/v2/taas/{test_osc_tap_mirror.py → test_tap_mirror.py} +19 -29
- openstackclient/tests/unit/network/v2/taas/{test_osc_tap_service.py → test_tap_service.py} +19 -29
- openstackclient/tests/unit/network/v2/test_address_group.py +26 -2
- openstackclient/tests/unit/network/v2/test_address_scope.py +24 -0
- openstackclient/tests/unit/network/v2/{test_floating_ip_network.py → test_floating_ip.py} +27 -2
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +37 -13
- 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 +58 -5
- openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +3 -3
- openstackclient/tests/unit/network/v2/test_network_flavor.py +26 -2
- 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 +25 -1
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +2 -2
- openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +24 -0
- openstackclient/tests/unit/network/v2/test_network_rbac.py +25 -1
- openstackclient/tests/unit/network/v2/test_network_segment.py +25 -1
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +31 -10
- openstackclient/tests/unit/network/v2/test_network_trunk.py +1 -1
- openstackclient/tests/unit/network/v2/test_port.py +166 -0
- openstackclient/tests/unit/network/v2/test_router.py +36 -16
- openstackclient/tests/unit/network/v2/{test_security_group_network.py → test_security_group.py} +11 -8
- openstackclient/tests/unit/network/v2/{test_security_group_rule_network.py → test_security_group_rule.py} +28 -37
- openstackclient/tests/unit/network/v2/test_subnet.py +30 -5
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +26 -1
- openstackclient/tests/unit/object/v1/fakes.py +8 -7
- openstackclient/tests/unit/object/v1/test_container.py +65 -101
- openstackclient/tests/unit/object/v1/test_container_all.py +8 -1
- openstackclient/tests/unit/object/v1/test_object.py +44 -84
- openstackclient/tests/unit/object/v1/test_object_all.py +8 -1
- openstackclient/tests/unit/test_hacking.py +108 -0
- openstackclient/tests/unit/volume/v2/fakes.py +21 -140
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +6 -14
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +8 -1
- openstackclient/tests/unit/volume/v2/test_volume_type.py +2 -4
- openstackclient/tests/unit/volume/v3/fakes.py +205 -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.py +60 -3
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +3 -1
- openstackclient/tests/unit/volume/v3/test_volume_backend.py +158 -0
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +6 -14
- 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 +61 -1
- openstackclient/tests/unit/volume/v3/test_volume_type.py +2 -4
- openstackclient/volume/client.py +7 -3
- openstackclient/volume/v2/backup_record.py +15 -6
- openstackclient/volume/v2/consistency_group.py +29 -17
- openstackclient/volume/v2/consistency_group_snapshot.py +25 -10
- openstackclient/volume/v2/qos_specs.py +28 -17
- openstackclient/volume/v2/service.py +17 -6
- openstackclient/volume/v2/volume.py +60 -30
- openstackclient/volume/v2/volume_backend.py +19 -6
- openstackclient/volume/v2/volume_backup.py +48 -23
- openstackclient/volume/v2/volume_host.py +6 -4
- openstackclient/volume/v2/volume_snapshot.py +49 -24
- openstackclient/volume/v2/volume_transfer_request.py +31 -13
- openstackclient/volume/v2/volume_type.py +43 -24
- openstackclient/volume/v3/backup_record.py +94 -0
- openstackclient/volume/v3/block_storage_cleanup.py +11 -3
- openstackclient/volume/v3/block_storage_cluster.py +19 -7
- openstackclient/volume/v3/block_storage_log_level.py +15 -6
- openstackclient/volume/v3/block_storage_manage.py +10 -4
- openstackclient/volume/v3/block_storage_resource_filter.py +17 -5
- 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/service.py +16 -6
- openstackclient/volume/v3/volume.py +92 -40
- openstackclient/volume/v3/volume_attachment.py +47 -21
- openstackclient/volume/v3/volume_backend.py +130 -0
- openstackclient/volume/v3/volume_backup.py +55 -27
- openstackclient/volume/v3/volume_group.py +23 -13
- openstackclient/volume/v3/volume_group_snapshot.py +34 -17
- openstackclient/volume/v3/volume_group_type.py +27 -14
- openstackclient/volume/v3/volume_host.py +74 -0
- openstackclient/volume/v3/volume_message.py +18 -8
- openstackclient/volume/v3/volume_snapshot.py +70 -32
- openstackclient/volume/v3/volume_transfer_request.py +31 -13
- openstackclient/volume/v3/volume_type.py +42 -24
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/METADATA +7 -8
- python_openstackclient-10.1.0.dist-info/RECORD +524 -0
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/WHEEL +1 -1
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/entry_points.txt +77 -25
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/licenses/AUTHORS +9 -0
- python_openstackclient-10.1.0.dist-info/pbr.json +1 -0
- openstackclient/api/image_v1.py +0 -69
- openstackclient/api/image_v2.py +0 -79
- openstackclient/network/v2/floating_ip_pool.py +0 -38
- openstackclient/tests/functional/image/v1/test_image.py +0 -97
- openstackclient/tests/unit/api/test_image_v1.py +0 -96
- openstackclient/tests/unit/api/test_image_v2.py +0 -96
- openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +0 -248
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +0 -49
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +0 -39
- openstackclient/tests/unit/network/v2/test_network_compute.py +0 -404
- openstackclient/tests/unit/network/v2/test_security_group_compute.py +0 -392
- openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +0 -555
- python_openstackclient-9.0.0.dist-info/RECORD +0 -499
- python_openstackclient-9.0.0.dist-info/pbr.json +0 -1
- /openstackclient/{tests/functional/image/v1 → network/v2/bgpvpn}/__init__.py +0 -0
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/licenses/LICENSE +0 -0
- {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/top_level.txt +0 -0
|
@@ -16,30 +16,35 @@
|
|
|
16
16
|
|
|
17
17
|
"""Network segment action implementations"""
|
|
18
18
|
|
|
19
|
+
import argparse
|
|
20
|
+
from collections.abc import Iterable, Sequence
|
|
19
21
|
import itertools
|
|
20
22
|
import logging
|
|
21
|
-
|
|
23
|
+
from typing import Any
|
|
22
24
|
|
|
25
|
+
from openstack.network.v2 import network_segment_range as _segment_range
|
|
23
26
|
from osc_lib import exceptions
|
|
24
27
|
from osc_lib import utils
|
|
25
28
|
|
|
26
29
|
from openstackclient import command
|
|
30
|
+
from openstackclient.common import pagination
|
|
27
31
|
from openstackclient.i18n import _
|
|
28
32
|
from openstackclient.identity import common as identity_common
|
|
29
33
|
from openstackclient.network import common
|
|
30
34
|
|
|
31
|
-
|
|
32
35
|
LOG = logging.getLogger(__name__)
|
|
33
36
|
|
|
34
37
|
|
|
35
|
-
def _get_columns(
|
|
38
|
+
def _get_columns(
|
|
39
|
+
item: _segment_range.NetworkSegmentRange,
|
|
40
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
36
41
|
hidden_columns = ['location', 'tenant_id']
|
|
37
42
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
38
43
|
item, {}, hidden_columns
|
|
39
44
|
)
|
|
40
45
|
|
|
41
46
|
|
|
42
|
-
def _get_ranges(item):
|
|
47
|
+
def _get_ranges(item: Any) -> Iterable[str]:
|
|
43
48
|
item = sorted([int(i) for i in item])
|
|
44
49
|
for a, b in itertools.groupby(enumerate(item), lambda xy: xy[1] - xy[0]):
|
|
45
50
|
c = list(b)
|
|
@@ -48,18 +53,24 @@ def _get_ranges(item):
|
|
|
48
53
|
)
|
|
49
54
|
|
|
50
55
|
|
|
51
|
-
def _hack_tuple_value_update_by_index(
|
|
56
|
+
def _hack_tuple_value_update_by_index(
|
|
57
|
+
tup: tuple[Any, ...], index: int, value: Any
|
|
58
|
+
) -> tuple[Any, ...]:
|
|
52
59
|
lot = list(tup)
|
|
53
60
|
lot[index] = value
|
|
54
61
|
return tuple(lot)
|
|
55
62
|
|
|
56
63
|
|
|
57
|
-
def _is_prop_empty(
|
|
64
|
+
def _is_prop_empty(
|
|
65
|
+
columns: tuple[str, ...], props: tuple[Any, ...], prop_name: str
|
|
66
|
+
) -> bool:
|
|
58
67
|
return True if not props[columns.index(prop_name)] else False
|
|
59
68
|
|
|
60
69
|
|
|
61
|
-
def _exchange_dict_keys_with_values(
|
|
62
|
-
|
|
70
|
+
def _exchange_dict_keys_with_values(
|
|
71
|
+
orig_dict: dict[Any, Any],
|
|
72
|
+
) -> dict[str, Any]:
|
|
73
|
+
updated_dict: dict[str, Any] = {}
|
|
63
74
|
for k, v in orig_dict.items():
|
|
64
75
|
k = [k]
|
|
65
76
|
if not updated_dict.get(v):
|
|
@@ -69,7 +80,9 @@ def _exchange_dict_keys_with_values(orig_dict):
|
|
|
69
80
|
return updated_dict
|
|
70
81
|
|
|
71
82
|
|
|
72
|
-
def _update_available_from_props(
|
|
83
|
+
def _update_available_from_props(
|
|
84
|
+
columns: tuple[str, ...], props: tuple[Any, ...]
|
|
85
|
+
) -> tuple[Any, ...]:
|
|
73
86
|
index_available = columns.index('available')
|
|
74
87
|
props = _hack_tuple_value_update_by_index(
|
|
75
88
|
props, index_available, list(_get_ranges(props[index_available]))
|
|
@@ -77,7 +90,9 @@ def _update_available_from_props(columns, props):
|
|
|
77
90
|
return props
|
|
78
91
|
|
|
79
92
|
|
|
80
|
-
def _update_used_from_props(
|
|
93
|
+
def _update_used_from_props(
|
|
94
|
+
columns: tuple[str, ...], props: tuple[Any, ...]
|
|
95
|
+
) -> tuple[Any, ...]:
|
|
81
96
|
index_used = columns.index('used')
|
|
82
97
|
updated_used = _exchange_dict_keys_with_values(props[index_used])
|
|
83
98
|
for k, v in updated_used.items():
|
|
@@ -86,7 +101,9 @@ def _update_used_from_props(columns, props):
|
|
|
86
101
|
return props
|
|
87
102
|
|
|
88
103
|
|
|
89
|
-
def _update_additional_fields_from_props(
|
|
104
|
+
def _update_additional_fields_from_props(
|
|
105
|
+
columns: tuple[str, ...], props: tuple[Any, ...]
|
|
106
|
+
) -> tuple[Any, ...]:
|
|
90
107
|
props = _update_available_from_props(columns, props)
|
|
91
108
|
props = _update_used_from_props(columns, props)
|
|
92
109
|
return props
|
|
@@ -97,7 +114,7 @@ class CreateNetworkSegmentRange(
|
|
|
97
114
|
):
|
|
98
115
|
_description = _("Create new network segment range")
|
|
99
116
|
|
|
100
|
-
def get_parser(self, prog_name):
|
|
117
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
101
118
|
parser = super().get_parser(prog_name)
|
|
102
119
|
shared_group = parser.add_mutually_exclusive_group()
|
|
103
120
|
shared_group.add_argument(
|
|
@@ -170,7 +187,9 @@ class CreateNetworkSegmentRange(
|
|
|
170
187
|
|
|
171
188
|
return parser
|
|
172
189
|
|
|
173
|
-
def take_action(
|
|
190
|
+
def take_action(
|
|
191
|
+
self, parsed_args: argparse.Namespace
|
|
192
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
174
193
|
network_client = self.app.client_manager.network
|
|
175
194
|
try:
|
|
176
195
|
# Verify that the extension exists.
|
|
@@ -251,7 +270,7 @@ class CreateNetworkSegmentRange(
|
|
|
251
270
|
class DeleteNetworkSegmentRange(command.Command):
|
|
252
271
|
_description = _("Delete network segment range(s)")
|
|
253
272
|
|
|
254
|
-
def get_parser(self, prog_name):
|
|
273
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
255
274
|
parser = super().get_parser(prog_name)
|
|
256
275
|
parser.add_argument(
|
|
257
276
|
'network_segment_range',
|
|
@@ -261,7 +280,7 @@ class DeleteNetworkSegmentRange(command.Command):
|
|
|
261
280
|
)
|
|
262
281
|
return parser
|
|
263
282
|
|
|
264
|
-
def take_action(self, parsed_args):
|
|
283
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
265
284
|
network_client = self.app.client_manager.network
|
|
266
285
|
try:
|
|
267
286
|
# Verify that the extension exists.
|
|
@@ -304,7 +323,7 @@ class DeleteNetworkSegmentRange(command.Command):
|
|
|
304
323
|
class ListNetworkSegmentRange(command.Lister):
|
|
305
324
|
_description = _("List network segment ranges")
|
|
306
325
|
|
|
307
|
-
def get_parser(self, prog_name):
|
|
326
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
308
327
|
parser = super().get_parser(prog_name)
|
|
309
328
|
parser.add_argument(
|
|
310
329
|
'--long',
|
|
@@ -342,9 +361,12 @@ class ListNetworkSegmentRange(command.Lister):
|
|
|
342
361
|
'List only network segment ranges without available segments'
|
|
343
362
|
),
|
|
344
363
|
)
|
|
364
|
+
pagination.add_marker_pagination_option_to_parser(parser)
|
|
345
365
|
return parser
|
|
346
366
|
|
|
347
|
-
def take_action(
|
|
367
|
+
def take_action(
|
|
368
|
+
self, parsed_args: argparse.Namespace
|
|
369
|
+
) -> tuple[tuple[str, ...], tuple[Any, ...]]:
|
|
348
370
|
network_client = self.app.client_manager.network
|
|
349
371
|
try:
|
|
350
372
|
# Verify that the extension exists.
|
|
@@ -358,7 +380,15 @@ class ListNetworkSegmentRange(command.Lister):
|
|
|
358
380
|
) % {'e': e}
|
|
359
381
|
raise exceptions.CommandError(msg)
|
|
360
382
|
|
|
361
|
-
|
|
383
|
+
filters = {}
|
|
384
|
+
if parsed_args.marker is not None:
|
|
385
|
+
filters['marker'] = parsed_args.marker
|
|
386
|
+
if parsed_args.limit is not None:
|
|
387
|
+
filters['limit'] = parsed_args.limit
|
|
388
|
+
if parsed_args.max_items is not None:
|
|
389
|
+
filters['max_items'] = parsed_args.max_items
|
|
390
|
+
|
|
391
|
+
data = network_client.network_segment_ranges(**filters)
|
|
362
392
|
|
|
363
393
|
headers: tuple[str, ...] = (
|
|
364
394
|
'ID',
|
|
@@ -402,18 +432,25 @@ class ListNetworkSegmentRange(command.Lister):
|
|
|
402
432
|
'available',
|
|
403
433
|
)
|
|
404
434
|
|
|
405
|
-
display_props: tuple[
|
|
435
|
+
display_props: tuple[Any, ...] = tuple()
|
|
406
436
|
for s in data:
|
|
407
437
|
props = utils.get_item_properties(s, columns)
|
|
408
438
|
if (
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
or
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
439
|
+
(
|
|
440
|
+
parsed_args.available
|
|
441
|
+
and _is_prop_empty(columns, props, 'available')
|
|
442
|
+
)
|
|
443
|
+
or (
|
|
444
|
+
parsed_args.unavailable
|
|
445
|
+
and not _is_prop_empty(columns, props, 'available')
|
|
446
|
+
)
|
|
447
|
+
or (
|
|
448
|
+
parsed_args.used and _is_prop_empty(columns, props, 'used')
|
|
449
|
+
)
|
|
450
|
+
or (
|
|
451
|
+
parsed_args.unused
|
|
452
|
+
and not _is_prop_empty(columns, props, 'used')
|
|
453
|
+
)
|
|
417
454
|
):
|
|
418
455
|
continue
|
|
419
456
|
if parsed_args.long:
|
|
@@ -426,7 +463,7 @@ class ListNetworkSegmentRange(command.Lister):
|
|
|
426
463
|
class SetNetworkSegmentRange(common.NeutronCommandWithExtraArgs):
|
|
427
464
|
_description = _("Set network segment range properties")
|
|
428
465
|
|
|
429
|
-
def get_parser(self, prog_name):
|
|
466
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
430
467
|
parser = super().get_parser(prog_name)
|
|
431
468
|
parser.add_argument(
|
|
432
469
|
'network_segment_range',
|
|
@@ -452,7 +489,7 @@ class SetNetworkSegmentRange(common.NeutronCommandWithExtraArgs):
|
|
|
452
489
|
)
|
|
453
490
|
return parser
|
|
454
491
|
|
|
455
|
-
def take_action(self, parsed_args):
|
|
492
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
456
493
|
network_client = self.app.client_manager.network
|
|
457
494
|
try:
|
|
458
495
|
# Verify that the extension exists.
|
|
@@ -490,7 +527,7 @@ class SetNetworkSegmentRange(common.NeutronCommandWithExtraArgs):
|
|
|
490
527
|
class ShowNetworkSegmentRange(command.ShowOne):
|
|
491
528
|
_description = _("Display network segment range details")
|
|
492
529
|
|
|
493
|
-
def get_parser(self, prog_name):
|
|
530
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
494
531
|
parser = super().get_parser(prog_name)
|
|
495
532
|
parser.add_argument(
|
|
496
533
|
'network_segment_range',
|
|
@@ -499,7 +536,9 @@ class ShowNetworkSegmentRange(command.ShowOne):
|
|
|
499
536
|
)
|
|
500
537
|
return parser
|
|
501
538
|
|
|
502
|
-
def take_action(
|
|
539
|
+
def take_action(
|
|
540
|
+
self, parsed_args: argparse.Namespace
|
|
541
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
503
542
|
network_client = self.app.client_manager.network
|
|
504
543
|
try:
|
|
505
544
|
# Verify that the extension exists.
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
"""Network Service Providers Implementation"""
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
17
|
+
from collections.abc import Iterable
|
|
18
|
+
from typing import Any
|
|
19
|
+
|
|
16
20
|
from osc_lib import utils
|
|
17
21
|
|
|
18
22
|
from openstackclient import command
|
|
@@ -22,7 +26,9 @@ from openstackclient.i18n import _
|
|
|
22
26
|
class ListNetworkServiceProvider(command.Lister):
|
|
23
27
|
_description = _("List Service Providers")
|
|
24
28
|
|
|
25
|
-
def take_action(
|
|
29
|
+
def take_action(
|
|
30
|
+
self, parsed_args: argparse.Namespace
|
|
31
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
26
32
|
client = self.app.client_manager.network
|
|
27
33
|
|
|
28
34
|
columns = (
|
|
@@ -16,10 +16,13 @@
|
|
|
16
16
|
|
|
17
17
|
"""Network trunk and subports action implementations"""
|
|
18
18
|
|
|
19
|
+
import argparse
|
|
20
|
+
from collections.abc import Iterable, Sequence
|
|
19
21
|
import logging
|
|
20
|
-
|
|
22
|
+
from typing import Any
|
|
21
23
|
|
|
22
24
|
from cliff import columns as cliff_columns
|
|
25
|
+
from openstack.network.v2 import trunk as _trunk
|
|
23
26
|
from osc_lib.cli import format_columns
|
|
24
27
|
from osc_lib.cli import identity as identity_utils
|
|
25
28
|
from osc_lib.cli import parseractions
|
|
@@ -37,14 +40,14 @@ SUB_PORTS = 'sub_ports'
|
|
|
37
40
|
|
|
38
41
|
|
|
39
42
|
class AdminStateColumn(cliff_columns.FormattableColumn[bool]):
|
|
40
|
-
def human_readable(self):
|
|
43
|
+
def human_readable(self) -> str:
|
|
41
44
|
return 'UP' if self._value else 'DOWN'
|
|
42
45
|
|
|
43
46
|
|
|
44
47
|
class CreateNetworkTrunk(command.ShowOne):
|
|
45
48
|
"""Create a network trunk for a given project"""
|
|
46
49
|
|
|
47
|
-
def get_parser(self, prog_name):
|
|
50
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
48
51
|
parser = super().get_parser(prog_name)
|
|
49
52
|
parser.add_argument(
|
|
50
53
|
'name', metavar='<name>', help=_("Name of the trunk to create")
|
|
@@ -87,7 +90,9 @@ class CreateNetworkTrunk(command.ShowOne):
|
|
|
87
90
|
identity_utils.add_project_owner_option_to_parser(parser)
|
|
88
91
|
return parser
|
|
89
92
|
|
|
90
|
-
def take_action(
|
|
93
|
+
def take_action(
|
|
94
|
+
self, parsed_args: argparse.Namespace
|
|
95
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
91
96
|
network_client = self.app.client_manager.network
|
|
92
97
|
identity_client = self.app.client_manager.identity
|
|
93
98
|
attrs = _get_attrs_for_trunk(
|
|
@@ -104,7 +109,7 @@ class CreateNetworkTrunk(command.ShowOne):
|
|
|
104
109
|
class DeleteNetworkTrunk(command.Command):
|
|
105
110
|
"""Delete a given network trunk"""
|
|
106
111
|
|
|
107
|
-
def get_parser(self, prog_name):
|
|
112
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
108
113
|
parser = super().get_parser(prog_name)
|
|
109
114
|
parser.add_argument(
|
|
110
115
|
'trunk',
|
|
@@ -114,7 +119,7 @@ class DeleteNetworkTrunk(command.Command):
|
|
|
114
119
|
)
|
|
115
120
|
return parser
|
|
116
121
|
|
|
117
|
-
def take_action(self, parsed_args):
|
|
122
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
118
123
|
network_client = self.app.client_manager.network
|
|
119
124
|
result = 0
|
|
120
125
|
for trunk in parsed_args.trunk:
|
|
@@ -145,7 +150,7 @@ class DeleteNetworkTrunk(command.Command):
|
|
|
145
150
|
class ListNetworkTrunk(command.Lister):
|
|
146
151
|
"""List all network trunks"""
|
|
147
152
|
|
|
148
|
-
def get_parser(self, prog_name):
|
|
153
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
149
154
|
parser = super().get_parser(prog_name)
|
|
150
155
|
parser.add_argument(
|
|
151
156
|
'--long',
|
|
@@ -155,7 +160,9 @@ class ListNetworkTrunk(command.Lister):
|
|
|
155
160
|
)
|
|
156
161
|
return parser
|
|
157
162
|
|
|
158
|
-
def take_action(
|
|
163
|
+
def take_action(
|
|
164
|
+
self, parsed_args: argparse.Namespace
|
|
165
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
159
166
|
network_client = self.app.client_manager.network
|
|
160
167
|
data = network_client.trunks()
|
|
161
168
|
headers: tuple[str, ...] = ('ID', 'Name', 'Parent Port', 'Description')
|
|
@@ -184,7 +191,7 @@ class ListNetworkTrunk(command.Lister):
|
|
|
184
191
|
class SetNetworkTrunk(command.Command):
|
|
185
192
|
"""Set network trunk properties"""
|
|
186
193
|
|
|
187
|
-
def get_parser(self, prog_name):
|
|
194
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
188
195
|
parser = super().get_parser(prog_name)
|
|
189
196
|
parser.add_argument(
|
|
190
197
|
'trunk', metavar="<trunk>", help=_("Trunk to modify (name or ID)")
|
|
@@ -220,7 +227,7 @@ class SetNetworkTrunk(command.Command):
|
|
|
220
227
|
)
|
|
221
228
|
return parser
|
|
222
229
|
|
|
223
|
-
def take_action(self, parsed_args):
|
|
230
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
224
231
|
network_client = self.app.client_manager.network
|
|
225
232
|
identity_client = self.app.client_manager.identity
|
|
226
233
|
trunk_id = network_client.find_trunk(
|
|
@@ -255,14 +262,16 @@ class SetNetworkTrunk(command.Command):
|
|
|
255
262
|
class ShowNetworkTrunk(command.ShowOne):
|
|
256
263
|
"""Show information of a given network trunk"""
|
|
257
264
|
|
|
258
|
-
def get_parser(self, prog_name):
|
|
265
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
259
266
|
parser = super().get_parser(prog_name)
|
|
260
267
|
parser.add_argument(
|
|
261
268
|
'trunk', metavar="<trunk>", help=_("Trunk to display (name or ID)")
|
|
262
269
|
)
|
|
263
270
|
return parser
|
|
264
271
|
|
|
265
|
-
def take_action(
|
|
272
|
+
def take_action(
|
|
273
|
+
self, parsed_args: argparse.Namespace
|
|
274
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
266
275
|
network_client = self.app.client_manager.network
|
|
267
276
|
trunk_id = network_client.find_trunk(
|
|
268
277
|
parsed_args.trunk,
|
|
@@ -279,7 +288,7 @@ class ShowNetworkTrunk(command.ShowOne):
|
|
|
279
288
|
class ListNetworkSubport(command.Lister):
|
|
280
289
|
"""List all subports for a given network trunk"""
|
|
281
290
|
|
|
282
|
-
def get_parser(self, prog_name):
|
|
291
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
283
292
|
parser = super().get_parser(prog_name)
|
|
284
293
|
parser.add_argument(
|
|
285
294
|
'--trunk',
|
|
@@ -289,7 +298,9 @@ class ListNetworkSubport(command.Lister):
|
|
|
289
298
|
)
|
|
290
299
|
return parser
|
|
291
300
|
|
|
292
|
-
def take_action(
|
|
301
|
+
def take_action(
|
|
302
|
+
self, parsed_args: argparse.Namespace
|
|
303
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
293
304
|
network_client = self.app.client_manager.network
|
|
294
305
|
trunk_id = network_client.find_trunk(
|
|
295
306
|
parsed_args.trunk,
|
|
@@ -321,7 +332,7 @@ class ListNetworkSubport(command.Lister):
|
|
|
321
332
|
class UnsetNetworkTrunk(command.Command):
|
|
322
333
|
"""Unset subports from a given network trunk"""
|
|
323
334
|
|
|
324
|
-
def get_parser(self, prog_name):
|
|
335
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
325
336
|
parser = super().get_parser(prog_name)
|
|
326
337
|
parser.add_argument(
|
|
327
338
|
'trunk',
|
|
@@ -341,7 +352,7 @@ class UnsetNetworkTrunk(command.Command):
|
|
|
341
352
|
)
|
|
342
353
|
return parser
|
|
343
354
|
|
|
344
|
-
def take_action(self, parsed_args):
|
|
355
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
345
356
|
network_client = self.app.client_manager.network
|
|
346
357
|
attrs = _get_attrs_for_subports(network_client, parsed_args)
|
|
347
358
|
trunk_id = network_client.find_trunk(
|
|
@@ -357,15 +368,19 @@ _formatters = {
|
|
|
357
368
|
}
|
|
358
369
|
|
|
359
370
|
|
|
360
|
-
def _get_columns(
|
|
371
|
+
def _get_columns(
|
|
372
|
+
item: _trunk.Trunk,
|
|
373
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
361
374
|
hidden_columns = ['location', 'tenant_id']
|
|
362
375
|
return osc_utils.get_osc_show_columns_for_sdk_resource(
|
|
363
376
|
item, {}, hidden_columns
|
|
364
377
|
)
|
|
365
378
|
|
|
366
379
|
|
|
367
|
-
def _get_attrs_for_trunk(
|
|
368
|
-
|
|
380
|
+
def _get_attrs_for_trunk(
|
|
381
|
+
network_client: Any, identity_client: Any, parsed_args: argparse.Namespace
|
|
382
|
+
) -> dict[str, Any]:
|
|
383
|
+
attrs: dict[str, Any] = {}
|
|
369
384
|
if parsed_args.name is not None:
|
|
370
385
|
attrs['name'] = str(parsed_args.name)
|
|
371
386
|
if parsed_args.description is not None:
|
|
@@ -392,12 +407,14 @@ def _get_attrs_for_trunk(network_client, identity_client, parsed_args):
|
|
|
392
407
|
parsed_args.project,
|
|
393
408
|
parsed_args.project_domain,
|
|
394
409
|
).id
|
|
395
|
-
attrs['
|
|
410
|
+
attrs['project_id'] = project_id
|
|
396
411
|
|
|
397
412
|
return attrs
|
|
398
413
|
|
|
399
414
|
|
|
400
|
-
def _format_subports(
|
|
415
|
+
def _format_subports(
|
|
416
|
+
network_client: Any, subports: list[dict[str, Any]]
|
|
417
|
+
) -> list[dict[str, Any]]:
|
|
401
418
|
attrs = []
|
|
402
419
|
for subport in subports:
|
|
403
420
|
subport_attrs = {}
|
|
@@ -424,7 +441,9 @@ def _format_subports(network_client, subports):
|
|
|
424
441
|
return attrs
|
|
425
442
|
|
|
426
443
|
|
|
427
|
-
def _get_attrs_for_subports(
|
|
444
|
+
def _get_attrs_for_subports(
|
|
445
|
+
network_client: Any, parsed_args: argparse.Namespace
|
|
446
|
+
) -> list[dict[str, Any]]:
|
|
428
447
|
attrs = []
|
|
429
448
|
if 'set_subports' in parsed_args and parsed_args.set_subports is not None:
|
|
430
449
|
attrs = _format_subports(network_client, parsed_args.set_subports)
|