diff options
author | tlh20@labyrinth.cl.cam.ac.uk <tlh20@labyrinth.cl.cam.ac.uk> | 2003-09-26 21:26:56 +0000 |
---|---|---|
committer | tlh20@labyrinth.cl.cam.ac.uk <tlh20@labyrinth.cl.cam.ac.uk> | 2003-09-26 21:26:56 +0000 |
commit | 7c6aa6b17a81b7930bd6753267f02b578fd56bf8 (patch) | |
tree | acee53ad6ff7dc43d59499578dfa812b17344994 | |
parent | 4593a219f55b27bdd1afba0e8d9381b0a5627a45 (diff) | |
download | xen-7c6aa6b17a81b7930bd6753267f02b578fd56bf8.tar.gz xen-7c6aa6b17a81b7930bd6753267f02b578fd56bf8.tar.bz2 xen-7c6aa6b17a81b7930bd6753267f02b578fd56bf8.zip |
bitkeeper revision 1.466 (3f74af20jRDu98OIOzjbFFgBNLz47g)
Many files:
Add -x option to xenctl to give number to subst for + in patterns
8 files changed, 53 insertions, 29 deletions
diff --git a/tools/control/src/org/xenoserver/cmdline/ParseDomainNew.java b/tools/control/src/org/xenoserver/cmdline/ParseDomainNew.java index 132c9eff3b..a59fe48030 100644 --- a/tools/control/src/org/xenoserver/cmdline/ParseDomainNew.java +++ b/tools/control/src/org/xenoserver/cmdline/ParseDomainNew.java @@ -27,6 +27,7 @@ public class ParseDomainNew extends CommandParser { String nw_mask = getStringParameter(args, 'm', d.nwMask); String nw_nfs_server = getStringParameter(args, 's', d.nwNFSServer); String nw_host = getStringParameter(args, 'h', d.nwHost); + int subst = getIntParameter(args, 'x', -1); d.describe(); @@ -47,7 +48,8 @@ public class ParseDomainNew extends CommandParser { nw_mask, nw_nfs_server, nw_host, - usr_dev); + usr_dev, + subst); c.execute(); String[] output = c.output(); for (int i = 0; i < output.length; i++) { @@ -57,7 +59,7 @@ public class ParseDomainNew extends CommandParser { if (root_dev.startsWith("/dev/sda") || root_dev.startsWith("/dev/hda")) { String real_root = StringPattern.parse(root_dev).resolve(c.domain_id()); String device = real_root.substring(real_root.indexOf('/',1)+1); - CommandPhysicalGrant cg = new CommandPhysicalGrant(d,c.domain_id(),device,Mode.READ_WRITE,false); + CommandPhysicalGrant cg = new CommandPhysicalGrant(d,c.domain_id(),device,Mode.READ_WRITE,false,subst); String output2 = cg.execute(); if ( output2 != null ) { System.out.println(output2); @@ -67,7 +69,7 @@ public class ParseDomainNew extends CommandParser { if (usr_dev != null && ((usr_dev.startsWith("/dev/sda")) || usr_dev.startsWith("/dev/hda"))) { String real_usr = StringPattern.parse(usr_dev).resolve(c.domain_id()); String device = real_usr.substring(real_usr.indexOf('/',1)+1); - CommandPhysicalGrant cg = new CommandPhysicalGrant(d,c.domain_id(),device,Mode.READ_ONLY,false); + CommandPhysicalGrant cg = new CommandPhysicalGrant(d,c.domain_id(),device,Mode.READ_ONLY,false,subst); String output2 = cg.execute(); if ( output2 != null ) { System.out.println(output2); @@ -80,7 +82,7 @@ public class ParseDomainNew extends CommandParser { } public String getUsage() { - return "[-n<domain_name>] [-k<size>] [-i<image>] [-v<num_vifs>] [-r<initrd>] [-d<root_device>] [-t<root_mount_args>] [-u<usr_device>] [-f<nfs_root>] [-s<nfs_boot_server>] [-4<ipv4_boot_address>] [-g<ipv4_boot_gateway>] [-m<ipv4_boot_netmask>] [-h<hostname>] [-a<args>]"; + return "[-n<domain_name>] [-k<size>] [-i<image>] [-v<num_vifs>] [-r<initrd>] [-d<root_device>] [-t<root_mount_args>] [-u<usr_device>] [-f<nfs_root>] [-s<nfs_boot_server>] [-4<ipv4_boot_address>] [-g<ipv4_boot_gateway>] [-m<ipv4_boot_netmask>] [-h<hostname>] [-a<args>] [-x<subst>]"; } public String getHelpText() { @@ -98,6 +100,7 @@ public class ParseDomainNew extends CommandParser { + " -t Root mount args (e.g ro) root_args\n" + " -u Usr dev/path (e.g /dev/hda3, server:path)usr_device\n" + " -a Additional boot parameters args\n" + + " -x Number to substitute for + if not domain id\n" + "\n" + "Networking options:\n" + " -f NFS root (if /dev/nfs specified) nw_nfs_root\n" diff --git a/tools/control/src/org/xenoserver/cmdline/ParsePhysicalGrant.java b/tools/control/src/org/xenoserver/cmdline/ParsePhysicalGrant.java index 521d2e740a..f1488cd5eb 100644 --- a/tools/control/src/org/xenoserver/cmdline/ParsePhysicalGrant.java +++ b/tools/control/src/org/xenoserver/cmdline/ParsePhysicalGrant.java @@ -14,6 +14,7 @@ public class ParsePhysicalGrant extends CommandParser { boolean force = getFlagParameter(args, 'f'); String partition_name = getStringParameter(args, 'p', ""); boolean write = getFlagParameter(args, 'w'); + int subst = getIntParameter(args, 'x', -1); if (domain_id == 0) { throw new ParseFailedException("Expected -n<domain_id>"); @@ -32,7 +33,7 @@ public class ParsePhysicalGrant extends CommandParser { // Initialise the partition manager and look up the partition loadState(); String output = - new CommandPhysicalGrant(d, domain_id, partition_name, mode, force) + new CommandPhysicalGrant(d, domain_id, partition_name, mode, force,subst) .execute(); if (output != null) { System.out.println(output); @@ -44,7 +45,7 @@ public class ParsePhysicalGrant extends CommandParser { } public String getUsage() { - return "-p<partition_name> [-n<domain_id>] [-f] [-w]"; + return "-p<partition_name> [-n<domain_id>] [-f] [-w] [-x<subst>]"; } public String getHelpText() { diff --git a/tools/control/src/org/xenoserver/cmdline/ParsePhysicalRevoke.java b/tools/control/src/org/xenoserver/cmdline/ParsePhysicalRevoke.java index e53a16ab39..a2490256a7 100644 --- a/tools/control/src/org/xenoserver/cmdline/ParsePhysicalRevoke.java +++ b/tools/control/src/org/xenoserver/cmdline/ParsePhysicalRevoke.java @@ -11,6 +11,7 @@ public class ParsePhysicalRevoke extends CommandParser { throws ParseFailedException, CommandFailedException { int domain_id = getIntParameter(args, 'n', d.domainNumber); String partition_name = getStringParameter(args, 'p', ""); + int subst = getIntParameter(args, 'x', -1); if (domain_id == 0) { throw new ParseFailedException("Expected -n<domain_id>"); @@ -21,7 +22,7 @@ public class ParsePhysicalRevoke extends CommandParser { // Initialise the partition manager and look up the partition loadState(); - String output = new CommandPhysicalRevoke(d, domain_id, partition_name).execute(); + String output = new CommandPhysicalRevoke(d, domain_id, partition_name, subst).execute(); if (output != null) { System.out.println(output); } @@ -32,7 +33,7 @@ public class ParsePhysicalRevoke extends CommandParser { } public String getUsage() { - return "-p<partition_name> [-n<domain_id>]"; + return "-p<partition_name> [-n<domain_id>] [-x<subst>]"; } public String getHelpText() { diff --git a/tools/control/src/org/xenoserver/cmdline/ParseVbdCreate.java b/tools/control/src/org/xenoserver/cmdline/ParseVbdCreate.java index e002fcf4d0..ca59ee3c71 100644 --- a/tools/control/src/org/xenoserver/cmdline/ParseVbdCreate.java +++ b/tools/control/src/org/xenoserver/cmdline/ParseVbdCreate.java @@ -16,6 +16,7 @@ public class ParseVbdCreate extends CommandParser { int domain_id = getIntParameter(args, 'n', d.domainNumber); int vbd_num = getIntParameter(args, 'v', -1); boolean write = getFlagParameter(args, 'w'); + int subst = getIntParameter(args, 'x', -1); if (vd_key.equals("") && partition_name.equals("")) { throw new ParseFailedException("Expected -k<key> or -p<partition>"); @@ -37,7 +38,7 @@ public class ParseVbdCreate extends CommandParser { loadState(); String output; if (vd_key.equals("")) { - output = new CommandVbdCreatePhysical(d, partition_name, domain_id, vbd_num, mode ).execute(); + output = new CommandVbdCreatePhysical(d, partition_name, domain_id, vbd_num, mode, subst ).execute(); } else { output = new CommandVbdCreate(vd_key, domain_id, vbd_num, mode).execute(); @@ -53,7 +54,7 @@ public class ParseVbdCreate extends CommandParser { } public String getUsage() { - return "{-k<key>|-p<partition} -v<vbd_num> [-n<domain_id>] [-w]"; + return "{-k<key>|-p<partition} -v<vbd_num> [-n<domain_id>] [-w] [-x<subst>]"; } public String getHelpText() { diff --git a/tools/control/src/org/xenoserver/control/CommandDomainNew.java b/tools/control/src/org/xenoserver/control/CommandDomainNew.java index a5d69c3d4a..10fa06b869 100644 --- a/tools/control/src/org/xenoserver/control/CommandDomainNew.java +++ b/tools/control/src/org/xenoserver/control/CommandDomainNew.java @@ -52,6 +52,8 @@ public class CommandDomainNew extends Command { private String[] output; /** Domain ID created. */ private int domain_id; + /** Number to substitute for + (-1 => use domain_id) */ + private int subst; /** * @return Output from domain creation. @@ -99,8 +101,9 @@ public class CommandDomainNew extends Command { String nw_gw, String nw_mask, String nw_nfs_server, - String nw_host) { - this(d,name,size,image,initrd,vifs,bargs,root_dev,root_args,nfs_root_path,nw_ip,nw_gw,nw_mask,nw_nfs_server,nw_host,null); + String nw_host, + int subst) { + this(d,name,size,image,initrd,vifs,bargs,root_dev,root_args,nfs_root_path,nw_ip,nw_gw,nw_mask,nw_nfs_server,nw_host,null,subst); } public CommandDomainNew( @@ -119,7 +122,8 @@ public class CommandDomainNew extends Command { String nw_mask, String nw_nfs_server, String nw_host, - String usr_dev) { + String usr_dev, + int subst) { this.d = d; this.name = name; this.size = size; @@ -136,6 +140,7 @@ public class CommandDomainNew extends Command { this.nw_nfs_server = nw_nfs_server; this.nw_host = nw_host; this.usr_dev = usr_dev; + this.subst = subst; } /** @@ -211,8 +216,10 @@ public class CommandDomainNew extends Command { + " domains"); } + if (subst == -1) subst = domain_id; + /* Set up boot parameters to pass to xi_build. */ - bargs = StringPattern.parse(bargs).resolve(domain_id) + " "; + bargs = StringPattern.parse(bargs).resolve(subst) + " "; if (root_dev.equals("/dev/nfs")) { if (vifs == 0) { throw new CommandFailedException("Cannot use NFS root without VIFs configured"); @@ -225,27 +232,27 @@ public class CommandDomainNew extends Command { } bargs = (bargs - + " root=/dev/nfs " + StringPattern.parse(root_args).resolve(domain_id) + " " + + " root=/dev/nfs " + StringPattern.parse(root_args).resolve(subst) + " " + "nfsroot=" + StringPattern.parse(nfs_root_path).resolve( - domain_id) + subst) + " "); } else { bargs = (bargs + " root=" - + StringPattern.parse(root_dev).resolve(domain_id) - + " " + StringPattern.parse(root_args).resolve(domain_id) + " "); + + StringPattern.parse(root_dev).resolve(subst) + + " " + StringPattern.parse(root_args).resolve(subst) + " "); } if (usr_dev != null && !usr_dev.equals("")) { - bargs = bargs + " usr=" + StringPattern.parse(usr_dev).resolve(domain_id) + " "; + bargs = bargs + " usr=" + StringPattern.parse(usr_dev).resolve(subst) + " "; } if (vifs > 0) { domain_ip = - InetAddressPattern.parse(nw_ip).resolve(domain_id); + InetAddressPattern.parse(nw_ip).resolve(subst); /* if (nw_host == null) { try { nw_host = @@ -263,18 +270,18 @@ public class CommandDomainNew extends Command { ? "" : (InetAddressPattern .parse(nw_nfs_server) - .resolve(domain_id))) + .resolve(subst))) + ":" + ((nw_gw == null || nw_gw.equals("")) ? "" : (InetAddressPattern .parse(nw_gw) - .resolve(domain_id))) + .resolve(subst))) + ":" + ((nw_mask == null || nw_mask.equals("")) ? "" : InetAddressPattern.parse(nw_mask).resolve( - domain_id)) + subst)) + ":" + ((nw_host == null) ? "" : nw_host) + ":eth0:off " diff --git a/tools/control/src/org/xenoserver/control/CommandPhysicalGrant.java b/tools/control/src/org/xenoserver/control/CommandPhysicalGrant.java index 9ce195d7d1..2e80e7fbca 100644 --- a/tools/control/src/org/xenoserver/control/CommandPhysicalGrant.java +++ b/tools/control/src/org/xenoserver/control/CommandPhysicalGrant.java @@ -14,6 +14,8 @@ public class CommandPhysicalGrant extends Command { private Mode mode; /** True to force grant */ private boolean force; + /** Number to substitute for + (-1 => use domain_id) */ + private int subst; /** * Constructor for CommandPhysicalGrant. @@ -28,12 +30,14 @@ public class CommandPhysicalGrant extends Command { int domain_id, String partition, Mode mode, - boolean force) { + boolean force, + int subst) { this.d = d; this.domain_id = domain_id; this.partition_name = partition; this.mode = mode; this.force = force; + this.subst = subst; } /** @@ -42,7 +46,7 @@ public class CommandPhysicalGrant extends Command { public String execute() throws CommandFailedException { Runtime r = Runtime.getRuntime(); String output = null; - String resolved = StringPattern.parse(partition_name).resolve(domain_id); + String resolved = StringPattern.parse(partition_name).resolve(subst == -1 ? domain_id : subst); String resolved2 = d.runCommand(d.xiToolsDir + Settings.XI_HELPER + " expand " + resolved).trim(); Partition partition = PartitionManager.IT.getPartition(resolved2); diff --git a/tools/control/src/org/xenoserver/control/CommandPhysicalRevoke.java b/tools/control/src/org/xenoserver/control/CommandPhysicalRevoke.java index 82766e6d80..983019b891 100644 --- a/tools/control/src/org/xenoserver/control/CommandPhysicalRevoke.java +++ b/tools/control/src/org/xenoserver/control/CommandPhysicalRevoke.java @@ -10,6 +10,8 @@ public class CommandPhysicalRevoke extends Command { private int domain_id; /** Partition to revoke access to */ private String partition_name; + /** Number to substitute for + (-1 => use domain_id) */ + private int subst; /** * Constructor for CommandPhysicalRevoke. @@ -17,10 +19,11 @@ public class CommandPhysicalRevoke extends Command { * @param domain_id Domain to revoke access from. * @param partition Partition to revoke access to. */ - public CommandPhysicalRevoke(Defaults d, int domain_id, String partition) { + public CommandPhysicalRevoke(Defaults d, int domain_id, String partition, int subst) { this.d = d; this.domain_id = domain_id; this.partition_name = partition; + this.subst = subst; } /** @@ -29,7 +32,7 @@ public class CommandPhysicalRevoke extends Command { public String execute() throws CommandFailedException { Runtime r = Runtime.getRuntime(); String output = null; - String resolved = StringPattern.parse(partition_name).resolve(domain_id); + String resolved = StringPattern.parse(partition_name).resolve(subst == -1 ? domain_id : subst); String resolved2 = d.runCommand(d.xiToolsDir + Settings.XI_HELPER + " expand " + resolved).trim(); Partition partition = PartitionManager.IT.getPartition(resolved2); diff --git a/tools/control/src/org/xenoserver/control/CommandVbdCreatePhysical.java b/tools/control/src/org/xenoserver/control/CommandVbdCreatePhysical.java index 9e974b2bd9..186514a4f0 100644 --- a/tools/control/src/org/xenoserver/control/CommandVbdCreatePhysical.java +++ b/tools/control/src/org/xenoserver/control/CommandVbdCreatePhysical.java @@ -17,6 +17,8 @@ public class CommandVbdCreatePhysical extends Command { private int vbd_num; /** Access mode to grant. */ private Mode mode; + /** Number to substitute for + (-1 => use domain_id) */ + private int subst; /** * Constructor for CommandVbdCreate. @@ -30,19 +32,21 @@ public class CommandVbdCreatePhysical extends Command { String partition, int domain_id, int vbd_num, - Mode mode) { + Mode mode, + int subst) { this.d = d; this.partition_name = partition; this.domain_id = domain_id; this.vbd_num = vbd_num; this.mode = mode; + this.subst = subst; } /** * @see org.xenoserver.control.Command#execute() */ public String execute() throws CommandFailedException { - String resolved = StringPattern.parse(partition_name).resolve(domain_id); + String resolved = StringPattern.parse(partition_name).resolve(subst == -1 ? domain_id : subst); String resolved2 = d.runCommand(d.xiToolsDir + Settings.XI_HELPER + " expand " + resolved).trim(); Partition partition = PartitionManager.IT.getPartition(resolved2); if (partition == null) { |