diff --git a/nodes/fuel.py b/nodes/fuel.py
index 25476dc..9b1312e 100644
--- a/nodes/fuel.py
+++ b/nodes/fuel.py
@@ -1,18 +1,18 @@
 import logging
 
 
-import node
+from node import Node
 import fuel_rest_api
-from disk_perf_test_tool.utils import parse_creds
 
 
 logger = logging.getLogger("io-perf-tool")
 
 
-def discover_fuel_nodes(root_url, credentials, roles):
+def discover_fuel_nodes(root_url, credentials, cluster_name):
     """Discover Fuel nodes"""
-    user, passwd, tenant = parse_creds(credentials['creds'])
-
+    assert credentials.count(':') >= 2
+    user, passwd_tenant = credentials.split(":", 1)
+    passwd, tenant = passwd_tenant.rsplit(":", 1)
     creds = dict(
         username=user,
         password=passwd,
@@ -21,8 +21,14 @@
 
     connection = fuel_rest_api.KeystoneAuth(root_url, creds)
     fi = fuel_rest_api.FuelInfo(connection)
+
+    clusters_id = fuel_rest_api.get_cluster_id(connection, cluster_name)
+
     nodes = []
-    for role in roles:
-        nodes.extend(getattr(fi.nodes, role))
-    logger.debug("Found %s fuel nodes" % len(fi.nodes))
-    return [node.Node(n.ip, n.get_roles()) for n in nodes]
+
+    for node in fi.nodes:
+        if node.cluster == clusters_id:
+            nodes.append(node)
+    res = [Node(n.ip, n.get_roles()) for n in nodes]
+    logger.debug("Found %s fuel nodes for env %r" % (len(res), cluster_name))
+    return res
