Patch to add test that checks vGPU in instance

Related-prod: PRODX-37187
Change-Id: Ie8954eaf4aa7306f839092e010c107422d7f37f1
(cherry picked from commit fbfbdf1ca11cb7b0db9a6948a2a077f662bdd3d6)
diff --git a/tempest/api/compute/admin/test_create_server.py b/tempest/api/compute/admin/test_create_server.py
index 8bc999a..e24259f 100644
--- a/tempest/api/compute/admin/test_create_server.py
+++ b/tempest/api/compute/admin/test_create_server.py
@@ -13,6 +13,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from re import search
+
 import testtools
 
 from tempest.api.compute import base
@@ -308,3 +310,42 @@
                           'Cold migration is not available.')
     def test_cold_migration(self):
         self._test_cold_migration()
+
+
+class ServersTestVGPU(base.BaseV2ComputeAdminTest):
+    """Test creating server with vGPU flavor"""
+
+    @classmethod
+    def setup_credentials(cls):
+        cls.prepare_instance_network()
+        super(ServersTestVGPU, cls).setup_credentials()
+
+    @classmethod
+    def setup_clients(cls):
+        super(ServersTestVGPU, cls).setup_clients()
+        cls.client = cls.servers_client
+
+    @testtools.skipUnless(CONF.compute_feature_enabled.vgpu_flavor_ref,
+                          'vGPU flavor is not available.')
+    @testtools.skipUnless(CONF.compute.image_full_ref,
+                          'Current test requires full OS to be used.')
+    @decorators.idempotent_id('5c06d62b-d9c9-4cef-8b56-ef003af03519')
+    def test_create_server_vgpu(self):
+        # create the server and wait for it to become ready
+        validation_resources = self.get_class_validation_resources(
+            self.os_primary)
+        server = self.create_test_server(
+            image_id=CONF.compute.image_full_ref,
+            validatable=True,
+            validation_resources=validation_resources,
+            flavor=CONF.compute_feature_enabled.vgpu_flavor_ref)
+        # check that vgpu_pci_name is in console log server
+        linux_client = remote_client.RemoteClient(
+            self.get_server_ip(server, validation_resources),
+            CONF.compute.image_full_username,
+            pkey=validation_resources['keypair']['private_key'],
+            server=server,
+            servers_client=self.client)
+        output = linux_client.exec_command('lspci')
+        self.assertTrue(search(
+            CONF.compute_feature_enabled.vgpu_lspci_pattern, output))
diff --git a/tempest/config.py b/tempest/config.py
index 01e65f9..db1d787 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -651,6 +651,13 @@
     cfg.BoolOpt('barbican_integration_enabled',
                 default=False,
                 help='Does the test environment support Barbican integration'),
+    cfg.StrOpt('vgpu_flavor_ref',
+               default=None,
+               help="Valid flavor to be used for vGPU tests."),
+    cfg.StrOpt('vgpu_lspci_pattern',
+               default="NVIDIA",
+               help="Pattern to search in lspci output to enaure VGPU is"
+                    " present on host.")
 ]