diff --git a/functional/tests/compute/v2/test_server.py b/functional/tests/compute/v2/test_server.py
index aa1c1201df..a6cc98e621 100644
--- a/functional/tests/compute/v2/test_server.py
+++ b/functional/tests/compute/v2/test_server.py
@@ -15,6 +15,7 @@ import uuid
 
 import testtools
 
+from functional.common import exceptions
 from functional.common import test
 
 
@@ -27,19 +28,38 @@ class ServerTests(test.TestCase):
     FIELDS = ['name']
     IP_POOL = 'public'
 
+    @classmethod
+    def get_flavor(cls):
+        raw_output = cls.openstack('flavor list -f value -c ID')
+        ray = raw_output.split('\n')
+        idx = len(ray)/2
+        return ray[idx]
+
+    @classmethod
+    def get_image(cls):
+        raw_output = cls.openstack('image list -f value -c ID')
+        ray = raw_output.split('\n')
+        idx = len(ray)/2
+        return ray[idx]
+
+    @classmethod
+    def get_network(cls):
+        try:
+            raw_output = cls.openstack('network list -f value -c ID')
+        except exceptions.CommandFailed:
+            return ''
+        ray = raw_output.split('\n')
+        idx = len(ray)/2
+        return ' --nic net-id=' + ray[idx]
+
     @classmethod
     def setUpClass(cls):
         opts = cls.get_show_opts(cls.FIELDS)
-        # TODO(thowe): pull these values from clouds.yaml
-        flavor = '4'
-        image = 'cirros-0.3.4-x86_64-uec'
-        netid = ''
-        if netid:
-            nicargs = ' --nic net-id=' + netid
-        else:
-            nicargs = ''
+        flavor = cls.get_flavor()
+        image = cls.get_image()
+        network = cls.get_network()
         raw_output = cls.openstack('server create --flavor ' + flavor +
-                                   ' --image ' + image + nicargs + ' ' +
+                                   ' --image ' + image + network + ' ' +
                                    cls.NAME + opts)
         expected = cls.NAME + '\n'
         cls.assertOutput(expected, raw_output)