Multiple nic patch with DLutterkort's second comments applied
# HG changeset patch
# User bkearney@localhost.localdomain
# Date 1217876425 14400
# Node ID b0886fb88ca8f5ae62fafd84e727555be259ee55
# Parent 6a207373b908ab521d33cd675c7c8d3854bdc1f1
multiple nic support for virt-image. Added support to allow multiple
interface elements in the virt-image.xml. The command line can specify
any number of -w or -b elements and the tool will add default networks
up to the number of nics specified. It is assumbed that eth0 is the first
item specified eth1 is the second, etc. The user can also specify any number mac address up to the number of networks specified. If they specify less, then they are auto assigned
# FIXME: There must be a better way to check this
diff -r 6a207373b908 -r b0886fb88ca8 virtinst/UnWare.py
--- a/virtinst/UnWare.py Tue Jul 29 11:21:07 2008 -0400
+++ b/virtinst/UnWare.py Mon Aug 04 15:00:25 2008 -0400
@@ -143,7 +143,9 @@
self.label = image.label
self.vcpu = domain.vcpu
self.memory = domain.memory
- self.interface = domain.interface
+ # Make this a boolean based on the existence of one or more
+ # interfaces in the domain
+ self.interface = domain.interface > 0
self.disks = []
for d in boot.drives:
diff -r 6a207373b908 -r b0886fb88ca8 virtinst/cli.py
--- a/virtinst/cli.py Tue Jul 29 11:21:07 2008 -0400
+++ b/virtinst/cli.py Mon Aug 04 15:00:25 2008 -0400
@@ -262,41 +262,46 @@
fail(_("Unknown network type ") + network)
guest.nics.append(n)
-def digest_networks(macs, bridges, networks):
+def digest_networks(macs, bridges, networks, nics = 1):
if type(bridges) != list and bridges != None:
bridges = [ bridges ]
- if type(macs) != list and macs != None:
+ if macs is None:
+ macs = []
+ elif type(macs) != list:
macs = [ macs ]
-
- if type(networks) != list and networks != None:
- networks = [ networks ]
+
+ if networks is None:
+ networks = []
+ elif type(networks) != list:
+ networks = [ macs ]
if bridges is not None and networks != None:
fail(_("Cannot mix both --bridge and --network arguments"))
- # ensure we have equal length lists
+
if bridges != None:
networks = map(lambda b: "bridge:" + b, bridges)
-
- if networks != None:
- if macs != None:
- if len(macs) != len(networks):
- fail(_("Need to pass equal numbers of networks & mac addresses"))
- else:
- macs = [ None ] * len(networks)
+
+ # ensure we have less macs then networks. Auto fill in the remaining
+ # macs
+ if len(macs) > len(networks):
+ fail(_("Need to pass equal numbers of networks & mac addresses"))
else:
- if os.getuid() == 0:
- net = util.default_network()
- networks = [net[0] + ":" + net[1]]
- else:
- networks = ["user"]
- if macs != None:
- if len(macs) > 1:
- fail(_("Need to pass equal numbers of networks & mac addresses"))
- else:
- macs = [ None ]
-
+ for cnt in range (len(macs),len(networks)):
+ macs.append(None)
+
+
+ # Create extra networks up to the number of nics requested
+ if len(macs) < nics:
+ for cnt in range(len(macs),nics):
+ if os.getuid() == 0:
+ net = util.default_network()
+ networks.append(net[0] + ":" + net[1])
+ else:
+ networks.append("user")
+ macs.append(None)
+
return (macs, networks)
_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@redhat.com
https://www.redhat.com/mailman/listinfo/et-mgmt-tools
08-06-2008, 05:15 PM
David Lutterkort
Multiple nic patch with DLutterkort's second comments applied
On Wed, 2008-08-06 at 08:22 -0400, bkearney@redhat.com wrote:
> # HG changeset patch
> # User bkearney@localhost.localdomain
> # Date 1217876425 14400
> # Node ID b0886fb88ca8f5ae62fafd84e727555be259ee55
> # Parent 6a207373b908ab521d33cd675c7c8d3854bdc1f1
> multiple nic support for virt-image. Added support to allow multiple
> interface elements in the virt-image.xml. The command line can specify
> any number of -w or -b elements and the tool will add default networks
> up to the number of nics specified. It is assumbed that eth0 is the first
> item specified eth1 is the second, etc. The user can also specify any number mac address up to the number of networks specified. If they specify less, then they are auto assigned
Sorry for doing this drip-torture style, but I just noticed one more
thing:
That restricts virt-install to one NIC, since virt-install calls
digest_networks w/o a nics argument. The default needs to be something
that indicates 'unbounded/unknown number of nics' - could just make the
default 10000, which clearly is infinite; cleaner default of course is
None or -1
David
_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@redhat.com
https://www.redhat.com/mailman/listinfo/et-mgmt-tools
08-06-2008, 05:52 PM
Bryan Kearney
Multiple nic patch with DLutterkort's second comments applied
David Lutterkort wrote:
On Wed, 2008-08-06 at 08:22 -0400, bkearney@redhat.com wrote:
# HG changeset patch
# User bkearney@localhost.localdomain
# Date 1217876425 14400
# Node ID b0886fb88ca8f5ae62fafd84e727555be259ee55
# Parent 6a207373b908ab521d33cd675c7c8d3854bdc1f1
multiple nic support for virt-image. Added support to allow multiple
interface elements in the virt-image.xml. The command line can specify
any number of -w or -b elements and the tool will add default networks
up to the number of nics specified. It is assumbed that eth0 is the first
item specified eth1 is the second, etc. The user can also specify any number mac address up to the number of networks specified. If they specify less, then they are auto assigned
Sorry for doing this drip-torture style, but I just noticed one more
thing:
That restricts virt-install to one NIC, since virt-install calls
digest_networks w/o a nics argument. The default needs to be something
that indicates 'unbounded/unknown number of nics' - could just make the
default 10000, which clearly is infinite; cleaner default of course is
None or -1
the nics code is used to force a minimum number of nics. This should
have been zero. The "lopping off" of unneeded nics is done in
virt-image. I will patch and re-send.
-- bk
_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@redhat.com
https://www.redhat.com/mailman/listinfo/et-mgmt-tools
08-06-2008, 05:59 PM
Multiple nic patch with DLutterkort's second comments applied
# HG changeset patch
# User bkearney@localhost.localdomain
# Date 1217876425 14400
# Node ID f66deca582937dc181192bdec177ad4b2153c6c2
# Parent 6a207373b908ab521d33cd675c7c8d3854bdc1f1
multiple nic support for virt-image. Added support to allow multiple
interface elements in the virt-image.xml. The command line can specify
any number of -w or -b elements and the tool will add default networks
up to the number of nics specified. It is assumbed that eth0 is the first
item specified eth1 is the second, etc. The user can also specify any number mac address up to the number of networks specified. If they specify less, then they are auto assigned
# FIXME: There must be a better way to check this
diff -r 6a207373b908 -r f66deca58293 virtinst/UnWare.py
--- a/virtinst/UnWare.py Tue Jul 29 11:21:07 2008 -0400
+++ b/virtinst/UnWare.py Mon Aug 04 15:00:25 2008 -0400
@@ -143,7 +143,9 @@
self.label = image.label
self.vcpu = domain.vcpu
self.memory = domain.memory
- self.interface = domain.interface
+ # Make this a boolean based on the existence of one or more
+ # interfaces in the domain
+ self.interface = domain.interface > 0
self.disks = []
for d in boot.drives:
diff -r 6a207373b908 -r f66deca58293 virtinst/cli.py
--- a/virtinst/cli.py Tue Jul 29 11:21:07 2008 -0400
+++ b/virtinst/cli.py Mon Aug 04 15:00:25 2008 -0400
@@ -262,41 +262,46 @@
fail(_("Unknown network type ") + network)
guest.nics.append(n)
-def digest_networks(macs, bridges, networks):
+def digest_networks(macs, bridges, networks, nics = 0):
if type(bridges) != list and bridges != None:
bridges = [ bridges ]
- if type(macs) != list and macs != None:
+ if macs is None:
+ macs = []
+ elif type(macs) != list:
macs = [ macs ]
-
- if type(networks) != list and networks != None:
- networks = [ networks ]
+
+ if networks is None:
+ networks = []
+ elif type(networks) != list:
+ networks = [ macs ]
if bridges is not None and networks != None:
fail(_("Cannot mix both --bridge and --network arguments"))
- # ensure we have equal length lists
+
if bridges != None:
networks = map(lambda b: "bridge:" + b, bridges)
-
- if networks != None:
- if macs != None:
- if len(macs) != len(networks):
- fail(_("Need to pass equal numbers of networks & mac addresses"))
- else:
- macs = [ None ] * len(networks)
+
+ # ensure we have less macs then networks. Auto fill in the remaining
+ # macs
+ if len(macs) > len(networks):
+ fail(_("Need to pass equal numbers of networks & mac addresses"))
else:
- if os.getuid() == 0:
- net = util.default_network()
- networks = [net[0] + ":" + net[1]]
- else:
- networks = ["user"]
- if macs != None:
- if len(macs) > 1:
- fail(_("Need to pass equal numbers of networks & mac addresses"))
- else:
- macs = [ None ]
-
+ for cnt in range (len(macs),len(networks)):
+ macs.append(None)
+
+
+ # Create extra networks up to the number of nics requested
+ if len(macs) < nics:
+ for cnt in range(len(macs),nics):
+ if os.getuid() == 0:
+ net = util.default_network()
+ networks.append(net[0] + ":" + net[1])
+ else:
+ networks.append("user")
+ macs.append(None)
+
return (macs, networks)
_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@redhat.com
https://www.redhat.com/mailman/listinfo/et-mgmt-tools
08-06-2008, 06:58 PM
Cole Robinson
Multiple nic patch with DLutterkort's second comments applied
bkearney@redhat.com wrote:
> # HG changeset patch
> # User bkearney@localhost.localdomain
> # Date 1217876425 14400
> # Node ID f66deca582937dc181192bdec177ad4b2153c6c2
> # Parent 6a207373b908ab521d33cd675c7c8d3854bdc1f1
> multiple nic support for virt-image. Added support to allow multiple
> interface elements in the virt-image.xml. The command line can specify
> any number of -w or -b elements and the tool will add default networks
> up to the number of nics specified. It is assumbed that eth0 is the first
> item specified eth1 is the second, etc. The user can also specify any number mac address up to the number of networks specified. If they specify less, then they are auto assigned
>