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
|
@@ -250,7 +250,7 @@ class TestListNetworkSegment(TestNetworkSegment):
|
|
|
250
250
|
'Network Type',
|
|
251
251
|
'Segment',
|
|
252
252
|
)
|
|
253
|
-
columns_long = columns
|
|
253
|
+
columns_long = (*columns, 'Physical Network')
|
|
254
254
|
|
|
255
255
|
data = []
|
|
256
256
|
for _network_segment in _network_segments:
|
|
@@ -333,6 +333,30 @@ class TestListNetworkSegment(TestNetworkSegment):
|
|
|
333
333
|
self.assertEqual(self.columns, columns)
|
|
334
334
|
self.assertEqual(self.data, list(data))
|
|
335
335
|
|
|
336
|
+
def test_list_pagination(self):
|
|
337
|
+
arglist = [
|
|
338
|
+
'--marker',
|
|
339
|
+
self._network_segments[0].id,
|
|
340
|
+
'--limit',
|
|
341
|
+
'1',
|
|
342
|
+
]
|
|
343
|
+
verifylist = [
|
|
344
|
+
('marker', self._network_segments[0].id),
|
|
345
|
+
('limit', 1),
|
|
346
|
+
]
|
|
347
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
348
|
+
|
|
349
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
350
|
+
|
|
351
|
+
self.network_client.segments.assert_called_once_with(
|
|
352
|
+
**{
|
|
353
|
+
'marker': self._network_segments[0].id,
|
|
354
|
+
'limit': 1,
|
|
355
|
+
}
|
|
356
|
+
)
|
|
357
|
+
self.assertEqual(self.columns, columns)
|
|
358
|
+
self.assertEqual(self.data, list(data))
|
|
359
|
+
|
|
336
360
|
|
|
337
361
|
class TestSetNetworkSegment(TestNetworkSegment):
|
|
338
362
|
# The network segment to show.
|
|
@@ -333,7 +333,7 @@ class TestCreateNetworkSegmentRange(TestNetworkSegmentRange):
|
|
|
333
333
|
'shared': self._network_segment_range.shared,
|
|
334
334
|
'project_id': mock.ANY,
|
|
335
335
|
'network_type': self._network_segment_range.network_type,
|
|
336
|
-
'physical_network': self._network_segment_range.physical_network,
|
|
336
|
+
'physical_network': self._network_segment_range.physical_network,
|
|
337
337
|
'minimum': self._network_segment_range.minimum,
|
|
338
338
|
'maximum': self._network_segment_range.maximum,
|
|
339
339
|
'name': self._network_segment_range.name,
|
|
@@ -450,10 +450,7 @@ class TestListNetworkSegmentRange(TestNetworkSegmentRange):
|
|
|
450
450
|
'Minimum ID',
|
|
451
451
|
'Maximum ID',
|
|
452
452
|
)
|
|
453
|
-
columns_long = columns
|
|
454
|
-
'Used',
|
|
455
|
-
'Available',
|
|
456
|
-
)
|
|
453
|
+
columns_long = (*columns, 'Used', 'Available')
|
|
457
454
|
|
|
458
455
|
data = []
|
|
459
456
|
for _network_segment_range in _network_segment_ranges:
|
|
@@ -518,6 +515,30 @@ class TestListNetworkSegmentRange(TestNetworkSegmentRange):
|
|
|
518
515
|
self.assertEqual(self.columns, columns)
|
|
519
516
|
self.assertEqual(self.data, list(data))
|
|
520
517
|
|
|
518
|
+
def test_list_pagination(self):
|
|
519
|
+
arglist = [
|
|
520
|
+
'--marker',
|
|
521
|
+
self._network_segment_ranges[0].id,
|
|
522
|
+
'--limit',
|
|
523
|
+
'1',
|
|
524
|
+
]
|
|
525
|
+
verifylist = [
|
|
526
|
+
('marker', self._network_segment_ranges[0].id),
|
|
527
|
+
('limit', 1),
|
|
528
|
+
]
|
|
529
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
530
|
+
|
|
531
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
532
|
+
|
|
533
|
+
self.network_client.network_segment_ranges.assert_called_once_with(
|
|
534
|
+
**{
|
|
535
|
+
'marker': self._network_segment_ranges[0].id,
|
|
536
|
+
'limit': 1,
|
|
537
|
+
}
|
|
538
|
+
)
|
|
539
|
+
self.assertEqual(self.columns, columns)
|
|
540
|
+
self.assertEqual(self.data, list(data))
|
|
541
|
+
|
|
521
542
|
def test_list_long(self):
|
|
522
543
|
arglist = [
|
|
523
544
|
'--long',
|
|
@@ -544,11 +565,11 @@ class TestSetNetworkSegmentRange(TestNetworkSegmentRange):
|
|
|
544
565
|
# The network segment range updated.
|
|
545
566
|
minimum_updated = _network_segment_range.minimum - 5
|
|
546
567
|
maximum_updated = _network_segment_range.maximum + 5
|
|
547
|
-
available_updated =
|
|
548
|
-
list(range(minimum_updated, 104))
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
568
|
+
available_updated = [
|
|
569
|
+
*list(range(minimum_updated, 104)),
|
|
570
|
+
105,
|
|
571
|
+
*list(range(107, maximum_updated + 1)),
|
|
572
|
+
]
|
|
552
573
|
_network_segment_range_updated = (
|
|
553
574
|
network_fakes.create_one_network_segment_range(
|
|
554
575
|
attrs={
|
|
@@ -468,7 +468,7 @@ class TestListNetworkTrunk(TestNetworkTrunk):
|
|
|
468
468
|
)
|
|
469
469
|
|
|
470
470
|
columns = ('ID', 'Name', 'Parent Port', 'Description')
|
|
471
|
-
columns_long = columns
|
|
471
|
+
columns_long = (*columns, 'Status', 'State', 'Created At', 'Updated At')
|
|
472
472
|
data = []
|
|
473
473
|
for t in new_trunks:
|
|
474
474
|
data.append((t['id'], t['name'], t['port_id'], t['description']))
|
|
@@ -72,6 +72,8 @@ class TestPort(network_fakes.TestNetworkV2):
|
|
|
72
72
|
'port_security_enabled',
|
|
73
73
|
'project_id',
|
|
74
74
|
'propagate_uplink_status',
|
|
75
|
+
'pvlan_type',
|
|
76
|
+
'pvlan_community',
|
|
75
77
|
'resource_request',
|
|
76
78
|
'revision_number',
|
|
77
79
|
'qos_network_policy_id',
|
|
@@ -114,6 +116,8 @@ class TestPort(network_fakes.TestNetworkV2):
|
|
|
114
116
|
fake_port.is_port_security_enabled,
|
|
115
117
|
fake_port.project_id,
|
|
116
118
|
fake_port.propagate_uplink_status,
|
|
119
|
+
fake_port.pvlan_type,
|
|
120
|
+
fake_port.pvlan_community,
|
|
117
121
|
fake_port.resource_request,
|
|
118
122
|
fake_port.revision_number,
|
|
119
123
|
fake_port.qos_network_policy_id,
|
|
@@ -207,6 +211,10 @@ class TestCreatePort(TestPort):
|
|
|
207
211
|
'--dns-name',
|
|
208
212
|
'8.8.8.8',
|
|
209
213
|
'test-port',
|
|
214
|
+
'--pvlan-type',
|
|
215
|
+
network_fakes.PVLAN_TYPE_COMMUNITY,
|
|
216
|
+
'--pvlan-community',
|
|
217
|
+
network_fakes.PVLAN_COMMUNITY_NAME,
|
|
210
218
|
]
|
|
211
219
|
verifylist = [
|
|
212
220
|
('mac_address', 'aa:aa:aa:aa:aa:aa'),
|
|
@@ -224,6 +232,8 @@ class TestCreatePort(TestPort):
|
|
|
224
232
|
('dns_domain', 'example.org'),
|
|
225
233
|
('dns_name', '8.8.8.8'),
|
|
226
234
|
('name', 'test-port'),
|
|
235
|
+
('pvlan_type', network_fakes.PVLAN_TYPE_COMMUNITY),
|
|
236
|
+
('pvlan_community', network_fakes.PVLAN_COMMUNITY_NAME),
|
|
227
237
|
]
|
|
228
238
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
229
239
|
|
|
@@ -247,6 +257,8 @@ class TestCreatePort(TestPort):
|
|
|
247
257
|
'network_id': self._port.network_id,
|
|
248
258
|
'dns_domain': 'example.org',
|
|
249
259
|
'dns_name': '8.8.8.8',
|
|
260
|
+
'pvlan_type': network_fakes.PVLAN_TYPE_COMMUNITY,
|
|
261
|
+
'pvlan_community': network_fakes.PVLAN_COMMUNITY_NAME,
|
|
250
262
|
'name': 'test-port',
|
|
251
263
|
}
|
|
252
264
|
)
|
|
@@ -1156,6 +1168,78 @@ class TestCreatePort(TestPort):
|
|
|
1156
1168
|
def test_create_with_trusted_false(self):
|
|
1157
1169
|
self._test_create_with_trusted_field(False)
|
|
1158
1170
|
|
|
1171
|
+
def test_create_pvlan_community_without_name(self):
|
|
1172
|
+
arglist = [
|
|
1173
|
+
'--network',
|
|
1174
|
+
self._port.network_id,
|
|
1175
|
+
'--pvlan-type',
|
|
1176
|
+
'community',
|
|
1177
|
+
'test-port',
|
|
1178
|
+
]
|
|
1179
|
+
verifylist = [
|
|
1180
|
+
('network', self._port.network_id),
|
|
1181
|
+
('enable', True),
|
|
1182
|
+
('pvlan_type', 'community'),
|
|
1183
|
+
('name', 'test-port'),
|
|
1184
|
+
]
|
|
1185
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1186
|
+
|
|
1187
|
+
self.assertRaises(
|
|
1188
|
+
exceptions.CommandError,
|
|
1189
|
+
self.cmd.take_action,
|
|
1190
|
+
parsed_args,
|
|
1191
|
+
)
|
|
1192
|
+
|
|
1193
|
+
def test_create_pvlan_with_port_security_disabled(self):
|
|
1194
|
+
arglist = [
|
|
1195
|
+
'--network',
|
|
1196
|
+
self._port.network_id,
|
|
1197
|
+
'--disable-port-security',
|
|
1198
|
+
'--pvlan-type',
|
|
1199
|
+
'isolated',
|
|
1200
|
+
'test-port',
|
|
1201
|
+
]
|
|
1202
|
+
verifylist = [
|
|
1203
|
+
('network', self._port.network_id),
|
|
1204
|
+
('enable', True),
|
|
1205
|
+
('disable_port_security', True),
|
|
1206
|
+
('pvlan_type', 'isolated'),
|
|
1207
|
+
('name', 'test-port'),
|
|
1208
|
+
]
|
|
1209
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1210
|
+
|
|
1211
|
+
self.assertRaises(
|
|
1212
|
+
exceptions.CommandError,
|
|
1213
|
+
self.cmd.take_action,
|
|
1214
|
+
parsed_args,
|
|
1215
|
+
)
|
|
1216
|
+
|
|
1217
|
+
def test_create_pvlan_on_non_pvlan_network(self):
|
|
1218
|
+
fake_net = network_fakes.create_one_network(
|
|
1219
|
+
{'id': self._port.network_id, 'pvlan': False}
|
|
1220
|
+
)
|
|
1221
|
+
self.network_client.find_network.return_value = fake_net
|
|
1222
|
+
arglist = [
|
|
1223
|
+
'--network',
|
|
1224
|
+
self._port.network_id,
|
|
1225
|
+
'--pvlan-type',
|
|
1226
|
+
'isolated',
|
|
1227
|
+
'test-port',
|
|
1228
|
+
]
|
|
1229
|
+
verifylist = [
|
|
1230
|
+
('network', self._port.network_id),
|
|
1231
|
+
('enable', True),
|
|
1232
|
+
('pvlan_type', 'isolated'),
|
|
1233
|
+
('name', 'test-port'),
|
|
1234
|
+
]
|
|
1235
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1236
|
+
|
|
1237
|
+
self.assertRaises(
|
|
1238
|
+
exceptions.CommandError,
|
|
1239
|
+
self.cmd.take_action,
|
|
1240
|
+
parsed_args,
|
|
1241
|
+
)
|
|
1242
|
+
|
|
1159
1243
|
|
|
1160
1244
|
class TestDeletePort(TestPort):
|
|
1161
1245
|
# Ports to delete.
|
|
@@ -1349,6 +1433,28 @@ class TestListPort(compute_fakes.FakeClientMixin, TestPort):
|
|
|
1349
1433
|
self.assertEqual(self.columns, columns)
|
|
1350
1434
|
self.assertCountEqual(self.data, list(data))
|
|
1351
1435
|
|
|
1436
|
+
def test_port_list_pagination(self):
|
|
1437
|
+
arglist = [
|
|
1438
|
+
'--marker',
|
|
1439
|
+
self._ports[0].id,
|
|
1440
|
+
'--limit',
|
|
1441
|
+
'1',
|
|
1442
|
+
]
|
|
1443
|
+
verifylist = [
|
|
1444
|
+
('marker', self._ports[0].id),
|
|
1445
|
+
('limit', 1),
|
|
1446
|
+
]
|
|
1447
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1448
|
+
|
|
1449
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
1450
|
+
|
|
1451
|
+
self.network_client.ports.assert_called_once_with(
|
|
1452
|
+
fields=LIST_FIELDS_TO_RETRIEVE,
|
|
1453
|
+
**{'marker': self._ports[0].id, 'limit': 1},
|
|
1454
|
+
)
|
|
1455
|
+
self.assertEqual(self.columns, columns)
|
|
1456
|
+
self.assertEqual(self.data, list(data))
|
|
1457
|
+
|
|
1352
1458
|
def test_port_list_router_opt(self):
|
|
1353
1459
|
arglist = [
|
|
1354
1460
|
'--router',
|
|
@@ -2653,6 +2759,66 @@ class TestSetPort(TestPort):
|
|
|
2653
2759
|
def test_set_uplink_status_propagation_false(self):
|
|
2654
2760
|
self._test_set_uplink_status_propagation(False)
|
|
2655
2761
|
|
|
2762
|
+
def test_set_pvlan_community_without_name(self):
|
|
2763
|
+
arglist = [
|
|
2764
|
+
'--pvlan-type',
|
|
2765
|
+
'community',
|
|
2766
|
+
self._port.name,
|
|
2767
|
+
]
|
|
2768
|
+
verifylist = [
|
|
2769
|
+
('pvlan_type', 'community'),
|
|
2770
|
+
('port', self._port.name),
|
|
2771
|
+
]
|
|
2772
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
2773
|
+
|
|
2774
|
+
self.assertRaises(
|
|
2775
|
+
exceptions.CommandError,
|
|
2776
|
+
self.cmd.take_action,
|
|
2777
|
+
parsed_args,
|
|
2778
|
+
)
|
|
2779
|
+
|
|
2780
|
+
def test_set_pvlan_with_port_security_disabled(self):
|
|
2781
|
+
arglist = [
|
|
2782
|
+
'--disable-port-security',
|
|
2783
|
+
'--pvlan-type',
|
|
2784
|
+
'isolated',
|
|
2785
|
+
self._port.name,
|
|
2786
|
+
]
|
|
2787
|
+
verifylist = [
|
|
2788
|
+
('disable_port_security', True),
|
|
2789
|
+
('pvlan_type', 'isolated'),
|
|
2790
|
+
('port', self._port.name),
|
|
2791
|
+
]
|
|
2792
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
2793
|
+
|
|
2794
|
+
self.assertRaises(
|
|
2795
|
+
exceptions.CommandError,
|
|
2796
|
+
self.cmd.take_action,
|
|
2797
|
+
parsed_args,
|
|
2798
|
+
)
|
|
2799
|
+
|
|
2800
|
+
def test_set_pvlan_on_non_pvlan_network(self):
|
|
2801
|
+
fake_net = network_fakes.create_one_network(
|
|
2802
|
+
{'id': self._port.network_id, 'pvlan': False}
|
|
2803
|
+
)
|
|
2804
|
+
self.network_client.find_network.return_value = fake_net
|
|
2805
|
+
arglist = [
|
|
2806
|
+
'--pvlan-type',
|
|
2807
|
+
'isolated',
|
|
2808
|
+
self._port.name,
|
|
2809
|
+
]
|
|
2810
|
+
verifylist = [
|
|
2811
|
+
('pvlan_type', 'isolated'),
|
|
2812
|
+
('port', self._port.name),
|
|
2813
|
+
]
|
|
2814
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
2815
|
+
|
|
2816
|
+
self.assertRaises(
|
|
2817
|
+
exceptions.CommandError,
|
|
2818
|
+
self.cmd.take_action,
|
|
2819
|
+
parsed_args,
|
|
2820
|
+
)
|
|
2821
|
+
|
|
2656
2822
|
|
|
2657
2823
|
class TestShowPort(TestPort):
|
|
2658
2824
|
# The port to show.
|
|
@@ -70,10 +70,7 @@ class TestAddPortToRouter(TestRouter):
|
|
|
70
70
|
result = self.cmd.take_action(parsed_args)
|
|
71
71
|
|
|
72
72
|
self.network_client.add_interface_to_router.assert_called_with(
|
|
73
|
-
self._router,
|
|
74
|
-
**{
|
|
75
|
-
'port_id': self._router.port,
|
|
76
|
-
},
|
|
73
|
+
self._router, port=self._router.port
|
|
77
74
|
)
|
|
78
75
|
self.assertIsNone(result)
|
|
79
76
|
|
|
@@ -117,7 +114,7 @@ class TestAddSubnetToRouter(TestRouter):
|
|
|
117
114
|
|
|
118
115
|
result = self.cmd.take_action(parsed_args)
|
|
119
116
|
self.network_client.add_interface_to_router.assert_called_with(
|
|
120
|
-
self._router,
|
|
117
|
+
self._router, subnet=self._router.subnet
|
|
121
118
|
)
|
|
122
119
|
|
|
123
120
|
self.assertIsNone(result)
|
|
@@ -711,17 +708,14 @@ class TestListRouter(TestRouter):
|
|
|
711
708
|
'Distributed',
|
|
712
709
|
'HA',
|
|
713
710
|
)
|
|
714
|
-
columns_long =
|
|
711
|
+
columns_long = (
|
|
712
|
+
*columns,
|
|
715
713
|
'Routes',
|
|
716
714
|
'External gateway info',
|
|
717
715
|
'Availability zones',
|
|
718
716
|
'Tags',
|
|
719
717
|
)
|
|
720
|
-
columns_long_no_az = columns
|
|
721
|
-
'Routes',
|
|
722
|
-
'External gateway info',
|
|
723
|
-
'Tags',
|
|
724
|
-
)
|
|
718
|
+
columns_long_no_az = (*columns, 'Routes', 'External gateway info', 'Tags')
|
|
725
719
|
|
|
726
720
|
data = []
|
|
727
721
|
for r in routers:
|
|
@@ -810,6 +804,30 @@ class TestListRouter(TestRouter):
|
|
|
810
804
|
self.assertEqual(self.columns, columns)
|
|
811
805
|
self.assertCountEqual(self.data, list(data))
|
|
812
806
|
|
|
807
|
+
def test_router_list_pagination(self):
|
|
808
|
+
arglist = [
|
|
809
|
+
'--marker',
|
|
810
|
+
self.routers[0].id,
|
|
811
|
+
'--limit',
|
|
812
|
+
'1',
|
|
813
|
+
]
|
|
814
|
+
verifylist = [
|
|
815
|
+
('marker', self.routers[0].id),
|
|
816
|
+
('limit', 1),
|
|
817
|
+
]
|
|
818
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
819
|
+
|
|
820
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
821
|
+
|
|
822
|
+
self.network_client.routers.assert_called_once_with(
|
|
823
|
+
**{
|
|
824
|
+
'marker': self.routers[0].id,
|
|
825
|
+
'limit': 1,
|
|
826
|
+
}
|
|
827
|
+
)
|
|
828
|
+
self.assertEqual(self.columns, columns)
|
|
829
|
+
self.assertEqual(self.data, list(data))
|
|
830
|
+
|
|
813
831
|
def test_router_list_no_ha_no_distributed(self):
|
|
814
832
|
_routers = network_fakes.create_routers(
|
|
815
833
|
{'ha': None, 'distributed': None}, count=3
|
|
@@ -824,7 +842,7 @@ class TestListRouter(TestRouter):
|
|
|
824
842
|
with mock.patch.object(
|
|
825
843
|
self.network_client, "routers", return_value=_routers
|
|
826
844
|
):
|
|
827
|
-
columns,
|
|
845
|
+
columns, _data = self.cmd.take_action(parsed_args)
|
|
828
846
|
|
|
829
847
|
self.assertNotIn("is_distributed", columns)
|
|
830
848
|
self.assertNotIn("is_ha", columns)
|
|
@@ -1067,7 +1085,7 @@ class TestRemovePortFromRouter(TestRouter):
|
|
|
1067
1085
|
result = self.cmd.take_action(parsed_args)
|
|
1068
1086
|
|
|
1069
1087
|
self.network_client.remove_interface_from_router.assert_called_with(
|
|
1070
|
-
self._router,
|
|
1088
|
+
self._router, port=self._router.port
|
|
1071
1089
|
)
|
|
1072
1090
|
self.assertIsNone(result)
|
|
1073
1091
|
|
|
@@ -1111,7 +1129,7 @@ class TestRemoveSubnetFromRouter(TestRouter):
|
|
|
1111
1129
|
|
|
1112
1130
|
result = self.cmd.take_action(parsed_args)
|
|
1113
1131
|
self.network_client.remove_interface_from_router.assert_called_with(
|
|
1114
|
-
self._router,
|
|
1132
|
+
self._router, subnet=self._router.subnet
|
|
1115
1133
|
)
|
|
1116
1134
|
self.assertIsNone(result)
|
|
1117
1135
|
|
|
@@ -1900,7 +1918,7 @@ class TestShowRouter(TestRouter):
|
|
|
1900
1918
|
with mock.patch.object(
|
|
1901
1919
|
self.network_client, "find_router", return_value=_router
|
|
1902
1920
|
):
|
|
1903
|
-
columns,
|
|
1921
|
+
columns, _data = self.cmd.take_action(parsed_args)
|
|
1904
1922
|
|
|
1905
1923
|
self.assertNotIn("is_distributed", columns)
|
|
1906
1924
|
self.assertNotIn("is_ha", columns)
|
|
@@ -1922,7 +1940,9 @@ class TestShowRouter(TestRouter):
|
|
|
1922
1940
|
columns, data = self.cmd.take_action(parsed_args)
|
|
1923
1941
|
|
|
1924
1942
|
self.assertIn("routes", columns)
|
|
1925
|
-
self.
|
|
1943
|
+
self.assertEqual(
|
|
1944
|
+
list(data)[columns.index('routes')].human_readable(), ''
|
|
1945
|
+
)
|
|
1926
1946
|
|
|
1927
1947
|
|
|
1928
1948
|
class TestUnsetRouter(TestRouter):
|
openstackclient/tests/unit/network/v2/{test_security_group_network.py → test_security_group.py}
RENAMED
|
@@ -299,9 +299,7 @@ class TestListSecurityGroupNetwork(TestSecurityGroupNetwork):
|
|
|
299
299
|
|
|
300
300
|
def test_security_group_list_no_options(self):
|
|
301
301
|
arglist = []
|
|
302
|
-
verifylist = [
|
|
303
|
-
('all_projects', False),
|
|
304
|
-
]
|
|
302
|
+
verifylist = []
|
|
305
303
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
306
304
|
|
|
307
305
|
columns, data = self.cmd.take_action(parsed_args)
|
|
@@ -312,22 +310,27 @@ class TestListSecurityGroupNetwork(TestSecurityGroupNetwork):
|
|
|
312
310
|
self.assertEqual(self.columns, columns)
|
|
313
311
|
self.assertCountEqual(self.data, list(data))
|
|
314
312
|
|
|
315
|
-
def
|
|
313
|
+
def test_security_groups_list_pagination(self):
|
|
316
314
|
arglist = [
|
|
317
|
-
'--
|
|
315
|
+
'--marker',
|
|
316
|
+
self._security_groups[0].id,
|
|
317
|
+
'--limit',
|
|
318
|
+
'1',
|
|
318
319
|
]
|
|
319
320
|
verifylist = [
|
|
320
|
-
('
|
|
321
|
+
('marker', self._security_groups[0].id),
|
|
322
|
+
('limit', 1),
|
|
321
323
|
]
|
|
322
324
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
323
325
|
|
|
324
326
|
columns, data = self.cmd.take_action(parsed_args)
|
|
325
327
|
|
|
326
328
|
self.network_client.security_groups.assert_called_once_with(
|
|
327
|
-
fields=security_group.ListSecurityGroup.FIELDS_TO_RETRIEVE
|
|
329
|
+
fields=security_group.ListSecurityGroup.FIELDS_TO_RETRIEVE,
|
|
330
|
+
**{'marker': self._security_groups[0].id, 'limit': 1},
|
|
328
331
|
)
|
|
329
332
|
self.assertEqual(self.columns, columns)
|
|
330
|
-
self.
|
|
333
|
+
self.assertEqual(self.data, list(data))
|
|
331
334
|
|
|
332
335
|
def test_security_group_list_project(self):
|
|
333
336
|
project = identity_fakes.FakeProject.create_one_project()
|
|
@@ -171,22 +171,6 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
|
|
|
171
171
|
parsed_args = self.check_parser(self.cmd, arglist, [])
|
|
172
172
|
self.assertEqual('IPv6', parsed_args.ethertype)
|
|
173
173
|
|
|
174
|
-
def test_create_all_protocol_options(self):
|
|
175
|
-
arglist = [
|
|
176
|
-
'--protocol',
|
|
177
|
-
'tcp',
|
|
178
|
-
'--proto',
|
|
179
|
-
'tcp',
|
|
180
|
-
self._security_group.id,
|
|
181
|
-
]
|
|
182
|
-
self.assertRaises(
|
|
183
|
-
tests_utils.ParserException,
|
|
184
|
-
self.check_parser,
|
|
185
|
-
self.cmd,
|
|
186
|
-
arglist,
|
|
187
|
-
[],
|
|
188
|
-
)
|
|
189
|
-
|
|
190
174
|
def test_create_all_port_range_options(self):
|
|
191
175
|
arglist = [
|
|
192
176
|
'--dst-port',
|
|
@@ -251,7 +235,7 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
|
|
|
251
235
|
self.assertEqual(self.expected_columns, columns)
|
|
252
236
|
self.assertEqual(self.expected_data, data)
|
|
253
237
|
|
|
254
|
-
def
|
|
238
|
+
def test_create_protocol_option(self):
|
|
255
239
|
self._setup_security_group_rule(
|
|
256
240
|
{
|
|
257
241
|
'protocol': 'icmp',
|
|
@@ -259,15 +243,14 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
|
|
|
259
243
|
}
|
|
260
244
|
)
|
|
261
245
|
arglist = [
|
|
262
|
-
'--
|
|
246
|
+
'--protocol',
|
|
263
247
|
self._security_group_rule.protocol,
|
|
264
248
|
'--remote-ip',
|
|
265
249
|
self._security_group_rule.remote_ip_prefix,
|
|
266
250
|
self._security_group.id,
|
|
267
251
|
]
|
|
268
252
|
verifylist = [
|
|
269
|
-
('
|
|
270
|
-
('protocol', None),
|
|
253
|
+
('protocol', self._security_group_rule.protocol),
|
|
271
254
|
('remote_ip', self._security_group_rule.remote_ip_prefix),
|
|
272
255
|
('group', self._security_group.id),
|
|
273
256
|
]
|
|
@@ -295,15 +278,14 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
|
|
|
295
278
|
}
|
|
296
279
|
)
|
|
297
280
|
arglist = [
|
|
298
|
-
'--
|
|
281
|
+
'--protocol',
|
|
299
282
|
'any',
|
|
300
283
|
'--remote-ip',
|
|
301
284
|
self._security_group_rule.remote_ip_prefix,
|
|
302
285
|
self._security_group.id,
|
|
303
286
|
]
|
|
304
287
|
verifylist = [
|
|
305
|
-
('
|
|
306
|
-
('protocol', None),
|
|
288
|
+
('protocol', 'any'),
|
|
307
289
|
('remote_ip', self._security_group_rule.remote_ip_prefix),
|
|
308
290
|
('group', self._security_group.id),
|
|
309
291
|
]
|
|
@@ -1153,13 +1135,17 @@ class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
|
|
|
1153
1135
|
self.assertEqual(self.expected_columns_no_group, columns)
|
|
1154
1136
|
self.assertEqual(self.expected_data_no_group, list(data))
|
|
1155
1137
|
|
|
1156
|
-
def
|
|
1138
|
+
def test_list_with_pagination(self):
|
|
1157
1139
|
self._security_group_rule_tcp.port_range_min = 80
|
|
1158
1140
|
arglist = [
|
|
1159
|
-
|
|
1141
|
+
'--marker',
|
|
1142
|
+
self._security_group_rules[0].id,
|
|
1143
|
+
'--limit',
|
|
1144
|
+
'1',
|
|
1160
1145
|
]
|
|
1161
1146
|
verifylist = [
|
|
1162
|
-
('
|
|
1147
|
+
('marker', self._security_group_rules[0].id),
|
|
1148
|
+
('limit', 1),
|
|
1163
1149
|
]
|
|
1164
1150
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1165
1151
|
|
|
@@ -1167,27 +1153,32 @@ class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
|
|
|
1167
1153
|
|
|
1168
1154
|
self.network_client.security_group_rules.assert_called_once_with(
|
|
1169
1155
|
**{
|
|
1170
|
-
'
|
|
1156
|
+
'marker': self._security_group_rules[0].id,
|
|
1157
|
+
'limit': 1,
|
|
1171
1158
|
}
|
|
1172
1159
|
)
|
|
1173
|
-
self.assertEqual(self.
|
|
1174
|
-
self.assertEqual(self.
|
|
1160
|
+
self.assertEqual(self.expected_columns_no_group, columns)
|
|
1161
|
+
self.assertEqual(self.expected_data_no_group, list(data))
|
|
1175
1162
|
|
|
1176
|
-
def
|
|
1163
|
+
def test_list_with_group(self):
|
|
1177
1164
|
self._security_group_rule_tcp.port_range_min = 80
|
|
1178
1165
|
arglist = [
|
|
1179
|
-
|
|
1166
|
+
self._security_group.id,
|
|
1180
1167
|
]
|
|
1181
1168
|
verifylist = [
|
|
1182
|
-
('
|
|
1169
|
+
('group', self._security_group.id),
|
|
1183
1170
|
]
|
|
1184
1171
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1185
1172
|
|
|
1186
1173
|
columns, data = self.cmd.take_action(parsed_args)
|
|
1187
1174
|
|
|
1188
|
-
self.network_client.security_group_rules.assert_called_once_with(
|
|
1189
|
-
|
|
1190
|
-
|
|
1175
|
+
self.network_client.security_group_rules.assert_called_once_with(
|
|
1176
|
+
**{
|
|
1177
|
+
'security_group_id': self._security_group.id,
|
|
1178
|
+
}
|
|
1179
|
+
)
|
|
1180
|
+
self.assertEqual(self.expected_columns_with_group, columns)
|
|
1181
|
+
self.assertEqual(self.expected_data_with_group, list(data))
|
|
1191
1182
|
|
|
1192
1183
|
def test_list_with_protocol(self):
|
|
1193
1184
|
self._security_group_rule_tcp.port_range_min = 80
|
|
@@ -1265,7 +1256,7 @@ class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
|
|
|
1265
1256
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1266
1257
|
|
|
1267
1258
|
columns, data = self.cmd.take_action(parsed_args)
|
|
1268
|
-
filters = {'
|
|
1259
|
+
filters = {'project_id': project.id}
|
|
1269
1260
|
|
|
1270
1261
|
self.network_client.security_group_rules.assert_called_once_with(
|
|
1271
1262
|
**filters
|
|
@@ -1291,7 +1282,7 @@ class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
|
|
|
1291
1282
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1292
1283
|
|
|
1293
1284
|
columns, data = self.cmd.take_action(parsed_args)
|
|
1294
|
-
filters = {'
|
|
1285
|
+
filters = {'project_id': project.id}
|
|
1295
1286
|
|
|
1296
1287
|
self.network_client.security_group_rules.assert_called_once_with(
|
|
1297
1288
|
**filters
|