From 604489e1db213b9de96d099fc51e93bbcbea3d0beb8f09843157b28baf58f286 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Wed, 20 May 2020 07:45:43 +0000 Subject: [PATCH] Accepting request 802898 from home:jaicaa:branches:network - Update openvswitch to 2.13.0. * For a list of changes, check https://github.com/openvswitch/ovs/blob/v2.13.0/NEWS * This version drops python2 binding support. Only python3 bindings provided going forward. * Tool ovs-vlan-bug-workaround is no longer provided. - OVN was split to its own repo but is still built together with OVS and as such from this same source package. OVN initial version is 20.03. * For a list of changes, check https://github.com/ovn-org/ovn/blob/v20.03.0/NEWS * Packages openvswitch-ovn* are renamed to ovn*. * OVN now has its own sysconfig and log paths. - Add OVS patch to be proposed upstream: * 0001-rhel-Fix-reload-of-OVS_USER_ID-on-startup.patch - Patch instead of post-processing configuration files to set running credentials (bsc#1157338): * 0001-Run-openvswitch-as-openvswitch-openvswitch.patch * 0001-Run-ovn-as-openvswitch-openvswitch.patch - Will no longer change group ownership of /dev/hugepages to 'hugetlbfs' (bsc#1140835). System admin should mount hugepages on a path and permissions of his choosing for OVS. Add patch: * 0001-dont-change-permissions-of-dev-hugepages.patch - Will no longer install udev rule to change group ownership of vfio devices to 'hugetlbfs'. Group name does not make much sense in this case and ownership of vfio devices should be coordinated system wide or per device. - Will no longer run under group 'hugetlbfs' on new installs with DPDK enabled. OVS will now run under group 'openvswitch' whether compiled with DPDK support or not. - OVS persistent state is now saved on /var/lib/openvswitch instead of /etc/openvswitch for new installs. OBS-URL: https://build.opensuse.org/request/show/802898 OBS-URL: https://build.opensuse.org/package/show/network/openvswitch?expand=0&rev=196 --- ...-change-permissions-of-dev-hugepages.patch | 30 + ...envswitch-as-openvswitch-openvswitch.patch | 41 + 0001-Run-ovn-as-openvswitch-openvswitch.patch | 67 + ...Fix-reload-of-OVS_USER_ID-on-startup.patch | 48 + openvswitch-2.12.0.tar.gz | 3 - openvswitch-2.13.0.tar.gz | 3 + openvswitch.changes | 34 + openvswitch.spec | 1235 ++++++++++------- ovn-20.03.0.tar.gz | 3 + 9 files changed, 960 insertions(+), 504 deletions(-) create mode 100644 0001-Don-t-change-permissions-of-dev-hugepages.patch create mode 100644 0001-Run-openvswitch-as-openvswitch-openvswitch.patch create mode 100644 0001-Run-ovn-as-openvswitch-openvswitch.patch create mode 100644 0001-rhel-Fix-reload-of-OVS_USER_ID-on-startup.patch delete mode 100644 openvswitch-2.12.0.tar.gz create mode 100644 openvswitch-2.13.0.tar.gz create mode 100644 ovn-20.03.0.tar.gz diff --git a/0001-Don-t-change-permissions-of-dev-hugepages.patch b/0001-Don-t-change-permissions-of-dev-hugepages.patch new file mode 100644 index 0000000..1084577 --- /dev/null +++ b/0001-Don-t-change-permissions-of-dev-hugepages.patch @@ -0,0 +1,30 @@ +From e54cce931bafa12176989a5d59e3839f1bcfdf0c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaime=20Caama=C3=B1o=20Ruiz?= +Date: Wed, 6 May 2020 16:32:28 +0200 +Subject: [PATCH 1/2] Don't change permissions of /dev/hugepages + +For SLES/openSUSE, don't change permissions of /dev/hugepages as that is +a system path. Sysadmin shoudl mount hugepages on a path and permission +of his choosing if OVS either manually or via hugeadm. +--- + rhel/usr_lib_systemd_system_ovs-vswitchd.service.in | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in b/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in +index ff43dae96..08355d950 100644 +--- a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in ++++ b/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in +@@ -16,10 +16,6 @@ EnvironmentFile=/etc/openvswitch/default.conf + EnvironmentFile=-/etc/sysconfig/openvswitch + EnvironmentFile=-/run/openvswitch.useropts + LimitSTACK=2M +-@begin_dpdk@ +-ExecStartPre=-/bin/sh -c '/usr/bin/chown :$${OVS_USER_ID##*:} /dev/hugepages' +-ExecStartPre=-/usr/bin/chmod 0775 /dev/hugepages +-@end_dpdk@ + ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \ + --no-ovsdb-server --no-monitor --system-id=random \ + ${OVS_USER_OPT} \ +-- +2.16.4 + diff --git a/0001-Run-openvswitch-as-openvswitch-openvswitch.patch b/0001-Run-openvswitch-as-openvswitch-openvswitch.patch new file mode 100644 index 0000000..e03f9cc --- /dev/null +++ b/0001-Run-openvswitch-as-openvswitch-openvswitch.patch @@ -0,0 +1,41 @@ +From 4de3a6e6fc67125a900913598344881c0b0bed71 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaime=20Caama=C3=B1o=20Ruiz?= +Date: Fri, 8 May 2020 11:15:57 +0200 +Subject: [PATCH] Run openvswitch as openvswitch:openvswitch + +Change default run configuration to unprivilieged user openvswitch and +group openvswitch. Expect any further customization from user in +sysconfig/openvswitch, including setting it back to privileged root:root +configuration. +--- + rhel/etc_logrotate.d_openvswitch | 2 +- + rhel/etc_openvswitch_default.conf | 3 +-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/rhel/etc_logrotate.d_openvswitch b/rhel/etc_logrotate.d_openvswitch +index f4302ffbc..eaf1fd5bf 100644 +--- a/rhel/etc_logrotate.d_openvswitch ++++ b/rhel/etc_logrotate.d_openvswitch +@@ -6,7 +6,7 @@ + # without warranty of any kind. + + /var/log/openvswitch/*.log { +- su root root ++ su openvswitch openvswitch + daily + compress + sharedscripts +diff --git a/rhel/etc_openvswitch_default.conf b/rhel/etc_openvswitch_default.conf +index c74417db6..20d1f5f54 100644 +--- a/rhel/etc_openvswitch_default.conf ++++ b/rhel/etc_openvswitch_default.conf +@@ -1,5 +1,4 @@ + # DO NOT EDIT THIS FILE + + # The following is the *default* configuration for the openvswitch user ID. +-# This is for backward compatibility. +-OVS_USER_ID="root:root" ++OVS_USER_ID="openvswitch:openvswitch" +-- +2.16.4 + diff --git a/0001-Run-ovn-as-openvswitch-openvswitch.patch b/0001-Run-ovn-as-openvswitch-openvswitch.patch new file mode 100644 index 0000000..ab9a28d --- /dev/null +++ b/0001-Run-ovn-as-openvswitch-openvswitch.patch @@ -0,0 +1,67 @@ +From aa1869378cf512fd7aeee16c0a030264c2623270 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaime=20Caama=C3=B1o=20Ruiz?= +Date: Fri, 8 May 2020 11:23:04 +0200 +Subject: [PATCH] Run ovn as openvswitch:openvswitch + +Change default run configuration to unprivilieged user openvswitch and +group openvswitch. Expect any further customization from user in +sysconfig/ovn. +--- + rhel/etc_logrotate.d_ovn | 2 +- + rhel/usr_lib_systemd_system_ovn-controller-vtep.service | 1 + + rhel/usr_lib_systemd_system_ovn-controller.service | 1 + + rhel/usr_lib_systemd_system_ovn-northd.service | 1 + + 4 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/rhel/etc_logrotate.d_ovn b/rhel/etc_logrotate.d_ovn +index a351ec303..4b26333fc 100644 +--- a/rhel/etc_logrotate.d_ovn ++++ b/rhel/etc_logrotate.d_ovn +@@ -6,7 +6,7 @@ + # without warranty of any kind. + + /var/log/ovn/*.log { +- su root root ++ su openvswitch openvswitch + daily + compress + sharedscripts +diff --git a/rhel/usr_lib_systemd_system_ovn-controller-vtep.service b/rhel/usr_lib_systemd_system_ovn-controller-vtep.service +index 09ad0612c..dd6ff6675 100644 +--- a/rhel/usr_lib_systemd_system_ovn-controller-vtep.service ++++ b/rhel/usr_lib_systemd_system_ovn-controller-vtep.service +@@ -35,6 +35,7 @@ After=openvswitch.service + [Service] + Type=simple + Restart=on-failure ++Environment=OVN_USER_ID=openvswitch:openvswitch + Environment=OVS_RUNDIR=%t/openvswitch + Environment=OVN_RUNDIR=%t/ovn + Environment=OVN_DB=unix:%t/ovn/ovnsb_db.sock +diff --git a/rhel/usr_lib_systemd_system_ovn-controller.service b/rhel/usr_lib_systemd_system_ovn-controller.service +index 15d0ac853..c602760f1 100644 +--- a/rhel/usr_lib_systemd_system_ovn-controller.service ++++ b/rhel/usr_lib_systemd_system_ovn-controller.service +@@ -23,6 +23,7 @@ After=openvswitch.service + Type=forking + PIDFile=/var/run/ovn/ovn-controller.pid + Restart=on-failure ++Environment=OVN_USER_ID=openvswitch:openvswitch + Environment=OVN_RUNDIR=%t/ovn OVS_RUNDIR=%t/openvswitch + EnvironmentFile=-/etc/sysconfig/ovn + EnvironmentFile=-/etc/sysconfig/ovn-controller +diff --git a/rhel/usr_lib_systemd_system_ovn-northd.service b/rhel/usr_lib_systemd_system_ovn-northd.service +index d281f861c..d5c7dfa5f 100644 +--- a/rhel/usr_lib_systemd_system_ovn-northd.service ++++ b/rhel/usr_lib_systemd_system_ovn-northd.service +@@ -20,6 +20,7 @@ After=syslog.target + [Service] + Type=oneshot + RemainAfterExit=yes ++Environment=OVN_USER_ID=openvswitch:openvswitch + Environment=OVN_RUNDIR=%t/ovn OVN_DBDIR=/var/lib/ovn + EnvironmentFile=-/etc/sysconfig/ovn + EnvironmentFile=-/etc/sysconfig/ovn-northd +-- +2.16.4 + diff --git a/0001-rhel-Fix-reload-of-OVS_USER_ID-on-startup.patch b/0001-rhel-Fix-reload-of-OVS_USER_ID-on-startup.patch new file mode 100644 index 0000000..68610a4 --- /dev/null +++ b/0001-rhel-Fix-reload-of-OVS_USER_ID-on-startup.patch @@ -0,0 +1,48 @@ +From c349652c106b4c4e54e5a4a2f05546d35a801601 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaime=20Caama=C3=B1o=20Ruiz?= +Date: Tue, 5 May 2020 18:41:30 +0200 +Subject: [PATCH] rhel: Fix reload of OVS_USER_ID on startup +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +OVS_USER_ID was being picked up from a previously existing +openvswitch.useropts rendering innefective any configuration change +through sysconfig. + +There is no explicit ordering between Exec* and Environment* stanzas of +systemd, full enviroment is always reloaded before each Exec. We make +sure that openvswitch.useropts is removed first so that a fresh +OVS_USER_ID can be picked up from config. + +Signed-off-by: Jaime Caamaño Ruiz +--- + rhel/usr_lib_systemd_system_ovsdb-server.service | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/rhel/usr_lib_systemd_system_ovsdb-server.service b/rhel/usr_lib_systemd_system_ovsdb-server.service +index 4c170c09b..98338b9df 100644 +--- a/rhel/usr_lib_systemd_system_ovsdb-server.service ++++ b/rhel/usr_lib_systemd_system_ovsdb-server.service +@@ -11,10 +11,16 @@ PIDFile=/var/run/openvswitch/ovsdb-server.pid + Restart=on-failure + EnvironmentFile=/etc/openvswitch/default.conf + EnvironmentFile=-/etc/sysconfig/openvswitch ++EnvironmentFile=-/run/openvswitch.useropts ++ ++# Environment is reloaded for each Exec*, make sure to ++# remove openvswitch.useropts first to reload a fresh ++# OVS_USER_ID from default.conf or sysconfig. ++ExecStartPre=/usr/bin/rm -f /run/openvswitch.useropts ++ + ExecStartPre=-/usr/bin/chown ${OVS_USER_ID} /var/run/openvswitch /var/log/openvswitch +-ExecStartPre=/bin/sh -c 'rm -f /run/openvswitch.useropts; /usr/bin/echo "OVS_USER_ID=${OVS_USER_ID}" > /run/openvswitch.useropts' ++ExecStartPre=/bin/sh -c '/usr/bin/echo "OVS_USER_ID=${OVS_USER_ID}" > /run/openvswitch.useropts' + ExecStartPre=/bin/sh -c 'if [ "$${OVS_USER_ID/:*/}" != "root" ]; then /usr/bin/echo "OVS_USER_OPT=--ovs-user=${OVS_USER_ID}" >> /run/openvswitch.useropts; fi' +-EnvironmentFile=-/run/openvswitch.useropts + ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \ + --no-ovs-vswitchd --no-monitor --system-id=random \ + ${OVS_USER_OPT} \ +-- +2.16.4 + diff --git a/openvswitch-2.12.0.tar.gz b/openvswitch-2.12.0.tar.gz deleted file mode 100644 index 5ff48cd..0000000 --- a/openvswitch-2.12.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:13fd42703180b4b1146c7e97926d09225485868cc2fbbd58dc0c421b4b8fe8f8 -size 8162771 diff --git a/openvswitch-2.13.0.tar.gz b/openvswitch-2.13.0.tar.gz new file mode 100644 index 0000000..666bf0a --- /dev/null +++ b/openvswitch-2.13.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd5f727427e36cab22bdeae61529d8c8fccacc53d968cfa7658f7f935ddda531 +size 7233892 diff --git a/openvswitch.changes b/openvswitch.changes index 7e65162..8cb27c2 100644 --- a/openvswitch.changes +++ b/openvswitch.changes @@ -1,3 +1,37 @@ +------------------------------------------------------------------- +Mon May 4 11:38:26 UTC 2020 - Jaime Caamaño Ruiz + +- Update openvswitch to 2.13.0. + * For a list of changes, check + https://github.com/openvswitch/ovs/blob/v2.13.0/NEWS + * This version drops python2 binding support. Only python3 bindings + provided going forward. + * Tool ovs-vlan-bug-workaround is no longer provided. +- OVN was split to its own repo but is still built together with OVS and as + such from this same source package. OVN initial version is 20.03. + * For a list of changes, check + https://github.com/ovn-org/ovn/blob/v20.03.0/NEWS + * Packages openvswitch-ovn* are renamed to ovn*. + * OVN now has its own sysconfig and log paths. +- Add OVS patch to be proposed upstream: + * 0001-rhel-Fix-reload-of-OVS_USER_ID-on-startup.patch +- Patch instead of post-processing configuration files to set running + credentials (bsc#1157338): + * 0001-Run-openvswitch-as-openvswitch-openvswitch.patch + * 0001-Run-ovn-as-openvswitch-openvswitch.patch +- Will no longer change group ownership of /dev/hugepages to 'hugetlbfs' + (bsc#1140835). System admin should mount hugepages on a path and permissions of + his choosing for OVS. Add patch: + * 0001-dont-change-permissions-of-dev-hugepages.patch +- Will no longer install udev rule to change group ownership of vfio devices to + 'hugetlbfs'. Group name does not make much sense in this case and ownership of + vfio devices should be coordinated system wide or per device. +- Will no longer run under group 'hugetlbfs' on new installs with DPDK enabled. + OVS will now run under group 'openvswitch' whether compiled with DPDK support + or not. +- OVS persistent state is now saved on /var/lib/openvswitch instead of + /etc/openvswitch for new installs. + ------------------------------------------------------------------- Thu Feb 13 18:06:02 UTC 2020 - Dirk Mueller diff --git a/openvswitch.spec b/openvswitch.spec index a7abe35..9f60d71 100644 --- a/openvswitch.spec +++ b/openvswitch.spec @@ -17,12 +17,17 @@ # needssslcertforbuild -%{?!python_module:%define python_module() python-%{**} python3-%{**}} +%define ovs_lname libopenvswitch-2_13-0 +%define ovn_lname libovn-20_03-0 +%define ovs_version 2.13.0 +%define ovn_version 20.03.0 +%define ovs_dir ovs-%{ovs_version} +%define ovn_dir ovn-%{ovn_version} +%define rpmstate %{_rundir}/openvswitch-rpm-state- #Compat macro for new _fillupdir macro introduced in Nov 2017 %if ! %{defined _fillupdir} %define _fillupdir %{_localstatedir}/adm/fillup-templates %endif -%define lname libopenvswitch-2_12-0 %ifarch aarch64 x86_64 %if 0%{?suse_version} # DPDK enabled only SUSE/openSUSE @@ -41,7 +46,7 @@ # Disable building the external kernel datapath by default %bcond_with kmp Name: openvswitch -Version: 2.12.0 +Version: %{ovs_version} Release: 0 Summary: A multilayer virtual network switch # All code is Apache-2.0 except @@ -51,10 +56,21 @@ License: Apache-2.0 AND LGPL-2.1-only AND SISSL Group: Productivity/Networking/System URL: http://openvswitch.org/ Source0: http://openvswitch.org/releases/openvswitch-%{version}.tar.gz -Source1: preamble +Source1: https://github.com/ovn-org/ovn/archive/v%{ovn_version}.tar.gz#/ovn-%{ovn_version}.tar.gz +Source2: preamble Source89: Module.supported.updates +# OVS patches # PATCH-FIX-OPENSUSE: Use-strongswan-for-openvswitch-ipsec-service.patch Patch0: 0001-Use-strongswan-for-openvswitch-ipsec-service.patch +# PATCH-FIX-OPENSUSE: 0001-Run-openvswitch-as-openvswitch-openvswitch.patch +Patch1: 0001-Run-openvswitch-as-openvswitch-openvswitch.patch +# PATCH-FIX-OPENSUSE: 0001-Don-t-change-permissions-of-dev-hugepages.patch +Patch2: 0001-Don-t-change-permissions-of-dev-hugepages.patch +# PATCH-FIX-UPSTREAM: 0001-rhel-Fix-reload-of-OVS_USER_ID-on-startup.patch +Patch3: 0001-rhel-Fix-reload-of-OVS_USER_ID-on-startup.patch +#OVN patches +# PATCH-FIX-OPENSUSE: 0001-Run-ovn-as-openvswitch-openvswitch.patch +Patch20: 0001-Run-ovn-as-openvswitch-openvswitch.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: graphviz @@ -62,6 +78,8 @@ BuildRequires: libcap-ng-devel BuildRequires: libtool BuildRequires: make BuildRequires: pkgconfig +BuildRequires: python3-devel +BuildRequires: unbound-devel BuildRequires: pkgconfig(openssl) Requires: modutils # ovs-ctl / ovs-pki use /usr/bin/uuidgen: @@ -79,25 +97,19 @@ Obsoletes: %{name}-dpdk < 2.7.0 Obsoletes: %{name}-dpdk-switch < 2.7.0 Obsoletes: %{name}-switch < 2.7.0 %if 0%{?suse_version} -BuildRequires: %{python_module devel} -BuildRequires: %{python_module setuptools} -BuildRequires: %{python_module six} -BuildRequires: %{python_module xml} BuildRequires: fdupes BuildRequires: libopenssl-devel BuildRequires: python-rpm-macros +BuildRequires: python3-Sphinx Requires(post): %fillup_prereq Requires(pre): shadow Suggests: logrotate %{?systemd_ordering} %else -BuildRequires: findutils +BuildRequires: environment-modules BuildRequires: openssl-devel -BuildRequires: python-devel -BuildRequires: python-six -BuildRequires: python2-rpm-macros -BuildRequires: python2-setuptools BuildRequires: python3-rpm-macros +BuildRequires: python3-sphinx BuildRequires: systemd-units Requires(post): systemd-units Requires(postun): systemd-units @@ -114,15 +126,14 @@ Suggests: openvswitch-kmp %if %{with dpdk} # We need to be a bit strict with the dpdk version since # it's very possible for DPDK to change it's API between -# releases. This version currently requires 18.11.2. -BuildRequires: dpdk-devel < 18.12 -BuildRequires: dpdk-devel >= 18.11.2 +# releases. This version currently requires 19.11.1. +BuildRequires: dpdk-devel < 19.12 +BuildRequires: dpdk-devel >= 19.11.1 BuildRequires: libmnl-devel BuildRequires: libnuma-devel BuildRequires: libpcap-devel BuildRequires: rdma-core-devel %endif -BuildRequires: unbound-devel %description Open vSwitch is a multilayer virtual network Ethernet switch. It is @@ -144,12 +155,12 @@ BuildRequires: %{kernel_module_package_buildreqs} Kernel modules supporting the openvswitch datapath. %endif -%package -n %{lname} +%package -n %{ovs_lname} Summary: Open vSwitch core libraries License: Apache-2.0 Group: System/Libraries -%description -n %{lname} +%description -n %{ovs_lname} Contains the shared libraries used by Open vSwitch and any eventual extensions. %package doc @@ -159,89 +170,19 @@ Group: System/Libraries BuildArch: noarch %description doc -Contains additional documentation for the Open vSwitch +Contains additional documentation for the Open vSwitch. %package devel Summary: Development files for Open vSwitch License: Apache-2.0 Group: Development/Libraries/C and C++ -Requires: %{lname} = %{version} +Requires: %{ovs_lname} = %{version} Provides: %{name}-dpdk-devel = %{version} Obsoletes: %{name}-dpdk-devel < 2.7.0 %description devel Devel libraries and headers for Open vSwitch. -%package ovn-central -Summary: Open Virtual Network support for Open vSwitch -License: Apache-2.0 -Group: Productivity/Networking/System -Requires: %{name} = %{version} -Requires: %{name}-ovn-common -# openvswitch-ovn has been split into openvswitch-ovn-{central,common,docker,host,vtep} -Provides: %{name}-dpdk-ovn:%{_bindir}/ovn-northd -Provides: %{name}-ovn:%{_bindir}/ovn-northd - -%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 Virtual Network support for Open vSwitch -License: Apache-2.0 -Group: Productivity/Networking/System -Requires: %{name} = %{version} -Requires: %{name}-ovn-common -# openvswitch-ovn has been split into openvswitch-ovn-{central,common,docker,host,vtep} -Provides: %{name}-dpdk-ovn:%{_bindir}/ovn-controller -Provides: %{name}-ovn:%{_bindir}/ovn-controller - -%description ovn-host -This subpackage contains the OVN host controller. - -%package ovn-vtep -Summary: Open Virtual Network VTEP controller for Open vSwitch -License: Apache-2.0 -Group: Productivity/Networking/System -Requires: %{name} = %{version} -Requires: %{name}-ovn-common -# openvswitch-ovn has been split into openvswitch-ovn-{central,common,docker,host,vtep} -Provides: %{name}-dpdk-ovn:%{_bindir}/ovn-controller-vtep -Provides: %{name}-ovn:%{_bindir}/ovn-controller-vtep - -%description ovn-vtep -This subpackage contains the OVN VTEP (VXLAN Tunnel Endpoint) controller. - -%package ovn-common -Summary: Open Virtual Network diagnostic utilities -License: Apache-2.0 -Group: Productivity/Networking/System -Requires: %{name} = %{version} -# openvswitch-ovn has been split into openvswitch-ovn-{central,common,docker,host,vtep} -Provides: %{name}-dpdk-ovn = %{version} -Provides: %{name}-ovn = %{version} -Obsoletes: %{name}-dpdk-ovn < 2.7.0 -Obsoletes: %{name}-ovn < 2.7.0 - -%description ovn-common -Utilities that are used to diagnose and manage the OVN components. - -%package ovn-docker -Summary: Docker network plugins for OVN -License: Apache-2.0 -Group: Productivity/Networking/System -Requires: %{name} = %{version} -Requires: %{name}-ovn-common = %{version} -Requires: python-openvswitch = %{version} -# openvswitch-ovn has been split into openvswitch-ovn-{central,common,docker,host,vtep} -Provides: %{name}-dpdk-ovn:%{_bindir}/ovn-docker-overlay-driver -Provides: %{name}-ovn:%{_bindir}/ovn-docker-overlay-driver - -%description ovn-docker -Docker network plugins for OVN. - %package pki Summary: Open vSwitch public key infrastructure dependency package License: Apache-2.0 @@ -264,7 +205,7 @@ Group: Productivity/Networking/System Requires: %{name} = %{version} Requires: %{name}-switch = %{version} # Since openvswitch/scripts/ovs-vtep requires various ovs python modules. -Requires: python-openvswitch = %{version} +Requires: python3-openvswitch = %{version} Provides: %{name}-dpdk-vtep = %{version} Obsoletes: %{name}-dpdk-vtep < 2.7.0 @@ -279,37 +220,18 @@ Summary: Open vSwitch IPsec tunneling support License: Apache-2.0 Group: Productivity/Networking/System Requires: %{name} = %{version} -Requires: python-openvswitch = %{version} +Requires: python3-openvswitch = %{version} Requires: strongswan %description ipsec This package provides IPsec tunneling support for OVS tunnels. -%package -n python2-ovs -Summary: Python2 bindings for Open vSwitch -License: Apache-2.0 -Group: Productivity/Networking/System -Requires: %{lname} = %{version} -Requires: python2 -Requires: python2-six -Requires: python2-sortedcontainers -Provides: python-%{name} = %{version} -Provides: python-ovs = %{version} -Provides: python2-%{name} = %{version} -Obsoletes: python-%{name} < 2.8.1 -Obsoletes: python-ovs < 2.8.1 -Obsoletes: python2-%{name} < 2.10.1 - -%description -n python2-ovs -This package contains the Python2 bindings for Open vSwitch database. - %package -n python3-ovs Summary: Python3 bindings for Open vSwitch License: Apache-2.0 Group: Productivity/Networking/System -Requires: %{lname} = %{version} +Requires: %{ovs_lname} = %{version} Requires: python3 -Requires: python3-six Requires: python3-sortedcontainers Provides: python3-%{name} = %{version} Obsoletes: python3-%{name} < 2.10.1 @@ -322,15 +244,9 @@ Summary: Open vSwitch test package License: Apache-2.0 Group: Productivity/Networking/System Requires: %{name} = %{version} -Requires: python2 -Requires: python2-Twisted -Requires: python2-ovs = %{version} -Provides: %{name}-dpdk-test = %{version} -Provides: python-%{name}-test = %{version} -Provides: python2-%{name}-test = %{version} -Obsoletes: %{name}-dpdk-test < 2.7.0 -Obsoletes: python-%{name}-test < 2.8.1 -Obsoletes: python2-%{name}-test < 2.10.1 +Requires: python3 +Requires: python3-Twisted +Requires: python3-ovs = %{version} %description test Open vSwitch is a software-based Ethernet switch. @@ -338,27 +254,161 @@ Open vSwitch is a software-based Ethernet switch. This package contains utilities that are useful to diagnose performance and connectivity issues in Open vSwitch setup. +# OVN preambles from now on, overwrites Version and URL +%package -n ovn +Version: %{ovn_version} +Summary: Open Virtual Network diagnostic utilities +License: Apache-2.0 +Group: Productivity/Networking/System +URL: http://ovn.org/ +Requires: %{name} = %{ovs_version} +# openvswitch-ovn has been split into openvswitch-ovn-{central,common,docker,host,vtep} +Provides: %{name}-dpdk-ovn = %{ovn_version} +Provides: %{name}-ovn = %{ovn_version} +Provides: %{name}-ovn-common = %{ovn_version} +Obsoletes: %{name}-dpdk-ovn < 2.7.0 +Obsoletes: %{name}-ovn < 2.7.0 +Obsoletes: %{name}-ovn-common < 2.13.0 +%if 0%{?suse_version} +Suggests: logrotate +%endif + +%description -n ovn +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 -n ovn-central +Version: %{ovn_version} +Summary: Open Virtual Network support for Open vSwitch +License: Apache-2.0 +Group: Productivity/Networking/System +URL: http://ovn.org/ +Requires: %{name} = %{ovs_version} +Requires: ovn = %{ovn_version} +# openvswitch-ovn has been split into openvswitch-ovn-{central,common,docker,host,vtep} +Provides: %{name}-dpdk-ovn:%{_bindir}/ovn-northd +Provides: %{name}-ovn:%{_bindir}/ovn-northd +Provides: %{name}-ovn-central = %{ovn_version} +Obsoletes: %{name}-ovn-central < 2.13.0 + +%description -n ovn-central +This subpackage contains the OVN database and northbound daemon. + +%package -n ovn-host +Version: %{ovn_version} +Summary: Open Virtual Network support for Open vSwitch +License: Apache-2.0 +Group: Productivity/Networking/System +URL: http://ovn.org/ +Requires: %{name} = %{ovs_version} +Requires: ovn = %{ovn_version} +# openvswitch-ovn has been split into openvswitch-ovn-{central,common,docker,host,vtep} +Provides: %{name}-dpdk-ovn:%{_bindir}/ovn-controller +Provides: %{name}-ovn:%{_bindir}/ovn-controller +Provides: %{name}-ovn-host = %{ovn_version} +Obsoletes: %{name}-ovn-host < 2.13.0 + +%description -n ovn-host +This subpackage contains the OVN host controller. + +%package -n ovn-vtep +Version: %{ovn_version} +Summary: Open Virtual Network VTEP controller for Open vSwitch +License: Apache-2.0 +Group: Productivity/Networking/System +URL: http://ovn.org/ +Requires: %{name} = %{ovs_version} +Requires: ovn = %{ovn_version} +# openvswitch-ovn has been split into openvswitch-ovn-{central,common,docker,host,vtep} +Provides: %{name}-dpdk-ovn:%{_bindir}/ovn-controller-vtep +Provides: %{name}-ovn:%{_bindir}/ovn-controller-vtep +Provides: %{name}-ovn-vtep = %{ovn_version} +Obsoletes: %{name}-ovn-vtep < 2.13.0 + +%description -n ovn-vtep +This subpackage contains the OVN VTEP (VXLAN Tunnel Endpoint) controller. + +%package -n ovn-docker +Version: %{ovn_version} +Summary: Docker network plugins for OVN +License: Apache-2.0 +Group: Productivity/Networking/System +URL: http://ovn.org/ +Requires: %{name} = %{ovs_version} +Requires: ovn = %{ovn_version} +Requires: python3-openvswitch = %{ovs_version} +# openvswitch-ovn has been split into openvswitch-ovn-{central,common,docker,host,vtep} +Provides: %{name}-dpdk-ovn:%{_bindir}/ovn-docker-overlay-driver +Provides: %{name}-ovn:%{_bindir}/ovn-docker-overlay-driver +Provides: %{name}-ovn-docker = %{ovn_version} +Obsoletes: %{name}-ovn-docker < 2.13.0 + +%description -n ovn-docker +This subpackage contains the OVN Docker network plugins. + +%package -n ovn-doc +Version: %{ovn_version} +Summary: Open Virtual Network Documentation +License: Apache-2.0 +Group: System/Libraries +BuildArch: noarch + +%description -n ovn-doc +Contains additional documentation for OVN. + +%package -n %{ovn_lname} +Version: %{ovn_version} +Summary: Open Virtual Network core libraries +License: Apache-2.0 +Group: System/Libraries + +%description -n %{ovn_lname} +iThis subpackage contains the OVN shared libraries. + +%package -n ovn-devel +Version: %{ovn_version} +Summary: Development files for Open Virtual Network +License: Apache-2.0 +Group: Development/Libraries/C and C++ +Requires: %{ovn_lname} = %{ovn_version} +# ovn-devel was split form openvswitch-devel +Provides: %{name}-devel:%{_includedir}/ovn + +%description -n ovn-devel +Devel libraries and headers for Open Virtual Network. + %prep -%setup -q -n openvswitch-%{version} +%setup -q -n %{name}-%{ovs_version} -a 1 %patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +cd %{ovn_dir} +%patch20 -p1 %build -set -- * .travis* .mailmap .cirrus.yml -mkdir source -mv "$@" source/ -mkdir obj +mkdir %ovs_dir +# We build both OVS and OVN. OVN is already on its own subdir ovn_dir. +# Move OVS sources to ovs_dir +find $PWD -maxdepth 1 ! -path $PWD ! -name %ovs_dir -a ! -name %ovn_dir -exec mv -t %ovs_dir {} + -pushd source +# Init OVS config. +pushd %ovs_dir # only call boot.sh for distros with autoconf >= 2.64 bash -x boot.sh popd + +# Build kernel modules if needed. %if %{with kmp} - export EXTRA_CFLAGS='-DVERSION=\"%{version}\"' + mkdir kmp + export EXTRA_CFLAGS='-DVERSION=\"%{ovs_version}\"' for flavor in %{flavors_to_build}; do - rm -rf obj/$flavor - cp -r source obj/$flavor - cp -a %{SOURCE89} obj/$flavor/datapath/linux/Module.supported - pushd obj/$flavor + rm -rf kmp/$flavor + cp -r %ovs_dir kmp/$flavor + cp -a %{SOURCE89} kmp/$flavor/datapath/linux/Module.supported + pushd kmp/$flavor %configure \ --with-logdir=%{_localstatedir}/log/openvswitch \ --with-rundir=%{_rundir}/openvswitch \ @@ -370,13 +420,17 @@ popd done %endif -pushd source +# Build OVS. +pushd %ovs_dir %if %{with dpdk} dpdk_opt="--with-dpdk" %endif -%{_bindir}/python build-aux/dpdkstrip.py \ +# This currently has no effect as the @dpdk section has been patched out of the +# service file. Run it anyway, in case a new section that we need appears over +# time. +python3 build-aux/dpdkstrip.py \ %if %{with dpdk} --dpdk \ %else @@ -385,26 +439,43 @@ pushd source < rhel/usr_lib_systemd_system_ovs-vswitchd.service.in \ > rhel/usr_lib_systemd_system_ovs-vswitchd.service -# This is only used for building the ovstest module -export PYTHON='%{_bindir}/python2' - %configure \ --disable-static \ - --enable-libcapng \ --enable-shared \ + --enable-libcapng \ --enable-ssl \ ${dpdk_opt} \ + --with-dbdir=%{_sharedstatedir}/openvswitch \ --with-rundir=%{_rundir}/openvswitch \ - --with-logdir=%{_localstatedir}/log/openvswitch + --with-logdir=%{_localstatedir}/log/openvswitch \ + --with-pkidir=%{_sharedstatedir}/openvswitch/pki \ + PYTHON3=%{_bindir}/python3 make %{?_smp_mflags} popd +# Build OVN. +pushd %ovn_dir + +bash -x boot.sh +%configure \ + --with-ovs-source=../%ovs_dir \ + --disable-static \ + --enable-shared \ + --enable-libcapng \ + --enable-ssl \ + --with-dbdir=%{_sharedstatedir}/ovn \ + --with-rundir=%{_rundir}/ovn \ + --with-logdir=%{_localstatedir}/log/ovn \ + --with-pkidir=%{_sharedstatedir}/openvswitch/pki \ + PYTHON3=%{_bindir}/python3 +make %{?_smp_mflags} + %check %if %{with check} -pushd source touch resolv.conf export OVS_RESOLV_CONF=$(pwd)/resolv.conf +pushd %ovs_dir # Recheck tests before we declare them broken. If that fails, dump # the log and exit. >2.5.0 uses the RECHECK env variable so this # needs to be taken into consideration for future releases. @@ -414,29 +485,72 @@ if ! make check TESTSUITEFLAGS="%{?_smp_mflags}" && exit 1 fi popd + +pushd $ovn_dir +if ! make check TESTSUITEFLAGS="%{?_smp_mflags}" RECHECK=yes; then + cat tests/testsuite.log + exit 1 +fi +popd %endif %install + +# Intall kernel modules. %if %{with kmp} export NO_BRP_STALE_LINK_ERROR=yes export INSTALL_MOD_PATH=%{buildroot} export INSTALL_MOD_DIR=updates export BRP_PESIGN_FILES="*.ko /lib/firmware" for flavor in %{flavors_to_build}; do - pushd obj/$flavor/datapath/linux + pushd kmp/$flavor/datapath/linux make -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor modules_install M=$PWD popd done %endif -pushd source -%make_install +# Install OVS dist files on temp buildroot. +mkdir -p buildroot/ovs +pushd %ovs_dir +%make_install DESTDIR=$(pwd)/../buildroot/ovs +popd + +# Clean up OVS files +rm -f buildroot/ovs%{_libdir}/*.a +rm -f buildroot/ovs%{_libdir}/*.la + + +# Install OVN dist files on temp build root. +mkdir -p buildroot/ovn +pushd %ovn_dir +%make_install DESTDIR=$(pwd)/../buildroot/ovn +popd + +# Clean up OVN files +rm -f buildroot/ovn%{_datadir}/ovn/scripts/ovs* +rm -rf buildroot/ovn%{_datadir}/ovn/bugtool-plugins +rm -f buildroot/ovn%{_libdir}/*.a +rm -f buildroot/ovn%{_libdir}/*.la + +# Remove known OVS dupes from OVN. +rm -f buildroot/ovn%{_mandir}/man5/ovs* +rm -f buildroot/ovn%{_mandir}/man7/ovs* + +# Verify no duplicates and move dist files to real buildroot +dupes=$(find buildroot -mindepth 2 -type f -printf '%p\n' | cut -d'/' -f3- | sort | uniq -c | grep -Ev "^ *1 " || true) +[ -n "$dupes" ] && exit 1 +cp -an buildroot/ovn/* %{buildroot}/ +cp -an buildroot/ovs/* %{buildroot}/ + + +# Install OVS additional files +pushd %ovs_dir # Install extra headers not included with 'make install' copy_headers() { src=$1 - dst=$RPM_BUILD_ROOT/$2 + dst=%{buildroot}/$2 install -d -m 0755 $dst install -m 0644 $src/*.h $dst } @@ -446,26 +560,31 @@ copy_headers include/sparse/netinet %{_includedir}/openvswitch/sparse/netinet copy_headers include/sparse/sys %{_includedir}/openvswitch/sparse/sys copy_headers lib %{_includedir}/openvswitch/lib -for service in openvswitch ovn-controller ovn-controller-vtep \ - ovn-northd ovsdb-server ovs-vswitchd ovs-delete-transient-ports \ - openvswitch-ipsec; do +for service in openvswitch \ + ovsdb-server \ + ovs-vswitchd \ + ovs-delete-transient-ports \ + openvswitch-ipsec; do install -D -m 644 rhel/usr_lib_systemd_system_${service}.service \ %{buildroot}%{_unitdir}/${service}.service ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rc${service} done -%if %{with dpdk} - install -p -D -m 0644 rhel/usr_lib_udev_rules.d_91-vfio.rules \ - %{buildroot}%{_prefix}/lib/udev/rules.d/91-vfio.rules -%endif +# This changes group ownership of any vfio device to 'hugetlbfs' through udev. +# That's probably not the most appropriate name for such a group and also +# should probably be coordinated system wide. +#%%if %%{with dpdk} +# install -p -D -m 0644 rhel/usr_lib_udev_rules.d_91-vfio.rules \ +# %%{buildroot}%%{_prefix}/lib/udev/rules.d/91-vfio.rules +#%%endif %if 0%{?suse_version} install -D -m 644 rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \ %{buildroot}%{_fillupdir}/sysconfig.openvswitch # fixing W: suse-filelist-forbidden-bashcomp-userdirs /etc/bash_completion.d/ovs-appctl-bashcomp.bash is not allowed in SUSE -mkdir -p %{buildroot}/%{_prefix}/share/bash-completion/completions/ -mv %{buildroot}/%{_sysconfdir}/bash_completion.d/ovs-* %{buildroot}/%{_prefix}/share/bash-completion/completions/ +mkdir -p %{buildroot}/%{_datadir}/bash-completion/completions/ +mv %{buildroot}/%{_sysconfdir}/bash_completion.d/ovs-* %{buildroot}/%{_datadir}/bash-completion/completions/ %else install -D -m 644 rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \ @@ -485,11 +604,72 @@ install -p -D -m 0644 rhel/etc_openvswitch_default.conf \ %{buildroot}/%{_sysconfdir}/openvswitch/default.conf install -m 644 rhel/etc_logrotate.d_openvswitch \ %{buildroot}%{_sysconfdir}/logrotate.d/openvswitch -install -d -m 755 %{buildroot}%{_sysconfdir}/profile.d install -m 644 vswitchd/vswitch.ovsschema \ %{buildroot}%{_datadir}/openvswitch/vswitch.ovsschema +# Copy documentation. +mkdir -p %{buildroot}%{_docdir}/%{name} +cp -r Documentation/* %{buildroot}%{_docdir}/%{name} +rm -rf %{buildroot}%{_docdir}/%{name}/_build +rm %{buildroot}%{_docdir}/%{name}/automake.mk +rm %{buildroot}%{_docdir}/%{name}/conf.py + +popd + +# Tests +mkdir -p %{buildroot}%{python3_sitelib} +cp -a %{buildroot}%{_datadir}/openvswitch/python/ovstest \ + %{buildroot}%{python3_sitelib} + +# Python subpackage +# Build on a temporary directory. +mkdir python3-ovs && pushd $_ +cp -a ../%{ovs_dir}/python/* $(pwd)/ + +# Some build files are in sources while others are generated directly on +# buildroot as part of make_install (dirs.py), so update the former with the +# latter. +cp -an %{buildroot}%{_datadir}/openvswitch/python/* $(pwd)/ +rm -rf %{buildroot}%{_datadir}/openvswitch/python + +export LDFLAGS="${LDFLAGS} -L %{buildroot}%{_libdir}" +export CPPFLAGS="-I ../../include" + +%if 0%{?suse_version} +# SLES +%{python3_build} +%{python3_install} +%fdupes %{buildroot}%{python3_sitearch} +%else +# RHEL +%py3_build +%py3_install +%endif + +# Done with OVS additional files. +popd + + +# Install OVN aditional files. +pushd %ovn_dir + +for service in ovn-controller \ + ovn-controller-vtep \ + ovn-northd; do + install -D -m 644 rhel/usr_lib_systemd_system_${service}.service \ + %{buildroot}%{_unitdir}/${service}.service + ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rc${service} +done + +%if 0%{?suse_version} +install -D -m 644 rhel/usr_share_ovn_scripts_systemd_sysconfig.template \ + %{buildroot}%{_fillupdir}/sysconfig.ovn +%else +install -D -m 644 rhel/usr_share_ovn_scripts_systemd_sysconfig.template \ + %{buildroot}%{_sysconfdir}/sysconfig/ovn +%endif + # firewalld install -d %{buildroot}%{_prefix}/lib/firewalld/services/ install -p -m 0644 rhel/usr_lib_firewalld_services_ovn-central-firewall-service.xml \ @@ -497,137 +677,30 @@ install -p -m 0644 rhel/usr_lib_firewalld_services_ovn-central-firewall-service. install -p -m 0644 rhel/usr_lib_firewalld_services_ovn-host-firewall-service.xml \ %{buildroot}%{_prefix}/lib/firewalld/services/ovn-host-firewall-service.xml +install -p -D -m 0644 rhel/etc_logrotate.d_ovn \ + %{buildroot}%{_sysconfdir}/logrotate.d/ovn +install -d -m 0755 %{buildroot}%{_localstatedir}/log/ovn + # Copy documentation. -mkdir -p %{buildroot}%{_docdir}/%{name} -cp -r Documentation/* %{buildroot}%{_docdir}/%{name} -find %{buildroot}%{_docdir}/%{name}/ -type f ! -name '*.rst' -delete +mkdir -p %{buildroot}%{_docdir}/ovn +cp -r Documentation/* %{buildroot}%{_docdir}/ovn +rm -rf %{buildroot}%{_docdir}/ovn/_build +rm %{buildroot}%{_docdir}/ovn/automake.mk +rm %{buildroot}%{_docdir}/ovn/conf.py +# Done with OVN additional files. popd -# Tests -mkdir -p %{buildroot}%{python2_sitelib} -cp -a %{buildroot}%{_datadir}/openvswitch/python/ovstest \ - %{buildroot}%{python2_sitelib} - -# Python subpackages -# Build on a temporary directory. -pushd $(mktemp -d -p source/build-aux) -cp -a ../../python/* $(pwd)/ - -# Some build files are in sources while others are generated directly on -# buildroot as part of make_install (dirs.py), so update the former with the -# latter. -cp -a %{buildroot}%{_datadir}/openvswitch/python/* $(pwd)/ - -export LDFLAGS="${LDFLAGS} -L %{buildroot}%{_libdir}" -export CPPFLAGS="-I ../../include" - -%if 0%{?suse_version} -# SLES -%{python_build} -%{python_install} -%fdupes %{buildroot}%{python2_sitearch} -%fdupes %{buildroot}%{python3_sitearch} - -%else -# RHEL -%py2_build -%py2_install -# No python3 for RHEL. We are missing python3-* packages from EPEL -%endif - -popd - -rm -rf %{buildroot}%{_datadir}/openvswitch/python - -find %{buildroot} -type f -name "*.la" -delete -print - -%define eflag /run/openvswitch-was-enabled - -%post -/sbin/ldconfig - -if [ $1 -eq 1 ]; then - # Follow the upstream strategy that no running openvswitch - # configuration is changed on upgrade so use fillup only for new installs. - %{?suse_version: %fillup_only -n openvswitch} - -%if %{with dpdk} - %define rgroup hugetlbfs -%else - %define rgroup openvswitch -%endif - - sed -i \ - 's@^#OVS_USER_ID="openvswitch:openvswitch"@OVS_USER_ID="openvswitch:%{rgroup}"@'\ - %{_sysconfdir}/sysconfig/openvswitch - sed -i 's:\(.*su\).*:\1 openvswitch %{rgroup}:' %{_sysconfdir}/logrotate.d/openvswitch - - # In the case of upgrade, this is not needed - chown -R openvswitch:openvswitch %{_sysconfdir}/openvswitch - chown -R openvswitch:%{rgroup} %{_localstatedir}/log/openvswitch -fi -%if 0%{?suse_version} - %service_add_post ovsdb-server.service ovs-vswitchd.service openvswitch.service ovs-delete-transient-ports.service -%else - %if 0%{?systemd_post:1} - %systemd_post %{name}.service - %else - # Package install, not upgrade - if [ $1 -eq 1 ]; then - /bin/systemctl daemon-reload >dev/null || : - fi - %endif -%endif - -%post ipsec -%if 0%{?suse_version} - %service_add_post openvswitch-ipsec.service -%endif - -%posttrans -# Save the "enabled" state across the transition of ownership -# of openvswitch.service from openvswitch-switch to -# openvswitch. -if test -f %{eflag}; then - rm -f %{eflag} - systemctl enable openvswitch.service -fi - -%postun -/sbin/ldconfig -# Do not restart the openvswitch service on package updates. -# Restarting the service may break the existing network state. -# For example, openflow rules are not automatically re-installed -# after an OvS update if no SDN controller is used. Moreover, restaring -# the OvS can break remote administration during the update so let the -# admin decide when it's the best time for an OvS restart. -# 5771f476573445710834234a6a9f7bd999a027e7 ("fedora: do not restart the service on a pkg upgrade") -%if 0%{?suse_version} - %service_del_postun -n ovsdb-server.service -n ovs-vswitchd.service -n openvswitch.service -n ovs-delete-transient-ports.service -%else - %if 0%{?systemd_postun:1} - %systemd_postun %{name}.service - %else - /bin/systemctl daemon-reload >/dev/null 2>&1 || : - %endif -%endif - -%postun ipsec -%if 0%{?suse_version} - %service_del_postun -n openvswitch-ipsec.service -%endif - %pre %if 0%{?suse_version} -%service_add_pre ovsdb-server.service ovs-vswitchd.service openvswitch.service ovs-delete-transient-ports.service + %service_add_pre ovsdb-server.service ovs-vswitchd.service openvswitch.service ovs-delete-transient-ports.service %endif -# Save the "enabled" state across the transition of -# ownership of openvswitch.service from openvswitch-switch to -# openvswitch. -if [ "$1" -ge 1 ]; then \ +if [ "$1" -ge 1 ]; then + # Save the "enabled" state across the transition of + # ownership of openvswitch.service from openvswitch-switch to + # openvswitch. if [ x$(systemctl is-enabled openvswitch.service 2>/dev/null ||:) = "xenabled" ]; then - touch %{eflag} + touch %{rpmstate}openvswitch fi fi @@ -636,11 +709,6 @@ getent passwd openvswitch >/dev/null || \ useradd -r -g openvswitch -d / -s /sbin/nologin \ -c "Open vSwitch Daemons" openvswitch -%if %{with dpdk} - getent group hugetlbfs >/dev/null || \ - groupadd -r hugetlbfs - usermod -a -G hugetlbfs openvswitch -%endif exit 0 %pre ipsec @@ -668,146 +736,6 @@ exit 0 %service_del_preun openvswitch-ipsec.service %endif -%post -n %{lname} -p /sbin/ldconfig -%postun -n %{lname} -p /sbin/ldconfig - -%pre ovn-central -%if 0%{?suse_version} -%service_add_pre ovn-northd.service -%endif - -%pre ovn-host -%if 0%{?suse_version} -%service_add_pre ovn-controller.service -%endif - -%pre ovn-vtep -%if 0%{?suse_version} -%service_add_pre ovn-controller-vtep.service -%endif - -%post ovn-central -%if 0%{?suse_version} - %service_add_post ovn-northd.service -%else - %if 0%{?systemd_post:1} - %systemd_post ovn-northd.service - %else - # Package install, not upgrade - if [ $1 -eq 1 ]; then - /bin/systemctl daemon-reload >dev/null || : - fi - %endif -%endif - -%post ovn-host -%if 0%{?suse_version} - %service_add_post ovn-controller.service -%else - %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 -%endif - -%post ovn-vtep -%if 0%{?suse_version} - %service_add_post ovn-controller-vtep.service -%else - %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 -%endif - -%preun ovn-central -%if 0%{?suse_version} - %service_del_preun ovn-northd.service -%else - %if 0%{?systemd_preun:1} - %systemd_preun ovn-northd.service - %else - # Package install, not upgrade - if [ $1 -eq 0 ]; then - /bin/systemctl --no-reload disable ovn-northd.service >/dev/null 2>&1 || : - /bin/systemctl stop ovn-northd.service >/dev/null 2>&1 || : - fi - %endif -%endif - -%preun ovn-host -%if 0%{?suse_version} - %service_del_preun ovn-controller.service -%else - %if 0%{?systemd_preun:1} - %systemd_preun ovn-controller.service - %else - # Package install, not upgrade - if [ $1 -eq 0 ]; then - /bin/systemctl --no-reload disable ovn-controller.service >/dev/null 2>&1 || : - /bin/systemctl stop ovn-controller.service >/dev/null 2>&1 || : - fi - %endif -%endif - -%preun ovn-vtep -%if 0%{?suse_version} - %service_del_preun ovn-controller-vtep.service -%else - %if 0%{?systemd_preun:1} - %systemd_preun ovn-controller-vtep.service - %else - # Package install, not upgrade - if [ $1 -eq 0 ]; then - /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 -%endif - -%postun ovn-central -%if 0%{?suse_version} - %service_del_postun -n ovn-northd.service -%else - %if 0%{?systemd_postun:1} - %systemd_postun ovn-northd.service - %else - /bin/systemctl daemon-reload >/dev/null 2>&1 || : - %endif -%endif - -%post ovn-common -p /sbin/ldconfig -%postun ovn-common -p /sbin/ldconfig -%postun ovn-host -%if 0%{?suse_version} - %service_del_postun -n ovn-controller.service -%else - %if 0%{?systemd_postun:1} - %systemd_postun ovn-controller.service - %else - /bin/systemctl daemon-reload >/dev/null 2>&1 || : - %endif -%endif - -%postun ovn-vtep -%if 0%{?suse_version} - %service_del_postun -n ovn-controller-vtep.service -%else - %if 0%{?systemd_postun:1} - %systemd_postun ovn-controller-vtep.service - %else - /bin/systemctl daemon-reload >/dev/null 2>&1 || : - %endif -%endif - %preun test %if 0%{?suse_version} %service_del_preun openvswitch-testcontroller @@ -823,6 +751,56 @@ exit 0 %endif %endif +%post +if [ $1 -eq 1 ]; then + # Follow the upstream strategy that no running openvswitch + # configuration is changed on upgrade so use fillup only for new installs. + %{?suse_version: %fillup_only -n openvswitch} +fi + +%if 0%{?suse_version} + %service_add_post ovsdb-server.service ovs-vswitchd.service openvswitch.service ovs-delete-transient-ports.service +%else + %if 0%{?systemd_post:1} + %systemd_post openvswitch.service + %else + # Package install, not upgrade + if [ $1 -eq 1 ]; then + /bin/systemctl daemon-reload >dev/null || : + fi + %endif +%endif + +%post ipsec +%if 0%{?suse_version} + %service_add_post openvswitch-ipsec.service +%endif + +%post -n %{ovs_lname} -p /sbin/ldconfig + +%postun +# Do not restart the openvswitch service on package updates. +# Restarting the service may break the existing network state. +# For example, openflow rules are not automatically re-installed +# after an OvS update if no SDN controller is used. Moreover, restaring +# the OvS can break remote administration during the update so let the +# admin decide when it's the best time for an OvS restart. +# 5771f476573445710834234a6a9f7bd999a027e7 ("fedora: do not restart the service on a pkg upgrade") +%if 0%{?suse_version} + %service_del_postun -n ovsdb-server.service -n ovs-vswitchd.service -n openvswitch.service -n ovs-delete-transient-ports.service +%else + %if 0%{?systemd_postun:1} + %systemd_postun openvswitch.service + %else + /bin/systemctl daemon-reload >/dev/null 2>&1 || : + %endif +%endif + +%postun ipsec +%if 0%{?suse_version} + %service_del_postun -n openvswitch-ipsec.service +%endif + %postun test %if 0%{?suse_version} %service_del_postun -n openvswitch-testcontroller @@ -834,17 +812,242 @@ exit 0 %endif %endif -%post vtep -p /sbin/ldconfig -%postun vtep -p /sbin/ldconfig +%postun -n %{ovs_lname} -p /sbin/ldconfig + +%posttrans +# Save the "enabled" state across the transition of ownership +# of openvswitch.service from openvswitch-switch to +# openvswitch. +if [ -e %{rpmstate}openvswitch ]; then + rm -f %{rpmstate}openvswitch + systemctl enable openvswitch.service +fi + +# Default DB path changed from /etc/openvswitch to /var/lib/openvswitch. +# But try to keep the old path for upgraded users already making use of it. +ovsdbpid=$(systemctl is-active --quiet ovsdb-server && systemctl show -p MainPID --value ovsdb-server || echo 0) +if [ $ovsdbpid -gt 0 ] && [ -n "$(find /proc/$ovsdbpid/fd/ -type l -lname '%{_sysconfdir}/openvswitch/conf.db')" ]; then + # We have ovsdb-server pid from the unit file with DB open at the old path. + # If we did not override OVS_DBDIR already, do it. + if ! grep -qE "^OVS_DBDIR=" %{_sysconfdir}/sysconfig/openvswitch; then + sed -i -e '1{r /dev/stdin' -e 'N}' %{_sysconfdir}/sysconfig/openvswitch << EOF +# OVS_DBDIR was automatically inserted here on openvswitch package upgrade to +# preserve the currently used /etc/openvswitch as the database directory. +# Note that new installs use /var/lib/openvswitch as the default database +# directory by omission. +OVS_DBDIR=%{_sysconfdir}/openvswitch +EOF + fi +fi + +%pre -n ovn-central +%if 0%{?suse_version} +%service_add_pre ovn-northd.service +%endif +# Save the "enabled" state across the transition of +# ownership of ovn-northd.service from openvswitch-ovn-central to +# ovn-central. +if [ "$1" -ge 1 ]; then + if [ x$(systemctl is-enabled ovn-northd.service 2>/dev/null ||:) = "xenabled" ]; then + touch %{rpmstate}ovn-northd + fi +fi + +%pre -n ovn-host +%if 0%{?suse_version} +%service_add_pre ovn-controller.service +%endif +# Save the "enabled" state across the transition of +# ownership of ovn-controller.service from openvswitch-ovn-host to +# ovn-host. +if [ "$1" -ge 1 ]; then + if [ x$(systemctl is-enabled ovn-controller.service 2>/dev/null ||:) = "xenabled" ]; then + touch %{rpmstate}ovn-controller + fi +fi + +%pre -n ovn-vtep +%if 0%{?suse_version} +%service_add_pre ovn-controller-vtep.service +%endif +# Save the "enabled" state across the transition of +# ownership of ovn-controller-vtep.service from openvswitch-ovn-vtep to +# ovn-vtep. +if [ "$1" -ge 1 ]; then + if [ x$(systemctl is-enabled ovn-controller-vtep.service 2>/dev/null ||:) = "xenabled" ]; then + touch %{rpmstate}ovn-controller-vtep + fi +fi + +%preun -n ovn-central +%if 0%{?suse_version} + %service_del_preun ovn-northd.service +%else + %if 0%{?systemd_preun:1} + %systemd_preun ovn-northd.service + %else + # Package install, not upgrade + if [ $1 -eq 0 ]; then + /bin/systemctl --no-reload disable ovn-northd.service >/dev/null 2>&1 || : + /bin/systemctl stop ovn-northd.service >/dev/null 2>&1 || : + fi + %endif +%endif + +%preun -n ovn-host +%if 0%{?suse_version} + %service_del_preun ovn-controller.service +%else + %if 0%{?systemd_preun:1} + %systemd_preun ovn-controller.service + %else + # Package install, not upgrade + if [ $1 -eq 0 ]; then + /bin/systemctl --no-reload disable ovn-controller.service >/dev/null 2>&1 || : + /bin/systemctl stop ovn-controller.service >/dev/null 2>&1 || : + fi + %endif +%endif + +%preun -n ovn-vtep +%if 0%{?suse_version} + %service_del_preun ovn-controller-vtep.service +%else + %if 0%{?systemd_preun:1} + %systemd_preun ovn-controller-vtep.service + %else + # Package install, not upgrade + if [ $1 -eq 0 ]; then + /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 +%endif + +%post -n ovn +if [ $1 -eq 1 ]; then + # Follow the upstream strategy that no running openvswitch + # configuration is changed on upgrade so use fillup only for new installs. + %{?suse_version: %fillup_only -n ovn} +fi + +%post -n ovn-central +%if 0%{?suse_version} + %service_add_post ovn-northd.service +%else + %if 0%{?systemd_post:1} + %systemd_post ovn-northd.service + %else + # Package install, not upgrade + if [ $1 -eq 1 ]; then + /bin/systemctl daemon-reload >dev/null || : + fi + %endif +%endif + +%post -n ovn-host +%if 0%{?suse_version} + %service_add_post ovn-controller.service +%else + %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 +%endif + +%post -n ovn-vtep +%if 0%{?suse_version} + %service_add_post ovn-controller-vtep.service +%else + %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 +%endif + +%post -n %{ovn_lname} -p /sbin/ldconfig + +%postun -n ovn-central +%if 0%{?suse_version} + %service_del_postun -n ovn-northd.service +%else + %if 0%{?systemd_postun:1} + %systemd_postun ovn-northd.service + %else + /bin/systemctl daemon-reload >/dev/null 2>&1 || : + %endif +%endif + +%postun -n ovn-host +%if 0%{?suse_version} + %service_del_postun -n ovn-controller.service +%else + %if 0%{?systemd_postun:1} + %systemd_postun ovn-controller.service + %else + /bin/systemctl daemon-reload >/dev/null 2>&1 || : + %endif +%endif + +%postun -n ovn-vtep +%if 0%{?suse_version} + %service_del_postun -n ovn-controller-vtep.service +%else + %if 0%{?systemd_postun:1} + %systemd_postun ovn-controller-vtep.service + %else + /bin/systemctl daemon-reload >/dev/null 2>&1 || : + %endif +%endif + +%postun -n %{ovn_lname} -p /sbin/ldconfig + +%posttrans -n ovn-central +# Save the "enabled" state across the transition of +# ownership of ovn-northd.service from openvswitch-ovn-central to +# ovn-central. +if [ -e %{rpmstate}ovn-northd ]; then + rm %{rpmstate}ovn-northd + systemctl enable ovn-northd.service +fi + +%posttrans -n ovn-host +# Save the "enabled" state across the transition of +# ownership of ovn-northd.service from openvswitch-ovn-central to +# ovn-central. +if [ -e %{rpmstate}ovn-controller ]; then + rm %{rpmstate}ovn-controller + systemctl enable ovn-controller.service +fi + +%posttrans -n ovn-vtep +# Save the "enabled" state across the transition of +# ownership of ovn-controller.service from openvswitch-ovn-host to +# ovn-host. +if [ -e %{rpmstate}ovn-controller-vtep ]; then + rm %{rpmstate}ovn-controller-vtep + systemctl enable ovn-controller-vtep.service +fi %files -%defattr(-,openvswitch,openvswitch) +%defattr(-,root,openvswitch, 775) %dir %{_sysconfdir}/openvswitch -%config(noreplace) %{_sysconfdir}/openvswitch/default.conf -%config %ghost %{_sysconfdir}/openvswitch/conf.db -%ghost %{_sysconfdir}/openvswitch/.conf.db.~lock~ +%defattr(-,openvswitch,openvswitch) +%dir %{_localstatedir}/log/openvswitch %config %ghost %{_sysconfdir}/openvswitch/system-id.conf +# This is no longer the DB path for new installs but we still need this for +# upgrades that preserve the old DB path. +%ghost %{_sysconfdir}/openvswitch/.conf.db.~lock~ %defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/openvswitch/default.conf %{_bindir}/ovs-appctl %{_bindir}/ovs-docker %{_bindir}/ovs-dpctl @@ -855,7 +1058,6 @@ exit 0 %{_bindir}/ovsdb-client %{_bindir}/ovsdb-tool %{_sbindir}/ovs-bugtool -%{_sbindir}/ovs-vlan-bug-workaround %{_sbindir}/ovs-vswitchd %{_sbindir}/ovsdb-server %dir %{_datadir}/openvswitch @@ -873,8 +1075,11 @@ exit 0 %{_mandir}/man1/ovsdb-tool.1%{?ext_man} %{_mandir}/man5/ovs-vswitchd.conf.db.5%{?ext_man} %{_mandir}/man5/ovsdb-server.5%{?ext_man} +%{_mandir}/man5/ovsdb.5%{?ext_man} %{_mandir}/man7/ovs-actions.7%{?ext_man} %{_mandir}/man7/ovs-fields.7%{?ext_man} +%{_mandir}/man7/ovsdb.7%{?ext_man} +%{_mandir}/man7/ovsdb-server.7%{?ext_man} %{_mandir}/man8/ovs-appctl.8%{?ext_man} %{_mandir}/man8/ovs-bugtool.8%{?ext_man} %{_mandir}/man8/ovs-ctl.8%{?ext_man} @@ -882,7 +1087,6 @@ exit 0 %{_mandir}/man8/ovs-dpctl.8%{?ext_man} %{_mandir}/man8/ovs-kmod-ctl.8%{?ext_man} %{_mandir}/man8/ovs-ofctl.8%{?ext_man} -%{_mandir}/man8/ovs-vlan-bug-workaround.8%{?ext_man} %{_mandir}/man8/ovs-parse-backtrace.8%{?ext_man} %{_mandir}/man8/ovs-vsctl.8%{?ext_man} %{_mandir}/man8/ovs-vswitchd.8%{?ext_man} @@ -906,15 +1110,11 @@ exit 0 %{_sysconfdir}/sysconfig/network-scripts/ifup-ovs %{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs %endif -%attr(750,root,root) %dir %{_localstatedir}/log/openvswitch %ghost %attr(755,root,root) %{_rundir}/openvswitch %ghost %attr(644,root,root) %{_rundir}/openvswitch.useropts -%if %{with dpdk} -%{_prefix}/lib/udev/rules.d/91-vfio.rules -%endif %exclude %{_docdir}/%{name} -%doc source/AUTHORS.rst source/CONTRIBUTING.rst source/NEWS source/README.rst -%license source/LICENSE source/NOTICE +%doc %ovs_dir/AUTHORS.rst %ovs_dir/CONTRIBUTING.rst %ovs_dir/NEWS %ovs_dir/README.rst +%license %ovs_dir/LICENSE %ovs_dir/NOTICE %files doc %exclude %{_docdir}/%{name}/AUTHORS.rst @@ -923,12 +1123,11 @@ exit 0 %exclude %{_docdir}/%{name}/README.rst %{_docdir}/%{name}/ -%files -n %{lname} +%files -n %{ovs_lname} %{_libdir}/libofproto-2*.so.* %{_libdir}/libopenvswitch-2*.so.* %{_libdir}/libovsdb-2*.so.* %{_libdir}/libsflow-2*.so.* -%{_libdir}/libovn-2*.so.* %{_libdir}/libvtep-2*.so.* %files pki @@ -947,68 +1146,9 @@ exit 0 %{_sbindir}/rcopenvswitch-ipsec %{_unitdir}/openvswitch-ipsec.service -%files -n python2-ovs -%{python2_sitearch}/ovs/ -%{python2_sitearch}/ovs-*.egg-info - -%if 0%{?suse_version} %files -n python3-ovs %{python3_sitearch}/ovs/ %{python3_sitearch}/ovs-*.egg-info -%endif - -%files ovn-docker -%{_bindir}/ovn-docker-overlay-driver -%{_bindir}/ovn-docker-underlay-driver - -%files ovn-common -%{_bindir}/ovn-nbctl -%{_bindir}/ovn-sbctl -%{_bindir}/ovn-trace -%{_bindir}/ovn-detrace -%{_datadir}/openvswitch/scripts/ovn-ctl -%{_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}/man5/ovn-nb.5%{?ext_man} -%{_mandir}/man5/ovn-sb.5%{?ext_man} -%{_mandir}/man1/ovn-detrace.1%{?ext_man} -%{_mandir}/man7/ovn-architecture.7%{?ext_man} -%{_mandir}/man8/ovn-ctl.8%{?ext_man} -%{_mandir}/man8/ovn-nbctl.8%{?ext_man} -%{_mandir}/man8/ovn-trace.8%{?ext_man} -%{_mandir}/man8/ovn-sbctl.8%{?ext_man} - -%files ovn-central -# Can't use libexecdir because it differs between -# RedHat and SUSE and firewalld expects things in /usr/lib -%dir %{_prefix}/lib/firewalld -%dir %{_prefix}/lib/firewalld/services -%{_bindir}/ovn-northd -%{_mandir}/man8/ovn-northd.8%{?ext_man} -%{_datadir}/openvswitch/ovn-nb.ovsschema -%{_datadir}/openvswitch/ovn-sb.ovsschema -%{_unitdir}/ovn-northd.service -%{_sbindir}/rcovn-northd -%{_prefix}/lib/firewalld/services/ovn-central-firewall-service.xml - -%files ovn-host -# Can't use libexecdir because it differs between -# RedHat and SUSE and firewalld expects things in /usr/lib -%dir %{_prefix}/lib/firewalld -%dir %{_prefix}/lib/firewalld/services -%{_bindir}/ovn-controller -%{_mandir}/man8/ovn-controller.8%{?ext_man} -%{_unitdir}/ovn-controller.service -%{_sbindir}/rcovn-controller -%{_prefix}/lib/firewalld/services/ovn-host-firewall-service.xml - -%files ovn-vtep -%{_bindir}/ovn-controller-vtep -%{_mandir}/man8/ovn-controller-vtep.8%{?ext_man} -%{_unitdir}/ovn-controller-vtep.service -%{_sbindir}/rcovn-controller-vtep %files test %{_bindir}/ovs-l3ping @@ -1023,18 +1163,111 @@ exit 0 %{_mandir}/man8/ovs-l3ping.8%{?ext_man} %{_mandir}/man8/ovs-tcpdump.8%{?ext_man} %{_mandir}/man8/ovs-testcontroller.8%{?ext_man} -%{python2_sitelib}/ovstest/ +%{_mandir}/man8/ovs-test.8%{?ext_man} +%{_mandir}/man8/ovs-vlan-test.8%{?ext_man} +%{python3_sitelib}/ovstest/ %files devel %{_libdir}/libofproto.so %{_libdir}/libopenvswitch.so -%{_libdir}/libovn.so %{_libdir}/libovsdb.so %{_libdir}/libsflow.so %{_libdir}/libvtep.so %{_includedir}/openflow/ -%{_includedir}/ovn/ %{_includedir}/openvswitch/ %{_libdir}/pkgconfig/*.pc +%files -n ovn +%defattr(-,openvswitch,openvswitch) +%dir %{_localstatedir}/log/ovn +%defattr(-,root,root) +%if 0%{?suse_version} +%{_fillupdir}/sysconfig.ovn +%else +%config(noreplace) %{_sysconfdir}/sysconfig/ovn +%endif +%{_bindir}/ovn-nbctl +%{_bindir}/ovn-sbctl +%{_bindir}/ovn-trace +%{_bindir}/ovn-detrace +%{_bindir}/ovn-appctl +%{_bindir}/ovn-ic-nbctl +%{_bindir}/ovn-ic-sbctl +%dir %{_datadir}/ovn +%dir %{_datadir}/ovn/scripts +%{_datadir}/ovn/scripts/ovn-ctl +%{_datadir}/ovn/scripts/ovn-lib +%{_datadir}/ovn/scripts/ovndb-servers.ocf +%{_datadir}/ovn/scripts/ovn-bugtool-nbctl-show +%{_datadir}/ovn/scripts/ovn-bugtool-sbctl-lflow-list +%{_datadir}/ovn/scripts/ovn-bugtool-sbctl-show +%{_mandir}/man5/ovn-nb.5%{?ext_man} +%{_mandir}/man5/ovn-sb.5%{?ext_man} +%{_mandir}/man8/ovn-ic-nbctl.8%{?ext_man} +%{_mandir}/man8/ovn-ic-sbctl.8%{?ext_man} +%{_mandir}/man8/ovn-ic.8%{?ext_man} +%{_mandir}/man5/ovn-ic-nb.5%{?ext_man} +%{_mandir}/man5/ovn-ic-sb.5%{?ext_man} +%{_mandir}/man1/ovn-detrace.1%{?ext_man} +%{_mandir}/man8/ovn-appctl.8%{?ext_man} +%{_mandir}/man7/ovn-architecture.7%{?ext_man} +%{_mandir}/man8/ovn-ctl.8%{?ext_man} +%{_mandir}/man8/ovn-nbctl.8%{?ext_man} +%{_mandir}/man8/ovn-trace.8%{?ext_man} +%{_mandir}/man8/ovn-sbctl.8%{?ext_man} +%config(noreplace) %{_sysconfdir}/logrotate.d/ovn +%doc %ovn_dir/AUTHORS.rst %ovn_dir/CONTRIBUTING.rst %ovn_dir/NEWS %ovn_dir/README.rst +%license %ovn_dir/LICENSE %ovn_dir/NOTICE + +%files -n ovn-docker +%{_bindir}/ovn-docker-overlay-driver +%{_bindir}/ovn-docker-underlay-driver + +%files -n ovn-central +# Can't use libexecdir because it differs between +# RedHat and SUSE and firewalld expects things in /usr/lib +%dir %{_prefix}/lib/firewalld +%dir %{_prefix}/lib/firewalld/services +%{_bindir}/ovn-northd +%{_bindir}/ovn-ic +%{_mandir}/man8/ovn-northd.8%{?ext_man} +%{_datadir}/ovn/ovn-nb.ovsschema +%{_datadir}/ovn/ovn-sb.ovsschema +%{_datadir}/ovn/ovn-ic-nb.ovsschema +%{_datadir}/ovn/ovn-ic-sb.ovsschema +%{_unitdir}/ovn-northd.service +%{_sbindir}/rcovn-northd +%{_prefix}/lib/firewalld/services/ovn-central-firewall-service.xml + +%files -n ovn-host +# Can't use libexecdir because it differs between +# RedHat and SUSE and firewalld expects things in /usr/lib +%dir %{_prefix}/lib/firewalld +%dir %{_prefix}/lib/firewalld/services +%{_bindir}/ovn-controller +%{_mandir}/man8/ovn-controller.8%{?ext_man} +%{_unitdir}/ovn-controller.service +%{_sbindir}/rcovn-controller +%{_prefix}/lib/firewalld/services/ovn-host-firewall-service.xml + +%files -n ovn-vtep +%{_bindir}/ovn-controller-vtep +%{_mandir}/man8/ovn-controller-vtep.8%{?ext_man} +%{_unitdir}/ovn-controller-vtep.service +%{_sbindir}/rcovn-controller-vtep + +%files -n ovn-doc +%exclude %{_docdir}/ovn/AUTHORS.rst +%exclude %{_docdir}/ovn/CONTRIBUTING.rst +%exclude %{_docdir}/ovn/NEWS +%exclude %{_docdir}/ovn/README.rst +%{_docdir}/ovn/ + +%files -n %{ovn_lname} +%{_libdir}/libovn-*.so.* + +%files -n ovn-devel +%{_libdir}/libovn.so +%{_includedir}/ovn/ + %changelog diff --git a/ovn-20.03.0.tar.gz b/ovn-20.03.0.tar.gz new file mode 100644 index 0000000..91e654e --- /dev/null +++ b/ovn-20.03.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:297b471dc2e77423d77eb525f036af814b979fe928363d70cbe75a328e381f4e +size 1362751