X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=nfvbench%2Fcompute.py;h=883dc2826d37260c11dac0e52c1e6b891d8e08dc;hb=refs%2Fchanges%2F79%2F73279%2F1;hp=556ade42eb18e94e000da9e0681f5f42bf6a2de7;hpb=8eaf1fcc4b2b3678d62ddb081f0d912fdc92bc20;p=nfvbench.git diff --git a/nfvbench/compute.py b/nfvbench/compute.py index 556ade4..883dc28 100644 --- a/nfvbench/compute.py +++ b/nfvbench/compute.py @@ -23,8 +23,10 @@ except ImportError: from glanceclient.v1.apiclient.exceptions import NotFound as GlanceImageNotFound import keystoneauth1 import novaclient +from novaclient.exceptions import NotFound -from log import LOG +from .log import LOG +from . import utils class Compute(object): @@ -50,7 +52,7 @@ class Compute(object): retry = 0 try: # check image is file/url based. - with open(image_file) as f_image: + with open(image_file, 'rb') as f_image: img = self.glance_client.images.create(name=str(final_image_name), disk_format="qcow2", container_format="bare", @@ -95,6 +97,24 @@ class Compute(object): return True + def image_multiqueue_enabled(self, img): + """Check if multiqueue property is enabled on given image.""" + try: + return img['hw_vif_multiqueue_enabled'] == 'true' + except KeyError: + return False + + def image_set_multiqueue(self, img, enabled): + """Set multiqueue property as enabled or disabled on given image.""" + cur_mqe = self.image_multiqueue_enabled(img) + LOG.info('Image %s hw_vif_multiqueue_enabled property is "%s"', + img.name, str(cur_mqe).lower()) + if cur_mqe != enabled: + mqe = str(enabled).lower() + self.glance_client.images.update(img.id, hw_vif_multiqueue_enabled=mqe) + img['hw_vif_multiqueue_enabled'] = mqe + LOG.info('Image %s hw_vif_multiqueue_enabled property changed to "%s"', img.name, mqe) + # Create a server instance with name vmname # and check that it gets into the ACTIVE state def create_server(self, vmname, image, flavor, key_name, @@ -129,9 +149,17 @@ class Compute(object): servers_list = self.novaclient.servers.list() return servers_list + def instance_exists(self, server): + try: + self.novaclient.servers.get(server) + except NotFound: + return False + return True + def delete_server(self, server): """Delete a server from its object reference.""" - self.novaclient.servers.delete(server) + utils.delete_server(self.novaclient, server) + utils.waiting_servers_deletion(self.novaclient, [server]) def find_flavor(self, flavor_type): """Find a flavor by name."""