diff --git a/nodes/openstack.py b/nodes/openstack.py
index 8b425cb..7444e46 100644
--- a/nodes/openstack.py
+++ b/nodes/openstack.py
@@ -1,11 +1,33 @@
-from novaclient.v1_1 import client as novacl
+import node
+
+from novaclient.client import Client
+
+
+def get_floating_ip(vm):
+    addrs = vm.addresses
+    for net_name, ifaces in addrs.items():
+        for iface in ifaces:
+            if iface.get('OS-EXT-IPS:type') == "floating":
+                return iface['addr']
+    raise Exception("No floating ip found for VM %s" % repr(vm))
+
+
+def discover_openstack_vms(conn_details):
+    """Discover vms running in openstack
+    :param conn_details - dict with openstack connection details -
+        auth_url, api_key (password), username
+    """
+    client = Client(version='1.1', **conn_details)
+    servers = client.servers.list(search_opts={"all_tenant": True})
+    return [node.Node(get_floating_ip(server), ["test_vm"])
+            for server in servers]
 
 
 def discover_openstack_nodes(conn_details):
     """Discover openstack nodes
-    :param connection_details - dict with openstack connection details -
+    :param conn_details - dict with openstack connection details -
         auth_url, api_key (password), username
     """
-    client = novacl.Client(**conn_details)
-    servers = client.servers.list(search_opts={"all_tenant": True})
-    return servers
+    client = Client(version='1.1', **conn_details)
+    services = client.services.list()
+    return [node.Node(server.ip, ["test_vm"]) for server in services]
