diff --git a/octavia/amphorae/drivers/driver_base.py b/octavia/amphorae/drivers/driver_base.py index ed613e654b..b78c68174a 100644 --- a/octavia/amphorae/drivers/driver_base.py +++ b/octavia/amphorae/drivers/driver_base.py @@ -64,6 +64,20 @@ class AmphoraLoadBalancerDriver(object, metaclass=abc.ABCMeta): add more function along with the development. """ + @abc.abstractmethod + def reload(self, loadbalancer, amphora): + """Reload the listeners on the amphora. + + :param loadbalancer: loadbalancer object to reload listeners + :type loadbalancer: octavia.db.models.LoadBalancer + :param amphora: Amphora to start. If None, reload on all amphora + :type amphora: octavia.db.models.Amphora + :returns: return a value list (listener, vip, status flag--enable) + + At this moment, we just build the basic structure for testing, will + add more function along with the development. + """ + @abc.abstractmethod def delete(self, listener): """Delete the listener on the vip. diff --git a/octavia/amphorae/drivers/noop_driver/driver.py b/octavia/amphorae/drivers/noop_driver/driver.py index 74d12917d0..75670150fc 100644 --- a/octavia/amphorae/drivers/noop_driver/driver.py +++ b/octavia/amphorae/drivers/noop_driver/driver.py @@ -64,6 +64,13 @@ class NoopManager(object): (loadbalancer.id, amphora.id)] = (loadbalancer, amphora, 'start') + def reload(self, loadbalancer, amphora=None): + LOG.debug("Amphora %s no-op, reload listeners, lb %s, amp %s", + self.__class__.__name__, loadbalancer.id, amphora) + self.amphoraconfig[ + (loadbalancer.id, amphora.id)] = (loadbalancer, amphora, + 'reload') + def delete(self, listener): LOG.debug("Amphora %s no-op, delete listener %s, vip %s", self.__class__.__name__, @@ -142,6 +149,10 @@ class NoopAmphoraLoadBalancerDriver( self.driver.start(loadbalancer, amphora) + def reload(self, loadbalancer, amphora=None): + + self.driver.reload(loadbalancer, amphora) + def delete(self, listener): self.driver.delete(listener) diff --git a/octavia/tests/unit/amphorae/drivers/test_noop_amphoraloadbalancer_driver.py b/octavia/tests/unit/amphorae/drivers/test_noop_amphoraloadbalancer_driver.py index c4e786f533..e4c2d8a49c 100644 --- a/octavia/tests/unit/amphorae/drivers/test_noop_amphoraloadbalancer_driver.py +++ b/octavia/tests/unit/amphorae/drivers/test_noop_amphoraloadbalancer_driver.py @@ -95,6 +95,14 @@ class TestNoopAmphoraLoadBalancerDriver(base.TestCase): self.driver.driver.amphoraconfig[( self.load_balancer.id, '321')]) + def test_reload(self): + mock_amphora = mock.MagicMock() + mock_amphora.id = '321' + self.driver.reload(self.load_balancer, amphora=mock_amphora) + self.assertEqual((self.load_balancer, mock_amphora, 'reload'), + self.driver.driver.amphoraconfig[( + self.load_balancer.id, '321')]) + def test_delete(self): self.driver.delete(self.listener) self.assertEqual((self.listener, self.vip, 'delete'),