]> git.proxmox.com Git - mirror_ovs.git/blobdiff - rhel/openvswitch-fedora.spec.in
redhat: allow dpdk to also run as non-root user
[mirror_ovs.git] / rhel / openvswitch-fedora.spec.in
index 08cd5ef2b613bb9ecfc0db376d48b4451ab056bb..2eccada21dc461e00fffc443f94421378e5410e7 100644 (file)
@@ -1,6 +1,6 @@
 # Spec file for Open vSwitch.
 
-# Copyright (C) 2009, 2010, 2013, 2014 Nicira Networks, Inc.
+# Copyright (C) 2009, 2010, 2013, 2014, 2015, 2016 Nicira Networks, Inc.
 #
 # Copying and distribution of this file, with or without modification,
 # are permitted in any medium without royalty provided the copyright
@@ -9,13 +9,50 @@
 #
 # If tests have to be skipped while building, specify the '--without check'
 # option. For example:
-# rpmbuild -bb --without check rhel/openvswitch-fedora.spec
+#     rpmbuild -bb --without check rhel/openvswitch-fedora.spec
+#
+# Support for executing kernel data path tests under rpmbuild is
+# provided, however this is intended for use only in test environments
+# and should not be used otherwise (these tests require root privileges).
+# These tests can be executed, for example, via:
+#    rpmbuild -rb --with check_datapath_kernel openvswitch-fedora.src.rpm
+#
+# These tests will use the currently installed OVS kernel modules, when
+# testing out of tree kernel modules the appropriate openvswitch-kmod
+# package should be installed first.
 
 #%define kernel 2.6.40.4-5.fc15.x86_64
 
+# If libcap-ng isn't available and there is no need for running OVS
+# as regular user, specify the '--without libcapng'
+%bcond_without libcapng
+# To enable DPDK support, specify '--with dpdk' when building
+%bcond_with dpdk
+# Enable Python 3 by specifying '--with build_python3'.
+# This is enabled by default for versions of the distribution that
+# have Python 3 by default (Fedora > 22).
+%bcond_with build_python3
+
 # Enable PIE, bz#955181
 %global _hardened_build 1
 
+# some distros (e.g: RHEL-7) don't define _rundir macro yet
+# Fedora 15 onwards uses /run as _rundir
+%if 0%{!?_rundir:1}
+%define _rundir /run
+%endif
+
+# define the python package prefix based on distribution version so that we can
+# simultaneously support RHEL-based and later Fedora versions in this spec file.
+%if 0%{?fedora} >= 25
+%define _py2 python2
+%endif
+
+%if 0%{?rhel} || 0%{?fedora} < 25
+%define _py2 python
+%endif
+
+
 Name: openvswitch
 Summary: Open vSwitch
 Group: System Environment/Daemons
@@ -25,50 +62,95 @@ Version: @VERSION@
 # Nearly all of openvswitch is ASL 2.0.  The bugtool is LGPLv2+, and the
 # lib/sflow*.[ch] files are SISSL
 # datapath/ is GPLv2 (although not built into any of the binary packages)
-# python/compat is Python (although not built into any of the binary packages)
 License: ASL 2.0 and LGPLv2+ and SISSL
 Release: 1%{?dist}
 Source: http://openvswitch.org/releases/%{name}-%{version}.tar.gz
 
-BuildRequires: autoconf
+BuildRequires: autoconf automake libtool
 BuildRequires: systemd-units openssl openssl-devel
-BuildRequires: python python-twisted-core python-zope-interface PyQt4
+BuildRequires: %{_py2}-devel
+%if 0%{?fedora} > 22 || %{with build_python3}
+BuildRequires: python3-devel
+%endif
 BuildRequires: desktop-file-utils
 BuildRequires: groff graphviz
+BuildRequires: checkpolicy, selinux-policy-devel
+BuildRequires: python-sphinx
 # make check dependencies
+BuildRequires: %{_py2}-twisted%{?rhel:-core} %{_py2}-zope-interface %{_py2}-six
 BuildRequires: procps-ng
