X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=xenserver%2Fopt_xensource_libexec_interface-reconfigure;h=f756bab7bc30350a26912766b071ca1eb667a5af;hb=7cf8b2660f9813fe080a3f4fcc975099cb36417a;hp=a350952c33c927ebcf85126163e3db5a5daba799;hpb=1fa5a1050f4e148575d418bf16343a39357ada39;p=openvswitch diff --git a/xenserver/opt_xensource_libexec_interface-reconfigure b/xenserver/opt_xensource_libexec_interface-reconfigure index a350952c..f756bab7 100755 --- a/xenserver/opt_xensource_libexec_interface-reconfigure +++ b/xenserver/opt_xensource_libexec_interface-reconfigure @@ -33,6 +33,8 @@ --pif A PIF reference within the session. --pif-uuid The UUID of a PIF. --force An interface name. + --root-prefix=DIR Use DIR as alternate root directory (for testing). + --no-syslog Write log messages to stderr instead of system log. """ # Notes: @@ -88,7 +90,7 @@ def check_allowed(pif): pifrec = db().get_pif_record(pif) try: - f = open("/proc/ardence") + f = open(root_prefix() + "/proc/ardence") macline = filter(lambda x: x.startswith("HWaddr:"), f.readlines()) f.close() if len(macline) == 1: @@ -121,20 +123,20 @@ def netdev_remap_name(pif, already_renamed=[]): def get_netdev_mac(device): try: - return read1("/sys/class/net/%s/address" % device) + return read1("%s/sys/class/net/%s/address" % (root_prefix(), device)) except: # Probably no such device. return None def get_netdev_tx_queue_len(device): try: - return int(read1("/sys/class/net/%s/tx_queue_len" % device)) + return int(read1("%s/sys/class/net/%s/tx_queue_len" % (root_prefix(), device))) except: # Probably no such device. return None def get_netdev_by_mac(mac): - for device in os.listdir("/sys/class/net"): + for device in os.listdir(root_prefix() + "/sys/class/net"): dev_mac = get_netdev_mac(device) if (dev_mac and mac.lower() == dev_mac.lower() and get_netdev_tx_queue_len(device)): @@ -185,7 +187,7 @@ def ifdown(netdev): if not netdev_exists(netdev): log("ifdown: device %s does not exist, ignoring" % netdev) return - if not os.path.exists("/etc/sysconfig/network-scripts/ifcfg-%s" % netdev): + if not os.path.exists("%s/etc/sysconfig/network-scripts/ifcfg-%s" % (root_prefix(), netdev)): log("ifdown: device %s exists but ifcfg-%s does not" % (netdev,netdev)) run_command(["/sbin/ifconfig", netdev, 'down']) return @@ -193,7 +195,7 @@ def ifdown(netdev): def ifup(netdev): """Bring up a network interface""" - if not os.path.exists("/etc/sysconfig/network-scripts/ifcfg-%s" % netdev): + if not os.path.exists(root_prefix() + "/etc/sysconfig/network-scripts/ifcfg-%s" % netdev): raise Error("ifup: device %s exists but ifcfg-%s does not" % (netdev,netdev)) run_command(["/sbin/ifup", netdev]) @@ -238,7 +240,7 @@ def ipdev_configure_static_routes(interface, oc, f): # The key is not present, i.e. there are no static routes lines = [] - child = ConfigurationFile("/etc/sysconfig/network-scripts/route-%s" % interface) + child = ConfigurationFile("%s/etc/sysconfig/network-scripts/route-%s" % (root_prefix(), interface)) child.write("# DO NOT EDIT: This file (%s) was autogenerated by %s\n" % \ (os.path.basename(child.path()), os.path.basename(sys.argv[0]))) @@ -258,7 +260,7 @@ def ipdev_open_ifcfg(pif): log("Writing network configuration for %s" % ipdev) - f = ConfigurationFile("/etc/sysconfig/network-scripts/ifcfg-%s" % ipdev) + f = ConfigurationFile("%s/etc/sysconfig/network-scripts/ifcfg-%s" % (root_prefix(), ipdev)) f.write("# DO NOT EDIT: This file (%s) was autogenerated by %s\n" % \ (os.path.basename(f.path()), os.path.basename(sys.argv[0]))) @@ -284,7 +286,8 @@ def ipdev_configure_network(pif, dp): """ pifrec = db().get_pif_record(pif) - nwrec = db().get_network_record(pifrec['network']) + nw = pifrec['network'] + nwrec = db().get_network_record(nw) ipdev = pif_ipdev_name(pif) @@ -319,12 +322,13 @@ def ipdev_configure_network(pif, dp): if len(offload): f.write("ETHTOOL_OFFLOAD_OPTS=\"%s\"\n" % str.join(" ", offload)) - mtu = mtu_setting(nwrec['other_config']) - if mtu: - f.write("MTU=%s\n" % mtu) - ipdev_configure_static_routes(ipdev, nwrec['other_config'], f) + mtu = mtu_setting(nw, "Network", nwrec['other_config']) + if mtu: + f.write("MTU=%s\n" % mtu) + + if pifrec.has_key('DNS') and pifrec['DNS'] != "": ServerList = pifrec['DNS'].split(",") for i in range(len(ServerList)): f.write("DNS%d=%s\n" % (i+1, ServerList[i])) @@ -382,7 +386,7 @@ def ipdev_configure_network(pif, dp): is_gatewaydev = defaultroute_pif == pif if is_dnsdev or is_gatewaydev: - fnetwork = ConfigurationFile("/etc/sysconfig/network") + fnetwork = ConfigurationFile(root_prefix() + "/etc/sysconfig/network") for line in fnetwork.readlines(): if is_dnsdev and line.lstrip().startswith('DNSDEV='): fnetwork.write('DNSDEV=%s\n' % ipdev) @@ -441,7 +445,7 @@ def action_up(pif, force): dp.post() # Update /etc/issue (which contains the IP address of the management interface) - os.system("/sbin/update-issue") + os.system(root_prefix() + "/sbin/update-issue") f.commit() except Error, e: @@ -502,7 +506,7 @@ def action_force_rewrite(bridge, config): log("Configuring %s using %s configuration" % (bridge, mode)) - f = ConfigurationFile(dbcache_file) + f = ConfigurationFile(root_prefix() + dbcache_file) pif_uuid = getUUID() network_uuid = getUUID() @@ -580,6 +584,8 @@ def main(argv=None): "force-interface=", "management", "mac=", "device=", "mode=", "ip=", "netmask=", "gateway=", + "root-prefix=", + "no-syslog", "help" ] arglist, args = getopt.gnu_getopt(argv[1:], shortops, longops) except getopt.GetoptError, msg: @@ -600,12 +606,17 @@ def main(argv=None): force_management = True elif o in ["--mac", "--device", "--mode", "--ip", "--netmask", "--gateway"]: force_rewrite_config[o[2:]] = a + elif o == "--root-prefix": + set_root_prefix(a) + elif o == "--no-syslog": + set_log_destination("stderr") elif o == "-h" or o == "--help": print __doc__ % {'command-name': os.path.basename(argv[0])} return 0 - syslog.openlog(os.path.basename(argv[0])) - log("Called as " + str.join(" ", argv)) + if get_log_destination() == "syslog": + syslog.openlog(os.path.basename(argv[0])) + log("Called as " + str.join(" ", argv)) if len(args) < 1: raise Usage("Required option not present")