From 7b57af350fdb25830e0136658324f9c51e49657f Mon Sep 17 00:00:00 2001 From: Steven Hillman Date: Thu, 9 Jul 2015 12:54:53 -0700 Subject: [PATCH] Add support for tagged interfaces and require ovs module Currently the module can't deploy VSM on a management interface that is tagged. This commit adds support for these interfaces by properly handling them from a puppet perspective. Additionally rather than calling similar code to check if OVS exists we call the OVS module directly. Change-Id: I148ee63e354701dbe4db6debc34660e47588ebb7 --- manifests/init.pp | 7 ++++--- manifests/pkgprep_ovscfg.pp | 29 +++++++++++++++-------------- manifests/vsmprep.pp | 2 +- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index a9ee4e8..13307a4 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -76,10 +76,11 @@ class n1k_vsm( $ovsbridge = 'vsm-br' #VSM installation will be done only once. Will not respond to puppet sync - $_phy_ip_addr = inline_template("<%= scope.lookupvar('::ipaddress_${n1k_vsm::phy_if_bridge}') %>") + $_phy_if_bridge = regsubst($n1k_vsm::phy_if_bridge, '[.:-]+', '_', 'G') + $_phy_ip_addr = inline_template("<%= scope.lookupvar('::ipaddress_${_phy_if_bridge}') %>") if $_phy_ip_addr != '' { - $phy_ip_addr = inline_template("<%= scope.lookupvar('::ipaddress_${n1k_vsm::phy_if_bridge}') %>") - $phy_ip_mask = inline_template("<%= scope.lookupvar('::netmask_${n1k_vsm::phy_if_bridge}') %>") + $phy_ip_addr = inline_template("<%= scope.lookupvar('::ipaddress_${_phy_if_bridge}') %>") + $phy_ip_mask = inline_template("<%= scope.lookupvar('::netmask_${_phy_if_bridge}') %>") $gw_intf = $n1k_vsm::phy_gateway include n1k_vsm::pkgprep_ovscfg } diff --git a/manifests/pkgprep_ovscfg.pp b/manifests/pkgprep_ovscfg.pp index 577cd9f..073fd98 100644 --- a/manifests/pkgprep_ovscfg.pp +++ b/manifests/pkgprep_ovscfg.pp @@ -53,17 +53,8 @@ class n1k_vsm::pkgprep_ovscfg unless => '/usr/bin/virsh net-info default | /bin/grep -c \'Autostart: .* no\'', } - package { 'Package_ovs': - ensure => installed, - name => 'openvswitch', - } - - # bring up OVS and perform interface configuration - service { 'Service_ovs': - ensure => running, - name => 'openvswitch', - enable => true, - } + # Ensure OVS is present + require vswitch::ovs package { 'genisoimage': ensure => installed, @@ -110,14 +101,22 @@ class n1k_vsm::pkgprep_ovscfg 'set BOOTPROTO none', 'set ONBOOT yes', "set NAME ${n1k_vsm::phy_if_bridge}", - 'rm IPADDR', + 'set DEFROUTE no', + 'set IPADDR ""', 'rm NETMASK', 'rm GATEWAY', 'set USERCTL no', ], - notify => Service['Service_network'], } - # Make sure that networking comes fine after reboot + exec { 'Flap_n1kv_phy_if': + command => "/sbin/ifdown ${n1k_vsm::phy_if_bridge} && /sbin/ifup ${n1k_vsm::phy_if_bridge}", + require => augeas['Augeas_modify_ifcfg-phy_if_bridge'], + } + exec { 'Flap_n1kv_bridge': + command => "/sbin/ifdown ${n1k_vsm::ovsbridge} && /sbin/ifup ${n1k_vsm::ovsbridge}", + require => augeas['Augeas_modify_ifcfg-ovsbridge'], + } + # Make sure that networking comes fine after reboot- add init file and restart networking file { 'Create_Init_File': replace => 'yes', path => '/etc/init.d/n1kv', @@ -125,6 +124,8 @@ class n1k_vsm::pkgprep_ovscfg group => 'root', mode => '0775', source => 'puppet:///modules/n1k_vsm/n1kv', + require => exec['Flap_n1kv_phy_if', 'Flap_n1kv_bridge'], + notify => Service['Service_network'], } } # endif of if "${n1k_vsm::gw_intf}" != "${n1k_vsm::ovsbridge}" } diff --git a/manifests/vsmprep.pp b/manifests/vsmprep.pp index 3244702..f704666 100644 --- a/manifests/vsmprep.pp +++ b/manifests/vsmprep.pp @@ -80,7 +80,7 @@ class n1k_vsm::vsmprep # Now generate ovf xml file and repackage the iso exec { 'Exec_VSM_Repackage_Script': - command => "/tmp/repackiso.py -i/var/spool/cisco/vsm/${n1k_vsm::n1kv_version}.iso -d${n1k_vsm::vsm_domain_id} -n${n1k_vsm::vsmname} -m${n1k_vsm::mgmtip} -s${n1k_vsm::mgmtnetmask} -g${n1k_vsm::mgmtgateway} -p${n1k_vsm::vsm_admin_passwd} -r${n1k_vsm::vsm_role} -f/var/spool/cisco/vsm/${n1k_vsm::vsm_role}_repacked.iso ", + command => "/tmp/repackiso.py -i${vsm_path}/n1000v-dk9.${n1k_vsm::n1kv_version}.iso -d${n1k_vsm::vsm_domain_id} -n${n1k_vsm::vsmname} -m${n1k_vsm::mgmtip} -s${n1k_vsm::mgmtnetmask} -g${n1k_vsm::mgmtgateway} -p${n1k_vsm::vsm_admin_passwd} -r${n1k_vsm::vsm_role} -f/var/spool/cisco/vsm/${n1k_vsm::vsm_role}_repacked.iso ", unless => "/usr/bin/virsh list --all | grep -c ${n1k_vsm::vsmname}", }