vhostuser socket dir shall be created for vhostuserclient mode
authorKarthik S <ksundara@redhat.com>
Fri, 24 Mar 2017 09:33:41 +0000 (05:33 -0400)
committerSanjay Upadhyay <supadhya@redhat.com>
Sat, 13 May 2017 00:02:47 +0000 (05:32 +0530)
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 <supadhya@redhat.com>
Change-Id: I255f98c40869e7508ed01a03a96294284ecdc6a8
Signed-off-by: Karthik S <ksundara@redhat.com>
.gitignore
manifests/profile/base/neutron/ovs.pp
spec/classes/tripleo_profile_base_neutron_ovs_spec.rb [new file with mode: 0644]
spec/fixtures/hieradata/default.yaml

index 263f4a7..2fa4229 100644 (file)
@@ -4,6 +4,7 @@ vendor/
 spec/fixtures/
 .vagrant/
 .bundle/
+.bundle*/
 coverage/
 .idea/
 *.swp
index bec7e96..97eb8e9 100644 (file)
 #   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
 
   if $step >= 5 {
+    if $vhostuser_socket_dir {
+      file { $vhostuser_socket_dir:
+        ensure => directory,
+        owner  => 'qemu',
+        group  => 'qemu',
+        mode   => '0775',
+      }
+    }
+
     include ::neutron::agents::ml2::ovs
 
     # Optional since manage_service may be false and neutron server may not be colocated.
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 (file)
index 0000000..14de7e1
--- /dev/null
@@ -0,0 +1,73 @@
+#
+# 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
+
+    before :each do
+      facts.merge!({ :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
+
+    before :each do
+      facts.merge!({ :step => params[:step], :vhostuser_socket_dir => params[:vhostuser_socket_dir] })
+    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
index 3cf2693..ad2da39 100644 (file)
@@ -45,3 +45,5 @@ memcached_node_ips:
 octavia::rabbit_password: 'password'
 horizon::secret_key: 'secrete'
 service_names: ['sshd']
+#Neutron related
+neutron::rabbit_password: 'password'