aboutsummaryrefslogtreecommitdiff
path: root/rumba/testbeds/qemu.py
diff options
context:
space:
mode:
authorMarco Capitani <m.capitani@nextworks.it>2017-07-28 11:04:53 +0200
committerMarco Capitani <m.capitani@nextworks.it>2017-07-28 11:04:53 +0200
commit9733485acfc611cea59119a096e528357aa438a5 (patch)
tree62926bef082bbcacf3ddfb3813c8c580dd73347b /rumba/testbeds/qemu.py
parent815839bf3cac2fcfd2d25a69395055397d55a8bb (diff)
parent7b43f02b415968371f1b5719232bd7741cb7f12f (diff)
downloadrumba-9733485acfc611cea59119a096e528357aa438a5.tar.gz
rumba-9733485acfc611cea59119a096e528357aa438a5.zip
Merge branch 'master' into storyboard-impl
Diffstat (limited to 'rumba/testbeds/qemu.py')
-rw-r--r--rumba/testbeds/qemu.py47
1 files changed, 24 insertions, 23 deletions
diff --git a/rumba/testbeds/qemu.py b/rumba/testbeds/qemu.py
index 34458e2..3d30ce2 100644
--- a/rumba/testbeds/qemu.py
+++ b/rumba/testbeds/qemu.py
@@ -28,23 +28,20 @@ import rumba.log as log
import rumba.ssh_support as ssh_support
import wget
-
logger = log.get_logger(__name__)
class Testbed(mod.Testbed):
- def __init__(self, exp_name, bzimage=None, initramfs=None, proj_name="ARCFIRE",
- password="root", username="root",
- use_vhost=True, qemu_logs_dir=None):
+ def __init__(self, exp_name, bzimage_path=None, initramfs_path=None,
+ proj_name="ARCFIRE", password="root", username="root",
+ use_vhost=True):
mod.Testbed.__init__(self, exp_name, username, password, proj_name)
self.vms = {}
self.shims = []
self.vhost = use_vhost
- self.qemu_logs_dir = os.getcwd() if qemu_logs_dir is None \
- else qemu_logs_dir
self.boot_processes = []
- self.bzimage = bzimage
- self.initramfs = initramfs
+ self.bzimage_path = bzimage_path
+ self.initramfs_path = initramfs_path
@staticmethod
def _run_command_chain(commands, results_queue,
@@ -127,17 +124,19 @@ class Testbed(mod.Testbed):
# Download the proper buildroot images, if the user did not specify
# local images
url_prefix = "https://bitbucket.org/vmaffione/rina-images/downloads/"
- if not self.bzimage:
- self.bzimage = '%s.bzImage' % (experiment.prototype_name())
- if not os.path.exists(self.bzimage):
- logger.info("Downloading %s" % (url_prefix + self.bzimage))
- wget.download(url_prefix + self.bzimage)
+ if not self.bzimage_path:
+ bzimage = '%s.bzImage' % (experiment.prototype_name())
+ self.bzimage_path = os.path.join(mod.cache_dir, bzimage)
+ if not os.path.exists(self.bzimage_path):
+ logger.info("Downloading %s" % (url_prefix + bzimage))
+ wget.download(url_prefix + bzimage, out=self.bzimage_path)
print("\n")
- if not self.initramfs:
- self.initramfs = '%s.rootfs.cpio' % (experiment.prototype_name())
- if not os.path.exists(self.initramfs):
- logger.info("Downloading %s" % (url_prefix + self.initramfs))
- wget.download(url_prefix + self.initramfs)
+ if not self.initramfs_path:
+ initramfs = '%s.rootfs.cpio' % (experiment.prototype_name())
+ self.initramfs_path = os.path.join(mod.cache_dir, initramfs)
+ if not os.path.exists(self.initramfs_path):
+ logger.info("Downloading %s" % (url_prefix + initramfs))
+ wget.download(url_prefix + initramfs, out=self.initramfs_path)
print("\n")
logger.info('Setting up interfaces.')
@@ -257,13 +256,15 @@ class Testbed(mod.Testbed):
node.ssh_config.port = fwdp
node.ssh_config.username = self.username
node.ssh_config.password = self.password
+ log_file = os.path.join(mod.tmp_dir, name + '.log')
vars_dict = {'fwdp': fwdp, 'id': vmid, 'mac': mac,
- 'bzimage': self.bzimage,
- 'initramfs': self.initramfs,
+ 'bzimage': self.bzimage_path,
+ 'initramfs': self.initramfs_path,
'fwdc': fwdc,
'memory': vm_memory, 'frontend': vm_frontend,
- 'vmname': name}
+ 'vmname': name,
+ 'log_file' : log_file}
host_fwd_str = 'hostfwd=tcp::%(fwdp)s-:22' % vars_dict
vars_dict['hostfwdstr'] = host_fwd_str
@@ -281,7 +282,7 @@ class Testbed(mod.Testbed):
'-m %(memory)sM '
'-device %(frontend)s,mac=%(mac)s,netdev=mgmt '
'-netdev user,id=mgmt,%(hostfwdstr)s '
- '-serial file:%(vmname)s.log '
+ '-serial file:%(log_file)s '
% vars_dict
)
@@ -309,7 +310,7 @@ class Testbed(mod.Testbed):
time.sleep(boot_backoff)
booting_budget = boot_batch_size
- with open('%s/qemu_out_%s' % (self.qemu_logs_dir, vmid), 'w')\
+ with open('%s/qemu_out_%s' % (mod.tmp_dir, vmid), 'w')\
as out_file:
logger.debug('executing >> %s', command)
self.boot_processes.append(subprocess.Popen(command.split(),