return _FS_UNAVAIL
+def _GetInstNicVLan(ctx, index, _):
+ """Get a NIC's VLAN.
+
+ @type ctx: L{InstanceQueryData}
+ @type index: int
+ @param index: NIC index
+
+ """
+ assert len(ctx.inst_nicparams) >= index
+
+ nicparams = ctx.inst_nicparams[index]
+
+ if nicparams[constants.NIC_MODE] == constants.NIC_MODE_OVS:
+ return nicparams[constants.NIC_VLAN]
+ else:
+ return _FS_UNAVAIL
+
+
def _GetInstAllNicNetworkNames(ctx, inst):
"""Get all network names for an instance.
return result
+def _GetInstAllNicVlans(ctx, inst):
+ """Get all network VLANs of an instance.
+
+ @type ctx: L{InstanceQueryData}
+ @type inst: L{objects.Instance}
+ @param inst: Instance object
+
+ """
+ assert len(ctx.inst_nicparams) == len(inst.nics)
+
+ result = []
+
+ for nicp in ctx.inst_nicparams:
+ if nicp[constants.NIC_MODE] == constants.NIC_MODE_OVS:
+ result.append(nicp[constants.NIC_VLAN])
+ else:
+ result.append(None)
+
+ assert len(result) == len(inst.nics)
+
+ return result
+
+
def _GetInstNicParam(name):
"""Build function for retrieving a NIC parameter.
"List containing each network interface's link"), IQ_CONFIG, 0,
lambda ctx, inst: [nicp[constants.NIC_LINK]
for nicp in ctx.inst_nicparams]),
+ (_MakeField("nic.vlans", "NIC_VLANs", QFT_OTHER,
+ "List containing each network interface's VLAN"),
+ IQ_CONFIG, 0, _GetInstAllNicVlans),
(_MakeField("nic.bridges", "NIC_bridges", QFT_OTHER,
"List containing each network interface's bridge"),
IQ_CONFIG, 0, _GetInstAllNicBridges),
(_MakeField("nic.bridge/%s" % i, "NicBridge/%s" % i, QFT_TEXT,
"Bridge of %s network interface" % numtext),
IQ_CONFIG, 0, _GetInstNic(i, _GetInstNicBridge)),
+ (_MakeField("nic.vlan/%s" % i, "NicVLAN/%s" % i, QFT_TEXT,
+ "VLAN of %s network interface" % numtext),
+ IQ_CONFIG, 0, _GetInstNic(i, _GetInstNicVLan)),
(_MakeField("nic.network/%s" % i, "NicNetwork/%s" % i, QFT_TEXT,
"Network of %s network interface" % numtext),
IQ_CONFIG, 0, _GetInstNic(i, _GetInstNicNetwork)),