aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortlh20@labyrinth.cl.cam.ac.uk <tlh20@labyrinth.cl.cam.ac.uk>2003-09-26 21:26:56 +0000
committertlh20@labyrinth.cl.cam.ac.uk <tlh20@labyrinth.cl.cam.ac.uk>2003-09-26 21:26:56 +0000
commit7c6aa6b17a81b7930bd6753267f02b578fd56bf8 (patch)
treeacee53ad6ff7dc43d59499578dfa812b17344994
parent4593a219f55b27bdd1afba0e8d9381b0a5627a45 (diff)
downloadxen-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
-rw-r--r--tools/control/src/org/xenoserver/cmdline/ParseDomainNew.java11
-rw-r--r--tools/control/src/org/xenoserver/cmdline/ParsePhysicalGrant.java5
-rw-r--r--tools/control/src/org/xenoserver/cmdline/ParsePhysicalRevoke.java5
-rw-r--r--tools/control/src/org/xenoserver/cmdline/ParseVbdCreate.java5
-rw-r--r--tools/control/src/org/xenoserver/control/CommandDomainNew.java33
-rw-r--r--tools/control/src/org/xenoserver/control/CommandPhysicalGrant.java8
-rw-r--r--tools/control/src/org/xenoserver/control/CommandPhysicalRevoke.java7
-rw-r--r--tools/control/src/org/xenoserver/control/CommandVbdCreatePhysical.java8
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) {