diff --git a/octavia_lib/api/drivers/data_models.py b/octavia_lib/api/drivers/data_models.py index d34f294..b04403b 100644 --- a/octavia_lib/api/drivers/data_models.py +++ b/octavia_lib/api/drivers/data_models.py @@ -103,7 +103,8 @@ class LoadBalancer(BaseDataModel): listeners=Unset, loadbalancer_id=Unset, name=Unset, pools=Unset, project_id=Unset, vip_address=Unset, vip_network_id=Unset, vip_port_id=Unset, vip_subnet_id=Unset, - vip_qos_policy_id=Unset, additional_vips=Unset): + vip_qos_policy_id=Unset, additional_vips=Unset, + availability_zone=Unset): self.admin_state_up = admin_state_up self.description = description @@ -119,6 +120,7 @@ class LoadBalancer(BaseDataModel): self.vip_subnet_id = vip_subnet_id self.vip_qos_policy_id = vip_qos_policy_id self.additional_vips = additional_vips + self.availability_zone = availability_zone class Listener(BaseDataModel): diff --git a/octavia_lib/common/constants.py b/octavia_lib/common/constants.py index be73f7a..c9e437a 100644 --- a/octavia_lib/common/constants.py +++ b/octavia_lib/common/constants.py @@ -179,6 +179,7 @@ ADDITIONAL_VIPS = 'additional_vips' ADDRESS = 'address' ADMIN_STATE_UP = 'admin_state_up' ALLOWED_CIDRS = 'allowed_cidrs' +AVAILABILITY_ZONE = 'availability_zone' BACKUP = 'backup' CA_TLS_CONTAINER_DATA = 'ca_tls_container_data' CA_TLS_CONTAINER_REF = 'ca_tls_container_ref' 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 56460ed..d580793 100644 --- a/octavia_lib/tests/unit/api/drivers/test_data_models.py +++ b/octavia_lib/tests/unit/api/drivers/test_data_models.py @@ -44,6 +44,7 @@ class TestProviderDataModels(base.TestCase): self.healthmonitor_id = uuidutils.generate_uuid() self.l7policy_id = uuidutils.generate_uuid() self.l7rule_id = uuidutils.generate_uuid() + self.availability_zone = uuidutils.generate_uuid() self.ref_l7rule = data_models.L7Rule( admin_state_up=True, @@ -113,7 +114,8 @@ class TestProviderDataModels(base.TestCase): vip_network_id=self.vip_network_id, vip_port_id=self.vip_port_id, vip_subnet_id=self.vip_subnet_id, - vip_qos_policy_id=self.vip_qos_policy_id) + vip_qos_policy_id=self.vip_qos_policy_id, + availability_zone=self.availability_zone) self.ref_vip = data_models.VIP( vip_address=self.vip_address, @@ -201,7 +203,8 @@ class TestProviderDataModels(base.TestCase): 'description': 'One great load balancer', 'vip_subnet_id': self.vip_subnet_id, 'name': 'favorite_lb', - 'vip_qos_policy_id': self.vip_qos_policy_id} + 'vip_qos_policy_id': self.vip_qos_policy_id, + 'availability_zone': self.availability_zone} self.ref_listener_dict = { 'admin_state_up': True, @@ -245,7 +248,8 @@ class TestProviderDataModels(base.TestCase): 'vip_network_id': self.vip_network_id, 'vip_port_id': self.vip_port_id, 'vip_subnet_id': self.vip_subnet_id, - 'vip_qos_policy_id': self.vip_qos_policy_id} + 'vip_qos_policy_id': self.vip_qos_policy_id, + 'availability_zone': self.availability_zone} self.ref_vip_dict = { 'vip_address': self.vip_address, @@ -419,7 +423,8 @@ class TestProviderDataModels(base.TestCase): vip_network_id=self.vip_network_id, vip_port_id=self.vip_port_id, vip_subnet_id=self.vip_subnet_id, - vip_qos_policy_id=self.vip_qos_policy_id) + vip_qos_policy_id=self.vip_qos_policy_id, + availability_zone=self.availability_zone) ref_lb_dict_with_listener = deepcopy(self.ref_lb_dict_with_listener) ref_lb_dict_with_listener['pools'] = None diff --git a/releasenotes/notes/add-az-to-loadbalancer-1e87b46ba29101d3.yaml b/releasenotes/notes/add-az-to-loadbalancer-1e87b46ba29101d3.yaml new file mode 100644 index 0000000..19e4b56 --- /dev/null +++ b/releasenotes/notes/add-az-to-loadbalancer-1e87b46ba29101d3.yaml @@ -0,0 +1,4 @@ +--- +other: + - | + Load balancer objects now have an ``availability_zone`` attribute. This can be None. diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml index 5ca5a50..5cfafbf 100644 --- a/zuul.d/projects.yaml +++ b/zuul.d/projects.yaml @@ -8,3 +8,7 @@ - publish-openstack-docs-pti - release-notes-jobs-python3 - octavia-tox-tips + check: + jobs: + - octavia-tox-functional-py37-tips: + voting: false