From 60e2b71950e757bbd5c3c70a67dd0ae07007dec2 Mon Sep 17 00:00:00 2001 From: Karthik S Date: Fri, 24 Mar 2017 05:33:41 -0400 Subject: [PATCH] vhostuser socket dir shall be created for vhostuserclient mode In order to support vhostuser client mode, a vhostuser_socket_dir needs to be created with qemu:qemu g+w permissions. Closes-Bug: #1675690 Co-Authored-By: Sanjay Upadhyay Change-Id: I255f98c40869e7508ed01a03a96294284ecdc6a8 Signed-off-by: Karthik S (cherry picked from commit 2556c56b5b8bb84b1846683bb4a21881b35fad08) --- .gitignore | 1 + manifests/profile/base/neutron/ovs.pp | 18 ++++- .../tripleo_profile_base_neutron_ovs_spec.rb | 76 +++++++++++++++++++ spec/fixtures/hieradata/default.yaml | 2 + 4 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 spec/classes/tripleo_profile_base_neutron_ovs_spec.rb diff --git a/.gitignore b/.gitignore index 15d0c85fd..0c82072f7 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ spec/fixtures/modules spec/fixtures/manifests .vagrant/ .bundle/ +.bundle*/ coverage/ .idea/ *.swp diff --git a/manifests/profile/base/neutron/ovs.pp b/manifests/profile/base/neutron/ovs.pp index a4e0cd321..25627538a 100644 --- a/manifests/profile/base/neutron/ovs.pp +++ b/manifests/profile/base/neutron/ovs.pp @@ -23,8 +23,14 @@ # for more details. # Defaults to hiera('step') # +# [*vhostuser_socket_dir*] +# (Optional) vhostuser socket dir, The directory where $vhostuser_socket_dir +# will be created with correct permissions, inorder to support vhostuser +# client mode. + class tripleo::profile::base::neutron::ovs( - $step = hiera('step'), + $step = hiera('step'), + $vhostuser_socket_dir = hiera('neutron::agents::ml2::ovs::vhostuser_socket_dir', undef) ) { include ::tripleo::profile::base::neutron @@ -35,4 +41,14 @@ class tripleo::profile::base::neutron::ovs( Service<| title == 'neutron-server' |> -> Service<| title == 'neutron-ovs-agent-service' |> } + if $step >= 5 { + if $vhostuser_socket_dir { + file { $vhostuser_socket_dir: + ensure => directory, + owner => 'qemu', + group => 'qemu', + mode => '0775', + } + } + } } diff --git a/spec/classes/tripleo_profile_base_neutron_ovs_spec.rb b/spec/classes/tripleo_profile_base_neutron_ovs_spec.rb new file mode 100644 index 000000000..4f833791c --- /dev/null +++ b/spec/classes/tripleo_profile_base_neutron_ovs_spec.rb @@ -0,0 +1,76 @@ +# +# Copyright (C) 2017 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +require 'spec_helper' + +describe 'tripleo::profile::base::neutron::ovs' do + + shared_examples_for 'tripleo::profile::base::neutron::ovs with default params' do + + let(:pre_condition) do + "class { '::tripleo::profile::base::neutron': step => #{params[:step]} }" + end + + context 'with defaults for all parameters' do + + let(:params) { { :step => 5 } } + + it 'should do nothing' do + is_expected.to contain_class('tripleo::profile::base::neutron') + is_expected.to contain_class('neutron::agents::ml2::ovs') + is_expected.not_to contain_file('/var/lib/vhostuser_sockets') + end + end + end + + shared_examples_for 'tripleo::profile::base::neutron::ovs with vhostuser_socketdir' do + + let(:pre_condition) do + "class { '::tripleo::profile::base::neutron': step => #{params[:step]} }" + end + + context 'with vhostuser_socketdir configured' do + let :params do + { + :step => 5, + :vhostuser_socket_dir => '/var/lib/vhostuser_sockets' + } + end + + it { is_expected.to contain_class('tripleo::profile::base::neutron') } + it { is_expected.to contain_class('neutron::agents::ml2::ovs') } + it { is_expected.to contain_file('/var/lib/vhostuser_sockets').with( + :ensure => 'directory', + :owner => 'qemu', + :group => 'qemu', + :mode => '0775', + ) } + end + end + + + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts.merge({ :hostname => 'node.example.com' }) + end + + it_behaves_like 'tripleo::profile::base::neutron::ovs with default params' + it_behaves_like 'tripleo::profile::base::neutron::ovs with vhostuser_socketdir' + end + end +end + diff --git a/spec/fixtures/hieradata/default.yaml b/spec/fixtures/hieradata/default.yaml index 6ba85a165..8085d2cce 100644 --- a/spec/fixtures/hieradata/default.yaml +++ b/spec/fixtures/hieradata/default.yaml @@ -8,3 +8,5 @@ memcached_node_ips_v6: memcached_node_ips: - '127.0.0.1' service_names: ['sshd'] +#Neutron related +neutron::rabbit_password: 'password'