Merge "Optimisation of VM Dynamic Scenarios code"

This commit is contained in:
Zuul 2021-08-12 07:34:46 +00:00 committed by Gerrit Code Review
commit 6f85bbd590
2 changed files with 9 additions and 33 deletions

View File

@ -137,4 +137,5 @@ class NovaDynamicScenario(vm_utils.VMScenario):
:param tag: str, tag to search for :param tag: str, tag to search for
:returns: list of server objects based on tag :returns: list of server objects based on tag
""" """
return self.clients("nova", version="2.52").servers.list(search_opts={'tags': tag}) return self.clients("nova", version="2.52").servers.list(
search_opts={'tags': tag, 'status': "ACTIVE"})

View File

@ -13,13 +13,13 @@
import logging import logging
import random import random
from rally_openstack.scenarios.vm import utils as vm_utils import nova_custom
import neutron_custom import neutron_custom
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
class VMDynamicScenario(vm_utils.VMScenario, class VMDynamicScenario(nova_custom.NovaDynamicScenario,
neutron_custom.NeutronDynamicScenario): neutron_custom.NeutronDynamicScenario):
def create_delete_servers(self, image, flavor, num_vms=1, min_sleep=0, max_sleep=10, def create_delete_servers(self, image, flavor, num_vms=1, min_sleep=0, max_sleep=10,
@ -40,7 +40,7 @@ class VMDynamicScenario(vm_utils.VMScenario,
kwargs["nics"] = [{"net-id": network["network"]["id"]}] kwargs["nics"] = [{"net-id": network["network"]["id"]}]
servers = [] servers = []
for i in range(num_vms): for i in range(num_vms):
server = self._boot_server(image, flavor, **kwargs) server = self._boot_server_with_tag(image, flavor, "create_delete", **kwargs)
LOG.info("Created server {} when i = {}".format(server,i)) LOG.info("Created server {} when i = {}".format(server,i))
servers.append(server) servers.append(server)
# Delete least recently created server from list when i=1,3,5,7..... # Delete least recently created server from list when i=1,3,5,7.....
@ -81,8 +81,9 @@ class VMDynamicScenario(vm_utils.VMScenario,
self._add_interface_router(subnet["subnet"], router["router"]) self._add_interface_router(subnet["subnet"], router["router"])
for i in range(num_vms): for i in range(num_vms):
kwargs["nics"] = [{"net-id": network["network"]["id"]}] kwargs["nics"] = [{"net-id": network["network"]["id"]}]
guest = self._boot_server_with_fip( guest = self._boot_server_with_fip_and_tag(
image, flavor, True, ext_net_name, **kwargs image, flavor, "migrate",
True, ext_net_name, **kwargs
) )
self._wait_for_ping(guest[1]["ip"]) self._wait_for_ping(guest[1]["ip"])
@ -92,33 +93,7 @@ class VMDynamicScenario(vm_utils.VMScenario,
:param num_migrate_vms: int, number of servers to migrate between computes :param num_migrate_vms: int, number of servers to migrate between computes
:returns: list of server objects to migrate between computes :returns: list of server objects to migrate between computes
""" """
servers = self._list_servers(True) eligible_servers = self._get_servers_by_tag("migrate")
trunks = self._list_trunks()
eligible_servers = []
for server in servers:
if server._info['name'].startswith('amphora-'):
continue
has_floating_ip = False
is_not_trunk_network_server = True
for network, addr_list in server.addresses.items():
if len(addr_list) > 1:
has_floating_ip = True
break
if not(has_floating_ip):
continue
for interface in self._list_interfaces(server):
for trunk in trunks:
if interface._info['port_id'] == trunk['port_id']:
is_not_trunk_network_server = False
break
if not(is_not_trunk_network_server):
break
if is_not_trunk_network_server:
eligible_servers.append(server)
random.shuffle(eligible_servers) random.shuffle(eligible_servers)
num_servers_to_migrate = min(num_migrate_vms, len(eligible_servers)) num_servers_to_migrate = min(num_migrate_vms, len(eligible_servers))