+def vm_get_builder_status():
+ """Get the current status of builder vm.
+
+ :returns: one of: 'running', 'paused', 'shutoff', 'not created'
+ If something is wrong with vagrant or the vm 'unknown' is returned.
+ """
+ (ret, out) = vagrant(['status'], cwd='builder')
+
+ allowed_providers = 'virtualbox|libvirt'
+ allowed_states = 'running|paused|shutoff|not created'
+
+ r = re.compile('^\s*(?P<vagrant_name>\w+)\s+' +
+ '(?P<vm_state>' + allowed_states + ')' +
+ '\s+\((?P<provider>' + allowed_providers + ')\)\s*$')
+
+ for line in out.split('\n'):
+ m = r.match(line)
+ if m:
+ s = m.group('vm_state')
+ if options.verbose:
+ logging.debug('current builder vm status: ' + s)
+ return s
+ if options.verbose:
+ logging.debug('current builder vm status: unknown')
+ return 'unknown'
+
+
+def vm_is_builder_valid(provider):