diff --git a/heat_tempest_plugin/tests/functional/test_create_update_neutron_trunk.py b/heat_tempest_plugin/tests/functional/test_create_update_neutron_trunk.py
index bdcb58e..4be8d8c 100644
--- a/heat_tempest_plugin/tests/functional/test_create_update_neutron_trunk.py
+++ b/heat_tempest_plugin/tests/functional/test_create_update_neutron_trunk.py
@@ -19,7 +19,7 @@
 
 from heat_tempest_plugin.common import test
 from heat_tempest_plugin.tests.functional import functional_base
-
+from tempest.common import utils
 
 test_template = '''
 heat_template_version: pike
@@ -99,6 +99,7 @@
         return sub_ports_set
 
     @decorators.idempotent_id('5572b0ac-fdb2-4c68-a49e-024771814471')
+    @utils.requires_ext(extension="trunk", service="network")
     def test_add_first_sub_port(self):
         stack_identifier = self.stack_create(template=test_template)
 
@@ -123,6 +124,7 @@
                          self._sub_ports_dict_to_set(trunk_sub_port))
 
     @decorators.idempotent_id('c3f52330-01b7-4649-99fd-43700e6bbda3')
+    @utils.requires_ext(extension="trunk", service="network")
     def test_add_a_second_sub_port(self):
         parsed_template = yaml.safe_load(test_template)
         sub_ports = [{'port': {'get_resource': 'sub_port_one'},
@@ -160,6 +162,7 @@
                          self._sub_ports_dict_to_set(trunk_sub_ports))
 
     @decorators.idempotent_id('cb59363e-5517-42f9-8b93-9ad700e2ef4c')
+    @utils.requires_ext(extension="trunk", service="network")
     def test_remove_sub_port_from_trunk(self):
         sub_ports = [{'port': {'get_resource': 'sub_port_one'},
                       'segmentation_type': 'vlan',
@@ -197,6 +200,7 @@
                          self._sub_ports_dict_to_set(trunk_sub_ports))
 
     @decorators.idempotent_id('7f0836c7-1d35-4d11-bcdc-e0e19ca68b68')
+    @utils.requires_ext(extension="trunk", service="network")
     def test_remove_last_sub_port_from_trunk(self):
         sub_ports = [{'port': {'get_resource': 'sub_port_one'},
                       'segmentation_type': 'vlan',
@@ -233,6 +237,7 @@
                          'not empty!' % trunk_sub_ports)
 
     @decorators.idempotent_id('e9296d6f-009c-4530-9aaf-84a0f8281bcb')
+    @utils.requires_ext(extension="trunk", service="network")
     def test_update_existing_sub_port_on_trunk(self):
         sub_ports = [{'port': {'get_resource': 'sub_port_one'},
                       'segmentation_type': 'vlan',
@@ -263,6 +268,7 @@
                          self._sub_ports_dict_to_set(trunk_sub_ports))
 
     @decorators.idempotent_id('912044d8-e0c1-4c6c-ab4e-bc1cadc46c18')
+    @utils.requires_ext(extension="trunk", service="network")
     def test_update_trunk_name_and_description(self):
         new_name = 'pineapple'
         new_description = 'This is a test trunk'
