From 48f7f0f1bcb0d43d18e89f8ff54971f450f2f58b Mon Sep 17 00:00:00 2001
From: TerryHowe <terrylhowe@gmail.com>
Date: Fri, 21 Aug 2015 12:06:54 -0600
Subject: [PATCH] Automate flavors, networks, and image get

Functional tests rely on some sort of configuration and
rather than configure something right now, how about it
pulls something from the middle of the available list.

Change-Id: I8147e40e5ee7393d8a8dcf1b0beb48856f28af7e
---
 functional/tests/compute/v2/test_server.py | 38 +++++++++++++++++-----
 1 file changed, 29 insertions(+), 9 deletions(-)

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)