Skip test_dhcp_agent_scheduler tests if there is no DHCP agent available

Previously those tests were skipped only if there wasn't
"dhcp_agent_scheduler" API extension available.
But in some cases, like e.g. when Neutron is run with ML2/OVN backend
this extension is available (after [1] will be merged) but still in
typical deployment there is no Neutron DHCP agent deployed together with
ML2/OVN backend.

So those tests should be skipped not only if there isn't API extension
at all but also when there is no any DHCP agent available in the
deployment.

[1] https://review.opendev.org/c/openstack/neutron/+/897528

Related-bug: #2038655
Change-Id: I9ccb710c8dc32765962a18bee1771c86fe1aaacd
diff --git a/tempest/api/network/admin/test_dhcp_agent_scheduler.py b/tempest/api/network/admin/test_dhcp_agent_scheduler.py
index 3c0efee..b4bfc61 100644
--- a/tempest/api/network/admin/test_dhcp_agent_scheduler.py
+++ b/tempest/api/network/admin/test_dhcp_agent_scheduler.py
@@ -31,6 +31,15 @@
     @classmethod
     def resource_setup(cls):
         super(DHCPAgentSchedulersTestJSON, cls).resource_setup()
+        # NOTE(slaweq): In some cases (like default ML2/OVN deployment)
+        # extension is enabled but there may not be any DHCP agent available.
+        # In such case those tests should be also skipped.
+        dhcp_agents = cls.admin_agents_client.list_agents(
+            agent_type="DHCP Agent")['agents']
+        if not dhcp_agents:
+            msg = ("At least one DHCP agent is required to be running in "
+                   "the environment for those tests.")
+            raise cls.skipException(msg)
         # Create a network and make sure it will be hosted by a
         # dhcp agent: this is done by creating a regular port
         cls.network = cls.create_network()