1 # == Class ovsdpdk::install_ovs_dpdk
3 # Installs ovs-dpdk service together with it's configuration file
4 # it also deploys qemu-kvm wrapper responsible for enabling some vhostforce
5 # options and setting huge pages into shared mode
7 class ovsdpdk::install_ovs_dpdk (
8 $networking_ovs_dpdk_dir = $::ovsdpdk::params::networking_ovs_dpdk_dir,
9 $plugin_dir = $::ovsdpdk::params::plugin_dir,
10 $ovs_dir = $::ovsdpdk::params::ovs_dir,
11 $openvswitch_service_file = $::ovsdpdk::params::openvswitch_service_file,
12 $openvswitch_service_path = $::ovsdpdk::params::openvswitch_service_path,
13 $qemu_kvm = $::ovsdpdk::params::qemu_kvm,
15 require ovsdpdk::build_ovs_dpdk
17 if $compute == 'True' {
18 exec {'create_ovs_dpdk':
19 command => "mv /etc/init.d/openvswitch-switch /tmp/openvswitch-switch.bak;cp ${networking_ovs_dpdk_dir}/devstack/ovs-dpdk/ovs-dpdk-init /etc/init.d/openvswitch-switch;chmod +x /etc/init.d/openvswitch-switch; ln -sf /etc/init.d/openvswitch-switch /etc/init.d/ovs-dpdk; cp /etc/openvswitch/conf.db /etc/openvswitch/conf.db.pre_dpdk",
21 path => ['/usr/bin','/bin'],
24 file {'/etc/default/ovs-dpdk': content => template("${plugin_dir}/files/ovs-dpdk-conf.erb"), mode => '0644' }
26 exec {'adapt_conf_file':
27 command => "${plugin_dir}/files/tune_params.sh",
29 require => File['/etc/default/ovs-dpdk'],
32 # exec { 'update ovs service':
33 # command => "cp ${plugin_dir}/files/${openvswitch_service_file} ${openvswitch_service_path}/${openvswitch_service_file}",
34 # path => ['/usr/bin','/bin'],
36 # onlyif => "test -f ${openvswitch_service_path}/${openvswitch_service_file}",
39 # if $::operatingsystem == 'CentOS' {
40 # exec { 'systemctl daemon-reload':
41 # path => ['/usr/bin','/bin','/usr/sbin'],
43 # require => Exec['update ovs service'],
47 package { 'zlib1g-dev':
51 package { 'libglib2.0-dev':
55 package { 'libxml2-dev':
59 package { 'libdevmapper-dev':
63 package { 'libpciaccess-dev':
67 package { 'libnl-dev':
71 package { 'pkg-config':
87 package { 'libyajl-dev':
95 package { 'python-dev':
103 package { 'libdbus-1-dev':
107 package { 'libnuma1':
111 package { 'libnuma-dev':
115 package { 'libgnutls26':
119 package { 'libgnutls-dev':
124 command => "true && cd /opt/code/qemu && ./configure --enable-kvm --target-list=x86_64-softmmu && make && make install",
126 path => ['/usr/bin','/bin'],
127 require => [ Package['flex'], Package['bison'], Package['pkg-config'], Package['libnl-dev'], Package['libpciaccess-dev'], Package['libdevmapper-dev'], Package['libxml2-dev'], Package['libglib2.0-dev'], Package['zlib1g-dev'], Package['numactl'], Package['python-dev'],Package['libdbus-1-dev'],Package['bc'],Package['libnuma1'], Package['libnuma-dev'] , Package['libgnutls26'], Package['libgnutls-dev']],
131 exec {'build libvirt':
132 command => "true && cd /opt/code/libvirt && ./configure --prefix=/usr --with-dbus && make && make install",
134 path => ['/usr/bin','/bin'],
135 require => [Exec['build qemu'], Package['libyajl2'], Package['libyajl-dev']],
139 exec {'build libvirt-python':
140 command => "true && cd /opt/code/libvirt-python && python setup.py build && python setup.py install",
142 path => ['/usr/bin','/bin'],
143 require => Exec['build libvirt'],
147 exec { "cp ${qemu_kvm} ${qemu_kvm}.orig":
148 path => ['/usr/bin','/bin'],
150 onlyif => "test -f ${qemu_kvm}",
151 require => Exec['build qemu'],
154 exec { "cp ${plugin_dir}/files/kvm-wrapper.sh ${qemu_kvm};chmod +x ${qemu_kvm}":
155 path => ['/usr/bin','/bin'],
157 onlyif => "test -f ${qemu_kvm}",
158 require => [ Exec["cp ${qemu_kvm} ${qemu_kvm}.orig"], Exec['build qemu'] ],
161 exec { 'ln -sf /etc/init.d/libvirtd /etc/init.d/libvirt-bin':
162 path => ['/usr/bin','/bin'],
164 onlyif => 'test -f /etc/init.d/libvirtd',
166 #exec {'init ovs-dpdk':
167 #command => '/etc/init.d/ovs-dpdk init',
169 #require => [ Exec['create_ovs_dpdk'], File['/etc/default/ovs-dpdk'] ],
171 exec { "ovsdb-tool convert /etc/openvswitch/conf.db ${ovs_dir}/vswitchd/vswitch.ovsschema":
172 path => ['/usr/bin','/bin'],
176 exec { 'patch linux_net':
177 command => "cp ${plugin_dir}/files/linux_net.py /usr/lib/python2.7/dist-packages/nova/network/linux_net.py",
178 path => ['/usr/bin','/bin'],
180 onlyif => 'test -f /usr/lib/python2.7/dist-packages/nova/network/linux_net.py',
185 # install mech driver
186 exec {'install mech driver':
187 command => 'python setup.py install',
188 path => ['/usr/bin','/bin'],
189 cwd => "${networking_ovs_dpdk_dir}",