api-tests: Common way to define required extensions

As some tests require extensions to be enabled on the server, this patch
introduces a new class attribute to the API base class. If any extension
defined in test class is not enabled on the server, then all tests in
the test class will be skipped.

Change-Id: I0629153f973daeb3bef3a6968360cbc2d427f9ad
diff --git a/neutron/tests/tempest/api/test_routers.py b/neutron/tests/tempest/api/test_routers.py
index 85bfe82..4275729 100644
--- a/neutron/tests/tempest/api/test_routers.py
+++ b/neutron/tests/tempest/api/test_routers.py
@@ -28,10 +28,7 @@
 
 class RoutersTest(base_routers.BaseRouterTest):
 
-    @classmethod
-    @test.requires_ext(extension="router", service="network")
-    def skip_checks(cls):
-        super(RoutersTest, cls).skip_checks()
+    required_extensions = ['router']
 
     @classmethod
     def resource_setup(cls):
@@ -231,10 +228,7 @@
 
 class DvrRoutersTest(base_routers.BaseRouterTest):
 
-    @classmethod
-    @test.requires_ext(extension="dvr", service="network")
-    def skip_checks(cls):
-        super(DvrRoutersTest, cls).skip_checks()
+    required_extensions = ['dvr']
 
     @decorators.idempotent_id('141297aa-3424-455d-aa8d-f2d95731e00a')
     def test_create_distributed_router(self):
@@ -261,10 +255,7 @@
 
 class HaRoutersTest(base_routers.BaseRouterTest):
 
-    @classmethod
-    @test.requires_ext(extension="l3-ha", service="network")
-    def skip_checks(cls):
-        super(HaRoutersTest, cls).skip_checks()
+    required_extensions = ['l3-ha']
 
     @decorators.idempotent_id('77db8eae-3aa3-4e61-bf2a-e739ce042e53')
     def test_convert_legacy_router(self):
@@ -281,14 +272,10 @@
 
 class RoutersSearchCriteriaTest(base.BaseSearchCriteriaTest):
 
+    required_extensions = ['router']
     resource = 'router'
 
     @classmethod
-    @test.requires_ext(extension="router", service="network")
-    def skip_checks(cls):
-        super(RoutersSearchCriteriaTest, cls).skip_checks()
-
-    @classmethod
     def resource_setup(cls):
         super(RoutersSearchCriteriaTest, cls).resource_setup()
         for name in cls.resource_names: