Merge "Add a new test case to migrate VM with two networks" into mcp/caracal
diff --git a/tempest/common/waiters.py b/tempest/common/waiters.py
index 36c2b8b..ae0bd76 100644
--- a/tempest/common/waiters.py
+++ b/tempest/common/waiters.py
@@ -679,8 +679,9 @@
     raise lib_exc.TimeoutException()
 
 
-def wait_for_cloudinit(ssh_client, timeout=60):
+def wait_for_cloudinit(ssh_client):
     """Waits for cloud-init completed"""
+    timeout = CONF.compute.cloudinit_timeout
     start_time = int(time.time())
     while int(time.time()) - start_time < timeout:
         try:
diff --git a/tempest/config.py b/tempest/config.py
index cffeb35..d5eeb21 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -348,6 +348,9 @@
                help="Timeout in seconds to wait for an instance to build. "
                     "Other services that do not define build_timeout will "
                     "inherit this value."),
+    cfg.IntOpt('cloudinit_timeout',
+               default=90,
+               help="Timeout in seconds to wait for a cloudinit on VM."),
     cfg.IntOpt('ready_wait',
                default=0,
                help="Additional wait time for clean state, when there is "
diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py
index 212c1b3..94cc3bd 100644
--- a/tempest/scenario/manager.py
+++ b/tempest/scenario/manager.py
@@ -1342,12 +1342,12 @@
         return self.create_server(**create_kwargs)
 
     def wait_for_cloud_init(
-            self, ip_address, server, private_key, username, timeout=60):
+            self, ip_address, server, private_key, username):
         ssh_client = self.get_remote_client(ip_address,
                                             private_key=private_key,
                                             server=server,
                                             username=username)
-        waiters.wait_for_cloudinit(ssh_client, timeout)
+        waiters.wait_for_cloudinit(ssh_client)
 
     def create_volume_from_image(self, **kwargs):
         """Create volume from image.
diff --git a/tempest/scenario/test_network_advanced_server_ops.py b/tempest/scenario/test_network_advanced_server_ops.py
index 3a93f74..ba5245b 100644
--- a/tempest/scenario/test_network_advanced_server_ops.py
+++ b/tempest/scenario/test_network_advanced_server_ops.py
@@ -193,9 +193,10 @@
         # check if microversion is less than 2.25 because of
         # disk_over_commit is depracted since compute api version 2.25
         # if min_microversion is None, it runs on version < 2.25
-        if not migration and (CONF.compute.min_microversion is None or
-                              CONF.compute.min_microversion < '2.25'):
-            migration_kwargs['disk_over_commit'] = False
+        if (self.compute_request_microversion and
+                self.compute_request_microversion < '2.25'):
+            if not migration:
+                migration_kwargs['disk_over_commit'] = False
 
         if dest_host:
             migration_kwargs['host'] = dest_host
diff --git a/tempest/scenario/test_network_basic_ops.py b/tempest/scenario/test_network_basic_ops.py
index 085d06a..5cdf692 100644
--- a/tempest/scenario/test_network_basic_ops.py
+++ b/tempest/scenario/test_network_basic_ops.py
@@ -401,10 +401,29 @@
     def _live_migrate_server(self, server, host_id=None):
         src_host = self.get_host_for_server(server['id'])
 
+        # check if microversion is equal or more than 2.25 because of
+        # block_migration(str) = 'auto' is supported since compute
+        # api version 2.25
+        # else use block_migration_for_live_migration config option
+        # and add disk_over_commit option to migration_kwargs
+        if (self.compute_request_microversion and
+                self.compute_request_microversion < '2.25'):
+            migration_kwargs = {
+                "host": host_id,
+                "block_migration": (CONF.compute_feature_enabled.
+                                    block_migration_for_live_migration),
+                "disk_over_commit": False,
+            }
+
+        else:
+            migration_kwargs = {
+                "host": host_id,
+                "block_migration": "auto",
+            }
+
         self.os_adm.servers_client.live_migrate_server(
             server_id=server['id'],
-            block_migration='auto',
-            host=host_id)
+            **migration_kwargs)
 
         waiters.wait_for_server_status(
             self.servers_client, server['id'], 'ACTIVE')