From 0bc8c6a0b843ecd71ba3795ca7010ca42b3c417f Mon Sep 17 00:00:00 2001 From: Carlos Goncalves Date: Tue, 15 Sep 2020 08:18:57 +0000 Subject: [PATCH] Add alpn_protocols to the pool data model This change completes the ALPN support started in Victoria and initially limited to listeners. Now with pools supported as well, this feature work is completed in octavia-lib. Change-Id: I01268f7afac8f6356616f3926d6fe9c1ec31b2b5 --- octavia_lib/api/drivers/data_models.py | 4 +++- .../tests/unit/api/drivers/test_data_models.py | 11 +++++++++-- .../add-pool-alpn-protocols-a791538ab214e780.yaml | 7 +++++++ 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 releasenotes/notes/add-pool-alpn-protocols-a791538ab214e780.yaml diff --git a/octavia_lib/api/drivers/data_models.py b/octavia_lib/api/drivers/data_models.py index 3d8774a..aefa56c 100644 --- a/octavia_lib/api/drivers/data_models.py +++ b/octavia_lib/api/drivers/data_models.py @@ -177,7 +177,8 @@ class Pool(BaseDataModel): tls_container_data=Unset, ca_tls_container_ref=Unset, ca_tls_container_data=Unset, crl_container_ref=Unset, crl_container_data=Unset, tls_enabled=Unset, - project_id=Unset, tls_versions=Unset, tls_ciphers=Unset): + project_id=Unset, tls_versions=Unset, tls_ciphers=Unset, + alpn_protocols=Unset): self.admin_state_up = admin_state_up self.description = description @@ -200,6 +201,7 @@ class Pool(BaseDataModel): self.project_id = project_id self.tls_versions = tls_versions self.tls_ciphers = tls_ciphers + self.alpn_protocols = alpn_protocols class Member(BaseDataModel): diff --git a/octavia_lib/tests/unit/api/drivers/test_data_models.py b/octavia_lib/tests/unit/api/drivers/test_data_models.py index cdb1a7d..9255ade 100644 --- a/octavia_lib/tests/unit/api/drivers/test_data_models.py +++ b/octavia_lib/tests/unit/api/drivers/test_data_models.py @@ -183,7 +183,10 @@ class TestProviderDataModels(base.TestCase): constants.TLS_VERSION_1_1, constants.TLS_VERSION_1_2, constants.TLS_VERSION_1_3], - tls_ciphers=None) + tls_ciphers=None, + alpn_protocols=[constants.ALPN_PROTOCOL_HTTP_1_0, + constants.ALPN_PROTOCOL_HTTP_1_1, + constants.ALPN_PROTOCOL_HTTP_2]) self.ref_l7rule_dict = {'admin_state_up': True, 'compare_type': 'STARTS_WITH', @@ -332,7 +335,10 @@ class TestProviderDataModels(base.TestCase): constants.TLS_VERSION_1_1, constants.TLS_VERSION_1_2, constants.TLS_VERSION_1_3], - 'tls_ciphers': None} + 'tls_ciphers': None, + 'alpn_protocols': [constants.ALPN_PROTOCOL_HTTP_1_0, + constants.ALPN_PROTOCOL_HTTP_1_1, + constants.ALPN_PROTOCOL_HTTP_2]} def test_equality(self): second_ref_lb = deepcopy(self.ref_lb) @@ -378,6 +384,7 @@ class TestProviderDataModels(base.TestCase): ref_pool_dict['healthmonitor'] = None ref_pool_dict.pop('members', None) ref_pool_dict.pop('tls_versions', None) + ref_pool_dict.pop('alpn_protocols', None) ref_l7policy_dict = deepcopy(self.ref_l7policy_dict) ref_l7policy_dict.pop('rules', None) diff --git a/releasenotes/notes/add-pool-alpn-protocols-a791538ab214e780.yaml b/releasenotes/notes/add-pool-alpn-protocols-a791538ab214e780.yaml new file mode 100644 index 0000000..9929d56 --- /dev/null +++ b/releasenotes/notes/add-pool-alpn-protocols-a791538ab214e780.yaml @@ -0,0 +1,7 @@ +--- +features: + - | + Added parameter ``alpn_protocols`` to pools. This parameter contains + the list of protocols supported by pools, in descending order of + preference. The supported protocols are ``http/1.0``, ``http/1.1`` + and ``h2``.