This patch fixes the problem as shown below. * virsh dumpxml failed with vlan1292 in inactive status * virt-manager failed to view vlan1292 interface details. RedHat Bugzilla:#1398143
Following is steps to reproduce in virsh. 1) setup 802.1q vlan tagging using ifcfg-files #cat > /etc/sysconfig/network-scripts/ifcfg-vlan1292 < EOF VLAN=yes VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD DEVICE=vlan1292 PHYSDEV=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=10.254.5.254 NETMASK=255.255.255.0 TYPE=Ethernet NM_CONTROLLED=no EOF 2) active vlan interface and dumpxml #ifup vlan1292 #virsh iface-dumpxml vlan1292 <interface type='vlan' name='vlan1292'> <protocol family='ipv4'> <ip address='10.254.5.254' prefix='24'/> </protocol> <protocol family='ipv6'> <ip address='fe80::4:21ff:fe00:b300' prefix='64'/> </protocol> <link speed='1000' state='up'/> <vlan tag='1292'> <interface name='eth0'/> </vlan> </interface> 3) deactive vlan interface and dumpxml #ifdown vlan1292 #virsh iface-dumpxml vlan1292 error: XML error: vlan interface misses the tag attribute Once applied this patch, it's will be successfully returned the results: #virsh iface-dumpxml vlan1292 <interface type='vlan' name='vlan1292'> <start mode='onboot'/> <protocol family='ipv4'> <ip address='10.254.5.254' prefix='24'/> </protocol> <vlan tag='1292'> <interface name='eth0'/> </vlan> </interface> 4) And netcf would turn above iface-dumpxml to the file /etc/sysconfig/network-scripts/ifcfg-vlan192 #virsh iface-define vlan1292.xml Signed-off-by: Leno Hou <leno...@gmail.com> --- data/xml/redhat-get.xsl | 20 ++++++++++++++++---- data/xml/redhat-put.xsl | 21 ++++++++++++++++----- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/data/xml/redhat-get.xsl b/data/xml/redhat-get.xsl index ec56f01..9e18c62 100644 --- a/data/xml/redhat-get.xsl +++ b/data/xml/redhat-get.xsl @@ -46,11 +46,23 @@ </xsl:template> <xsl:template name="vlan-interface-common"> - <xsl:variable name="iface" select="pathcomponent:escape(concat(vlan/interface/@name, '.', vlan/@tag))"/> + <xsl:variable name="vlan-name" select="/interface/@name"/> + <xsl:choose> + <xsl:when test="contains($vlan-name, '.')"> + <xsl:variable name="iface" select="pathcomponent:escape(concat(vlan/interface/@name, '.', vlan/@tag))"/> + <xsl:attribute name="path">/files/etc/sysconfig/network-scripts/ifcfg-<xsl:value-of select="$iface"/></xsl:attribute> + <node label="DEVICE" value="{$iface}"/> + <node label="VLAN" value="yes"/> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="iface" select="/interface/@name"/> + <xsl:attribute name="path">/files/etc/sysconfig/network-scripts/ifcfg-<xsl:value-of select="$iface"/></xsl:attribute> + <node label="DEVICE" value="{$iface}"/> + <node label="PHYSDEV" value="{vlan/interface/@name}"/> + <node label="VLAN" value="yes"/> + </xsl:otherwise> + </xsl:choose> - <xsl:attribute name="path">/files/etc/sysconfig/network-scripts/ifcfg-<xsl:value-of select="$iface"/></xsl:attribute> - <node label="DEVICE" value="{$iface}"/> - <node label="VLAN" value="yes"/> </xsl:template> <xsl:template name='bare-vlan-interface'> diff --git a/data/xml/redhat-put.xsl b/data/xml/redhat-put.xsl index 89145e5..c6f9f65 100644 --- a/data/xml/redhat-put.xsl +++ b/data/xml/redhat-put.xsl @@ -56,11 +56,22 @@ <xsl:template name="vlan-device"> <xsl:variable name="name" select="node[@label = 'DEVICE']/@value"/> - <xsl:variable name="device" select="substring-before($name, '.')"/> - <xsl:variable name="tag" select="substring-after($name, '.')"/> - <vlan tag="{$tag}"> - <interface name="{$device}"/> - </vlan> + <xsl:choose> + <xsl:when test="contains($name, '.')"> + <xsl:variable name="device" select="substring-before($name, '.')"/> + <xsl:variable name="tag" select="substring-after($name, '.')"/> + <vlan tag="{$tag}"> + <interface name="{$device}"/> + </vlan> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="device" select="node[@label = 'PHYSDEV']/@value"/> + <xsl:variable name="tag" select="translate($name, translate($name, '0123456789', ''), '')"/> + <vlan tag="{$tag}"> + <interface name="{$device}"/> + </vlan> + </xsl:otherwise> + </xsl:choose> </xsl:template> <!-- -- 2.7.4 _______________________________________________ netcf-devel mailing list -- netcf-devel@lists.fedorahosted.org To unsubscribe send an email to netcf-devel-le...@lists.fedorahosted.org