From 47df39d6a260cb2ac7262dc1e45dd246df2d5860 Mon Sep 17 00:00:00 2001 From: Erik Olof Gunnar Andersson Date: Thu, 7 Dec 2023 11:54:58 -0800 Subject: [PATCH] Fix FloatingIP ttl not allowing zero Related-Bug: #1926429 Change-Id: Iae2d4f7d66feaf1206167faf10d834deb762e962 --- designate/objects/floating_ip.py | 2 +- .../tests/unit/objects/test_floating_ip.py | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 designate/tests/unit/objects/test_floating_ip.py diff --git a/designate/objects/floating_ip.py b/designate/objects/floating_ip.py index cbda734b8..9ffd87dbe 100644 --- a/designate/objects/floating_ip.py +++ b/designate/objects/floating_ip.py @@ -26,7 +26,7 @@ class FloatingIP(base.DictObjectMixin, base.PersistentObjectMixin, "description": fields.StringFields(nullable=True, maxLength=160), "ptrdname": fields.DomainField(nullable=True), "ttl": fields.IntegerFields(nullable=True, - minimum=1, maximum=2147483647), + minimum=0, maximum=2147483647), "region": fields.StringFields(nullable=True), "action": fields.EnumField(constants.FLOATING_IP_ACTIONS, nullable=True), diff --git a/designate/tests/unit/objects/test_floating_ip.py b/designate/tests/unit/objects/test_floating_ip.py new file mode 100644 index 000000000..0311a8210 --- /dev/null +++ b/designate/tests/unit/objects/test_floating_ip.py @@ -0,0 +1,43 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from oslo_config import fixture as cfg_fixture +from oslo_log import log as logging +import oslotest.base + +import designate.conf +from designate import objects + + +CONF = designate.conf.CONF +LOG = logging.getLogger(__name__) + + +class FloatingIpTest(oslotest.base.BaseTestCase): + def setUp(self): + super().setUp() + self.useFixture(cfg_fixture.Config(CONF)) + + def test_allow_floating_ip_ttl_zero(self): + floating_ip = objects.FloatingIP( + ptrdname='ptr1.example.org.', + description='test', + address='192.0.2.50', + ttl=0, + ) + floating_ip.validate() + + self.assertEqual('ptr1.example.org.', floating_ip.ptrdname) + self.assertEqual('test', floating_ip.description) + self.assertEqual('192.0.2.50', floating_ip.address) + self.assertEqual(0, floating_ip.ttl)