def digest_networks(conn, macs, bridges, networks, nics = 0): macs = listify(macs) bridges = listify(bridges) networks = listify(networks) if bridges and networks: fail(_("Cannot mix both --bridge and --network arguments")) if bridges: networks = map(lambda b: "bridge:" + b, bridges) # With just one mac, create a default network if one is not specified. if len(macs) == 1 and len(networks) == 0: if User.current().has_priv(User.PRIV_CREATE_NETWORK, conn.getURI()): net = _util.default_network(conn) networks.append(net[0] + ":" + net[1]) else: networks.append(VirtualNetworkInterface.TYPE_USER) # ensure we have less macs then networks, otherwise autofill the mac list if len(macs) > len(networks): fail(_("Cannot pass more mac addresses than networks.")) else: for dummy in range (len(macs),len(networks)): macs.append(None) # Create extra networks up to the number of nics requested if len(macs) < nics: for dummy in range(len(macs),nics): if User.current().has_priv(User.PRIV_CREATE_NETWORK, conn.getURI()): net = _util.default_network(conn) networks.append(net[0] + ":" + net[1]) else: networks.append(VirtualNetworkInterface.TYPE_USER) macs.append(None) net_init_dicts = [] for i in range(0, len(networks)): mac = macs[i] netstr = networks[i] net_init_dicts.append(parse_network_opts(conn, mac, netstr)) return net_init_dicts
def getConnection(connect): if (connect and not User.current().has_priv(User.PRIV_CREATE_DOMAIN, connect)): fail(_("Must be root to create Xen guests")) # Hack to facilitate remote unit testing connect = check_if_test_uri_remote(connect) logging.debug("Requesting libvirt URI %s" % (connect or "default")) conn = open_connection(connect) logging.debug("Received libvirt URI %s" % conn.getURI()) return conn
def default_connection(): if os.path.exists('/var/lib/xend'): if os.path.exists('/dev/xen/evtchn'): return 'xen' if os.path.exists("/proc/xen"): return 'xen' from virtinst import User if os.path.exists("/usr/bin/qemu") or \ os.path.exists("/usr/bin/qemu-kvm") or \ os.path.exists("/usr/bin/kvm") or \ os.path.exists("/usr/bin/xenner"): if User.current().has_priv(User.PRIV_QEMU_SYSTEM): return "qemu:///system" else: return "qemu:///session" return None