diff --git a/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py b/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
index faab3bc..e608d59 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
@@ -1642,6 +1642,13 @@
 
 class HealthMonitorSourceIPPortAPITest(HealthMonitorAPIBaseTest):
 
+    @classmethod
+    def skip_checks(cls):
+        super(HealthMonitorSourceIPPortAPITest, cls).skip_checks()
+        if CONF.load_balancer.provider == 'amphorav2':
+            raise cls.skipException("Amphora provider does not"
+                                    " support SOURCE_IP_PORT algorithm.")
+
     @decorators.idempotent_id('acab47f5-3006-4e84-a55f-e9dfe33113d2')
     def test_SIP_HTTP_healthmonitor_create(self):
         self._test_healthmonitor_create(
diff --git a/octavia_tempest_plugin/tests/api/v2/test_member.py b/octavia_tempest_plugin/tests/api/v2/test_member.py
index 88f39f1..9b95d15 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_member.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_member.py
@@ -1203,6 +1203,9 @@
         self._test_member_create(4, pool_id)
 
     @decorators.idempotent_id('73673efc-5b70-4394-b831-1d59fe283e7d')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_TCP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1210,6 +1213,9 @@
         self._test_member_create(4, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('0a08da1e-84f5-4068-84ec-1312b6b8bee3')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_TCP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1259,6 +1265,9 @@
         self._test_member_create(6, pool_id)
 
     @decorators.idempotent_id('b8394de8-a898-4cab-aa0c-f3168d702ee0')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_TCP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1266,6 +1275,9 @@
         self._test_member_create(6, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('7a86e00b-90bf-4fd3-8636-ae7264929106')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_TCP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1288,6 +1300,9 @@
                                const.LB_ALGORITHM_SOURCE_IP)
 
     @decorators.idempotent_id('db5769ce-f4b0-4a0f-92a7-4eeed66b6730')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_member_list(self):
         self._test_member_list(const.TCP,
                                const.LB_ALGORITHM_SOURCE_IP_PORT)
@@ -1335,6 +1350,9 @@
         self._test_member_show(pool_id)
 
     @decorators.idempotent_id('6953a9a4-5fac-4470-bfda-4fafbd67288b')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_alt_monitor_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1342,6 +1360,9 @@
         self._test_member_show(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('6d8d546f-8c41-49b9-bd9d-8f8ea3975816')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1391,6 +1412,9 @@
         self._test_member_update(pool_id)
 
     @decorators.idempotent_id('d6625773-2665-423d-8500-cf9b1b38b53e')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_alt_monitor_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1398,6 +1422,9 @@
         self._test_member_update(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('87a3e3aa-580a-41ca-bc15-8cb2995c9125')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1438,11 +1465,17 @@
                                        alternate_monitor=True)
 
     @decorators.idempotent_id('1d171080-c7e5-4ee0-83d4-51bb1655cb21')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_member_batch_update(self):
         self._test_member_batch_update(const.TCP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('52328f7a-bec4-4f23-9293-f5f1283c0af9')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_alt_monitor_member_batch_update(self):
         self._test_member_batch_update(const.TCP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT,
@@ -1470,6 +1503,9 @@
         self._test_member_delete(pool_id)
 
     @decorators.idempotent_id('eca3d41d-21bd-4547-b8b8-8f87867eb4ad')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_TCP_SIP_member_delete(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.TCP,
@@ -1578,6 +1614,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_UDP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -1593,6 +1632,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_UDP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -1698,6 +1740,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    not CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_UDP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -1713,6 +1758,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    not CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_UDP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -1735,6 +1783,9 @@
                                const.LB_ALGORITHM_SOURCE_IP)
 
     @decorators.idempotent_id('638811fa-26ce-44f3-8ac7-29cf1ef41838')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_member_list(self):
         self._test_member_list(const.UDP,
                                const.LB_ALGORITHM_SOURCE_IP_PORT)
@@ -1838,6 +1889,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_alt_monitor_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -1853,6 +1907,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -1958,6 +2015,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_alt_monitor_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -1973,6 +2033,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -2013,11 +2076,17 @@
                                        alternate_monitor=True)
 
     @decorators.idempotent_id('00b3ebda-c28c-471b-bbf8-01de6567b4b5')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_member_batch_update(self):
         self._test_member_batch_update(const.UDP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('e4a357a3-1d07-46f4-a8ff-67a279783b24')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_alt_monitor_member_batch_update(self):
         self._test_member_batch_update(const.UDP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT,
@@ -2077,6 +2146,9 @@
         bug_type='storyboard',
         condition=(CONF.load_balancer.provider in const.AMPHORA_PROVIDERS and
                    CONF.load_balancer.test_with_ipv6))
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_UDP_SIP_member_delete(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.UDP, pool_protocol=const.UDP,
@@ -2129,6 +2201,9 @@
         self._test_member_create(4, pool_id)
 
     @decorators.idempotent_id('a2dbf216-a974-45e1-822d-859f76c89ed6')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_HTTP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2136,6 +2211,9 @@
         self._test_member_create(4, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('926eeed9-ecf4-4d22-9417-ef7a7e0a7788')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_HTTP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2185,6 +2263,9 @@
         self._test_member_create(6, pool_id)
 
     @decorators.idempotent_id('d816d324-2434-4812-9b3e-a3f0d4949008')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_HTTP_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2192,6 +2273,9 @@
         self._test_member_create(6, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('d4cfe315-b6d6-4940-8ff6-5f5252028eec')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_HTTP_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2214,6 +2298,9 @@
                                const.LB_ALGORITHM_SOURCE_IP)
 
     @decorators.idempotent_id('2f9d0974-2e55-49c1-b83a-8bdd6dfdb46c')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_member_list(self):
         self._test_member_list(const.HTTP,
                                const.LB_ALGORITHM_SOURCE_IP_PORT)
@@ -2261,6 +2348,9 @@
         self._test_member_show(pool_id)
 
     @decorators.idempotent_id('7c4fcb3e-a994-4d39-97cc-929c022c001e')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_alt_monitor_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2268,6 +2358,9 @@
         self._test_member_show(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('704d04c3-e639-4dee-b55d-09ebf55f8a0d')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2317,6 +2410,9 @@
         self._test_member_update(pool_id)
 
     @decorators.idempotent_id('5215ecc4-fd47-451a-b073-399bad8b522c')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_alt_monitor_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2324,6 +2420,9 @@
         self._test_member_update(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('7c89fb05-d949-4c0f-8c61-7e55e494c76f')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2364,11 +2463,17 @@
                                        alternate_monitor=True)
 
     @decorators.idempotent_id('617028e2-89fb-4e7e-ba62-1a8a7af697ca')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_member_batch_update(self):
         self._test_member_batch_update(const.HTTP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('44a2508d-ecea-4f92-ba66-a64d6d7f12da')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_alt_monitor_member_batch_update(self):
         self._test_member_batch_update(const.HTTP,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT,
@@ -2396,6 +2501,9 @@
         self._test_member_delete(pool_id)
 
     @decorators.idempotent_id('1c9f9dc5-4ba3-44cd-a840-fd0629abfddd')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTP_SIP_member_delete(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTP, pool_protocol=const.HTTP,
@@ -2448,6 +2556,9 @@
         self._test_member_create(4, pool_id)
 
     @decorators.idempotent_id('55da07bc-bf2c-4924-aba3-a03456843e14')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_HTTPS_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2455,6 +2566,9 @@
         self._test_member_create(4, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('6773a8bd-1c51-4040-84ba-1aa2b6c4280d')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_HTTPS_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2504,6 +2618,9 @@
         self._test_member_create(6, pool_id)
 
     @decorators.idempotent_id('05684ab0-dff3-41aa-8b42-7f95fd6aa4ab')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_HTTPS_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2511,6 +2628,9 @@
         self._test_member_create(6, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('ed42872c-1ffc-4210-9f69-5f7eb8ec732f')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_HTTPS_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2528,6 +2648,9 @@
                                const.LB_ALGORITHM_SOURCE_IP)
 
     @decorators.idempotent_id('d31c5b8b-7ec1-4e78-a821-30e9a1e05139')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_member_list(self):
         self._test_member_list(const.HTTPS,
                                const.LB_ALGORITHM_SOURCE_IP_PORT)
@@ -2580,6 +2703,9 @@
         self._test_member_show(pool_id)
 
     @decorators.idempotent_id('69de0c60-3e4f-40cf-9bf7-d2b1e6c83715')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_alt_monitor_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2587,6 +2713,9 @@
         self._test_member_show(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('2d970b1c-c157-4974-b605-b8e08d97e874')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2636,6 +2765,9 @@
         self._test_member_update(pool_id)
 
     @decorators.idempotent_id('edff98be-6208-4f1c-9cd3-376b7ac47f80')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_alt_monitor_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2643,6 +2775,9 @@
         self._test_member_update(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('a1f214fe-6c09-4298-b03e-7069b615dec2')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2683,11 +2818,17 @@
                                        alternate_monitor=True)
 
     @decorators.idempotent_id('794137e5-28c1-4b0e-bc2f-fc030d03a689')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_member_batch_update(self):
         self._test_member_batch_update(const.HTTPS,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('c1c8930d-0436-4075-b47a-f3bd263ab8a8')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_alt_monitor_member_batch_update(self):
         self._test_member_batch_update(const.HTTPS,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT,
@@ -2715,6 +2856,9 @@
         self._test_member_delete(pool_id)
 
     @decorators.idempotent_id('93ef7ac1-da00-420d-a367-22e86d968e1c')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_HTTPS_SIP_member_delete(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.HTTPS, pool_protocol=const.HTTPS,
@@ -2767,6 +2911,9 @@
         self._test_member_create(4, pool_id)
 
     @decorators.idempotent_id('ab462d7c-069d-4b55-b6a7-dd199bde65b3')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_PROXY_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -2774,6 +2921,9 @@
         self._test_member_create(4, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('b1f6f779-2535-4e47-add2-24561545ba59')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv4_PROXY_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -2823,6 +2973,9 @@
         self._test_member_create(6, pool_id)
 
     @decorators.idempotent_id('ab87132f-5a0e-40a1-9498-9883780d31a9')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_PROXY_SIP_alt_monitor_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -2830,6 +2983,9 @@
         self._test_member_create(6, pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('227d7f40-a224-4e67-8844-2d28abc5171e')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_PROXY_SIP_member_create(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -2852,6 +3008,9 @@
                                const.LB_ALGORITHM_SOURCE_IP)
 
     @decorators.idempotent_id('15f8690b-f345-413c-9b4e-af39d546fbec')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_member_list(self):
         self._test_member_list(const.PROXY,
                                const.LB_ALGORITHM_SOURCE_IP_PORT)
@@ -2899,6 +3058,9 @@
         self._test_member_show(pool_id)
 
     @decorators.idempotent_id('28e1e3e7-454b-409d-84c3-1826f82ca9dd')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_alt_monitor_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -2906,6 +3068,9 @@
         self._test_member_show(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('189ec327-b1c5-47a8-a843-10963cba0a9c')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_member_show(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -2955,6 +3120,9 @@
         self._test_member_update(pool_id)
 
     @decorators.idempotent_id('56a21d8e-825a-4780-a073-41061a0d55ca')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_alt_monitor_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -2962,6 +3130,9 @@
         self._test_member_update(pool_id, alternate_monitor=True)
 
     @decorators.idempotent_id('25a24e27-218b-4dcd-99aa-e9ca9f8163e5')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_member_update(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
@@ -3002,11 +3173,17 @@
                                        alternate_monitor=True)
 
     @decorators.idempotent_id('1ab05cf2-265e-4291-b17c-19caa0a1b6ff')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_member_batch_update(self):
         self._test_member_batch_update(const.PROXY,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('4de187b6-4948-4394-af6b-8828e96d8f3e')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_alt_monitor_member_batch_update(self):
         self._test_member_batch_update(const.PROXY,
                                        const.LB_ALGORITHM_SOURCE_IP_PORT,
@@ -3034,6 +3211,9 @@
         self._test_member_delete(pool_id)
 
     @decorators.idempotent_id('e83b9389-768f-4bcf-a650-17af01243d2b')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_PROXY_SIP_member_delete(self):
         pool_id = self._listener_pool_create(
             listener_protocol=const.TCP, pool_protocol=const.PROXY,
diff --git a/octavia_tempest_plugin/tests/api/v2/test_pool.py b/octavia_tempest_plugin/tests/api/v2/test_pool.py
index 375f7f4..71f6425 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_pool.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_pool.py
@@ -1562,6 +1562,12 @@
 class PoolSourceIPPortAPITest(PoolAPIBaseTest):
     """Pool with Source IP Port algorithm"""
 
+    def skip_checks(cls):
+        super(PoolSourceIPPortAPITest, cls).skip_checks()
+        if CONF.load_balancer.provider == 'amphorav2':
+            raise cls.skipException("Amphora provider does not"
+                                    " support SOURCE_IP_PORT algorithm.")
+
     @decorators.idempotent_id('265ba978-a528-429c-9ef7-c36373ee2225')
     def test_HTTP_SIP_pool_standalone_create(self):
         self._test_pool_create(listener_protocol=None,
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py b/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py
index 8d4ff06..f48d5d8 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py
@@ -169,6 +169,9 @@
             const.HEALTH_MONITOR_UDP_CONNECT)
 
     @decorators.idempotent_id('d5e0d1b6-7cce-4592-abce-0ac6bee18818')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_HTTP_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
@@ -183,6 +186,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('e188daac-6db9-4dc2-8ecb-b47932e1984a')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_HTTPS_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
@@ -197,6 +203,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('f9458ffd-5af7-402b-9c15-c061bf2eb9ba')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_PING_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
@@ -211,6 +220,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('b4cbe603-0a14-4778-b38c-f330053c86b6')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_TCP_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
@@ -225,6 +237,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('57714d4c-d584-4345-9ceb-becc3ae37b7f')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_TLS_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
@@ -239,6 +254,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('cc4abf84-361b-409b-b859-9a860d539deb')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_SIP_UDP_healthmonitor_CRUD(self):
         try:
             self._test_healthmonitor_CRUD(
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py b/octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py
index a76fbff..20af819 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_ipv6_traffic_ops.py
@@ -335,16 +335,25 @@
             const.UDP, 98, const.LB_ALGORITHM_SOURCE_IP)
 
     @decorators.idempotent_id('c11768f1-19b4-48cc-99a5-0737379b1957')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_http_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.HTTP, 99, const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('fcfe2ab1-2c36-4793-a926-1fec589a9a2a')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_tcp_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.TCP, 100, const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('80f31bc1-819e-4d9e-8820-bf3e28600540')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_ipv6_udp_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.UDP, 101, const.LB_ALGORITHM_SOURCE_IP_PORT)
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_listener.py b/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
index 8a6d5d5..8e77db7 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
@@ -183,6 +183,9 @@
         self._test_listener_CRUD(const.UDP, pool1, pool2)
 
     @decorators.idempotent_id('807a421e-5e99-4556-b0eb-512d39b25eac')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_http_source_ip_port_listener_CRUD(self):
         try:
             pool1, pool2 = self._create_pools(
@@ -197,6 +200,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('6211f8ad-622d-404d-b199-8c2eb55ab340')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_tcp_source_ip_port_listener_CRUD(self):
         try:
             pool1, pool2 = self._create_pools(
@@ -211,6 +217,9 @@
             raise testtools.TestCase.skipException(message)
 
     @decorators.idempotent_id('3f9a2de9-5012-437d-a907-a25e1f68ccfb')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_udp_source_ip_port_listener_CRUD(self):
         try:
             pool1, pool2 = self._create_pools(
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_member.py b/octavia_tempest_plugin/tests/scenario/v2/test_member.py
index 64f2248..699d6e1 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_member.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_member.py
@@ -699,6 +699,12 @@
 
 class MemberSourceIPPortScenarioTest(MemberScenarioBaseTest):
 
+    def skip_checks(cls):
+        super(MemberSourceIPPortScenarioTest, cls).skip_checks()
+        if CONF.load_balancer.provider == 'amphorav2':
+            raise cls.skipException("Amphora provider does not"
+                                    " support SOURCE_IP_PORT algorithm.")
+
     @decorators.idempotent_id('ab8f46fe-0c84-4755-a9a2-80cc1fbdea18')
     def test_HTTP_SIP_member_crud(self):
         pool_id = self._listener_pool_create(
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_pool.py b/octavia_tempest_plugin/tests/scenario/v2/test_pool.py
index 29bb799..958f702 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_pool.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_pool.py
@@ -530,6 +530,13 @@
 class PoolSourceIPPortScenarioTest(PoolScenarioBaseTest):
     """Pool with Source IP Port algorithm"""
 
+    @classmethod
+    def skip_checks(cls):
+        super(PoolSourceIPPortScenarioTest, cls).skip_checks()
+        if CONF.load_balancer.provider == 'amphorav2':
+            raise cls.skipException("Amphora provider does not"
+                                    " support SOURCE_IP_PORT algorithm.")
+
     @decorators.idempotent_id('fee61d34-e272-42f5-92e2-69b515c6cded')
     def test_HTTP_SIP_pool_standalone_CRUD(self):
         self._test_pool_CRUD(listener_protocol=None,
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py b/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
index db01ecb..94aaa07 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
@@ -908,6 +908,9 @@
     @testtools.skipIf(CONF.load_balancer.test_with_noop,
                       'Traffic tests will not work in noop mode.')
     @decorators.idempotent_id('a446585b-5651-40ce-a4db-cb2ab4d37c03')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_source_ip_port_http_traffic(self):
         # This is a special case as the reference driver does not support
         # this test. Since it runs with not_implemented_is_error, we must
@@ -930,6 +933,9 @@
     @testtools.skipIf(CONF.load_balancer.test_with_noop,
                       'Traffic tests will not work in noop mode.')
     @decorators.idempotent_id('60108f30-d870-487c-ab96-8d8a9b587b94')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_source_ip_port_tcp_traffic(self):
         # This is a special case as the reference driver does not support
         # this test. Since it runs with not_implemented_is_error, we must
@@ -1154,16 +1160,25 @@
             const.UDP, 98, const.LB_ALGORITHM_SOURCE_IP)
 
     @decorators.idempotent_id('d198ddc5-1bcb-4310-a1b0-fa1a6328c4e9')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_http_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.HTTP, 99, const.LB_ALGORITHM_SOURCE_IP_PORT)
 
     @decorators.idempotent_id('bbb09dbb-2aad-4281-9383-4bb4ad420ee1')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_tcp_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.TCP, 100, const.LB_ALGORITHM_SOURCE_IP_PORT, delay=0.2)
 
     @decorators.idempotent_id('70290a9d-0065-42ad-bb46-884a535d2da2')
+    @testtools.skipIf(CONF.load_balancer.provider == 'amphorav2',
+                      "Amphora provider does not support "
+                      "SOURCE_IP_PORT algorithm")
     def test_udp_SIP_listener_with_allowed_cidrs(self):
         self._test_listener_with_allowed_cidrs(
             const.UDP, 101, const.LB_ALGORITHM_SOURCE_IP_PORT, delay=0.2)
