def select_box(runs, gui=False): """Selects a box for the experiment, with the correct distribution. """ distribution, version = runs[0]['distribution'] distribution = distribution.lower() architecture = runs[0]['architecture'] record_usage(vagrant_select_box='%s;%s;%s;gui=%s' % (distribution, version, architecture, gui)) if architecture not in ('i686', 'x86_64'): logging.critical("Error: unsupported architecture %s", architecture) sys.exit(1) def find_distribution(parameter, distribution, version, architecture): boxes = parameter['boxes'] for distrib in boxes: if re.match(distrib['name'], distribution) is not None: result = find_version(distrib, version, architecture) if result is not None: return result default = parameter['default'] logging.warning("Unsupported distribution '%s', using %s", distribution, default['name']) result = default['architectures'].get(architecture) if result: return default['distribution'], result def find_version(distrib, version, architecture): if version is not None: for box in distrib['versions']: if re.match(box['version'], version) is not None: result = box['architectures'].get(architecture) if result is not None: return box['distribution'], result box = distrib['default'] if version is not None: logging.warning("Using %s instead of '%s'", box['name'], version) result = box['architectures'].get(architecture) if result is not None: return box['distribution'], result result = find_distribution( get_parameter('vagrant_boxes_x' if gui else 'vagrant_boxes'), distribution, version, architecture) if result is None: logging.critical("Error: couldn't find a base box for required " "architecture") sys.exit(1) return result
def select_box(runs, gui=False): """Selects a box for the experiment, with the correct distribution. """ distribution, version = runs[0]['distribution'] distribution = distribution.lower() architecture = runs[0]['architecture'] record_usage(vagrant_select_box='%s;%s;%s;gui=%s' % (distribution, version, architecture, gui)) if architecture not in ('i686', 'x86_64'): logger.critical("Error: unsupported architecture %s", architecture) sys.exit(1) def find_distribution(parameter, distribution, version, architecture): boxes = parameter['boxes'] for distrib in boxes: if re.match(distrib['name'], distribution) is not None: result = find_version(distrib, version, architecture) if result is not None: return result default = parameter['default'] logger.warning("Unsupported distribution '%s', using %s", distribution, default['name']) result = default['architectures'].get(architecture) if result: return default['distribution'], result def find_version(distrib, version, architecture): if version is not None: for box in distrib['versions']: if re.match(box['version'], version) is not None: result = box['architectures'].get(architecture) if result is not None: return box['distribution'], result box = distrib['default'] if version is not None: logger.warning("Using %s instead of '%s'", box['name'], version) result = box['architectures'].get(architecture) if result is not None: return box['distribution'], result result = find_distribution( get_parameter('vagrant_boxes_x' if gui else 'vagrant_boxes'), distribution, version, architecture) if result is None: logger.critical("Error: couldn't find a base box for required " "architecture") sys.exit(1) return result
def select_image(runs): """Selects a base image for the experiment, with the correct distribution. """ distribution, version = runs[0]['distribution'] distribution = distribution.lower() architecture = runs[0]['architecture'] record_usage(docker_select_box='%s;%s;%s' % (distribution, version, architecture)) if architecture == 'i686': logging.info("Wanted architecture was i686, but we'll use x86_64 with " "Docker") elif architecture != 'x86_64': logging.error("Error: unsupported architecture %s", architecture) sys.exit(1) def find_distribution(parameter, distribution, version): images = parameter['images'] for distrib in images: if re.match(distrib['name'], distribution) is not None: result = find_version(distrib, version) if result is not None: return result default = parameter['default'] logging.warning("Unsupported distribution '%s', using %s", distribution, default['name']) return default['distribution'], default['image'] def find_version(distrib, version): if version is not None: for image in distrib['versions']: if re.match(image['version'], version) is not None: return image['distribution'], image['image'] image = distrib['default'] if version is not None: logging.warning("Using %s instead of '%s'", image['name'], version) return image['distribution'], image['image'] return find_distribution(get_parameter('docker_images'), distribution, version)
def select_image(runs): """Selects a base image for the experiment, with the correct distribution. """ distribution, version = runs[0]['distribution'] distribution = distribution.lower() architecture = runs[0]['architecture'] record_usage(docker_select_box='%s;%s;%s' % (distribution, version, architecture)) if architecture == 'i686': logger.info("Wanted architecture was i686, but we'll use x86_64 with " "Docker") elif architecture != 'x86_64': logger.error("Error: unsupported architecture %s", architecture) sys.exit(1) def find_distribution(parameter, distribution, version): images = parameter['images'] for distrib in images: if re.match(distrib['name'], distribution) is not None: result = find_version(distrib, version) if result is not None: return result default = parameter['default'] logger.warning("Unsupported distribution '%s', using %s", distribution, default['name']) return default['distribution'], default['image'] def find_version(distrib, version): if version is not None: for image in distrib['versions']: if re.match(image['version'], version) is not None: return image['distribution'], image['image'] image = distrib['default'] if version is not None: logger.warning("Using %s instead of '%s'", image['name'], version) return image['distribution'], image['image'] return find_distribution(get_parameter('docker_images'), distribution, version)
def sudo_url(arch): """Gets the correct URL for the rpzsudo binary given the architecture. """ return get_parameter('rpzsudo_url')[arch]
def busybox_url(arch): """Gets the correct URL for the busybox binary given the architecture. """ return get_parameter('busybox_url')[arch]
def sudo_url(arch): """Gets the correct URL for the rpzsudo binary given the architecture. """ return get_parameter('rpzsudo_url')[arch]
def busybox_url(arch): """Gets the correct URL for the busybox binary given the architecture. """ return get_parameter('busybox_url')[arch]