+%if %{with libcapng}
+BuildRequires: libcap-ng libcap-ng-devel
+%endif
+%if %{with dpdk}
+BuildRequires: libpcap-devel numactl-devel
+BuildRequires: dpdk-devel >= 17.05.1
+Provides: %{name}-dpdk = %{version}-%{release}
+%endif
 
-Requires: openssl iproute module-init-tools
+Requires: openssl hostname iproute module-init-tools
 #Upstream kernel commit 4f647e0a3c37b8d5086214128614a136064110c3
 #Requires: kernel >= 3.15.0-0
 
+Requires(post): /usr/bin/getent
+Requires(post): /usr/sbin/useradd
+Requires(post): /usr/bin/sed
+%if %{with dpdk}
+Requires(post): /usr/sbin/usermod
+Requires(post): /usr/sbin/groupadd
+%endif
 Requires(post): systemd-units
 Requires(preun): systemd-units
 Requires(postun): systemd-units
 Obsoletes: openvswitch-controller <= 0:2.1.0-1
 
+# to skip running checks, pass --without check
 %bcond_without check
+%bcond_with check_datapath_kernel
 
 %description
 Open vSwitch provides standard network bridging functions and
 support for the OpenFlow protocol for remote per-flow control of
 traffic.
 
-%package -n python-openvswitch
-Summary: Open vSwitch python bindings
+%package selinux-policy
+Summary: Open vSwitch SELinux policy
+License: ASL 2.0
+BuildArch: noarch
+Requires: selinux-policy-targeted
+
+%description selinux-policy
+Tailored Open vSwitch SELinux policy
+
+%package -n %{_py2}-openvswitch
+Summary: Open vSwitch python2 bindings
 License: ASL 2.0
 BuildArch: noarch
-Requires: python
+Requires: %{_py2}
+Requires: %{_py2}-six
+%{?python_provide:%python_provide python2-openvswitch = %{version}-%{release}}
+%description -n %{_py2}-openvswitch
+Python bindings for the Open vSwitch database
 
-%description -n python-openvswitch
+%if 0%{?fedora} > 22 || %{with build_python3}
+%package -n python3-openvswitch
+Summary: Open vSwitch python3 bindings
+License: ASL 2.0
+BuildArch: noarch
+Requires: python3
+Requires: python3-six
+%{?python_provide:%python_provide python3-openvswitch = %{version}-%{release}}
+
+%description -n python3-openvswitch
 Python bindings for the Open vSwitch database
+%endif
 
 %package test
 Summary: Open vSwitch testing utilities
 License: ASL 2.0
 BuildArch: noarch
-Requires: python-openvswitch = %{version}-%{release}
-Requires: python python-twisted-core python-twisted-web
+Requires: %{_py2}-openvswitch = %{version}-%{release}
+Requires: %{_py2} %{_py2}-twisted
 
 %description test
 Utilities that are useful to diagnose performance and connectivity
@@ -83,35 +165,96 @@ Provides: openvswitch-static = %{version}-%{release}
 This provides static library, libopenswitch.a and the openvswitch header
 files needed to build an external application.
 
-%package ovn
+%package ovn-central
 Summary: Open vSwitch - Open Virtual Network support
 License: ASL 2.0
-Requires: openvswitch
+Requires: openvswitch openvswitch-ovn-common
+Requires: firewalld-filesystem
+
+%description ovn-central
+OVN, the Open Virtual Network, is a system to support virtual network
+abstraction.  OVN complements the existing capabilities of OVS to add
+native support for virtual network abstractions, such as virtual L2 and L3
+overlays and security groups.
+
+%package ovn-host
+Summary: Open vSwitch - Open Virtual Network support
+License: ASL 2.0
+Requires: openvswitch openvswitch-ovn-common
+Requires: firewalld-filesystem
 
-%description ovn
+%description ovn-host
 OVN, the Open Virtual Network, is a system to support virtual network
 abstraction.  OVN complements the existing capabilities of OVS to add
 native support for virtual network abstractions, such as virtual L2 and L3
 overlays and security groups.
 
