python-openstackclient 6.6.1__py3-none-any.whl → 7.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/api/api.py +4 -4
- openstackclient/api/compute_v2.py +352 -638
- openstackclient/api/image_v1.py +1 -1
- openstackclient/api/object_store_v1.py +3 -4
- openstackclient/common/availability_zone.py +1 -1
- openstackclient/common/clientmanager.py +24 -20
- openstackclient/common/configuration.py +1 -1
- openstackclient/common/extension.py +1 -1
- openstackclient/common/limits.py +67 -34
- openstackclient/common/module.py +3 -3
- openstackclient/common/progressbar.py +2 -2
- openstackclient/common/project_cleanup.py +5 -2
- openstackclient/common/quota.py +299 -423
- openstackclient/common/versions.py +1 -1
- openstackclient/compute/client.py +7 -116
- openstackclient/compute/v2/agent.py +75 -49
- openstackclient/compute/v2/aggregate.py +38 -32
- openstackclient/compute/v2/console.py +2 -2
- openstackclient/compute/v2/flavor.py +6 -6
- openstackclient/compute/v2/host.py +38 -33
- openstackclient/compute/v2/hypervisor.py +9 -6
- openstackclient/compute/v2/keypair.py +7 -8
- openstackclient/compute/v2/server.py +479 -396
- openstackclient/compute/v2/server_backup.py +1 -1
- openstackclient/compute/v2/server_group.py +4 -4
- openstackclient/compute/v2/server_image.py +1 -1
- openstackclient/compute/v2/server_migration.py +3 -4
- openstackclient/compute/v2/service.py +4 -4
- openstackclient/compute/v2/usage.py +3 -3
- openstackclient/identity/common.py +34 -0
- openstackclient/identity/v2_0/catalog.py +2 -2
- openstackclient/identity/v2_0/ec2creds.py +4 -4
- openstackclient/identity/v2_0/endpoint.py +4 -4
- openstackclient/identity/v2_0/project.py +6 -6
- openstackclient/identity/v2_0/role.py +5 -5
- openstackclient/identity/v2_0/role_assignment.py +1 -1
- openstackclient/identity/v2_0/service.py +4 -4
- openstackclient/identity/v2_0/token.py +2 -2
- openstackclient/identity/v2_0/user.py +7 -7
- openstackclient/identity/v3/access_rule.py +3 -3
- openstackclient/identity/v3/application_credential.py +125 -43
- openstackclient/identity/v3/catalog.py +2 -2
- openstackclient/identity/v3/consumer.py +4 -4
- openstackclient/identity/v3/credential.py +5 -5
- openstackclient/identity/v3/domain.py +5 -5
- openstackclient/identity/v3/ec2creds.py +4 -4
- openstackclient/identity/v3/endpoint.py +7 -7
- openstackclient/identity/v3/endpoint_group.py +8 -10
- openstackclient/identity/v3/federation_protocol.py +5 -5
- openstackclient/identity/v3/group.py +8 -8
- openstackclient/identity/v3/identity_provider.py +5 -5
- openstackclient/identity/v3/implied_role.py +3 -3
- openstackclient/identity/v3/limit.py +5 -5
- openstackclient/identity/v3/mapping.py +5 -5
- openstackclient/identity/v3/policy.py +5 -5
- openstackclient/identity/v3/project.py +5 -5
- openstackclient/identity/v3/region.py +5 -5
- openstackclient/identity/v3/registered_limit.py +5 -5
- openstackclient/identity/v3/role.py +7 -7
- openstackclient/identity/v3/role_assignment.py +92 -140
- openstackclient/identity/v3/service.py +64 -34
- openstackclient/identity/v3/service_provider.py +4 -4
- openstackclient/identity/v3/tag.py +2 -2
- openstackclient/identity/v3/token.py +5 -5
- openstackclient/identity/v3/trust.py +3 -3
- openstackclient/identity/v3/user.py +144 -80
- openstackclient/image/client.py +4 -4
- openstackclient/image/v1/image.py +8 -9
- openstackclient/image/v2/cache.py +12 -10
- openstackclient/image/v2/metadef_objects.py +44 -0
- openstackclient/image/v2/metadef_resource_type_association.py +189 -0
- openstackclient/image/v2/task.py +1 -1
- openstackclient/network/common.py +6 -5
- openstackclient/network/utils.py +2 -2
- openstackclient/network/v2/address_group.py +6 -6
- openstackclient/network/v2/address_scope.py +5 -5
- openstackclient/network/v2/default_security_group_rule.py +1 -1
- openstackclient/network/v2/floating_ip.py +8 -10
- openstackclient/network/v2/floating_ip_pool.py +6 -15
- openstackclient/network/v2/floating_ip_port_forwarding.py +5 -13
- openstackclient/network/v2/ip_availability.py +2 -2
- openstackclient/network/v2/l3_conntrack_helper.py +5 -5
- openstackclient/network/v2/network.py +8 -8
- openstackclient/network/v2/network_agent.py +8 -8
- openstackclient/network/v2/network_auto_allocated_topology.py +2 -2
- openstackclient/network/v2/network_flavor.py +6 -8
- openstackclient/network/v2/network_flavor_profile.py +4 -4
- openstackclient/network/v2/network_meter.py +3 -3
- openstackclient/network/v2/network_meter_rule.py +3 -3
- openstackclient/network/v2/network_qos_policy.py +5 -5
- openstackclient/network/v2/network_qos_rule.py +9 -9
- openstackclient/network/v2/network_qos_rule_type.py +1 -1
- openstackclient/network/v2/network_rbac.py +5 -5
- openstackclient/network/v2/network_segment.py +5 -5
- openstackclient/network/v2/network_segment_range.py +7 -7
- openstackclient/network/v2/network_trunk.py +7 -7
- openstackclient/network/v2/port.py +26 -12
- openstackclient/network/v2/router.py +403 -54
- openstackclient/network/v2/security_group.py +18 -14
- openstackclient/network/v2/security_group_rule.py +18 -15
- openstackclient/network/v2/subnet.py +15 -8
- openstackclient/network/v2/subnet_pool.py +6 -6
- openstackclient/object/v1/account.py +2 -2
- openstackclient/object/v1/container.py +7 -7
- openstackclient/object/v1/object.py +7 -7
- openstackclient/releasenotes/notes/volume-backup-created-at-list-b49ec893ae1f6b0d.yaml +4 -0
- openstackclient/shell.py +4 -6
- openstackclient/tests/functional/base.py +1 -1
- openstackclient/tests/functional/common/test_extension.py +1 -1
- openstackclient/tests/functional/common/test_help.py +2 -2
- openstackclient/tests/functional/common/test_module.py +1 -1
- openstackclient/tests/functional/common/test_quota.py +43 -61
- openstackclient/tests/functional/compute/v2/common.py +2 -2
- openstackclient/tests/functional/compute/v2/test_flavor.py +2 -2
- openstackclient/tests/functional/compute/v2/test_keypair.py +1 -1
- openstackclient/tests/functional/compute/v2/test_server.py +5 -5
- openstackclient/tests/functional/compute/v2/test_server_event.py +1 -1
- openstackclient/tests/functional/identity/v2/common.py +3 -3
- openstackclient/tests/functional/identity/v3/common.py +12 -4
- openstackclient/tests/functional/identity/v3/test_application_credential.py +6 -12
- openstackclient/tests/functional/identity/v3/test_domain.py +1 -3
- openstackclient/tests/functional/identity/v3/test_endpoint.py +1 -1
- openstackclient/tests/functional/identity/v3/test_idp.py +1 -1
- openstackclient/tests/functional/identity/v3/test_region.py +1 -3
- openstackclient/tests/functional/identity/v3/test_role.py +2 -2
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +210 -0
- openstackclient/tests/functional/identity/v3/test_service.py +1 -3
- openstackclient/tests/functional/identity/v3/test_service_provider.py +1 -3
- openstackclient/tests/functional/image/base.py +1 -1
- openstackclient/tests/functional/image/v2/test_image.py +1 -1
- openstackclient/tests/functional/image/v2/test_info.py +1 -1
- openstackclient/tests/functional/network/v2/common.py +4 -6
- openstackclient/tests/functional/network/v2/test_network.py +5 -3
- openstackclient/tests/functional/network/v2/test_network_agent.py +7 -5
- openstackclient/tests/functional/network/v2/test_network_qos_rule.py +4 -4
- openstackclient/tests/functional/network/v2/test_port.py +11 -7
- openstackclient/tests/functional/network/v2/test_router.py +2 -2
- openstackclient/tests/functional/object/v1/common.py +1 -1
- openstackclient/tests/functional/object/v1/test_container.py +3 -3
- openstackclient/tests/functional/object/v1/test_object.py +9 -13
- openstackclient/tests/functional/volume/base.py +1 -1
- openstackclient/tests/functional/volume/v1/test_service.py +1 -1
- openstackclient/tests/functional/volume/v1/test_snapshot.py +2 -2
- openstackclient/tests/functional/volume/v1/test_transfer_request.py +2 -2
- openstackclient/tests/functional/volume/v1/test_volume_type.py +1 -1
- openstackclient/tests/functional/volume/v2/test_service.py +2 -2
- openstackclient/tests/functional/volume/v2/test_volume_backup.py +2 -2
- openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +2 -2
- openstackclient/tests/functional/volume/v2/test_volume_type.py +1 -1
- openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +2 -2
- openstackclient/tests/functional/volume/v3/test_volume_type.py +1 -1
- openstackclient/tests/unit/api/fakes.py +1 -1
- openstackclient/tests/unit/api/test_api.py +2 -2
- openstackclient/tests/unit/api/test_compute_v2.py +522 -707
- openstackclient/tests/unit/api/test_image_v1.py +1 -1
- openstackclient/tests/unit/api/test_image_v2.py +1 -1
- openstackclient/tests/unit/api/test_object_store_v1.py +4 -4
- openstackclient/tests/unit/common/test_limits.py +73 -35
- openstackclient/tests/unit/common/test_logs.py +2 -2
- openstackclient/tests/unit/common/test_module.py +4 -2
- openstackclient/tests/unit/common/test_project_cleanup.py +31 -6
- openstackclient/tests/unit/common/test_quota.py +490 -630
- openstackclient/tests/unit/compute/v2/fakes.py +37 -286
- openstackclient/tests/unit/compute/v2/test_agent.py +189 -147
- openstackclient/tests/unit/compute/v2/test_aggregate.py +87 -57
- openstackclient/tests/unit/compute/v2/test_console.py +4 -5
- openstackclient/tests/unit/compute/v2/test_flavor.py +59 -68
- openstackclient/tests/unit/compute/v2/test_host.py +83 -54
- openstackclient/tests/unit/compute/v2/test_hypervisor.py +57 -34
- openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -2
- openstackclient/tests/unit/compute/v2/test_keypair.py +65 -50
- openstackclient/tests/unit/compute/v2/test_server.py +2850 -2453
- openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
- openstackclient/tests/unit/compute/v2/test_server_event.py +14 -39
- openstackclient/tests/unit/compute/v2/test_server_group.py +28 -29
- openstackclient/tests/unit/compute/v2/test_server_migration.py +43 -68
- openstackclient/tests/unit/compute/v2/test_server_volume.py +17 -34
- openstackclient/tests/unit/compute/v2/test_service.py +34 -52
- openstackclient/tests/unit/compute/v2/test_usage.py +4 -4
- openstackclient/tests/unit/fakes.py +12 -12
- openstackclient/tests/unit/identity/v2_0/fakes.py +27 -10
- openstackclient/tests/unit/identity/v2_0/test_catalog.py +3 -3
- openstackclient/tests/unit/identity/v2_0/test_endpoint.py +7 -7
- openstackclient/tests/unit/identity/v2_0/test_project.py +8 -8
- openstackclient/tests/unit/identity/v2_0/test_role.py +10 -10
- openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +4 -4
- openstackclient/tests/unit/identity/v2_0/test_service.py +6 -6
- openstackclient/tests/unit/identity/v2_0/test_token.py +4 -4
- openstackclient/tests/unit/identity/v2_0/test_user.py +8 -8
- openstackclient/tests/unit/identity/v3/fakes.py +59 -20
- openstackclient/tests/unit/identity/v3/test_access_rule.py +5 -5
- openstackclient/tests/unit/identity/v3/test_application_credential.py +207 -230
- openstackclient/tests/unit/identity/v3/test_catalog.py +3 -3
- openstackclient/tests/unit/identity/v3/test_consumer.py +7 -8
- openstackclient/tests/unit/identity/v3/test_credential.py +9 -9
- openstackclient/tests/unit/identity/v3/test_domain.py +8 -8
- openstackclient/tests/unit/identity/v3/test_endpoint.py +13 -13
- openstackclient/tests/unit/identity/v3/test_endpoint_group.py +12 -14
- openstackclient/tests/unit/identity/v3/test_group.py +12 -12
- openstackclient/tests/unit/identity/v3/test_identity_provider.py +8 -8
- openstackclient/tests/unit/identity/v3/test_implied_role.py +5 -5
- openstackclient/tests/unit/identity/v3/test_limit.py +7 -7
- openstackclient/tests/unit/identity/v3/test_mappings.py +7 -7
- openstackclient/tests/unit/identity/v3/test_oauth.py +5 -5
- openstackclient/tests/unit/identity/v3/test_project.py +16 -16
- openstackclient/tests/unit/identity/v3/test_protocol.py +7 -7
- openstackclient/tests/unit/identity/v3/test_region.py +7 -7
- openstackclient/tests/unit/identity/v3/test_registered_limit.py +12 -13
- openstackclient/tests/unit/identity/v3/test_role.py +13 -13
- openstackclient/tests/unit/identity/v3/test_role_assignment.py +410 -331
- openstackclient/tests/unit/identity/v3/test_service.py +90 -94
- openstackclient/tests/unit/identity/v3/test_service_provider.py +7 -7
- openstackclient/tests/unit/identity/v3/test_token.py +4 -4
- openstackclient/tests/unit/identity/v3/test_trust.py +9 -9
- openstackclient/tests/unit/identity/v3/test_unscoped_saml.py +4 -4
- openstackclient/tests/unit/identity/v3/test_user.py +299 -327
- openstackclient/tests/unit/image/v1/test_image.py +6 -6
- openstackclient/tests/unit/image/v2/fakes.py +46 -9
- openstackclient/tests/unit/image/v2/test_cache.py +2 -2
- openstackclient/tests/unit/image/v2/test_image.py +3 -3
- openstackclient/tests/unit/image/v2/test_metadef_objects.py +62 -0
- openstackclient/tests/unit/image/v2/test_metadef_resource_type_association.py +131 -0
- openstackclient/tests/unit/integ/base.py +1 -1
- openstackclient/tests/unit/integ/cli/test_project.py +4 -4
- openstackclient/tests/unit/integ/cli/test_shell.py +7 -7
- openstackclient/tests/unit/network/test_common.py +12 -21
- openstackclient/tests/unit/network/v2/fakes.py +64 -130
- openstackclient/tests/unit/network/v2/test_address_group.py +15 -15
- openstackclient/tests/unit/network/v2/test_address_scope.py +13 -13
- openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +49 -27
- openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +40 -38
- openstackclient/tests/unit/network/v2/test_floating_ip_network.py +15 -15
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +4 -7
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +3 -5
- openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +11 -11
- openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -6
- openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +11 -21
- openstackclient/tests/unit/network/v2/test_local_ip.py +7 -7
- openstackclient/tests/unit/network/v2/test_local_ip_association.py +3 -5
- openstackclient/tests/unit/network/v2/test_ndp_proxy.py +13 -13
- openstackclient/tests/unit/network/v2/test_network.py +23 -28
- openstackclient/tests/unit/network/v2/test_network_agent.py +17 -21
- openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +8 -8
- openstackclient/tests/unit/network/v2/test_network_compute.py +66 -65
- openstackclient/tests/unit/network/v2/test_network_flavor.py +17 -19
- openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +13 -13
- openstackclient/tests/unit/network/v2/test_network_meter.py +11 -11
- openstackclient/tests/unit/network/v2/test_network_meter_rule.py +11 -11
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +11 -21
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +51 -77
- openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +5 -9
- openstackclient/tests/unit/network/v2/test_network_rbac.py +12 -12
- openstackclient/tests/unit/network/v2/test_network_segment.py +11 -15
- openstackclient/tests/unit/network/v2/test_network_segment_range.py +11 -13
- openstackclient/tests/unit/network/v2/test_network_service_provider.py +3 -5
- openstackclient/tests/unit/network/v2/test_network_trunk.py +11 -11
- openstackclient/tests/unit/network/v2/test_port.py +22 -25
- openstackclient/tests/unit/network/v2/test_router.py +721 -51
- openstackclient/tests/unit/network/v2/test_security_group_compute.py +65 -49
- openstackclient/tests/unit/network/v2/test_security_group_network.py +15 -15
- openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +57 -45
- openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +11 -19
- openstackclient/tests/unit/network/v2/test_subnet.py +29 -25
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +15 -15
- openstackclient/tests/unit/object/v1/fakes.py +1 -1
- openstackclient/tests/unit/object/v1/test_container.py +5 -5
- openstackclient/tests/unit/object/v1/test_container_all.py +6 -6
- openstackclient/tests/unit/object/v1/test_object.py +3 -3
- openstackclient/tests/unit/object/v1/test_object_all.py +5 -5
- openstackclient/tests/unit/test_shell.py +5 -5
- openstackclient/tests/unit/utils.py +4 -1
- openstackclient/tests/unit/volume/test_find_resource.py +2 -2
- openstackclient/tests/unit/volume/v1/fakes.py +5 -6
- openstackclient/tests/unit/volume/v1/test_volume.py +5 -4
- openstackclient/tests/unit/volume/v2/fakes.py +39 -259
- openstackclient/tests/unit/volume/v2/test_consistency_group_snapshot.py +5 -5
- openstackclient/tests/unit/volume/v2/test_qos_specs.py +9 -9
- openstackclient/tests/unit/volume/v2/test_volume.py +21 -87
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +10 -368
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +1 -1
- openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +0 -44
- openstackclient/tests/unit/volume/v2/test_volume_type.py +6 -87
- openstackclient/tests/unit/volume/v3/fakes.py +505 -22
- openstackclient/tests/unit/volume/v3/test_block_storage_cleanup.py +2 -3
- openstackclient/tests/unit/volume/v3/test_block_storage_cluster.py +10 -11
- openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +10 -6
- openstackclient/tests/unit/volume/v3/test_block_storage_manage.py +25 -17
- openstackclient/tests/unit/volume/v3/test_block_storage_resource_filter.py +6 -32
- openstackclient/tests/unit/volume/v3/test_service.py +271 -0
- openstackclient/tests/unit/volume/v3/test_volume.py +2177 -33
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +48 -52
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +892 -0
- openstackclient/tests/unit/volume/v3/test_volume_group.py +19 -20
- openstackclient/tests/unit/volume/v3/test_volume_group_snapshot.py +14 -34
- openstackclient/tests/unit/volume/v3/test_volume_group_type.py +13 -16
- openstackclient/tests/unit/volume/v3/test_volume_message.py +10 -11
- openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +161 -0
- openstackclient/tests/unit/volume/v3/test_volume_transfer_request.py +425 -0
- openstackclient/tests/unit/volume/v3/test_volume_type.py +1109 -0
- openstackclient/volume/v1/qos_specs.py +7 -7
- openstackclient/volume/v1/service.py +2 -2
- openstackclient/volume/v1/volume.py +12 -12
- openstackclient/volume/v1/volume_backup.py +7 -7
- openstackclient/volume/v1/volume_snapshot.py +8 -8
- openstackclient/volume/v1/volume_transfer_request.py +5 -5
- openstackclient/volume/v1/volume_type.py +7 -7
- openstackclient/volume/v2/backup_record.py +2 -2
- openstackclient/volume/v2/consistency_group.py +7 -9
- openstackclient/volume/v2/consistency_group_snapshot.py +4 -12
- openstackclient/volume/v2/qos_specs.py +7 -7
- openstackclient/volume/v2/service.py +2 -2
- openstackclient/volume/v2/volume.py +80 -80
- openstackclient/volume/v2/volume_backend.py +2 -2
- openstackclient/volume/v2/volume_backup.py +9 -217
- openstackclient/volume/v2/volume_host.py +2 -2
- openstackclient/volume/v2/volume_snapshot.py +8 -8
- openstackclient/volume/v2/volume_transfer_request.py +5 -37
- openstackclient/volume/v2/volume_type.py +7 -89
- openstackclient/volume/v3/service.py +56 -0
- openstackclient/volume/v3/volume.py +971 -0
- openstackclient/volume/v3/volume_attachment.py +31 -29
- openstackclient/volume/v3/volume_backup.py +670 -0
- openstackclient/volume/v3/volume_message.py +1 -1
- openstackclient/volume/v3/volume_snapshot.py +97 -0
- openstackclient/volume/v3/volume_transfer_request.py +233 -0
- openstackclient/volume/v3/volume_type.py +967 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/AUTHORS +6 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/METADATA +4 -4
- python_openstackclient-7.1.0.dist-info/RECORD +503 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/entry_points.txt +33 -27
- python_openstackclient-7.1.0.dist-info/pbr.json +1 -0
- python_openstackclient-6.6.1.dist-info/RECORD +0 -489
- python_openstackclient-6.6.1.dist-info/pbr.json +0 -1
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/WHEEL +0 -0
- {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
2
|
+
# not use this file except in compliance with the License. You may obtain
|
|
3
|
+
# a copy of the License at
|
|
4
|
+
#
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
#
|
|
7
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
8
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
9
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
10
|
+
# License for the specific language governing permissions and limitations
|
|
11
|
+
# under the License.
|
|
12
|
+
|
|
13
|
+
import logging
|
|
14
|
+
|
|
15
|
+
from osc_lib.command import command
|
|
16
|
+
from osc_lib import exceptions
|
|
17
|
+
from osc_lib import utils
|
|
18
|
+
|
|
19
|
+
from openstackclient.i18n import _
|
|
20
|
+
|
|
21
|
+
LOG = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _get_columns(item):
|
|
25
|
+
column_map = {}
|
|
26
|
+
hidden_columns = ['location']
|
|
27
|
+
return utils.get_osc_show_columns_for_sdk_resource(
|
|
28
|
+
item, column_map, hidden_columns
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class CreateMetadefResourceTypeAssociation(command.ShowOne):
|
|
33
|
+
_description = _("Create metadef resource type association")
|
|
34
|
+
|
|
35
|
+
def get_parser(self, prog_name):
|
|
36
|
+
parser = super().get_parser(prog_name)
|
|
37
|
+
parser.add_argument(
|
|
38
|
+
"namespace",
|
|
39
|
+
metavar="<namespace>",
|
|
40
|
+
help=_(
|
|
41
|
+
"The name of the namespace you want to create the "
|
|
42
|
+
"resource type association in"
|
|
43
|
+
),
|
|
44
|
+
)
|
|
45
|
+
parser.add_argument(
|
|
46
|
+
"name",
|
|
47
|
+
metavar="<name>",
|
|
48
|
+
help=_("A name of the new resource type"),
|
|
49
|
+
)
|
|
50
|
+
parser.add_argument(
|
|
51
|
+
"--properties-target",
|
|
52
|
+
metavar="<properties_target>",
|
|
53
|
+
help=_(
|
|
54
|
+
"Some resource types allow more than one "
|
|
55
|
+
"key/value pair per instance."
|
|
56
|
+
),
|
|
57
|
+
)
|
|
58
|
+
return parser
|
|
59
|
+
|
|
60
|
+
def take_action(self, parsed_args):
|
|
61
|
+
image_client = self.app.client_manager.image
|
|
62
|
+
kwargs = {}
|
|
63
|
+
|
|
64
|
+
kwargs['namespace'] = parsed_args.namespace
|
|
65
|
+
kwargs['name'] = parsed_args.name
|
|
66
|
+
|
|
67
|
+
if parsed_args.properties_target:
|
|
68
|
+
kwargs['properties_target'] = parsed_args.properties_target
|
|
69
|
+
|
|
70
|
+
obj = image_client.create_metadef_resource_type_association(
|
|
71
|
+
parsed_args.namespace, **kwargs
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
display_columns, columns = _get_columns(obj)
|
|
75
|
+
data = utils.get_item_properties(obj, columns, formatters={})
|
|
76
|
+
|
|
77
|
+
return (display_columns, data)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class DeleteMetadefResourceTypeAssociation(command.Command):
|
|
81
|
+
_description = _("Delete metadef resource type association")
|
|
82
|
+
|
|
83
|
+
def get_parser(self, prog_name):
|
|
84
|
+
parser = super().get_parser(prog_name)
|
|
85
|
+
parser.add_argument(
|
|
86
|
+
"metadef_namespace",
|
|
87
|
+
metavar="<metadef_namespace>",
|
|
88
|
+
help=_("The name of the namespace whose details you want to see"),
|
|
89
|
+
)
|
|
90
|
+
parser.add_argument(
|
|
91
|
+
"name",
|
|
92
|
+
metavar="<name>",
|
|
93
|
+
nargs="+",
|
|
94
|
+
help=_(
|
|
95
|
+
"The name of the resource type(s) (repeat option to delete"
|
|
96
|
+
"multiple metadef resource type associations)"
|
|
97
|
+
),
|
|
98
|
+
)
|
|
99
|
+
parser.add_argument(
|
|
100
|
+
"--force",
|
|
101
|
+
dest='force',
|
|
102
|
+
action='store_true',
|
|
103
|
+
default=False,
|
|
104
|
+
help=_(
|
|
105
|
+
"Force delete the resource type association if the"
|
|
106
|
+
"namespace is protected"
|
|
107
|
+
),
|
|
108
|
+
)
|
|
109
|
+
return parser
|
|
110
|
+
|
|
111
|
+
def take_action(self, parsed_args):
|
|
112
|
+
image_client = self.app.client_manager.image
|
|
113
|
+
|
|
114
|
+
result = 0
|
|
115
|
+
for resource_type in parsed_args.name:
|
|
116
|
+
try:
|
|
117
|
+
metadef_namespace = image_client.get_metadef_namespace(
|
|
118
|
+
parsed_args.metadef_namespace
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
kwargs = {}
|
|
122
|
+
is_initially_protected = (
|
|
123
|
+
True if metadef_namespace.is_protected else False
|
|
124
|
+
)
|
|
125
|
+
if is_initially_protected and parsed_args.force:
|
|
126
|
+
kwargs['is_protected'] = False
|
|
127
|
+
|
|
128
|
+
image_client.update_metadef_namespace(
|
|
129
|
+
metadef_namespace.namespace, **kwargs
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
try:
|
|
133
|
+
image_client.delete_metadef_resource_type_association(
|
|
134
|
+
resource_type, metadef_namespace, ignore_missing=False
|
|
135
|
+
)
|
|
136
|
+
finally:
|
|
137
|
+
if is_initially_protected:
|
|
138
|
+
kwargs['is_protected'] = True
|
|
139
|
+
image_client.update_metadef_namespace(
|
|
140
|
+
metadef_namespace.namespace, **kwargs
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
except Exception as e:
|
|
144
|
+
result += 1
|
|
145
|
+
LOG.error(
|
|
146
|
+
_(
|
|
147
|
+
"Failed to delete resource type with name or "
|
|
148
|
+
"ID '%(resource_type)s': %(e)s"
|
|
149
|
+
),
|
|
150
|
+
{'resource_type': resource_type, 'e': e},
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
if result > 0:
|
|
154
|
+
total = len(parsed_args.metadef_namespace)
|
|
155
|
+
msg = _(
|
|
156
|
+
"%(result)s of %(total)s resource type failed to delete."
|
|
157
|
+
) % {'result': result, 'total': total}
|
|
158
|
+
raise exceptions.CommandError(msg)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
class ListMetadefResourceTypeAssociations(command.Lister):
|
|
162
|
+
_description = _("List metadef resource type associations")
|
|
163
|
+
|
|
164
|
+
def get_parser(self, prog_name):
|
|
165
|
+
parser = super().get_parser(prog_name)
|
|
166
|
+
parser.add_argument(
|
|
167
|
+
"metadef_namespace",
|
|
168
|
+
metavar="<metadef_namespace>",
|
|
169
|
+
help=_("The name of the namespace whose details you want to see"),
|
|
170
|
+
)
|
|
171
|
+
return parser
|
|
172
|
+
|
|
173
|
+
def take_action(self, parsed_args):
|
|
174
|
+
image_client = self.app.client_manager.image
|
|
175
|
+
data = image_client.metadef_resource_type_associations(
|
|
176
|
+
parsed_args.metadef_namespace,
|
|
177
|
+
)
|
|
178
|
+
columns = ['Name']
|
|
179
|
+
column_headers = columns
|
|
180
|
+
return (
|
|
181
|
+
column_headers,
|
|
182
|
+
(
|
|
183
|
+
utils.get_item_properties(
|
|
184
|
+
s,
|
|
185
|
+
columns,
|
|
186
|
+
)
|
|
187
|
+
for s in data
|
|
188
|
+
),
|
|
189
|
+
)
|
openstackclient/image/v2/task.py
CHANGED
|
@@ -132,7 +132,7 @@ class NetDetectionMixin(metaclass=abc.ABCMeta):
|
|
|
132
132
|
|
|
133
133
|
def get_parser(self, prog_name):
|
|
134
134
|
LOG.debug('get_parser(%s)', prog_name)
|
|
135
|
-
parser = super(
|
|
135
|
+
parser = super().get_parser(prog_name)
|
|
136
136
|
parser = self.update_parser_common(parser)
|
|
137
137
|
LOG.debug('common parser: %s', parser)
|
|
138
138
|
if self.is_neutron or self.is_docs_build:
|
|
@@ -161,7 +161,7 @@ class NetDetectionMixin(metaclass=abc.ABCMeta):
|
|
|
161
161
|
)
|
|
162
162
|
elif self.is_nova_network:
|
|
163
163
|
return self.take_action_compute(
|
|
164
|
-
self.app.client_manager.compute, parsed_args
|
|
164
|
+
self.app.client_manager.sdk_connection.compute, parsed_args
|
|
165
165
|
)
|
|
166
166
|
|
|
167
167
|
def take_action_network(self, client, parsed_args):
|
|
@@ -210,7 +210,8 @@ class NetworkAndComputeDelete(NetworkAndComputeCommand, metaclass=abc.ABCMeta):
|
|
|
210
210
|
)
|
|
211
211
|
else:
|
|
212
212
|
self.take_action_compute(
|
|
213
|
-
self.app.client_manager.compute,
|
|
213
|
+
self.app.client_manager.sdk_connection.compute,
|
|
214
|
+
parsed_args,
|
|
214
215
|
)
|
|
215
216
|
except Exception as e:
|
|
216
217
|
msg = _(
|
|
@@ -267,7 +268,7 @@ class NetworkAndComputeShowOne(
|
|
|
267
268
|
)
|
|
268
269
|
else:
|
|
269
270
|
return self.take_action_compute(
|
|
270
|
-
self.app.client_manager.compute, parsed_args
|
|
271
|
+
self.app.client_manager.sdk_connection.compute, parsed_args
|
|
271
272
|
)
|
|
272
273
|
except openstack.exceptions.HttpException as exc:
|
|
273
274
|
msg = _("Error while executing command: %s") % exc.message
|
|
@@ -318,7 +319,7 @@ class NeutronCommandWithExtraArgs(command.Command):
|
|
|
318
319
|
return result
|
|
319
320
|
|
|
320
321
|
def get_parser(self, prog_name):
|
|
321
|
-
parser = super(
|
|
322
|
+
parser = super().get_parser(prog_name)
|
|
322
323
|
parser.add_argument(
|
|
323
324
|
'--extra-property',
|
|
324
325
|
metavar='type=<property_type>,name=<property_name>,'
|
openstackclient/network/utils.py
CHANGED
|
@@ -27,7 +27,7 @@ def transform_compute_security_group_rule(sg_rule):
|
|
|
27
27
|
elif from_port is None and to_port is None:
|
|
28
28
|
port_range = {'port_range': ""}
|
|
29
29
|
else:
|
|
30
|
-
port_range = {'port_range': "
|
|
30
|
+
port_range = {'port_range': f"{from_port}:{to_port}"}
|
|
31
31
|
info.update(port_range)
|
|
32
32
|
if 'cidr' in info['ip_range']:
|
|
33
33
|
info['ip_range'] = info['ip_range']['cidr']
|
|
@@ -76,7 +76,7 @@ def str2dict(strdict):
|
|
|
76
76
|
msg = _("missing value for key '%s'")
|
|
77
77
|
raise exceptions.CommandError(msg % kv)
|
|
78
78
|
else:
|
|
79
|
-
kvlist[i - 1] = "
|
|
79
|
+
kvlist[i - 1] = f"{kvlist[i - 1]};{kv}"
|
|
80
80
|
for kv in kvlist:
|
|
81
81
|
key, sep, value = kv.partition(':')
|
|
82
82
|
result[key] = value
|
|
@@ -61,7 +61,7 @@ class CreateAddressGroup(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
61
61
|
_description = _("Create a new Address Group")
|
|
62
62
|
|
|
63
63
|
def get_parser(self, prog_name):
|
|
64
|
-
parser = super(
|
|
64
|
+
parser = super().get_parser(prog_name)
|
|
65
65
|
parser.add_argument(
|
|
66
66
|
'name', metavar="<name>", help=_("New address group name")
|
|
67
67
|
)
|
|
@@ -108,7 +108,7 @@ class DeleteAddressGroup(command.Command):
|
|
|
108
108
|
_description = _("Delete address group(s)")
|
|
109
109
|
|
|
110
110
|
def get_parser(self, prog_name):
|
|
111
|
-
parser = super(
|
|
111
|
+
parser = super().get_parser(prog_name)
|
|
112
112
|
parser.add_argument(
|
|
113
113
|
'address_group',
|
|
114
114
|
metavar="<address-group>",
|
|
@@ -148,7 +148,7 @@ class ListAddressGroup(command.Lister):
|
|
|
148
148
|
_description = _("List address groups")
|
|
149
149
|
|
|
150
150
|
def get_parser(self, prog_name):
|
|
151
|
-
parser = super(
|
|
151
|
+
parser = super().get_parser(prog_name)
|
|
152
152
|
|
|
153
153
|
parser.add_argument(
|
|
154
154
|
'--name',
|
|
@@ -213,7 +213,7 @@ class SetAddressGroup(common.NeutronCommandWithExtraArgs):
|
|
|
213
213
|
_description = _("Set address group properties")
|
|
214
214
|
|
|
215
215
|
def get_parser(self, prog_name):
|
|
216
|
-
parser = super(
|
|
216
|
+
parser = super().get_parser(prog_name)
|
|
217
217
|
parser.add_argument(
|
|
218
218
|
'address_group',
|
|
219
219
|
metavar="<address-group>",
|
|
@@ -265,7 +265,7 @@ class ShowAddressGroup(command.ShowOne):
|
|
|
265
265
|
_description = _("Display address group details")
|
|
266
266
|
|
|
267
267
|
def get_parser(self, prog_name):
|
|
268
|
-
parser = super(
|
|
268
|
+
parser = super().get_parser(prog_name)
|
|
269
269
|
parser.add_argument(
|
|
270
270
|
'address_group',
|
|
271
271
|
metavar="<address-group>",
|
|
@@ -289,7 +289,7 @@ class UnsetAddressGroup(command.Command):
|
|
|
289
289
|
_description = _("Unset address group properties")
|
|
290
290
|
|
|
291
291
|
def get_parser(self, prog_name):
|
|
292
|
-
parser = super(
|
|
292
|
+
parser = super().get_parser(prog_name)
|
|
293
293
|
parser.add_argument(
|
|
294
294
|
'address_group',
|
|
295
295
|
metavar="<address-group>",
|
|
@@ -62,7 +62,7 @@ class CreateAddressScope(command.ShowOne, common.NeutronCommandWithExtraArgs):
|
|
|
62
62
|
_description = _("Create a new Address Scope")
|
|
63
63
|
|
|
64
64
|
def get_parser(self, prog_name):
|
|
65
|
-
parser = super(
|
|
65
|
+
parser = super().get_parser(prog_name)
|
|
66
66
|
parser.add_argument(
|
|
67
67
|
'name', metavar="<name>", help=_("New address scope name")
|
|
68
68
|
)
|
|
@@ -113,7 +113,7 @@ class DeleteAddressScope(command.Command):
|
|
|
113
113
|
_description = _("Delete address scope(s)")
|
|
114
114
|
|
|
115
115
|
def get_parser(self, prog_name):
|
|
116
|
-
parser = super(
|
|
116
|
+
parser = super().get_parser(prog_name)
|
|
117
117
|
parser.add_argument(
|
|
118
118
|
'address_scope',
|
|
119
119
|
metavar="<address-scope>",
|
|
@@ -155,7 +155,7 @@ class ListAddressScope(command.Lister):
|
|
|
155
155
|
_description = _("List address scopes")
|
|
156
156
|
|
|
157
157
|
def get_parser(self, prog_name):
|
|
158
|
-
parser = super(
|
|
158
|
+
parser = super().get_parser(prog_name)
|
|
159
159
|
|
|
160
160
|
parser.add_argument(
|
|
161
161
|
'--name',
|
|
@@ -249,7 +249,7 @@ class SetAddressScope(common.NeutronCommandWithExtraArgs):
|
|
|
249
249
|
_description = _("Set address scope properties")
|
|
250
250
|
|
|
251
251
|
def get_parser(self, prog_name):
|
|
252
|
-
parser = super(
|
|
252
|
+
parser = super().get_parser(prog_name)
|
|
253
253
|
parser.add_argument(
|
|
254
254
|
'address_scope',
|
|
255
255
|
metavar="<address-scope>",
|
|
@@ -294,7 +294,7 @@ class ShowAddressScope(command.ShowOne):
|
|
|
294
294
|
_description = _("Display address scope details")
|
|
295
295
|
|
|
296
296
|
def get_parser(self, prog_name):
|
|
297
|
-
parser = super(
|
|
297
|
+
parser = super().get_parser(prog_name)
|
|
298
298
|
parser.add_argument(
|
|
299
299
|
'address_scope',
|
|
300
300
|
metavar="<address-scope>",
|
|
@@ -142,7 +142,7 @@ class CreateDefaultSecurityGroupRule(
|
|
|
142
142
|
parser.add_argument(
|
|
143
143
|
'--for-custom-sg',
|
|
144
144
|
action='store_true',
|
|
145
|
-
default=
|
|
145
|
+
default=False,
|
|
146
146
|
help=_(
|
|
147
147
|
"Set this default security group rule to be used in all "
|
|
148
148
|
"custom security groups created manually by users"
|
|
@@ -9,18 +9,17 @@
|
|
|
9
9
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
10
10
|
# License for the specific language governing permissions and limitations
|
|
11
11
|
# under the License.
|
|
12
|
-
#
|
|
13
12
|
|
|
14
13
|
"""IP Floating action implementations"""
|
|
15
14
|
|
|
16
15
|
from osc_lib import utils
|
|
17
16
|
from osc_lib.utils import tags as _tag
|
|
18
17
|
|
|
18
|
+
from openstackclient.api import compute_v2
|
|
19
19
|
from openstackclient.i18n import _
|
|
20
20
|
from openstackclient.identity import common as identity_common
|
|
21
21
|
from openstackclient.network import common
|
|
22
22
|
|
|
23
|
-
|
|
24
23
|
_formatters = {
|
|
25
24
|
'port_details': utils.format_dict,
|
|
26
25
|
}
|
|
@@ -200,7 +199,7 @@ class CreateFloatingIP(
|
|
|
200
199
|
return (display_columns, data)
|
|
201
200
|
|
|
202
201
|
def take_action_compute(self, client, parsed_args):
|
|
203
|
-
obj =
|
|
202
|
+
obj = compute_v2.create_floating_ip(client, parsed_args.network)
|
|
204
203
|
columns = _get_columns(obj)
|
|
205
204
|
data = utils.get_dict_properties(obj, columns)
|
|
206
205
|
return (columns, data)
|
|
@@ -230,7 +229,7 @@ class DeleteFloatingIP(common.NetworkAndComputeDelete):
|
|
|
230
229
|
client.delete_ip(obj)
|
|
231
230
|
|
|
232
231
|
def take_action_compute(self, client, parsed_args):
|
|
233
|
-
|
|
232
|
+
compute_v2.delete_floating_ip(client, self.r)
|
|
234
233
|
|
|
235
234
|
|
|
236
235
|
class ListFloatingIP(common.NetworkAndComputeLister):
|
|
@@ -421,8 +420,7 @@ class ListFloatingIP(common.NetworkAndComputeLister):
|
|
|
421
420
|
'Pool',
|
|
422
421
|
)
|
|
423
422
|
|
|
424
|
-
|
|
425
|
-
|
|
423
|
+
objs = compute_v2.list_floating_ips(client)
|
|
426
424
|
return (
|
|
427
425
|
headers,
|
|
428
426
|
(
|
|
@@ -431,7 +429,7 @@ class ListFloatingIP(common.NetworkAndComputeLister):
|
|
|
431
429
|
columns,
|
|
432
430
|
formatters={},
|
|
433
431
|
)
|
|
434
|
-
for s in
|
|
432
|
+
for s in objs
|
|
435
433
|
),
|
|
436
434
|
)
|
|
437
435
|
|
|
@@ -440,7 +438,7 @@ class SetFloatingIP(common.NeutronCommandWithExtraArgs):
|
|
|
440
438
|
_description = _("Set floating IP Properties")
|
|
441
439
|
|
|
442
440
|
def get_parser(self, prog_name):
|
|
443
|
-
parser = super(
|
|
441
|
+
parser = super().get_parser(prog_name)
|
|
444
442
|
parser.add_argument(
|
|
445
443
|
'floating_ip',
|
|
446
444
|
metavar='<floating-ip>',
|
|
@@ -538,7 +536,7 @@ class ShowFloatingIP(common.NetworkAndComputeShowOne):
|
|
|
538
536
|
return (display_columns, data)
|
|
539
537
|
|
|
540
538
|
def take_action_compute(self, client, parsed_args):
|
|
541
|
-
obj =
|
|
539
|
+
obj = compute_v2.get_floating_ip(client, parsed_args.floating_ip)
|
|
542
540
|
columns = _get_columns(obj)
|
|
543
541
|
data = utils.get_dict_properties(obj, columns)
|
|
544
542
|
return (columns, data)
|
|
@@ -548,7 +546,7 @@ class UnsetFloatingIP(common.NeutronCommandWithExtraArgs):
|
|
|
548
546
|
_description = _("Unset floating IP Properties")
|
|
549
547
|
|
|
550
548
|
def get_parser(self, prog_name):
|
|
551
|
-
parser = super(
|
|
549
|
+
parser = super().get_parser(prog_name)
|
|
552
550
|
parser.add_argument(
|
|
553
551
|
'floating_ip',
|
|
554
552
|
metavar='<floating-ip>',
|
|
@@ -9,14 +9,12 @@
|
|
|
9
9
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
10
10
|
# License for the specific language governing permissions and limitations
|
|
11
11
|
# under the License.
|
|
12
|
-
#
|
|
13
12
|
|
|
14
13
|
"""Floating IP Pool action implementations"""
|
|
15
14
|
|
|
16
|
-
|
|
17
15
|
from osc_lib import exceptions
|
|
18
|
-
from osc_lib import utils
|
|
19
16
|
|
|
17
|
+
from openstackclient.api import compute_v2
|
|
20
18
|
from openstackclient.i18n import _
|
|
21
19
|
from openstackclient.network import common
|
|
22
20
|
|
|
@@ -33,15 +31,8 @@ class ListFloatingIPPool(common.NetworkAndComputeLister):
|
|
|
33
31
|
|
|
34
32
|
def take_action_compute(self, client, parsed_args):
|
|
35
33
|
columns = ('Name',)
|
|
36
|
-
data =
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
utils.get_dict_properties(
|
|
42
|
-
s,
|
|
43
|
-
columns,
|
|
44
|
-
)
|
|
45
|
-
for s in data
|
|
46
|
-
),
|
|
47
|
-
)
|
|
34
|
+
data = [
|
|
35
|
+
(x['name'],) for x in compute_v2.list_floating_ip_pools(client)
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
return (columns, data)
|
|
@@ -98,9 +98,7 @@ class CreateFloatingIPPortForwarding(
|
|
|
98
98
|
_description = _("Create floating IP port forwarding")
|
|
99
99
|
|
|
100
100
|
def get_parser(self, prog_name):
|
|
101
|
-
parser = super(
|
|
102
|
-
prog_name
|
|
103
|
-
)
|
|
101
|
+
parser = super().get_parser(prog_name)
|
|
104
102
|
parser.add_argument(
|
|
105
103
|
'--internal-ip-address',
|
|
106
104
|
required=True,
|
|
@@ -201,9 +199,7 @@ class DeleteFloatingIPPortForwarding(command.Command):
|
|
|
201
199
|
_description = _("Delete floating IP port forwarding")
|
|
202
200
|
|
|
203
201
|
def get_parser(self, prog_name):
|
|
204
|
-
parser = super(
|
|
205
|
-
prog_name
|
|
206
|
-
)
|
|
202
|
+
parser = super().get_parser(prog_name)
|
|
207
203
|
parser.add_argument(
|
|
208
204
|
'floating_ip',
|
|
209
205
|
metavar='<floating-ip>',
|
|
@@ -256,9 +252,7 @@ class ListFloatingIPPortForwarding(command.Lister):
|
|
|
256
252
|
_description = _("List floating IP port forwarding")
|
|
257
253
|
|
|
258
254
|
def get_parser(self, prog_name):
|
|
259
|
-
parser = super(
|
|
260
|
-
prog_name
|
|
261
|
-
)
|
|
255
|
+
parser = super().get_parser(prog_name)
|
|
262
256
|
parser.add_argument(
|
|
263
257
|
'floating_ip',
|
|
264
258
|
metavar='<floating-ip>',
|
|
@@ -358,7 +352,7 @@ class SetFloatingIPPortForwarding(common.NeutronCommandWithExtraArgs):
|
|
|
358
352
|
_description = _("Set floating IP Port Forwarding Properties")
|
|
359
353
|
|
|
360
354
|
def get_parser(self, prog_name):
|
|
361
|
-
parser = super(
|
|
355
|
+
parser = super().get_parser(prog_name)
|
|
362
356
|
parser.add_argument(
|
|
363
357
|
'floating_ip',
|
|
364
358
|
metavar='<floating-ip>',
|
|
@@ -458,9 +452,7 @@ class ShowFloatingIPPortForwarding(command.ShowOne):
|
|
|
458
452
|
_description = _("Display floating IP Port Forwarding details")
|
|
459
453
|
|
|
460
454
|
def get_parser(self, prog_name):
|
|
461
|
-
parser = super(
|
|
462
|
-
prog_name
|
|
463
|
-
)
|
|
455
|
+
parser = super().get_parser(prog_name)
|
|
464
456
|
parser.add_argument(
|
|
465
457
|
'floating_ip',
|
|
466
458
|
metavar='<floating-ip>',
|
|
@@ -39,7 +39,7 @@ class ListIPAvailability(command.Lister):
|
|
|
39
39
|
_description = _("List IP availability for network")
|
|
40
40
|
|
|
41
41
|
def get_parser(self, prog_name):
|
|
42
|
-
parser = super(
|
|
42
|
+
parser = super().get_parser(prog_name)
|
|
43
43
|
parser.add_argument(
|
|
44
44
|
'--ip-version',
|
|
45
45
|
type=int,
|
|
@@ -105,7 +105,7 @@ class ShowIPAvailability(command.ShowOne):
|
|
|
105
105
|
_description = _("Show network IP availability details")
|
|
106
106
|
|
|
107
107
|
def get_parser(self, prog_name):
|
|
108
|
-
parser = super(
|
|
108
|
+
parser = super().get_parser(prog_name)
|
|
109
109
|
parser.add_argument(
|
|
110
110
|
'network',
|
|
111
111
|
metavar="<network>",
|
|
@@ -49,7 +49,7 @@ class CreateConntrackHelper(command.ShowOne):
|
|
|
49
49
|
_description = _("Create a new L3 conntrack helper")
|
|
50
50
|
|
|
51
51
|
def get_parser(self, prog_name):
|
|
52
|
-
parser = super(
|
|
52
|
+
parser = super().get_parser(prog_name)
|
|
53
53
|
parser.add_argument(
|
|
54
54
|
'router',
|
|
55
55
|
metavar='<router>',
|
|
@@ -95,7 +95,7 @@ class DeleteConntrackHelper(command.Command):
|
|
|
95
95
|
_description = _("Delete L3 conntrack helper")
|
|
96
96
|
|
|
97
97
|
def get_parser(self, prog_name):
|
|
98
|
-
parser = super(
|
|
98
|
+
parser = super().get_parser(prog_name)
|
|
99
99
|
parser.add_argument(
|
|
100
100
|
'router',
|
|
101
101
|
metavar='<router>',
|
|
@@ -143,7 +143,7 @@ class ListConntrackHelper(command.Lister):
|
|
|
143
143
|
_description = _("List L3 conntrack helpers")
|
|
144
144
|
|
|
145
145
|
def get_parser(self, prog_name):
|
|
146
|
-
parser = super(
|
|
146
|
+
parser = super().get_parser(prog_name)
|
|
147
147
|
parser.add_argument(
|
|
148
148
|
'router',
|
|
149
149
|
metavar='<router>',
|
|
@@ -206,7 +206,7 @@ class SetConntrackHelper(command.Command):
|
|
|
206
206
|
_description = _("Set L3 conntrack helper properties")
|
|
207
207
|
|
|
208
208
|
def get_parser(self, prog_name):
|
|
209
|
-
parser = super(
|
|
209
|
+
parser = super().get_parser(prog_name)
|
|
210
210
|
parser.add_argument(
|
|
211
211
|
'router',
|
|
212
212
|
metavar='<router>',
|
|
@@ -253,7 +253,7 @@ class ShowConntrackHelper(command.ShowOne):
|
|
|
253
253
|
_description = _("Display L3 conntrack helper details")
|
|
254
254
|
|
|
255
255
|
def get_parser(self, prog_name):
|
|
256
|
-
parser = super(
|
|
256
|
+
parser = super().get_parser(prog_name)
|
|
257
257
|
parser.add_argument(
|
|
258
258
|
'router',
|
|
259
259
|
metavar='<router>',
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
10
10
|
# License for the specific language governing permissions and limitations
|
|
11
11
|
# under the License.
|
|
12
|
-
#
|
|
13
12
|
|
|
14
13
|
"""Network action implementations"""
|
|
15
14
|
|
|
@@ -18,6 +17,7 @@ from osc_lib.cli import format_columns
|
|
|
18
17
|
from osc_lib import utils
|
|
19
18
|
from osc_lib.utils import tags as _tag
|
|
20
19
|
|
|
20
|
+
from openstackclient.api import compute_v2
|
|
21
21
|
from openstackclient.i18n import _
|
|
22
22
|
from openstackclient.identity import common as identity_common
|
|
23
23
|
from openstackclient.network import common
|
|
@@ -61,7 +61,6 @@ def _get_columns_network(item):
|
|
|
61
61
|
'tags': 'tags',
|
|
62
62
|
}
|
|
63
63
|
hidden_columns = ['location', 'tenant_id']
|
|
64
|
-
hidden_columns = ['location']
|
|
65
64
|
return utils.get_osc_show_columns_for_sdk_resource(
|
|
66
65
|
item, column_map, hidden_columns
|
|
67
66
|
)
|
|
@@ -389,7 +388,7 @@ class CreateNetwork(
|
|
|
389
388
|
|
|
390
389
|
def take_action_compute(self, client, parsed_args):
|
|
391
390
|
attrs = _get_attrs_compute(self.app.client_manager, parsed_args)
|
|
392
|
-
obj =
|
|
391
|
+
obj = compute_v2.create_network(client, **attrs)
|
|
393
392
|
display_columns, columns = _get_columns_compute(obj)
|
|
394
393
|
data = utils.get_dict_properties(obj, columns)
|
|
395
394
|
return (display_columns, data)
|
|
@@ -417,7 +416,8 @@ class DeleteNetwork(common.NetworkAndComputeDelete):
|
|
|
417
416
|
client.delete_network(obj)
|
|
418
417
|
|
|
419
418
|
def take_action_compute(self, client, parsed_args):
|
|
420
|
-
|
|
419
|
+
network = compute_v2.find_network(client, self.r)
|
|
420
|
+
compute_v2.delete_network(client, network['id'])
|
|
421
421
|
|
|
422
422
|
|
|
423
423
|
# TODO(sindhu): Use the SDK resource mapped attribute names once the
|
|
@@ -674,7 +674,7 @@ class ListNetwork(common.NetworkAndComputeLister):
|
|
|
674
674
|
'Subnet',
|
|
675
675
|
)
|
|
676
676
|
|
|
677
|
-
data =
|
|
677
|
+
data = compute_v2.list_networks(client)
|
|
678
678
|
|
|
679
679
|
return (
|
|
680
680
|
column_headers,
|
|
@@ -695,7 +695,7 @@ class SetNetwork(common.NeutronCommandWithExtraArgs):
|
|
|
695
695
|
_description = _("Set network properties")
|
|
696
696
|
|
|
697
697
|
def get_parser(self, prog_name):
|
|
698
|
-
parser = super(
|
|
698
|
+
parser = super().get_parser(prog_name)
|
|
699
699
|
parser.add_argument(
|
|
700
700
|
'network',
|
|
701
701
|
metavar="<network>",
|
|
@@ -829,7 +829,7 @@ class ShowNetwork(common.NetworkAndComputeShowOne):
|
|
|
829
829
|
return (display_columns, data)
|
|
830
830
|
|
|
831
831
|
def take_action_compute(self, client, parsed_args):
|
|
832
|
-
obj =
|
|
832
|
+
obj = compute_v2.find_network(client, parsed_args.network)
|
|
833
833
|
display_columns, columns = _get_columns_compute(obj)
|
|
834
834
|
data = utils.get_dict_properties(obj, columns)
|
|
835
835
|
return (display_columns, data)
|
|
@@ -839,7 +839,7 @@ class UnsetNetwork(common.NeutronUnsetCommandWithExtraArgs):
|
|
|
839
839
|
_description = _("Unset network properties")
|
|
840
840
|
|
|
841
841
|
def get_parser(self, prog_name):
|
|
842
|
-
parser = super(
|
|
842
|
+
parser = super().get_parser(prog_name)
|
|
843
843
|
parser.add_argument(
|
|
844
844
|
'network',
|
|
845
845
|
metavar="<network>",
|