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,8 +16,10 @@
|
|
|
16
16
|
|
|
17
17
|
"""Compute v2 Aggregate 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
|
|
23
25
|
from openstack import utils as sdk_utils
|
|
@@ -33,7 +35,7 @@ from openstackclient.i18n import _
|
|
|
33
35
|
LOG = logging.getLogger(__name__)
|
|
34
36
|
|
|
35
37
|
|
|
36
|
-
_aggregate_formatters: dict[str, type[columns.FormattableColumn[
|
|
38
|
+
_aggregate_formatters: dict[str, type[columns.FormattableColumn[Any]]] = {
|
|
37
39
|
'Hosts': format_columns.ListColumn,
|
|
38
40
|
'Metadata': format_columns.DictColumn,
|
|
39
41
|
'hosts': format_columns.ListColumn,
|
|
@@ -41,7 +43,9 @@ _aggregate_formatters: dict[str, type[columns.FormattableColumn[ty.Any]]] = {
|
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
|
|
44
|
-
def _get_aggregate_columns(
|
|
46
|
+
def _get_aggregate_columns(
|
|
47
|
+
item: Any,
|
|
48
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
45
49
|
# To maintain backwards compatibility we need to rename sdk props to
|
|
46
50
|
# whatever OSC was using before
|
|
47
51
|
column_map = {
|
|
@@ -56,7 +60,7 @@ def _get_aggregate_columns(item):
|
|
|
56
60
|
class AddAggregateHost(command.ShowOne):
|
|
57
61
|
_description = _("Add host to aggregate")
|
|
58
62
|
|
|
59
|
-
def get_parser(self, prog_name):
|
|
63
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
60
64
|
parser = super().get_parser(prog_name)
|
|
61
65
|
parser.add_argument(
|
|
62
66
|
'aggregate',
|
|
@@ -68,7 +72,9 @@ class AddAggregateHost(command.ShowOne):
|
|
|
68
72
|
)
|
|
69
73
|
return parser
|
|
70
74
|
|
|
71
|
-
def take_action(
|
|
75
|
+
def take_action(
|
|
76
|
+
self, parsed_args: argparse.Namespace
|
|
77
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
72
78
|
compute_client = self.app.client_manager.compute
|
|
73
79
|
|
|
74
80
|
aggregate = compute_client.find_aggregate(
|
|
@@ -89,7 +95,7 @@ class AddAggregateHost(command.ShowOne):
|
|
|
89
95
|
class CreateAggregate(command.ShowOne):
|
|
90
96
|
_description = _("Create a new aggregate")
|
|
91
97
|
|
|
92
|
-
def get_parser(self, prog_name):
|
|
98
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
93
99
|
parser = super().get_parser(prog_name)
|
|
94
100
|
parser.add_argument(
|
|
95
101
|
"name", metavar="<name>", help=_("New aggregate name")
|
|
@@ -111,7 +117,9 @@ class CreateAggregate(command.ShowOne):
|
|
|
111
117
|
)
|
|
112
118
|
return parser
|
|
113
119
|
|
|
114
|
-
def take_action(
|
|
120
|
+
def take_action(
|
|
121
|
+
self, parsed_args: argparse.Namespace
|
|
122
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
115
123
|
compute_client = self.app.client_manager.compute
|
|
116
124
|
|
|
117
125
|
attrs = {'name': parsed_args.name}
|
|
@@ -137,7 +145,7 @@ class CreateAggregate(command.ShowOne):
|
|
|
137
145
|
class DeleteAggregate(command.Command):
|
|
138
146
|
_description = _("Delete existing aggregate(s)")
|
|
139
147
|
|
|
140
|
-
def get_parser(self, prog_name):
|
|
148
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
141
149
|
parser = super().get_parser(prog_name)
|
|
142
150
|
parser.add_argument(
|
|
143
151
|
'aggregate',
|
|
@@ -147,7 +155,7 @@ class DeleteAggregate(command.Command):
|
|
|
147
155
|
)
|
|
148
156
|
return parser
|
|
149
157
|
|
|
150
|
-
def take_action(self, parsed_args):
|
|
158
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
151
159
|
compute_client = self.app.client_manager.compute
|
|
152
160
|
result = 0
|
|
153
161
|
for a in parsed_args.aggregate:
|
|
@@ -180,7 +188,7 @@ class DeleteAggregate(command.Command):
|
|
|
180
188
|
class ListAggregate(command.Lister):
|
|
181
189
|
_description = _("List all aggregates")
|
|
182
190
|
|
|
183
|
-
def get_parser(self, prog_name):
|
|
191
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
184
192
|
parser = super().get_parser(prog_name)
|
|
185
193
|
parser.add_argument(
|
|
186
194
|
'--long',
|
|
@@ -190,7 +198,9 @@ class ListAggregate(command.Lister):
|
|
|
190
198
|
)
|
|
191
199
|
return parser
|
|
192
200
|
|
|
193
|
-
def take_action(
|
|
201
|
+
def take_action(
|
|
202
|
+
self, parsed_args: argparse.Namespace
|
|
203
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
194
204
|
compute_client = self.app.client_manager.compute
|
|
195
205
|
|
|
196
206
|
aggregates = list(compute_client.aggregates())
|
|
@@ -240,7 +250,7 @@ class ListAggregate(command.Lister):
|
|
|
240
250
|
class RemoveAggregateHost(command.ShowOne):
|
|
241
251
|
_description = _("Remove host from aggregate")
|
|
242
252
|
|
|
243
|
-
def get_parser(self, prog_name):
|
|
253
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
244
254
|
parser = super().get_parser(prog_name)
|
|
245
255
|
parser.add_argument(
|
|
246
256
|
'aggregate',
|
|
@@ -252,7 +262,9 @@ class RemoveAggregateHost(command.ShowOne):
|
|
|
252
262
|
)
|
|
253
263
|
return parser
|
|
254
264
|
|
|
255
|
-
def take_action(
|
|
265
|
+
def take_action(
|
|
266
|
+
self, parsed_args: argparse.Namespace
|
|
267
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
256
268
|
compute_client = self.app.client_manager.compute
|
|
257
269
|
|
|
258
270
|
aggregate = compute_client.find_aggregate(
|
|
@@ -273,7 +285,7 @@ class RemoveAggregateHost(command.ShowOne):
|
|
|
273
285
|
class SetAggregate(command.Command):
|
|
274
286
|
_description = _("Set aggregate properties")
|
|
275
287
|
|
|
276
|
-
def get_parser(self, prog_name):
|
|
288
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
277
289
|
parser = super().get_parser(prog_name)
|
|
278
290
|
parser.add_argument(
|
|
279
291
|
'aggregate',
|
|
@@ -309,7 +321,7 @@ class SetAggregate(command.Command):
|
|
|
309
321
|
)
|
|
310
322
|
return parser
|
|
311
323
|
|
|
312
|
-
def take_action(self, parsed_args):
|
|
324
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
313
325
|
compute_client = self.app.client_manager.compute
|
|
314
326
|
aggregate = compute_client.find_aggregate(
|
|
315
327
|
parsed_args.aggregate, ignore_missing=False
|
|
@@ -323,7 +335,7 @@ class SetAggregate(command.Command):
|
|
|
323
335
|
if kwargs:
|
|
324
336
|
compute_client.update_aggregate(aggregate.id, **kwargs)
|
|
325
337
|
|
|
326
|
-
properties: dict[str,
|
|
338
|
+
properties: dict[str, Any] = {}
|
|
327
339
|
if parsed_args.no_property:
|
|
328
340
|
# NOTE(RuiChen): "availability_zone" can not be unset from
|
|
329
341
|
# properties. It is already excluded from show and create output.
|
|
@@ -345,7 +357,7 @@ class SetAggregate(command.Command):
|
|
|
345
357
|
class ShowAggregate(command.ShowOne):
|
|
346
358
|
_description = _("Display aggregate details")
|
|
347
359
|
|
|
348
|
-
def get_parser(self, prog_name):
|
|
360
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
349
361
|
parser = super().get_parser(prog_name)
|
|
350
362
|
parser.add_argument(
|
|
351
363
|
'aggregate',
|
|
@@ -354,7 +366,9 @@ class ShowAggregate(command.ShowOne):
|
|
|
354
366
|
)
|
|
355
367
|
return parser
|
|
356
368
|
|
|
357
|
-
def take_action(
|
|
369
|
+
def take_action(
|
|
370
|
+
self, parsed_args: argparse.Namespace
|
|
371
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
358
372
|
compute_client = self.app.client_manager.compute
|
|
359
373
|
aggregate = compute_client.find_aggregate(
|
|
360
374
|
parsed_args.aggregate, ignore_missing=False
|
|
@@ -374,7 +388,7 @@ class ShowAggregate(command.ShowOne):
|
|
|
374
388
|
class UnsetAggregate(command.Command):
|
|
375
389
|
_description = _("Unset aggregate properties")
|
|
376
390
|
|
|
377
|
-
def get_parser(self, prog_name):
|
|
391
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
378
392
|
parser = super().get_parser(prog_name)
|
|
379
393
|
parser.add_argument(
|
|
380
394
|
"aggregate",
|
|
@@ -394,7 +408,7 @@ class UnsetAggregate(command.Command):
|
|
|
394
408
|
)
|
|
395
409
|
return parser
|
|
396
410
|
|
|
397
|
-
def take_action(self, parsed_args):
|
|
411
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
398
412
|
compute_client = self.app.client_manager.compute
|
|
399
413
|
aggregate = compute_client.find_aggregate(
|
|
400
414
|
parsed_args.aggregate, ignore_missing=False
|
|
@@ -411,7 +425,7 @@ class CacheImageForAggregate(command.Command):
|
|
|
411
425
|
# NOTE(gtema): According to stephenfin and dansmith there is no and will
|
|
412
426
|
# not be anything to return.
|
|
413
427
|
|
|
414
|
-
def get_parser(self, prog_name):
|
|
428
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
415
429
|
parser = super().get_parser(prog_name)
|
|
416
430
|
parser.add_argument(
|
|
417
431
|
'aggregate',
|
|
@@ -429,7 +443,7 @@ class CacheImageForAggregate(command.Command):
|
|
|
429
443
|
)
|
|
430
444
|
return parser
|
|
431
445
|
|
|
432
|
-
def take_action(self, parsed_args):
|
|
446
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
433
447
|
compute_client = self.app.client_manager.compute
|
|
434
448
|
|
|
435
449
|
if not sdk_utils.supports_microversion(compute_client, '2.81'):
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
"""Compute v2 Console action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
19
|
+
from collections.abc import Iterable, Sequence
|
|
20
|
+
from typing import Any
|
|
21
|
+
|
|
18
22
|
from osc_lib.cli import parseractions
|
|
19
23
|
from osc_lib import utils
|
|
20
24
|
|
|
@@ -22,7 +26,7 @@ from openstackclient import command
|
|
|
22
26
|
from openstackclient.i18n import _
|
|
23
27
|
|
|
24
28
|
|
|
25
|
-
def _get_console_columns(item):
|
|
29
|
+
def _get_console_columns(item: Any) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
26
30
|
# To maintain backwards compatibility we need to rename sdk props to
|
|
27
31
|
# whatever OSC was using before
|
|
28
32
|
hidden_columns = ['id', 'links', 'location', 'name']
|
|
@@ -34,7 +38,7 @@ def _get_console_columns(item):
|
|
|
34
38
|
class ShowConsoleLog(command.Command):
|
|
35
39
|
_description = _("Show server's console output")
|
|
36
40
|
|
|
37
|
-
def get_parser(self, prog_name):
|
|
41
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
38
42
|
parser = super().get_parser(prog_name)
|
|
39
43
|
parser.add_argument(
|
|
40
44
|
'server',
|
|
@@ -54,7 +58,7 @@ class ShowConsoleLog(command.Command):
|
|
|
54
58
|
)
|
|
55
59
|
return parser
|
|
56
60
|
|
|
57
|
-
def take_action(self, parsed_args):
|
|
61
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
58
62
|
compute_client = self.app.client_manager.compute
|
|
59
63
|
|
|
60
64
|
server = compute_client.find_server(
|
|
@@ -78,7 +82,7 @@ class ShowConsoleLog(command.Command):
|
|
|
78
82
|
class ShowConsoleURL(command.ShowOne):
|
|
79
83
|
_description = _("Show server's remote console URL")
|
|
80
84
|
|
|
81
|
-
def get_parser(self, prog_name):
|
|
85
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
82
86
|
parser = super().get_parser(prog_name)
|
|
83
87
|
parser.add_argument(
|
|
84
88
|
'server',
|
|
@@ -138,17 +142,19 @@ class ShowConsoleURL(command.ShowOne):
|
|
|
138
142
|
)
|
|
139
143
|
return parser
|
|
140
144
|
|
|
141
|
-
def take_action(
|
|
145
|
+
def take_action(
|
|
146
|
+
self, parsed_args: argparse.Namespace
|
|
147
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
142
148
|
compute_client = self.app.client_manager.compute
|
|
143
149
|
server = compute_client.find_server(
|
|
144
150
|
parsed_args.server, ignore_missing=False
|
|
145
151
|
)
|
|
146
152
|
|
|
147
|
-
|
|
153
|
+
console = compute_client.create_console(
|
|
148
154
|
server.id, console_type=parsed_args.url_type
|
|
149
155
|
)
|
|
150
156
|
|
|
151
|
-
display_columns, columns = _get_console_columns(
|
|
152
|
-
data = utils.get_dict_properties(
|
|
157
|
+
display_columns, columns = _get_console_columns(console)
|
|
158
|
+
data = utils.get_dict_properties(console, columns)
|
|
153
159
|
|
|
154
160
|
return (display_columns, data)
|
|
@@ -13,13 +13,19 @@
|
|
|
13
13
|
|
|
14
14
|
"""Compute v2 Console auth token implementations."""
|
|
15
15
|
|
|
16
|
+
import argparse
|
|
17
|
+
from collections.abc import Iterable, Sequence
|
|
18
|
+
from typing import Any
|
|
19
|
+
|
|
16
20
|
from osc_lib import utils
|
|
17
21
|
|
|
18
22
|
from openstackclient import command
|
|
19
23
|
from openstackclient.i18n import _
|
|
20
24
|
|
|
21
25
|
|
|
22
|
-
def _get_console_connection_columns(
|
|
26
|
+
def _get_console_connection_columns(
|
|
27
|
+
item: Any,
|
|
28
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
23
29
|
column_map: dict[str, str] = {}
|
|
24
30
|
hidden_columns = ['id', 'location', 'name']
|
|
25
31
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
@@ -30,7 +36,7 @@ def _get_console_connection_columns(item):
|
|
|
30
36
|
class ShowConsoleConnectionInformation(command.ShowOne):
|
|
31
37
|
_description = _("Show server's remote console connection information")
|
|
32
38
|
|
|
33
|
-
def get_parser(self, prog_name):
|
|
39
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
34
40
|
parser = super().get_parser(prog_name)
|
|
35
41
|
parser.add_argument(
|
|
36
42
|
'token',
|
|
@@ -39,7 +45,9 @@ class ShowConsoleConnectionInformation(command.ShowOne):
|
|
|
39
45
|
)
|
|
40
46
|
return parser
|
|
41
47
|
|
|
42
|
-
def take_action(
|
|
48
|
+
def take_action(
|
|
49
|
+
self, parsed_args: argparse.Namespace
|
|
50
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
43
51
|
compute_client = self.app.client_manager.compute
|
|
44
52
|
data = compute_client.validate_console_auth_token(parsed_args.token)
|
|
45
53
|
display_columns, columns = _get_console_connection_columns(data)
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
"""Flavor action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
19
|
+
from collections.abc import Iterable, Sequence
|
|
18
20
|
import logging
|
|
21
|
+
from typing import Any
|
|
19
22
|
|
|
20
23
|
from openstack import exceptions as sdk_exceptions
|
|
21
24
|
from openstack import utils as sdk_utils
|
|
@@ -39,7 +42,7 @@ _formatters = {
|
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
|
|
42
|
-
def _get_flavor_columns(item):
|
|
45
|
+
def _get_flavor_columns(item: Any) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
43
46
|
# To maintain backwards compatibility we need to rename sdk props to
|
|
44
47
|
# whatever OSC was using before
|
|
45
48
|
column_map = {
|
|
@@ -57,7 +60,7 @@ def _get_flavor_columns(item):
|
|
|
57
60
|
class CreateFlavor(command.ShowOne):
|
|
58
61
|
_description = _("Create new flavor")
|
|
59
62
|
|
|
60
|
-
def get_parser(self, prog_name):
|
|
63
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
61
64
|
parser = super().get_parser(prog_name)
|
|
62
65
|
parser.add_argument(
|
|
63
66
|
"name", metavar="<flavor-name>", help=_("New flavor name")
|
|
@@ -102,8 +105,7 @@ class CreateFlavor(command.ShowOne):
|
|
|
102
105
|
"--rxtx-factor",
|
|
103
106
|
type=float,
|
|
104
107
|
metavar="<factor>",
|
|
105
|
-
|
|
106
|
-
help=_("RX/TX factor (default 1.0)"),
|
|
108
|
+
help=_("RX/TX factor"),
|
|
107
109
|
)
|
|
108
110
|
public_group = parser.add_mutually_exclusive_group()
|
|
109
111
|
public_group.add_argument(
|
|
@@ -148,7 +150,9 @@ class CreateFlavor(command.ShowOne):
|
|
|
148
150
|
identity_common.add_project_domain_option_to_parser(parser)
|
|
149
151
|
return parser
|
|
150
152
|
|
|
151
|
-
def take_action(
|
|
153
|
+
def take_action(
|
|
154
|
+
self, parsed_args: argparse.Namespace
|
|
155
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
152
156
|
compute_client = self.app.client_manager.compute
|
|
153
157
|
identity_client = self.app.client_manager.identity
|
|
154
158
|
|
|
@@ -177,10 +181,19 @@ class CreateFlavor(command.ShowOne):
|
|
|
177
181
|
'id': flavor_id,
|
|
178
182
|
'ephemeral': parsed_args.ephemeral,
|
|
179
183
|
'swap': parsed_args.swap,
|
|
180
|
-
'rxtx_factor': parsed_args.rxtx_factor,
|
|
181
184
|
'is_public': parsed_args.public,
|
|
182
185
|
}
|
|
183
186
|
|
|
187
|
+
if parsed_args.rxtx_factor:
|
|
188
|
+
if sdk_utils.supports_microversion(compute_client, '2.102'):
|
|
189
|
+
msg = _(
|
|
190
|
+
'The --rxtx-factor parameter is only supported until '
|
|
191
|
+
'API microversion 2.101'
|
|
192
|
+
)
|
|
193
|
+
raise exceptions.CommandError(msg)
|
|
194
|
+
|
|
195
|
+
args['rxtx_factor'] = parsed_args.rxtx_factor
|
|
196
|
+
|
|
184
197
|
if parsed_args.description:
|
|
185
198
|
if not sdk_utils.supports_microversion(compute_client, '2.55'):
|
|
186
199
|
msg = _(
|
|
@@ -206,6 +219,7 @@ class CreateFlavor(command.ShowOne):
|
|
|
206
219
|
"Failed to add project %(project)s access to flavor: %(e)s"
|
|
207
220
|
)
|
|
208
221
|
LOG.error(msg, {'project': parsed_args.project, 'e': e})
|
|
222
|
+
|
|
209
223
|
if parsed_args.properties:
|
|
210
224
|
try:
|
|
211
225
|
flavor = compute_client.create_flavor_extra_specs(
|
|
@@ -225,7 +239,7 @@ class CreateFlavor(command.ShowOne):
|
|
|
225
239
|
class DeleteFlavor(command.Command):
|
|
226
240
|
_description = _("Delete flavor(s)")
|
|
227
241
|
|
|
228
|
-
def get_parser(self, prog_name):
|
|
242
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
229
243
|
parser = super().get_parser(prog_name)
|
|
230
244
|
parser.add_argument(
|
|
231
245
|
"flavor",
|
|
@@ -235,7 +249,7 @@ class DeleteFlavor(command.Command):
|
|
|
235
249
|
)
|
|
236
250
|
return parser
|
|
237
251
|
|
|
238
|
-
def take_action(self, parsed_args):
|
|
252
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
239
253
|
compute_client = self.app.client_manager.compute
|
|
240
254
|
result = 0
|
|
241
255
|
for f in parsed_args.flavor:
|
|
@@ -264,7 +278,7 @@ class DeleteFlavor(command.Command):
|
|
|
264
278
|
class ListFlavor(command.Lister):
|
|
265
279
|
_description = _("List flavors")
|
|
266
280
|
|
|
267
|
-
def get_parser(self, prog_name):
|
|
281
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
268
282
|
parser = super().get_parser(prog_name)
|
|
269
283
|
public_group = parser.add_mutually_exclusive_group()
|
|
270
284
|
public_group.add_argument(
|
|
@@ -308,7 +322,9 @@ class ListFlavor(command.Lister):
|
|
|
308
322
|
pagination.add_marker_pagination_option_to_parser(parser)
|
|
309
323
|
return parser
|
|
310
324
|
|
|
311
|
-
def take_action(
|
|
325
|
+
def take_action(
|
|
326
|
+
self, parsed_args: argparse.Namespace
|
|
327
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
312
328
|
compute_client = self.app.client_manager.compute
|
|
313
329
|
# is_public is ternary - None means give all flavors,
|
|
314
330
|
# True is public only and False is private only
|
|
@@ -323,6 +339,8 @@ class ListFlavor(command.Lister):
|
|
|
323
339
|
|
|
324
340
|
if parsed_args.limit:
|
|
325
341
|
query_attrs['limit'] = parsed_args.limit
|
|
342
|
+
if parsed_args.max_items is not None:
|
|
343
|
+
query_attrs['max_items'] = parsed_args.max_items
|
|
326
344
|
|
|
327
345
|
if parsed_args.limit or parsed_args.marker:
|
|
328
346
|
# User passed explicit pagination request, switch off SDK
|
|
@@ -335,7 +353,7 @@ class ListFlavor(command.Lister):
|
|
|
335
353
|
if parsed_args.min_ram:
|
|
336
354
|
query_attrs['min_ram'] = parsed_args.min_ram
|
|
337
355
|
|
|
338
|
-
data = list(compute_client.flavors(**query_attrs))
|
|
356
|
+
data = list(compute_client.flavors(**query_attrs)) # type: ignore[arg-type]
|
|
339
357
|
# Even if server supports 2.61 some policy might stop it sending us
|
|
340
358
|
# extra_specs. So try to fetch them if they are absent
|
|
341
359
|
for f in data:
|
|
@@ -386,7 +404,7 @@ class ListFlavor(command.Lister):
|
|
|
386
404
|
class SetFlavor(command.Command):
|
|
387
405
|
_description = _("Set flavor properties")
|
|
388
406
|
|
|
389
|
-
def get_parser(self, prog_name):
|
|
407
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
390
408
|
parser = super().get_parser(prog_name)
|
|
391
409
|
parser.add_argument(
|
|
392
410
|
"flavor",
|
|
@@ -430,7 +448,7 @@ class SetFlavor(command.Command):
|
|
|
430
448
|
|
|
431
449
|
return parser
|
|
432
450
|
|
|
433
|
-
def take_action(self, parsed_args):
|
|
451
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
434
452
|
compute_client = self.app.client_manager.compute
|
|
435
453
|
identity_client = self.app.client_manager.identity
|
|
436
454
|
|
|
@@ -500,7 +518,7 @@ class SetFlavor(command.Command):
|
|
|
500
518
|
class ShowFlavor(command.ShowOne):
|
|
501
519
|
_description = _("Display flavor details")
|
|
502
520
|
|
|
503
|
-
def get_parser(self, prog_name):
|
|
521
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
504
522
|
parser = super().get_parser(prog_name)
|
|
505
523
|
parser.add_argument(
|
|
506
524
|
"flavor",
|
|
@@ -509,7 +527,9 @@ class ShowFlavor(command.ShowOne):
|
|
|
509
527
|
)
|
|
510
528
|
return parser
|
|
511
529
|
|
|
512
|
-
def take_action(
|
|
530
|
+
def take_action(
|
|
531
|
+
self, parsed_args: argparse.Namespace
|
|
532
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
513
533
|
compute_client = self.app.client_manager.compute
|
|
514
534
|
flavor = compute_client.find_flavor(
|
|
515
535
|
parsed_args.flavor, get_extra_specs=True, ignore_missing=False
|
|
@@ -535,21 +555,21 @@ class ShowFlavor(command.ShowOne):
|
|
|
535
555
|
|
|
536
556
|
# Since we need to inject "access_project_id" into resource - convert
|
|
537
557
|
# it to dict and treat it respectively
|
|
538
|
-
|
|
539
|
-
|
|
558
|
+
flavor_dict = flavor.to_dict()
|
|
559
|
+
flavor_dict['access_project_ids'] = access_projects
|
|
540
560
|
|
|
541
|
-
display_columns, columns = _get_flavor_columns(
|
|
561
|
+
display_columns, columns = _get_flavor_columns(flavor_dict)
|
|
542
562
|
data = utils.get_dict_properties(
|
|
543
|
-
|
|
563
|
+
flavor_dict, columns, formatters=_formatters
|
|
544
564
|
)
|
|
545
565
|
|
|
546
|
-
return
|
|
566
|
+
return display_columns, data
|
|
547
567
|
|
|
548
568
|
|
|
549
569
|
class UnsetFlavor(command.Command):
|
|
550
570
|
_description = _("Unset flavor properties")
|
|
551
571
|
|
|
552
|
-
def get_parser(self, prog_name):
|
|
572
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
553
573
|
parser = super().get_parser(prog_name)
|
|
554
574
|
parser.add_argument(
|
|
555
575
|
"flavor",
|
|
@@ -577,7 +597,7 @@ class UnsetFlavor(command.Command):
|
|
|
577
597
|
|
|
578
598
|
return parser
|
|
579
599
|
|
|
580
|
-
def take_action(self, parsed_args):
|
|
600
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
581
601
|
compute_client = self.app.client_manager.compute
|
|
582
602
|
identity_client = self.app.client_manager.identity
|
|
583
603
|
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
|
|
16
16
|
"""Host action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
19
|
+
from collections.abc import Iterable
|
|
20
|
+
from typing import Any
|
|
21
|
+
|
|
18
22
|
from openstack import exceptions as sdk_exceptions
|
|
19
23
|
from osc_lib import utils
|
|
20
24
|
|
|
@@ -25,7 +29,7 @@ from openstackclient.i18n import _
|
|
|
25
29
|
class ListHost(command.Lister):
|
|
26
30
|
_description = _("DEPRECATED: List hosts")
|
|
27
31
|
|
|
28
|
-
def get_parser(self, prog_name):
|
|
32
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
29
33
|
parser = super().get_parser(prog_name)
|
|
30
34
|
parser.add_argument(
|
|
31
35
|
"--zone",
|
|
@@ -34,7 +38,9 @@ class ListHost(command.Lister):
|
|
|
34
38
|
)
|
|
35
39
|
return parser
|
|
36
40
|
|
|
37
|
-
def take_action(
|
|
41
|
+
def take_action(
|
|
42
|
+
self, parsed_args: argparse.Namespace
|
|
43
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
38
44
|
compute_client = self.app.client_manager.compute
|
|
39
45
|
|
|
40
46
|
self.log.warning(
|
|
@@ -57,7 +63,7 @@ class ListHost(command.Lister):
|
|
|
57
63
|
class SetHost(command.Command):
|
|
58
64
|
_description = _("DEPRECATED: Set host properties")
|
|
59
65
|
|
|
60
|
-
def get_parser(self, prog_name):
|
|
66
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
61
67
|
parser = super().get_parser(prog_name)
|
|
62
68
|
parser.add_argument(
|
|
63
69
|
"host", metavar="<host>", help=_("Host to modify (name only)")
|
|
@@ -82,7 +88,7 @@ class SetHost(command.Command):
|
|
|
82
88
|
)
|
|
83
89
|
return parser
|
|
84
90
|
|
|
85
|
-
def take_action(self, parsed_args):
|
|
91
|
+
def take_action(self, parsed_args: argparse.Namespace) -> None:
|
|
86
92
|
compute_client = self.app.client_manager.compute
|
|
87
93
|
|
|
88
94
|
self.log.warning(
|
|
@@ -115,12 +121,14 @@ class SetHost(command.Command):
|
|
|
115
121
|
class ShowHost(command.Lister):
|
|
116
122
|
_description = _("DEPRECATED: Display host details")
|
|
117
123
|
|
|
118
|
-
def get_parser(self, prog_name):
|
|
124
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
119
125
|
parser = super().get_parser(prog_name)
|
|
120
126
|
parser.add_argument("host", metavar="<host>", help=_("Name of host"))
|
|
121
127
|
return parser
|
|
122
128
|
|
|
123
|
-
def take_action(
|
|
129
|
+
def take_action(
|
|
130
|
+
self, parsed_args: argparse.Namespace
|
|
131
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
124
132
|
compute_client = self.app.client_manager.compute
|
|
125
133
|
|
|
126
134
|
self.log.warning(
|
|
@@ -15,8 +15,11 @@
|
|
|
15
15
|
|
|
16
16
|
"""Hypervisor action implementations"""
|
|
17
17
|
|
|
18
|
+
import argparse
|
|
19
|
+
from collections.abc import Iterable, Sequence
|
|
18
20
|
import json
|
|
19
21
|
import re
|
|
22
|
+
from typing import Any
|
|
20
23
|
|
|
21
24
|
from openstack import exceptions as sdk_exceptions
|
|
22
25
|
from openstack import utils as sdk_utils
|
|
@@ -29,7 +32,9 @@ from openstackclient.common import pagination
|
|
|
29
32
|
from openstackclient.i18n import _
|
|
30
33
|
|
|
31
34
|
|
|
32
|
-
def _get_hypervisor_columns(
|
|
35
|
+
def _get_hypervisor_columns(
|
|
36
|
+
item: Any, client: Any
|
|
37
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
33
38
|
column_map = {'name': 'hypervisor_hostname'}
|
|
34
39
|
hidden_columns = ['location', 'servers']
|
|
35
40
|
|
|
@@ -70,7 +75,7 @@ def _get_hypervisor_columns(item, client):
|
|
|
70
75
|
class ListHypervisor(command.Lister):
|
|
71
76
|
_description = _("List hypervisors")
|
|
72
77
|
|
|
73
|
-
def get_parser(self, prog_name):
|
|
78
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
74
79
|
parser = super().get_parser(prog_name)
|
|
75
80
|
parser.add_argument(
|
|
76
81
|
'--matching',
|
|
@@ -89,7 +94,9 @@ class ListHypervisor(command.Lister):
|
|
|
89
94
|
)
|
|
90
95
|
return parser
|
|
91
96
|
|
|
92
|
-
def take_action(
|
|
97
|
+
def take_action(
|
|
98
|
+
self, parsed_args: argparse.Namespace
|
|
99
|
+
) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
|
|
93
100
|
compute_client = self.app.client_manager.compute
|
|
94
101
|
|
|
95
102
|
list_opts = {}
|
|
@@ -115,6 +122,8 @@ class ListHypervisor(command.Lister):
|
|
|
115
122
|
)
|
|
116
123
|
raise exceptions.CommandError(msg)
|
|
117
124
|
list_opts['limit'] = parsed_args.limit
|
|
125
|
+
if parsed_args.max_items is not None:
|
|
126
|
+
list_opts['max_items'] = parsed_args.max_items
|
|
118
127
|
|
|
119
128
|
if parsed_args.matching:
|
|
120
129
|
list_opts['hypervisor_hostname_pattern'] = parsed_args.matching
|
|
@@ -160,7 +169,7 @@ class ListHypervisor(command.Lister):
|
|
|
160
169
|
class ShowHypervisor(command.ShowOne):
|
|
161
170
|
_description = _("Display hypervisor details")
|
|
162
171
|
|
|
163
|
-
def get_parser(self, prog_name):
|
|
172
|
+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
|
|
164
173
|
parser = super().get_parser(prog_name)
|
|
165
174
|
parser.add_argument(
|
|
166
175
|
"hypervisor",
|
|
@@ -169,7 +178,9 @@ class ShowHypervisor(command.ShowOne):
|
|
|
169
178
|
)
|
|
170
179
|
return parser
|
|
171
180
|
|
|
172
|
-
def take_action(
|
|
181
|
+
def take_action(
|
|
182
|
+
self, parsed_args: argparse.Namespace
|
|
183
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
173
184
|
compute_client = self.app.client_manager.compute
|
|
174
185
|
|
|
175
186
|
hypervisor_id = compute_client.find_hypervisor(
|
|
@@ -13,13 +13,19 @@
|
|
|
13
13
|
|
|
14
14
|
"""Hypervisor Stats 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 import utils
|
|
17
21
|
|
|
18
22
|
from openstackclient import command
|
|
19
23
|
from openstackclient.i18n import _
|
|
20
24
|
|
|
21
25
|
|
|
22
|
-
def _get_hypervisor_stat_columns(
|
|
26
|
+
def _get_hypervisor_stat_columns(
|
|
27
|
+
item: Any,
|
|
28
|
+
) -> tuple[tuple[str, ...], tuple[str, ...]]:
|
|
23
29
|
column_map = {
|
|
24
30
|
# NOTE(gtema): If we decide to use SDK names - empty this
|
|
25
31
|
'disk_available': 'disk_available_least',
|
|
@@ -39,7 +45,9 @@ def _get_hypervisor_stat_columns(item):
|
|
|
39
45
|
class ShowHypervisorStats(command.ShowOne):
|
|
40
46
|
_description = _("Display hypervisor stats details")
|
|
41
47
|
|
|
42
|
-
def take_action(
|
|
48
|
+
def take_action(
|
|
49
|
+
self, parsed_args: argparse.Namespace
|
|
50
|
+
) -> tuple[Sequence[str], Iterable[Any]]:
|
|
43
51
|
# The command is deprecated since it is being dropped in Nova.
|
|
44
52
|
self.log.warning(_("This command is deprecated."))
|
|
45
53
|
compute_client = self.app.client_manager.compute
|