+%package ovn-vtep
+Summary: Open vSwitch - Open Virtual Network support
+License: ASL 2.0
+Requires: openvswitch openvswitch-ovn-common
+
+%description ovn-vtep
+OVN vtep controller
+
+%package ovn-common
+Summary: Open vSwitch - Open Virtual Network support
+License: ASL 2.0
+Requires: openvswitch
+
+%description ovn-common
+Utilities that are use to diagnose and manage the OVN components.
+
+%package ovn-docker
+Summary: Open vSwitch - Open Virtual Network support
+License: ASL 2.0
+Requires: openvswitch openvswitch-ovn-common %{_py2}-openvswitch
+
+%description ovn-docker
+Docker network plugins for OVN.
 
 %prep
 %setup -q
 
 %build
-%configure --enable-ssl --with-pkidir=%{_sharedstatedir}/openvswitch/pki
+%configure \
+%if %{with libcapng}
+       --enable-libcapng \
+%else
+       --disable-libcapng \
+%endif
+%if %{with dpdk}
+       --with-dpdk=$(dirname %{_datadir}/dpdk/*/.config) \
+%endif
+       --enable-ssl \
+       --with-pkidir=%{_sharedstatedir}/openvswitch/pki
+
+/usr/bin/perl build-aux/dpdkstrip.pl \
+%if %{with dpdk}
+       --dpdk \
+%else
+       --nodpdk \
+%endif
+       < rhel/usr_lib_systemd_system_ovs-vswitchd.service.in \
+       > rhel/usr_lib_systemd_system_ovs-vswitchd.service
+
 make %{?_smp_mflags}
+cd selinux
+make -f %{_datadir}/selinux/devel/Makefile
 
 %install
 rm -rf $RPM_BUILD_ROOT
 make install DESTDIR=$RPM_BUILD_ROOT
 
+install -d -m 0755 $RPM_BUILD_ROOT%{_rundir}/openvswitch
+install -d -m 0750 $RPM_BUILD_ROOT%{_localstatedir}/log/openvswitch
 install -d -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch
 
 install -p -D -m 0644 \
         rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
         $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/openvswitch
-for service in openvswitch openvswitch-nonetwork ovn-controller ovn-northd; do
+for service in openvswitch ovsdb-server ovs-vswitchd \
+               ovn-controller ovn-controller-vtep ovn-northd; do
        install -p -D -m 0644 \
                        rhel/usr_lib_systemd_system_${service}.service \
                        $RPM_BUILD_ROOT%{_unitdir}/${service}.service
@@ -119,6 +262,9 @@ done
 install -m 0755 rhel/etc_init.d_openvswitch \
         $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/openvswitch.init
 
+install -p -D -m 0644 rhel/etc_openvswitch_default.conf \
+        $RPM_BUILD_ROOT/%{_sysconfdir}/openvswitch/default.conf
+
 install -p -D -m 0644 rhel/etc_logrotate.d_openvswitch \
         $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/openvswitch
 
@@ -131,25 +277,57 @@ install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifdown-ovs \
 install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifup-ovs \
         $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
 
-install -d -m 0755 $RPM_BUILD_ROOT%{python_sitelib}
-mv $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/* \
-   $RPM_BUILD_ROOT%{python_sitelib}
-rmdir $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/
+install -d -m 0755 $RPM_BUILD_ROOT%{python2_sitelib}
+cp -a $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/* \
+   $RPM_BUILD_ROOT%{python2_sitelib}
+
+%if 0%{?fedora} > 22 || %{with build_python3}
+install -d -m 0755 $RPM_BUILD_ROOT%{python3_sitelib}
+cp -a $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/ovs \
+   $RPM_BUILD_ROOT%{python3_sitelib}
+%endif
+
+rm -rf $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/
 
 install -d -m 0755 $RPM_BUILD_ROOT/%{_sharedstatedir}/openvswitch
 
 touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/conf.db
+touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/.conf.db.~lock~
 touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/system-id.conf
 
+install -p -m 644 -D selinux/openvswitch-custom.pp \
+        $RPM_BUILD_ROOT%{_datadir}/selinux/packages/%{name}/openvswitch-custom.pp
+
+install -d $RPM_BUILD_ROOT%{_prefix}/lib/firewalld/services/
+install -p -m 0644 rhel/usr_lib_firewalld_services_ovn-central-firewall-service.xml \
+        $RPM_BUILD_ROOT%{_prefix}/lib/firewalld/services/ovn-central-firewall-service.xml
+install -p -m 0644 rhel/usr_lib_firewalld_services_ovn-host-firewall-service.xml \
+        $RPM_BUILD_ROOT%{_prefix}/lib/firewalld/services/ovn-host-firewall-service.xml
+
+install -d -m 0755 $RPM_BUILD_ROOT%{_prefix}/lib/ocf/resource.d/ovn
+ln -s %{_datadir}/openvswitch/scripts/ovndb-servers.ocf \
+      $RPM_BUILD_ROOT%{_prefix}/lib/ocf/resource.d/ovn/ovndb-servers
+
+# remove unpackaged files
+rm -f $RPM_BUILD_ROOT%{_bindir}/ovs-parse-backtrace \
+        $RPM_BUILD_ROOT%{_sbindir}/ovs-vlan-bug-workaround \
+        $RPM_BUILD_ROOT%{_mandir}/man8/ovs-vlan-bug-workaround.8
+
 %check
 %if %{with check}
-    if make check TESTSUITEFLAGS='%{_smp_mflags}' ||
-       make check TESTSUITEFLAGS='--recheck'; then :;
+    if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :;
     else
         cat tests/testsuite.log
         exit 1
     fi
 %endif
+%if %{with check_datapath_kernel}
+    if make check-kernel RECHECK=yes; then :;
+    else
+        cat tests/system-kmod-testsuite.log
+        exit 1
+    fi
+%endif
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -159,27 +337,65 @@ rm -rf $RPM_BUILD_ROOT
     %systemd_preun %{name}.service
 %else
     if [ $1 -eq 0 ] ; then
-    # Package removal, not upgrade
+        # Package removal, not upgrade
         /bin/systemctl --no-reload disable %{name}.service >/dev/null 2>&1 || :
         /bin/systemctl stop %{name}.service >/dev/null 2>&1 || :
     fi
 %endif
 
-%preun ovn
+%preun ovn-central
 %if 0%{?systemd_preun:1}
-    %systemd_preun ovn-controller.service
     %systemd_preun ovn-northd.service
 %else
     if [ $1 -eq 0 ] ; then
-    # Package removal, not upgrade
-        /bin/systemctl --no-reload disable ovn-controller.service >/dev/null 2>&1 || :
-        /bin/systemctl stop ovn-controller.service >/dev/null 2>&1 || :
+        # Package removal, not upgrade
         /bin/systemctl --no-reload disable ovn-northd.service >/dev/null 2>&1 || :
         /bin/systemctl stop ovn-northd.service >/dev/null 2>&1 || :
     fi
 %endif
 
+%preun ovn-host
+%if 0%{?systemd_preun:1}
+    %systemd_preun ovn-controller.service
+%else
+    if [ $1 -eq 0 ] ; then
+        # Package removal, not upgrade
+        /bin/systemctl --no-reload disable ovn-controller.service >/dev/null 2>&1 || :
+        /bin/systemctl stop ovn-controller.service >/dev/null 2>&1 || :
+    fi
+%endif
+
+%preun ovn-vtep
+%if 0%{?systemd_preun:1}
+    %systemd_preun ovn-controller-vtep.service
+%else
+    if [ $1 -eq 0 ] ; then
+        # Package removal, not upgrade
+        /bin/systemctl --no-reload disable ovn-controller-vtep.service >/dev/null 2>&1 || :
+        /bin/systemctl stop ovn-controller-vtep.service >/dev/null 2>&1 || :
+    fi
+%endif
+
 %post
+if [ $1 -eq 1 ]; then
+    getent passwd openvswitch >/dev/null || \
+        useradd -r -d / -s /sbin/nologin -c "Open vSwitch Daemons" openvswitch
+
+    sed -i 's:^#OVS_USER_ID=:OVS_USER_ID=:' /etc/sysconfig/openvswitch
+
+%if %{with dpdk}
+    getent group hugetlbfs >/dev/null || \
+        groupadd hugetlbfs
+    usermod -a -G hugetlbfs openvswitch
+    sed -i \
+        's@OVS_USER_ID="openvswitch:openvswitch"@OVS_USER_ID="openvswitch:hugetlbfs"@'\
+        /etc/sysconfig/openvswitch
+%endif
+
+    # In the case of upgrade, this is not needed.
+    chown -R openvswitch:openvswitch /etc/openvswitch
+fi
+
 %if 0%{?systemd_post:1}
     %systemd_post %{name}.service
 %else
@@ -189,9 +405,8 @@ rm -rf $RPM_BUILD_ROOT
     fi
 %endif
 
-%post ovn
+%post ovn-central
 %if 0%{?systemd_post:1}
-    %systemd_post ovn-controller.service
     %systemd_post ovn-northd.service
 %else
     # Package install, not upgrade
@@ -200,42 +415,90 @@ rm -rf $RPM_BUILD_ROOT
     fi
 %endif
 
+%post ovn-host
+%if 0%{?systemd_post:1}
+    %systemd_post ovn-controller.service
+%else
+    # Package install, not upgrade
+    if [ $1 -eq 1 ]; then
+        /bin/systemctl daemon-reload >dev/null || :
+    fi
+%endif
+
+%post ovn-vtep
+%if 0%{?systemd_post:1}
+    %systemd_post ovn-controller-vtep.service
+%else
+    # Package install, not upgrade
+    if [ $1 -eq 1 ]; then
+        /bin/systemctl daemon-reload >dev/null || :
+    fi
+%endif
+
+%post selinux-policy
+/usr/sbin/semodule -i %{_datadir}/selinux/packages/%{name}/openvswitch-custom.pp &> /dev/null || :
+
 %postun
-%if 0%{?systemd_postun_with_restart:1}
-    %systemd_postun_with_restart %{name}.service
+%if 0%{?systemd_postun:1}
+    %systemd_postun %{name}.service
 %else
     /bin/systemctl daemon-reload >/dev/null 2>&1 || :
-    if [ "$1" -ge "1" ] ; then
-    # Package upgrade, not uninstall
-        /bin/systemctl try-restart %{name}.service >/dev/null 2>&1 || :
-    fi
 %endif
 
-%postun ovn
-%if 0%{?systemd_postun_with_restart:1}
-    %systemd_postun_with_restart ovn-controller.service
-    %systemd_postun_with_restart ovn-northd.service
+%postun ovn-central
+%if 0%{?systemd_postun:1}
+    %systemd_postun ovn-northd.service
 %else
     /bin/systemctl daemon-reload >/dev/null 2>&1 || :
-    if [ "$1" -ge "1" ] ; then
-    # Package upgrade, not uninstall
-        /bin/systemctl try-restart ovn-controller.service >/dev/null 2>&1 || :
-        /bin/systemctl try-restart ovn-northd.service >/dev/null 2>&1 || :
-    fi
 %endif
 
-%files -n python-openvswitch
-%{python_sitelib}/ovs
+%postun ovn-host
+%if 0%{?systemd_postun:1}
+    %systemd_postun ovn-controller.service
+%else
+    /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+%endif
+
+%postun ovn-vtep
+%if 0%{?systemd_postun:1}
+    %systemd_postun ovn-controller-vtep.service
+%else
+    /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+%endif
+
+%postun selinux-policy
+if [ $1 -eq 0 ] ; then
+  /usr/sbin/semodule -r openvswitch-custom &> /dev/null || :
+fi
+
+%files selinux-policy
+%defattr(-,root,root)
+%{_datadir}/selinux/packages/%{name}/openvswitch-custom.pp
+
+%files -n %{_py2}-openvswitch
+%{python2_sitelib}/ovs
+%doc COPYING
+
+%if 0%{?fedora} > 22 || %{with build_python3}
+%files -n python3-openvswitch
+%{python3_sitelib}/ovs
 %doc COPYING
+%endif
 
 %files test
 %{_bindir}/ovs-test
 %{_bindir}/ovs-vlan-test
 %{_bindir}/ovs-l3ping
+%{_bindir}/ovs-pcap
+%{_bindir}/ovs-tcpdump
+%{_bindir}/ovs-tcpundump
 %{_mandir}/man8/ovs-test.8*
 %{_mandir}/man8/ovs-vlan-test.8*
 %{_mandir}/man8/ovs-l3ping.8*
-%{python_sitelib}/ovstest
+%{_mandir}/man1/ovs-pcap.1*
+%{_mandir}/man8/ovs-tcpdump.8*
+%{_mandir}/man1/ovs-tcpundump.1*
+%{python2_sitelib}/ovstest
 
 %files devel
 %{_libdir}/*.a
@@ -243,18 +506,22 @@ rm -rf $RPM_BUILD_ROOT
 %{_libdir}/pkgconfig/*.pc
 %{_includedir}/openvswitch/*
 %{_includedir}/openflow/*
+%{_includedir}/ovn/*
 
 %files
 %defattr(-,root,root)
 %{_sysconfdir}/bash_completion.d/ovs-appctl-bashcomp.bash
 %{_sysconfdir}/bash_completion.d/ovs-vsctl-bashcomp.bash
 %dir %{_sysconfdir}/openvswitch
+%{_sysconfdir}/openvswitch/default.conf
 %config %ghost %{_sysconfdir}/openvswitch/conf.db
+%ghost %{_sysconfdir}/openvswitch/.conf.db.~lock~
 %config %ghost %{_sysconfdir}/openvswitch/system-id.conf
 %config(noreplace) %{_sysconfdir}/sysconfig/openvswitch
 %config(noreplace) %{_sysconfdir}/logrotate.d/openvswitch
 %{_unitdir}/openvswitch.service
-%{_unitdir}/openvswitch-nonetwork.service
+%{_unitdir}/ovsdb-server.service
+%{_unitdir}/ovs-vswitchd.service
 %{_datadir}/openvswitch/scripts/openvswitch.init
 %{_sysconfdir}/sysconfig/network-scripts/ifup-ovs
 %{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs
@@ -262,6 +529,7 @@ rm -rf $RPM_BUILD_ROOT
 %{_datadir}/openvswitch/scripts/ovs-bugtool-*
 %{_datadir}/openvswitch/scripts/ovs-check-dead-ifs
 %{_datadir}/openvswitch/scripts/ovs-lib
+%{_datadir}/openvswitch/scripts/ovs-save
 %{_datadir}/openvswitch/scripts/ovs-vtep
 %{_datadir}/openvswitch/scripts/ovs-ctl
 %config %{_datadir}/openvswitch/vswitch.ovsschema
@@ -280,14 +548,12 @@ rm -rf $RPM_BUILD_ROOT
 %{_sbindir}/ovs-bugtool
 %{_sbindir}/ovs-vswitchd
 %{_sbindir}/ovsdb-server
-%{_mandir}/man1/ovs-benchmark.1*
-%{_mandir}/man1/ovs-pcap.1*
-%{_mandir}/man1/ovs-tcpundump.1*
 %{_mandir}/man1/ovsdb-client.1*
 %{_mandir}/man1/ovsdb-server.1*
 %{_mandir}/man1/ovsdb-tool.1*
 %{_mandir}/man5/ovs-vswitchd.conf.db.5*
 %{_mandir}/man5/vtep.5*
+%{_mandir}/man7/ovs-fields.7*
 %{_mandir}/man8/vtep-ctl.8*
 %{_mandir}/man8/ovs-appctl.8*
 %{_mandir}/man8/ovs-bugtool.8*
@@ -300,40 +566,53 @@ rm -rf $RPM_BUILD_ROOT
 %{_mandir}/man8/ovs-vswitchd.8*
 %{_mandir}/man8/ovs-parse-backtrace.8*
 %{_mandir}/man8/ovs-testcontroller.8*
-%doc COPYING DESIGN.md INSTALL.SSL.md NOTICE README.md WHY-OVS.md
-%doc FAQ.md NEWS INSTALL.DPDK.md rhel/README.RHEL
+%doc COPYING NOTICE README.rst NEWS rhel/README.RHEL.rst
 /var/lib/openvswitch
 /var/log/openvswitch
 %ghost %attr(755,root,root) %{_rundir}/openvswitch
-%exclude %{_bindir}/ovs-benchmark
-%exclude %{_bindir}/ovs-parse-backtrace
-%exclude %{_bindir}/ovs-pcap
-%exclude %{_bindir}/ovs-tcpundump
-%exclude %{_sbindir}/ovs-vlan-bug-workaround
-%exclude %{_mandir}/man1/ovs-benchmark.1.gz
-%exclude %{_mandir}/man1/ovs-pcap.1.gz
-%exclude %{_mandir}/man1/ovs-tcpundump.1.gz
-%exclude %{_mandir}/man8/ovs-vlan-bug-workaround.8.gz
-%exclude %{_datadir}/openvswitch/scripts/ovs-save
-
-%files ovn
-%{_bindir}/ovn-controller
+
+%files ovn-docker
+%{_bindir}/ovn-docker-overlay-driver
+%{_bindir}/ovn-docker-underlay-driver
+
+%files ovn-common
 %{_bindir}/ovn-nbctl
-%{_bindir}/ovn-northd
+%{_bindir}/ovn-sbctl
+%{_bindir}/ovn-trace
+%{_bindir}/ovn-detrace
 %{_datadir}/openvswitch/scripts/ovn-ctl
-%{_mandir}/man8/ovs-testcontroller.8*
-%{_mandir}/man5/ovn-nb.5*
-%{_mandir}/man5/ovn-sb.5*
-%{_mandir}/man7/ovn-architecture.7*
-%{_mandir}/man8/ovn-controller.8*
+%{_datadir}/openvswitch/scripts/ovndb-servers.ocf
+%{_datadir}/openvswitch/scripts/ovn-bugtool-nbctl-show
+%{_datadir}/openvswitch/scripts/ovn-bugtool-sbctl-lflow-list
+%{_datadir}/openvswitch/scripts/ovn-bugtool-sbctl-show
 %{_mandir}/man8/ovn-ctl.8*
 %{_mandir}/man8/ovn-nbctl.8*
+%{_mandir}/man8/ovn-trace.8*
+%{_mandir}/man1/ovn-detrace.1*
+%{_mandir}/man7/ovn-architecture.7*
+%{_mandir}/man8/ovn-sbctl.8*
+%{_mandir}/man5/ovn-nb.5*
+%{_mandir}/man5/ovn-sb.5*
+%{_prefix}/lib/ocf/resource.d/ovn/ovndb-servers
+
+%files ovn-central
+%{_bindir}/ovn-northd
+%{_mandir}/man8/ovn-northd.8*
 %config %{_datadir}/openvswitch/ovn-nb.ovsschema
 %config %{_datadir}/openvswitch/ovn-sb.ovsschema
-%{_unitdir}/ovn-controller.service
 %{_unitdir}/ovn-northd.service
-%ghost %attr(755,root,root) %{_rundir}/ovn-controller
-%ghost %attr(755,root,root) %{_rundir}/ovn-northd
+%{_prefix}/lib/firewalld/services/ovn-central-firewall-service.xml
+
+%files ovn-host
+%{_bindir}/ovn-controller
+%{_mandir}/man8/ovn-controller.8*
+%{_unitdir}/ovn-controller.service
+%{_prefix}/lib/firewalld/services/ovn-host-firewall-service.xml
+
+%files ovn-vtep
+%{_bindir}/ovn-controller-vtep
+%{_mandir}/man8/ovn-controller-vtep.8*
+%{_unitdir}/ovn-controller-vtep.service
 
 %changelog
 * Wed Jan 12 2011 Ralf Spenneberg <ralf@os-s.net>