Fix listener creation allowing pool protocol

Listener can be created using proxy and proxyv2 protocol which are pool
protocol and not listener protocol.

Story: 2010220
Task: 45968
Change-Id: I0b8cf3cc8dbe5bc2babc469e73e32b2ed9ccb98a
(cherry picked from commit 05b4d36172)
(cherry picked from commit 6ae3d23e68)
This commit is contained in:
Quentin GROLLEAU 2022-08-08 18:40:47 +02:00 committed by Gregory Thiemonge
parent 61102e0a14
commit eeba2c2af5
3 changed files with 15 additions and 6 deletions

View File

@ -12,6 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from octavia_lib.common import constants as lib_constants
from wsme import types as wtypes
from octavia.api.common import types
@ -111,7 +112,8 @@ class ListenerPOST(BaseListenerType):
name = wtypes.wsattr(wtypes.StringType(max_length=255))
description = wtypes.wsattr(wtypes.StringType(max_length=255))
admin_state_up = wtypes.wsattr(bool, default=True)
protocol = wtypes.wsattr(wtypes.Enum(str, *constants.SUPPORTED_PROTOCOLS),
protocol = wtypes.wsattr(wtypes.Enum(str,
*lib_constants.LISTENER_SUPPORTED_PROTOCOLS),
mandatory=True)
protocol_port = wtypes.wsattr(
wtypes.IntegerType(minimum=constants.MIN_PORT_NUMBER,
@ -205,7 +207,8 @@ class ListenerSingleCreate(BaseListenerType):
name = wtypes.wsattr(wtypes.StringType(max_length=255))
description = wtypes.wsattr(wtypes.StringType(max_length=255))
admin_state_up = wtypes.wsattr(bool, default=True)
protocol = wtypes.wsattr(wtypes.Enum(str, *constants.SUPPORTED_PROTOCOLS),
protocol = wtypes.wsattr(wtypes.Enum(str,
*lib_constants.LISTENER_SUPPORTED_PROTOCOLS),
mandatory=True)
protocol_port = wtypes.wsattr(
wtypes.IntegerType(minimum=constants.MIN_PORT_NUMBER,

View File

@ -2221,6 +2221,11 @@ class TestListener(base.BaseAPITest):
'protocol_port': 80}
self.post(self.LISTENERS_PATH, lb_listener, status=400)
def test_create_listener_proxy_protocol(self):
lb_listener = {'protocol': 'PROXY',
'protocol_port': 80}
self.post(self.LISTENERS_PATH, lb_listener, status=400)
def test_update_listener_bad_protocol(self):
listener = self.create_listener(constants.PROTOCOL_TCP, 80, self.lb_id)
self.set_lb_status(self.lb_id)
@ -2748,10 +2753,6 @@ class TestListener(base.BaseAPITest):
self._test_update_protocol_insert_headers_mismatch(
constants.PROTOCOL_HTTPS)
def test_update_protocol_PROXY_insert_headers(self):
self._test_update_protocol_insert_headers_mismatch(
constants.PROTOCOL_PROXY)
def test_update_protocol_TCP_insert_headers(self):
self._test_update_protocol_insert_headers_mismatch(
constants.PROTOCOL_TCP)

View File

@ -0,0 +1,5 @@
---
fixes:
- |
Fixes listener creation failure when protocol used is PROXY or PROXYV2
which are pool protocol and not listener protocol.