From 0ea056f3a308aa227a102fa35e532bc561e2158d Mon Sep 17 00:00:00 2001 From: Bodo Petermann Date: Thu, 29 Dec 2022 13:35:18 +0100 Subject: [PATCH] Add query mappings for vpnaas resources Network VPNaaS resources like VPN service, IPSEC site connections etc didn't have explicit query mappings. Adding the query mappings allows to filter for e.g. project_id already on the server instead of transferring the list of all resources and then filter at the client side. Affected resource types: VpnService, VpnIPSecSiteConnection, VpnIpsecPolicy, VpnIkePolicy, VpnEndpointGroup, LoadBalancer Change-Id: I2c708de7dfc9f3be780e721248883e8a165b6294 --- openstack/network/v2/load_balancer.py | 6 ++++++ openstack/network/v2/vpn_endpoint_group.py | 7 +++++++ openstack/network/v2/vpn_ike_policy.py | 5 +++++ openstack/network/v2/vpn_ipsec_policy.py | 7 +++++++ openstack/network/v2/vpn_ipsec_site_connection.py | 10 ++++++++++ openstack/network/v2/vpn_service.py | 6 ++++++ .../tests/unit/network/v2/test_vpn_endpoint_group.py | 5 +++++ .../tests/unit/network/v2/test_vpn_ipsecpolicy.py | 7 +++++++ openstack/tests/unit/network/v2/test_vpn_service.py | 9 +++++++++ 9 files changed, 62 insertions(+) diff --git a/openstack/network/v2/load_balancer.py b/openstack/network/v2/load_balancer.py index 7ac082a55..6d4e07b3c 100644 --- a/openstack/network/v2/load_balancer.py +++ b/openstack/network/v2/load_balancer.py @@ -27,6 +27,12 @@ class LoadBalancer(resource.Resource): allow_delete = True allow_list = True + _query_mapping = resource.QueryParameters( + 'description', 'name', 'project_id', 'provider', 'provisioning_status', + 'tenant_id', 'vip_address', 'vip_subnet_id', + is_admin_state_up='admin_state_up' + ) + # Properties #: Description for the load balancer. description = resource.Body('description') diff --git a/openstack/network/v2/vpn_endpoint_group.py b/openstack/network/v2/vpn_endpoint_group.py index 89ffaff84..12a0a4e59 100644 --- a/openstack/network/v2/vpn_endpoint_group.py +++ b/openstack/network/v2/vpn_endpoint_group.py @@ -27,12 +27,19 @@ class VpnEndpointGroup(resource.Resource): allow_delete = True allow_list = True + _query_mapping = resource.QueryParameters( + 'description', 'name', 'project_id', 'tenant_id', + type='endpoint_type' + ) + # Properties #: Human-readable description for the resource. description = resource.Body('description') #: List of endpoints of the same type, for the endpoint group. #: The values will depend on type. endpoints = resource.Body('endpoints', type=list) + #: Human-readable name of the resource. Default is an empty string. + name = resource.Body('name') project_id = resource.Body('project_id', alias='tenant_id') #: Tenant_id (deprecated attribute). tenant_id = resource.Body('tenant_id', deprecated=True) diff --git a/openstack/network/v2/vpn_ike_policy.py b/openstack/network/v2/vpn_ike_policy.py index d86081641..9cc585ae0 100644 --- a/openstack/network/v2/vpn_ike_policy.py +++ b/openstack/network/v2/vpn_ike_policy.py @@ -26,6 +26,11 @@ class VpnIkePolicy(resource.Resource): allow_delete = True allow_list = True + _query_mapping = resource.QueryParameters( + 'auth_algorithm', 'description', 'encryption_algorithm', 'ike_version', + 'name', 'pfs', 'project_id', 'phase1_negotiation_mode', + ) + # Properties #: The authentication hash algorithm. Valid values are sha1, # sha256, sha384, sha512. The default is sha1. diff --git a/openstack/network/v2/vpn_ipsec_policy.py b/openstack/network/v2/vpn_ipsec_policy.py index 60df3cbe8..5b685b33e 100644 --- a/openstack/network/v2/vpn_ipsec_policy.py +++ b/openstack/network/v2/vpn_ipsec_policy.py @@ -25,6 +25,11 @@ class VpnIpsecPolicy(resource.Resource): allow_delete = True allow_list = True + _query_mapping = resource.QueryParameters( + 'auth_algorithm', 'description', 'encryption_algorithm', 'name', 'pfs', + 'project_id', 'phase1_negotiation_mode', + ) + # Properties #: The authentication hash algorithm. Valid values are sha1, # sha256, sha384, sha512. The default is sha1. @@ -40,6 +45,8 @@ class VpnIpsecPolicy(resource.Resource): # portion of the lifetime. Default unit is seconds and # default value is 3600. lifetime = resource.Body('lifetime', type=dict) + #: Human-readable name of the resource. Default is an empty string. + name = resource.Body('name') #: Perfect forward secrecy (PFS). A valid value is Group2, # Group5, Group14, and so on. Default is Group5. pfs = resource.Body('pfs') diff --git a/openstack/network/v2/vpn_ipsec_site_connection.py b/openstack/network/v2/vpn_ipsec_site_connection.py index 37e166f37..f74c2c5ee 100644 --- a/openstack/network/v2/vpn_ipsec_site_connection.py +++ b/openstack/network/v2/vpn_ipsec_site_connection.py @@ -25,6 +25,14 @@ class VpnIPSecSiteConnection(resource.Resource): allow_delete = True allow_list = True + _query_mapping = resource.QueryParameters( + 'auth_mode', 'description', 'ikepolicy_id', 'ipsecpolicy_id', + 'initiator', 'local_ep_group_id', 'peer_address', 'local_id', + 'mtu', 'name', 'peer_id', 'project_id', 'psk', 'peer_ep_group_id', + 'route_mode', 'vpnservice_id', 'status', + is_admin_state_up='admin_state_up' + ) + # Properties #: The dead peer detection (DPD) action. # A valid value is clear, hold, restart, @@ -96,6 +104,8 @@ class VpnIPSecSiteConnection(resource.Resource): peer_ep_group_id = resource.Body('peer_ep_group_id') #: The route mode. A valid value is static, which is the default. route_mode = resource.Body('route_mode') + #: The site connection status + status = resource.Body('status') #: The dead peer detection (DPD) timeout # in seconds. A valid value is a # positive integer that is greater diff --git a/openstack/network/v2/vpn_service.py b/openstack/network/v2/vpn_service.py index f267f1546..ef887b5a2 100644 --- a/openstack/network/v2/vpn_service.py +++ b/openstack/network/v2/vpn_service.py @@ -27,6 +27,12 @@ class VpnService(resource.Resource): allow_delete = True allow_list = True + _query_mapping = resource.QueryParameters( + 'description', 'external_v4_ip', 'external_v6_ip', 'name', 'router_id', + 'project_id', 'tenant_id', 'subnet_id', + is_admin_state_up='admin_state_up' + ) + # Properties #: Human-readable description for the vpnservice. description = resource.Body('description') diff --git a/openstack/tests/unit/network/v2/test_vpn_endpoint_group.py b/openstack/tests/unit/network/v2/test_vpn_endpoint_group.py index c94643324..4c98666c9 100644 --- a/openstack/tests/unit/network/v2/test_vpn_endpoint_group.py +++ b/openstack/tests/unit/network/v2/test_vpn_endpoint_group.py @@ -55,5 +55,10 @@ class TestVpnEndpointGroup(base.TestCase): { "limit": "limit", "marker": "marker", + 'description': 'description', + 'name': 'name', + 'project_id': 'project_id', + 'tenant_id': 'tenant_id', + 'type': 'endpoint_type', }, sot._query_mapping._mapping) diff --git a/openstack/tests/unit/network/v2/test_vpn_ipsecpolicy.py b/openstack/tests/unit/network/v2/test_vpn_ipsecpolicy.py index 50136e04d..fd6f7c88e 100644 --- a/openstack/tests/unit/network/v2/test_vpn_ipsecpolicy.py +++ b/openstack/tests/unit/network/v2/test_vpn_ipsecpolicy.py @@ -57,5 +57,12 @@ class TestVpnIpsecPolicy(base.TestCase): { "limit": "limit", "marker": "marker", + 'auth_algorithm': 'auth_algorithm', + 'description': 'description', + 'encryption_algorithm': 'encryption_algorithm', + 'name': 'name', + 'pfs': 'pfs', + 'project_id': 'project_id', + 'phase1_negotiation_mode': 'phase1_negotiation_mode', }, sot._query_mapping._mapping) diff --git a/openstack/tests/unit/network/v2/test_vpn_service.py b/openstack/tests/unit/network/v2/test_vpn_service.py index c64a72d67..8b4c29236 100644 --- a/openstack/tests/unit/network/v2/test_vpn_service.py +++ b/openstack/tests/unit/network/v2/test_vpn_service.py @@ -59,5 +59,14 @@ class TestVpnService(base.TestCase): { "limit": "limit", "marker": "marker", + 'description': 'description', + 'external_v4_ip': 'external_v4_ip', + 'external_v6_ip': 'external_v6_ip', + 'name': 'name', + 'router_id': 'router_id', + 'project_id': 'project_id', + 'tenant_id': 'tenant_id', + 'subnet_id': 'subnet_id', + 'is_admin_state_up': 'admin_state_up', }, sot._query_mapping._mapping)