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
|
@@ -10,8 +10,12 @@
|
|
|
10
10
|
# License for the specific language governing permissions and limitations
|
|
11
11
|
# under the License.
|
|
12
12
|
|
|
13
|
+
import argparse
|
|
13
14
|
import logging
|
|
15
|
+
from collections.abc import Iterable, Sequence
|
|
16
|
+
from typing import Any
|
|
14
17
|
|
|
18
|
+
from openstack.network.v2 import tap_mirror as _tap_mirror
|
|
15
19
|
from osc_lib.cli import identity as identity_utils
|
|
16
20
|
from osc_lib import exceptions
|
|
17
21
|
from osc_lib import utils as osc_utils
|
|
@@ -39,7 +43,9 @@ _attr_map = [
|
|
|
39
43
|
]
|
|
40
44
|
|
|
41
45
|
|
|
42
|
-
def _get_columns(
|
|
46
|
+
def _get_columns(
|
|
47
|
+
item: _tap_mirror.TapMirror,
|
|
48
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
43
49
|
column_map: dict[str, str] = {}
|
|
44
50
|
hidden_columns = ['location', 'tenant_id']
|
|
45
51
|
return osc_utils.get_osc_show_columns_for_sdk_resource(
|
|
@@ -50,7 +56,7 @@ def _get_columns(item):
|
|
|
50
56
|
class CreateTapMirror(command.ShowOne):
|
|
51
57
|
_description = _("Create a new tap mirror.")
|
|
52
58
|
|
|
53
|
-
def get_parser(self, prog_name):
|
|
59
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
54
60
|
parser = super().get_parser(prog_name)
|
|
55
61
|
identity_utils.add_project_owner_option_to_parser(parser)
|
|
56
62
|
tap_service._add_updatable_args(parser)
|
|
@@ -88,7 +94,9 @@ class CreateTapMirror(command.ShowOne):
|
|
|
88
94
|
)
|
|
89
95
|
return parser
|
|
90
96
|
|
|
91
|
-
def take_action(
|
|
97
|
+
def take_action(
|
|
98
|
+
self, parsed_args: argparse.Namespace
|
|
99
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
92
100
|
client = self.app.client_manager.network
|
|
93
101
|
attrs = {}
|
|
94
102
|
if parsed_args.name is not None:
|
|
@@ -113,7 +121,7 @@ class CreateTapMirror(command.ShowOne):
|
|
|
113
121
|
parsed_args.project_domain,
|
|
114
122
|
).id
|
|
115
123
|
obj = client.create_tap_mirror(**attrs)
|
|
116
|
-
display_columns, columns =
|
|
124
|
+
display_columns, columns = _get_columns(obj)
|
|
117
125
|
data = osc_utils.get_dict_properties(obj, columns)
|
|
118
126
|
return display_columns, data
|
|
119
127
|
|
|
@@ -121,13 +129,15 @@ class CreateTapMirror(command.ShowOne):
|
|
|
121
129
|
class ListTapMirror(command.Lister):
|
|
122
130
|
_description = _("List tap mirrors.")
|
|
123
131
|
|
|
124
|
-
def get_parser(self, prog_name):
|
|
132
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
125
133
|
parser = super().get_parser(prog_name)
|
|
126
134
|
identity_utils.add_project_owner_option_to_parser(parser)
|
|
127
135
|
|
|
128
136
|
return parser
|
|
129
137
|
|
|
130
|
-
def take_action(
|
|
138
|
+
def take_action(
|
|
139
|
+
self, parsed_args: argparse.Namespace
|
|
140
|
+
) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
|
|
131
141
|
client = self.app.client_manager.network
|
|
132
142
|
params = {}
|
|
133
143
|
if parsed_args.project is not None:
|
|
@@ -149,7 +159,7 @@ class ListTapMirror(command.Lister):
|
|
|
149
159
|
class ShowTapMirror(command.ShowOne):
|
|
150
160
|
_description = _("Show tap mirror details.")
|
|
151
161
|
|
|
152
|
-
def get_parser(self, prog_name):
|
|
162
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
153
163
|
parser = super().get_parser(prog_name)
|
|
154
164
|
parser.add_argument(
|
|
155
165
|
TAP_MIRROR,
|
|
@@ -158,13 +168,15 @@ class ShowTapMirror(command.ShowOne):
|
|
|
158
168
|
)
|
|
159
169
|
return parser
|
|
160
170
|
|
|
161
|
-
def take_action(
|
|
171
|
+
def take_action(
|
|
172
|
+
self, parsed_args: argparse.Namespace
|
|
173
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
162
174
|
client = self.app.client_manager.network
|
|
163
175
|
id = client.find_tap_mirror(
|
|
164
176
|
parsed_args.tap_mirror, ignore_missing=False
|
|
165
177
|
).id
|
|
166
178
|
obj = client.get_tap_mirror(id)
|
|
167
|
-
display_columns, columns =
|
|
179
|
+
display_columns, columns = _get_columns(obj)
|
|
168
180
|
data = osc_utils.get_dict_properties(obj, columns)
|
|
169
181
|
return display_columns, data
|
|
170
182
|
|
|
@@ -172,7 +184,7 @@ class ShowTapMirror(command.ShowOne):
|
|
|
172
184
|
class DeleteTapMirror(command.Command):
|
|
173
185
|
_description = _("Delete a tap mirror.")
|
|
174
186
|
|
|
175
|
-
def get_parser(self, prog_name):
|
|
187
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
176
188
|
parser = super().get_parser(prog_name)
|
|
177
189
|
parser.add_argument(
|
|
178
190
|
TAP_MIRROR,
|
|
@@ -182,7 +194,7 @@ class DeleteTapMirror(command.Command):
|
|
|
182
194
|
)
|
|
183
195
|
return parser
|
|
184
196
|
|
|
185
|
-
def take_action(self, parsed_args):
|
|
197
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
186
198
|
client = self.app.client_manager.network
|
|
187
199
|
fails = 0
|
|
188
200
|
for id_or_name in parsed_args.tap_mirror:
|
|
@@ -211,7 +223,7 @@ class DeleteTapMirror(command.Command):
|
|
|
211
223
|
class UpdateTapMirror(command.ShowOne):
|
|
212
224
|
_description = _("Update a tap mirror.")
|
|
213
225
|
|
|
214
|
-
def get_parser(self, prog_name):
|
|
226
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
215
227
|
parser = super().get_parser(prog_name)
|
|
216
228
|
parser.add_argument(
|
|
217
229
|
TAP_MIRROR,
|
|
@@ -221,7 +233,9 @@ class UpdateTapMirror(command.ShowOne):
|
|
|
221
233
|
tap_service._add_updatable_args(parser)
|
|
222
234
|
return parser
|
|
223
235
|
|
|
224
|
-
def take_action(
|
|
236
|
+
def take_action(
|
|
237
|
+
self, parsed_args: argparse.Namespace
|
|
238
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
225
239
|
client = self.app.client_manager.network
|
|
226
240
|
original_t_s = client.find_tap_mirror(
|
|
227
241
|
parsed_args.tap_mirror, ignore_missing=False
|
|
@@ -232,6 +246,6 @@ class UpdateTapMirror(command.ShowOne):
|
|
|
232
246
|
if parsed_args.description is not None:
|
|
233
247
|
attrs['description'] = parsed_args.description
|
|
234
248
|
obj = client.update_tap_mirror(original_t_s, **attrs)
|
|
235
|
-
display_columns, columns =
|
|
249
|
+
display_columns, columns = _get_columns(obj)
|
|
236
250
|
data = osc_utils.get_dict_properties(obj, columns)
|
|
237
251
|
return display_columns, data
|
|
@@ -12,8 +12,12 @@
|
|
|
12
12
|
# License for the specific language governing permissions and limitations
|
|
13
13
|
# under the License.
|
|
14
14
|
|
|
15
|
+
import argparse
|
|
15
16
|
import logging
|
|
17
|
+
from collections.abc import Iterable, Sequence
|
|
18
|
+
from typing import Any
|
|
16
19
|
|
|
20
|
+
from openstack.network.v2 import tap_service as _tap_service
|
|
17
21
|
from osc_lib.cli import identity as identity_utils
|
|
18
22
|
from osc_lib import exceptions
|
|
19
23
|
from osc_lib import utils as osc_utils
|
|
@@ -37,14 +41,16 @@ _attr_map = [
|
|
|
37
41
|
]
|
|
38
42
|
|
|
39
43
|
|
|
40
|
-
def _add_updatable_args(parser):
|
|
44
|
+
def _add_updatable_args(parser: argparse.ArgumentParser) -> None:
|
|
41
45
|
parser.add_argument('--name', help=_('Name of the tap service.'))
|
|
42
46
|
parser.add_argument(
|
|
43
47
|
'--description', help=_('Description of the tap service.')
|
|
44
48
|
)
|
|
45
49
|
|
|
46
50
|
|
|
47
|
-
def _get_columns(
|
|
51
|
+
def _get_columns(
|
|
52
|
+
item: _tap_service.TapService,
|
|
53
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
48
54
|
column_map: dict[str, str] = {}
|
|
49
55
|
hidden_columns = ['location', 'tenant_id']
|
|
50
56
|
return osc_utils.get_osc_show_columns_for_sdk_resource(
|
|
@@ -55,7 +61,7 @@ def _get_columns(item):
|
|
|
55
61
|
class CreateTapService(command.ShowOne):
|
|
56
62
|
_description = _("Create a new tap service.")
|
|
57
63
|
|
|
58
|
-
def get_parser(self, prog_name):
|
|
64
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
59
65
|
parser = super().get_parser(prog_name)
|
|
60
66
|
identity_utils.add_project_owner_option_to_parser(parser)
|
|
61
67
|
_add_updatable_args(parser)
|
|
@@ -68,7 +74,9 @@ class CreateTapService(command.ShowOne):
|
|
|
68
74
|
)
|
|
69
75
|
return parser
|
|
70
76
|
|
|
71
|
-
def take_action(
|
|
77
|
+
def take_action(
|
|
78
|
+
self, parsed_args: argparse.Namespace
|
|
79
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
72
80
|
client = self.app.client_manager.network
|
|
73
81
|
attrs = {}
|
|
74
82
|
if parsed_args.name is not None:
|
|
@@ -95,13 +103,15 @@ class CreateTapService(command.ShowOne):
|
|
|
95
103
|
class ListTapService(command.Lister):
|
|
96
104
|
_description = _("List tap services.")
|
|
97
105
|
|
|
98
|
-
def get_parser(self, prog_name):
|
|
106
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
99
107
|
parser = super().get_parser(prog_name)
|
|
100
108
|
identity_utils.add_project_owner_option_to_parser(parser)
|
|
101
109
|
|
|
102
110
|
return parser
|
|
103
111
|
|
|
104
|
-
def take_action(
|
|
112
|
+
def take_action(
|
|
113
|
+
self, parsed_args: argparse.Namespace
|
|
114
|
+
) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
|
|
105
115
|
client = self.app.client_manager.network
|
|
106
116
|
params = {}
|
|
107
117
|
if parsed_args.project is not None:
|
|
@@ -123,7 +133,7 @@ class ListTapService(command.Lister):
|
|
|
123
133
|
class ShowTapService(command.ShowOne):
|
|
124
134
|
_description = _("Show tap service details.")
|
|
125
135
|
|
|
126
|
-
def get_parser(self, prog_name):
|
|
136
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
127
137
|
parser = super().get_parser(prog_name)
|
|
128
138
|
parser.add_argument(
|
|
129
139
|
TAP_SERVICE,
|
|
@@ -132,7 +142,9 @@ class ShowTapService(command.ShowOne):
|
|
|
132
142
|
)
|
|
133
143
|
return parser
|
|
134
144
|
|
|
135
|
-
def take_action(
|
|
145
|
+
def take_action(
|
|
146
|
+
self, parsed_args: argparse.Namespace
|
|
147
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
136
148
|
client = self.app.client_manager.network
|
|
137
149
|
id = client.find_tap_service(
|
|
138
150
|
parsed_args.tap_service, ignore_missing=False
|
|
@@ -146,7 +158,7 @@ class ShowTapService(command.ShowOne):
|
|
|
146
158
|
class DeleteTapService(command.Command):
|
|
147
159
|
_description = _("Delete a tap service.")
|
|
148
160
|
|
|
149
|
-
def get_parser(self, prog_name):
|
|
161
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
150
162
|
parser = super().get_parser(prog_name)
|
|
151
163
|
parser.add_argument(
|
|
152
164
|
TAP_SERVICE,
|
|
@@ -156,7 +168,7 @@ class DeleteTapService(command.Command):
|
|
|
156
168
|
)
|
|
157
169
|
return parser
|
|
158
170
|
|
|
159
|
-
def take_action(self, parsed_args):
|
|
171
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
160
172
|
client = self.app.client_manager.network
|
|
161
173
|
fails = 0
|
|
162
174
|
for id_or_name in parsed_args.tap_service:
|
|
@@ -185,7 +197,7 @@ class DeleteTapService(command.Command):
|
|
|
185
197
|
class UpdateTapService(command.ShowOne):
|
|
186
198
|
_description = _("Update a tap service.")
|
|
187
199
|
|
|
188
|
-
def get_parser(self, prog_name):
|
|
200
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
189
201
|
parser = super().get_parser(prog_name)
|
|
190
202
|
parser.add_argument(
|
|
191
203
|
TAP_SERVICE,
|
|
@@ -195,7 +207,9 @@ class UpdateTapService(command.ShowOne):
|
|
|
195
207
|
_add_updatable_args(parser)
|
|
196
208
|
return parser
|
|
197
209
|
|
|
198
|
-
def take_action(
|
|
210
|
+
def take_action(
|
|
211
|
+
self, parsed_args: argparse.Namespace
|
|
212
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
199
213
|
client = self.app.client_manager.network
|
|
200
214
|
original_t_s = client.find_tap_service(
|
|
201
215
|
parsed_args.tap_service, ignore_missing=False
|
openstackclient/object/client.py
CHANGED
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
|
|
16
16
|
"""Object client"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
19
|
+
from typing import Any
|
|
20
|
+
|
|
18
21
|
from osc_lib import utils
|
|
19
22
|
|
|
20
23
|
from openstackclient.api import object_store_v1
|
|
@@ -26,7 +29,7 @@ API_NAME = 'object_store'
|
|
|
26
29
|
API_VERSIONS = ('1',)
|
|
27
30
|
|
|
28
31
|
|
|
29
|
-
def make_client(instance):
|
|
32
|
+
def make_client(instance: Any) -> object_store_v1.APIv1:
|
|
30
33
|
"""Returns an object-store API client."""
|
|
31
34
|
|
|
32
35
|
endpoint = instance.get_endpoint_for_service_type(
|
|
@@ -43,7 +46,9 @@ def make_client(instance):
|
|
|
43
46
|
return client
|
|
44
47
|
|
|
45
48
|
|
|
46
|
-
def build_option_parser(
|
|
49
|
+
def build_option_parser(
|
|
50
|
+
parser: argparse.ArgumentParser,
|
|
51
|
+
) -> argparse.ArgumentParser:
|
|
47
52
|
"""Hook to add global options"""
|
|
48
53
|
parser.add_argument(
|
|
49
54
|
'--os-object-api-version',
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
"""Account v1 action implementations"""
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
17
|
+
from collections.abc import Iterable, Sequence
|
|
18
|
+
from typing import Any
|
|
19
|
+
|
|
16
20
|
from osc_lib.cli import format_columns
|
|
17
21
|
from osc_lib.cli import parseractions
|
|
18
22
|
|
|
@@ -23,7 +27,7 @@ from openstackclient.i18n import _
|
|
|
23
27
|
class SetAccount(command.Command):
|
|
24
28
|
_description = _("Set account properties")
|
|
25
29
|
|
|
26
|
-
def get_parser(self, prog_name):
|
|
30
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
27
31
|
parser = super().get_parser(prog_name)
|
|
28
32
|
parser.add_argument(
|
|
29
33
|
"--property",
|
|
@@ -37,7 +41,7 @@ class SetAccount(command.Command):
|
|
|
37
41
|
)
|
|
38
42
|
return parser
|
|
39
43
|
|
|
40
|
-
def take_action(self, parsed_args):
|
|
44
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
41
45
|
self.app.client_manager.object_store.account_set(
|
|
42
46
|
properties=parsed_args.property,
|
|
43
47
|
)
|
|
@@ -46,19 +50,22 @@ class SetAccount(command.Command):
|
|
|
46
50
|
class ShowAccount(command.ShowOne):
|
|
47
51
|
_description = _("Display account details")
|
|
48
52
|
|
|
49
|
-
def take_action(
|
|
53
|
+
def take_action(
|
|
54
|
+
self, parsed_args: argparse.Namespace
|
|
55
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
50
56
|
data = self.app.client_manager.object_store.account_show()
|
|
51
57
|
if 'properties' in data:
|
|
52
58
|
data['properties'] = format_columns.DictColumn(
|
|
53
59
|
data.pop('properties')
|
|
54
60
|
)
|
|
55
|
-
|
|
61
|
+
col_headers, col_data = zip(*sorted(data.items()))
|
|
62
|
+
return col_headers, col_data
|
|
56
63
|
|
|
57
64
|
|
|
58
65
|
class UnsetAccount(command.Command):
|
|
59
66
|
_description = _("Unset account properties")
|
|
60
67
|
|
|
61
|
-
def get_parser(self, prog_name):
|
|
68
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
62
69
|
parser = super().get_parser(prog_name)
|
|
63
70
|
parser.add_argument(
|
|
64
71
|
'--property',
|
|
@@ -73,7 +80,7 @@ class UnsetAccount(command.Command):
|
|
|
73
80
|
)
|
|
74
81
|
return parser
|
|
75
82
|
|
|
76
|
-
def take_action(self, parsed_args):
|
|
83
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
77
84
|
self.app.client_manager.object_store.account_unset(
|
|
78
85
|
properties=parsed_args.property,
|
|
79
86
|
)
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
"""Container v1 action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
18
19
|
import logging
|
|
20
|
+
from collections.abc import Iterable, Sequence
|
|
21
|
+
from typing import Any
|
|
19
22
|
|
|
20
23
|
from osc_lib.cli import format_columns
|
|
21
24
|
from osc_lib.cli import parseractions
|
|
@@ -31,7 +34,7 @@ LOG = logging.getLogger(__name__)
|
|
|
31
34
|
class CreateContainer(command.Lister):
|
|
32
35
|
_description = _("Create new container")
|
|
33
36
|
|
|
34
|
-
def get_parser(self, prog_name):
|
|
37
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
35
38
|
parser = super().get_parser(prog_name)
|
|
36
39
|
parser.add_argument(
|
|
37
40
|
'--public',
|
|
@@ -51,7 +54,9 @@ class CreateContainer(command.Lister):
|
|
|
51
54
|
)
|
|
52
55
|
return parser
|
|
53
56
|
|
|
54
|
-
def take_action(
|
|
57
|
+
def take_action(
|
|
58
|
+
self, parsed_args: argparse.Namespace
|
|
59
|
+
) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
|
|
55
60
|
results = []
|
|
56
61
|
for container in parsed_args.containers:
|
|
57
62
|
if len(container) > 256:
|
|
@@ -84,7 +89,7 @@ class CreateContainer(command.Lister):
|
|
|
84
89
|
class DeleteContainer(command.Command):
|
|
85
90
|
_description = _("Delete container")
|
|
86
91
|
|
|
87
|
-
def get_parser(self, prog_name):
|
|
92
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
88
93
|
parser = super().get_parser(prog_name)
|
|
89
94
|
parser.add_argument(
|
|
90
95
|
'--recursive',
|
|
@@ -101,7 +106,7 @@ class DeleteContainer(command.Command):
|
|
|
101
106
|
)
|
|
102
107
|
return parser
|
|
103
108
|
|
|
104
|
-
def take_action(self, parsed_args):
|
|
109
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
105
110
|
for container in parsed_args.containers:
|
|
106
111
|
if parsed_args.recursive:
|
|
107
112
|
objs = self.app.client_manager.object_store.object_list(
|
|
@@ -120,14 +125,16 @@ class DeleteContainer(command.Command):
|
|
|
120
125
|
class ListContainer(command.Lister):
|
|
121
126
|
_description = _("List containers")
|
|
122
127
|
|
|
123
|
-
def get_parser(self, prog_name):
|
|
128
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
124
129
|
parser = super().get_parser(prog_name)
|
|
125
130
|
parser.add_argument(
|
|
126
131
|
"--prefix",
|
|
127
132
|
metavar="<prefix>",
|
|
128
133
|
help=_("Filter list using <prefix>"),
|
|
129
134
|
)
|
|
130
|
-
pagination.add_marker_pagination_option_to_parser(
|
|
135
|
+
pagination.add_marker_pagination_option_to_parser(
|
|
136
|
+
parser, include_max_items=False
|
|
137
|
+
)
|
|
131
138
|
parser.add_argument(
|
|
132
139
|
"--end-marker",
|
|
133
140
|
metavar="<end-marker>",
|
|
@@ -147,7 +154,9 @@ class ListContainer(command.Lister):
|
|
|
147
154
|
)
|
|
148
155
|
return parser
|
|
149
156
|
|
|
150
|
-
def take_action(
|
|
157
|
+
def take_action(
|
|
158
|
+
self, parsed_args: argparse.Namespace
|
|
159
|
+
) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
|
|
151
160
|
columns: tuple[str, ...] = ('Name',)
|
|
152
161
|
if parsed_args.long:
|
|
153
162
|
columns += ('Bytes', 'Count')
|
|
@@ -182,7 +191,7 @@ class ListContainer(command.Lister):
|
|
|
182
191
|
class SaveContainer(command.Command):
|
|
183
192
|
_description = _("Save container contents locally")
|
|
184
193
|
|
|
185
|
-
def get_parser(self, prog_name):
|
|
194
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
186
195
|
parser = super().get_parser(prog_name)
|
|
187
196
|
parser.add_argument(
|
|
188
197
|
'container',
|
|
@@ -191,7 +200,7 @@ class SaveContainer(command.Command):
|
|
|
191
200
|
)
|
|
192
201
|
return parser
|
|
193
202
|
|
|
194
|
-
def take_action(self, parsed_args):
|
|
203
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
195
204
|
self.app.client_manager.object_store.container_save(
|
|
196
205
|
container=parsed_args.container,
|
|
197
206
|
)
|
|
@@ -200,7 +209,7 @@ class SaveContainer(command.Command):
|
|
|
200
209
|
class SetContainer(command.Command):
|
|
201
210
|
_description = _("Set container properties")
|
|
202
211
|
|
|
203
|
-
def get_parser(self, prog_name):
|
|
212
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
204
213
|
parser = super().get_parser(prog_name)
|
|
205
214
|
parser.add_argument(
|
|
206
215
|
'container',
|
|
@@ -219,7 +228,7 @@ class SetContainer(command.Command):
|
|
|
219
228
|
)
|
|
220
229
|
return parser
|
|
221
230
|
|
|
222
|
-
def take_action(self, parsed_args):
|
|
231
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
223
232
|
self.app.client_manager.object_store.container_set(
|
|
224
233
|
parsed_args.container,
|
|
225
234
|
properties=parsed_args.property,
|
|
@@ -229,7 +238,7 @@ class SetContainer(command.Command):
|
|
|
229
238
|
class ShowContainer(command.ShowOne):
|
|
230
239
|
_description = _("Display container details")
|
|
231
240
|
|
|
232
|
-
def get_parser(self, prog_name):
|
|
241
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
233
242
|
parser = super().get_parser(prog_name)
|
|
234
243
|
parser.add_argument(
|
|
235
244
|
'container',
|
|
@@ -238,20 +247,23 @@ class ShowContainer(command.ShowOne):
|
|
|
238
247
|
)
|
|
239
248
|
return parser
|
|
240
249
|
|
|
241
|
-
def take_action(
|
|
250
|
+
def take_action(
|
|
251
|
+
self, parsed_args: argparse.Namespace
|
|
252
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
242
253
|
data = self.app.client_manager.object_store.container_show(
|
|
243
254
|
container=parsed_args.container,
|
|
244
255
|
)
|
|
245
256
|
if 'properties' in data:
|
|
246
257
|
data['properties'] = format_columns.DictColumn(data['properties'])
|
|
247
258
|
|
|
248
|
-
|
|
259
|
+
col_headers, col_data = zip(*sorted(data.items()))
|
|
260
|
+
return col_headers, col_data
|
|
249
261
|
|
|
250
262
|
|
|
251
263
|
class UnsetContainer(command.Command):
|
|
252
264
|
_description = _("Unset container properties")
|
|
253
265
|
|
|
254
|
-
def get_parser(self, prog_name):
|
|
266
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
255
267
|
parser = super().get_parser(prog_name)
|
|
256
268
|
parser.add_argument(
|
|
257
269
|
'container',
|
|
@@ -271,7 +283,7 @@ class UnsetContainer(command.Command):
|
|
|
271
283
|
)
|
|
272
284
|
return parser
|
|
273
285
|
|
|
274
|
-
def take_action(self, parsed_args):
|
|
286
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
275
287
|
self.app.client_manager.object_store.container_unset(
|
|
276
288
|
parsed_args.container,
|
|
277
289
|
properties=parsed_args.property,
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
"""Object v1 action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
18
19
|
import logging
|
|
20
|
+
from collections.abc import Iterable, Sequence
|
|
21
|
+
from typing import Any
|
|
19
22
|
|
|
20
23
|
from osc_lib.cli import format_columns
|
|
21
24
|
from osc_lib.cli import parseractions
|
|
@@ -33,7 +36,7 @@ LOG = logging.getLogger(__name__)
|
|
|
33
36
|
class CreateObject(command.Lister):
|
|
34
37
|
_description = _("Upload object to container")
|
|
35
38
|
|
|
36
|
-
def get_parser(self, prog_name):
|
|
39
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
37
40
|
parser = super().get_parser(prog_name)
|
|
38
41
|
parser.add_argument(
|
|
39
42
|
'container',
|
|
@@ -56,7 +59,9 @@ class CreateObject(command.Lister):
|
|
|
56
59
|
)
|
|
57
60
|
return parser
|
|
58
61
|
|
|
59
|
-
def take_action(
|
|
62
|
+
def take_action(
|
|
63
|
+
self, parsed_args: argparse.Namespace
|
|
64
|
+
) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
|
|
60
65
|
if parsed_args.name:
|
|
61
66
|
if len(parsed_args.objects) > 1:
|
|
62
67
|
msg = _(
|
|
@@ -98,7 +103,7 @@ class CreateObject(command.Lister):
|
|
|
98
103
|
class DeleteObject(command.Command):
|
|
99
104
|
_description = _("Delete object from container")
|
|
100
105
|
|
|
101
|
-
def get_parser(self, prog_name):
|
|
106
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
102
107
|
parser = super().get_parser(prog_name)
|
|
103
108
|
parser.add_argument(
|
|
104
109
|
'container',
|
|
@@ -113,7 +118,7 @@ class DeleteObject(command.Command):
|
|
|
113
118
|
)
|
|
114
119
|
return parser
|
|
115
120
|
|
|
116
|
-
def take_action(self, parsed_args):
|
|
121
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
117
122
|
for obj in parsed_args.objects:
|
|
118
123
|
self.app.client_manager.object_store.object_delete(
|
|
119
124
|
container=parsed_args.container,
|
|
@@ -124,7 +129,7 @@ class DeleteObject(command.Command):
|
|
|
124
129
|
class ListObject(command.Lister):
|
|
125
130
|
_description = _("List objects")
|
|
126
131
|
|
|
127
|
-
def get_parser(self, prog_name):
|
|
132
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
128
133
|
parser = super().get_parser(prog_name)
|
|
129
134
|
parser.add_argument(
|
|
130
135
|
"container",
|
|
@@ -141,7 +146,9 @@ class ListObject(command.Lister):
|
|
|
141
146
|
metavar="<delimiter>",
|
|
142
147
|
help=_("Roll up items with <delimiter>"),
|
|
143
148
|
)
|
|
144
|
-
pagination.add_marker_pagination_option_to_parser(
|
|
149
|
+
pagination.add_marker_pagination_option_to_parser(
|
|
150
|
+
parser, include_max_items=False
|
|
151
|
+
)
|
|
145
152
|
parser.add_argument(
|
|
146
153
|
"--end-marker",
|
|
147
154
|
metavar="<end-marker>",
|
|
@@ -161,7 +168,9 @@ class ListObject(command.Lister):
|
|
|
161
168
|
)
|
|
162
169
|
return parser
|
|
163
170
|
|
|
164
|
-
def take_action(
|
|
171
|
+
def take_action(
|
|
172
|
+
self, parsed_args: argparse.Namespace
|
|
173
|
+
) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
|
|
165
174
|
columns: tuple[str, ...] = ('Name',)
|
|
166
175
|
if parsed_args.long:
|
|
167
176
|
columns += ('Bytes', 'Hash', 'Content Type', 'Last Modified')
|
|
@@ -200,7 +209,7 @@ class ListObject(command.Lister):
|
|
|
200
209
|
class SaveObject(command.Command):
|
|
201
210
|
_description = _("Save object locally")
|
|
202
211
|
|
|
203
|
-
def get_parser(self, prog_name):
|
|
212
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
204
213
|
parser = super().get_parser(prog_name)
|
|
205
214
|
parser.add_argument(
|
|
206
215
|
"--file",
|
|
@@ -222,7 +231,7 @@ class SaveObject(command.Command):
|
|
|
222
231
|
)
|
|
223
232
|
return parser
|
|
224
233
|
|
|
225
|
-
def take_action(self, parsed_args):
|
|
234
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
226
235
|
self.app.client_manager.object_store.object_save(
|
|
227
236
|
container=parsed_args.container,
|
|
228
237
|
object=parsed_args.object,
|
|
@@ -233,7 +242,7 @@ class SaveObject(command.Command):
|
|
|
233
242
|
class SetObject(command.Command):
|
|
234
243
|
_description = _("Set object properties")
|
|
235
244
|
|
|
236
|
-
def get_parser(self, prog_name):
|
|
245
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
237
246
|
parser = super().get_parser(prog_name)
|
|
238
247
|
parser.add_argument(
|
|
239
248
|
'container',
|
|
@@ -257,7 +266,7 @@ class SetObject(command.Command):
|
|
|
257
266
|
)
|
|
258
267
|
return parser
|
|
259
268
|
|
|
260
|
-
def take_action(self, parsed_args):
|
|
269
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
261
270
|
self.app.client_manager.object_store.object_set(
|
|
262
271
|
parsed_args.container,
|
|
263
272
|
parsed_args.object,
|
|
@@ -268,7 +277,7 @@ class SetObject(command.Command):
|
|
|
268
277
|
class ShowObject(command.ShowOne):
|
|
269
278
|
_description = _("Display object details")
|
|
270
279
|
|
|
271
|
-
def get_parser(self, prog_name):
|
|
280
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
272
281
|
parser = super().get_parser(prog_name)
|
|
273
282
|
parser.add_argument(
|
|
274
283
|
'container',
|
|
@@ -282,7 +291,9 @@ class ShowObject(command.ShowOne):
|
|
|
282
291
|
)
|
|
283
292
|
return parser
|
|
284
293
|
|
|
285
|
-
def take_action(
|
|
294
|
+
def take_action(
|
|
295
|
+
self, parsed_args: argparse.Namespace
|
|
296
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
286
297
|
data = self.app.client_manager.object_store.object_show(
|
|
287
298
|
container=parsed_args.container,
|
|
288
299
|
object=parsed_args.object,
|
|
@@ -290,13 +301,14 @@ class ShowObject(command.ShowOne):
|
|
|
290
301
|
if 'properties' in data:
|
|
291
302
|
data['properties'] = format_columns.DictColumn(data['properties'])
|
|
292
303
|
|
|
293
|
-
|
|
304
|
+
col_headers, col_data = zip(*sorted(data.items()))
|
|
305
|
+
return col_headers, col_data
|
|
294
306
|
|
|
295
307
|
|
|
296
308
|
class UnsetObject(command.Command):
|
|
297
309
|
_description = _("Unset object properties")
|
|
298
310
|
|
|
299
|
-
def get_parser(self, prog_name):
|
|
311
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
300
312
|
parser = super().get_parser(prog_name)
|
|
301
313
|
parser.add_argument(
|
|
302
314
|
'container',
|
|
@@ -321,7 +333,7 @@ class UnsetObject(command.Command):
|
|
|
321
333
|
)
|
|
322
334
|
return parser
|
|
323
335
|
|
|
324
|
-
def take_action(self, parsed_args):
|
|
336
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
325
337
|
self.app.client_manager.object_store.object_unset(
|
|
326
338
|
parsed_args.container,
|
|
327
339
|
parsed_args.object,
|
openstackclient/py.typed
ADDED
|
File without changes
|