Merge "Cache security group driver"

This commit is contained in:
Zuul
2019-12-05 01:24:30 +00:00
committed by Gerrit Code Review
3 changed files with 19 additions and 5 deletions
@@ -21,13 +21,17 @@ import nova.network
NOVA_DRIVER = ('nova.compute.api.SecurityGroupAPI')
NEUTRON_DRIVER = ('nova.network.security_group.neutron_driver.'
'SecurityGroupAPI')
DRIVER_CACHE = None # singleton of the driver once loaded
def get_openstack_security_group_driver():
if is_neutron_security_groups():
return importutils.import_object(NEUTRON_DRIVER)
else:
return importutils.import_object(NOVA_DRIVER)
global DRIVER_CACHE
if DRIVER_CACHE is None:
if is_neutron_security_groups():
DRIVER_CACHE = importutils.import_object(NEUTRON_DRIVER)
else:
DRIVER_CACHE = importutils.import_object(NOVA_DRIVER)
return DRIVER_CACHE
def is_neutron_security_groups():
+1 -1
View File
@@ -285,7 +285,7 @@ class TestCase(base.BaseTestCase):
self.useFixture(nova_fixtures.PoisonFunctions())
openstack_driver.DRIVER_CACHE = {}
openstack_driver.DRIVER_CACHE = None
self.useFixture(nova_fixtures.ForbidNewLegacyNotificationFixture())
+10
View File
@@ -12,6 +12,8 @@
# License for the specific language governing permissions and limitations
# under the License.
import mock
import nova.network
import nova.network.security_group.neutron_driver
import nova.network.security_group.openstack_driver as sgapi
@@ -55,3 +57,11 @@ class SecurityGroupAPIConfigTest(nova.test.NoDBTestCase):
self.assertIsInstance(
driver,
nova.compute.api.SecurityGroupAPI)
@mock.patch('oslo_utils.importutils.import_object')
def test_caches(self, mock_import):
self.flags(use_neutron=True)
sgapi.DRIVER_CACHE = None
for _ in range(2):
self.assertIsNotNone(sgapi.get_openstack_security_group_driver())
mock_import.assert_called_once_with(sgapi.NEUTRON_DRIVER)