From patchwork Tue Jan 8 13:49:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Numan Siddique X-Patchwork-Id: 1021915 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43Ytv92n0Zz9sCr for ; Wed, 9 Jan 2019 00:50:44 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 34576B7A; Tue, 8 Jan 2019 13:50:42 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 06EB2B08 for ; Tue, 8 Jan 2019 13:50:41 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 453F8F4 for ; Tue, 8 Jan 2019 13:50:39 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B88EDC0C428F for ; Tue, 8 Jan 2019 13:50:38 +0000 (UTC) Received: from nusiddiq.mac (unknown [10.76.98.13]) by smtp.corp.redhat.com (Postfix) with ESMTP id 267A85DAA0; Tue, 8 Jan 2019 13:50:36 +0000 (UTC) From: nusiddiq@redhat.com To: dev@openvswitch.org Date: Tue, 8 Jan 2019 19:19:29 +0530 Message-Id: <20190108134929.20881-1-nusiddiq@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 08 Jan 2019 13:50:38 +0000 (UTC) X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH v2] rhel: Split OpenvSwitch and OVN packages X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org From: Numan Siddique Up until now, OVN rpms were generated as sub packages of OpenvSwitch. This patch now splits it and makes OVN rpms independent. A new spec file - ovn-fedora.spec.in is added for this. The openvswitch-fedora.spec.in has been modified to create only OpenvSwitch packages. Since we are not splitting the OVN code, the spec files run the same build procedure. Only the required binaries/files are copied into the rpms. The new package names will be ovn, ovn-common, ovn-central, ovn-host, ovn-vtep and ovn-docker. Signed-off-by: Numan Siddique Acked-by: Timothy Redaelli Tested-By: Timothy Redaelli --- v1 -> v2 ------ * Addressed the review comments from Timothy Redaelli Documentation/intro/install/fedora.rst | 17 +- rhel/.gitignore | 1 + rhel/automake.mk | 9 + rhel/openvswitch-fedora.spec.in | 196 +---------- rhel/ovn-fedora.spec.in | 440 +++++++++++++++++++++++++ 5 files changed, 474 insertions(+), 189 deletions(-) create mode 100644 rhel/ovn-fedora.spec.in diff --git a/Documentation/intro/install/fedora.rst b/Documentation/intro/install/fedora.rst index 5e29e37bf..4e1a99766 100644 --- a/Documentation/intro/install/fedora.rst +++ b/Documentation/intro/install/fedora.rst @@ -103,9 +103,7 @@ in which `./configure` was executed: $ make rpm-fedora This will create the RPMs `openvswitch`, `python-openvswitch`, -`openvswitch-test`, `openvswitch-devel`, `openvswitch-ovn-common`, -`openvswitch-ovn-central`, `openvswitch-ovn-host`, `openvswitch-ovn-vtep`, -`openvswitch-ovn-docker`, and `openvswitch-debuginfo`. +`openvswitch-test`, `openvswitch-devel` and `openvswitch-debuginfo`. To enable DPDK support in the openvswitch package, the ``--with dpdk`` option can be added: @@ -121,6 +119,17 @@ tests. This can take several minutes. $ make rpm-fedora RPMBUILD_OPT="--with check" +To build OVN RPMs, execute the following from the directory in which +`./configure` was executed: + +:: + + $ make rpm-fedora-ovn + +This will create the RPMs `ovn`, `ovn-common`, `ovn-central`, `ovn-host`, +`ovn-docker` and `ovn-vtep`. + + Kernel OVS Tree Datapath RPM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -156,7 +165,7 @@ In most cases only the `openvswitch` RPM will need to be installed. The `openvswitch-debuginfo` RPMs are optional unless required for a specific purpose. -The `openvswitch-ovn-*` packages are only needed when using OVN. +The `ovn-*` packages are only needed when using OVN. Refer to the `RHEL README`__ for additional usage and configuration information. diff --git a/rhel/.gitignore b/rhel/.gitignore index a9c047f83..e6f72859f 100644 --- a/rhel/.gitignore +++ b/rhel/.gitignore @@ -4,4 +4,5 @@ kmod-openvswitch-rhel6.spec openvswitch-kmod-fedora.spec openvswitch.spec openvswitch-fedora.spec +ovn-fedora.spec usr_lib_systemd_system_ovs-vswitchd.service diff --git a/rhel/automake.mk b/rhel/automake.mk index bc65d83e5..1c5bf153c 100644 --- a/rhel/automake.mk +++ b/rhel/automake.mk @@ -23,6 +23,8 @@ EXTRA_DIST += \ rhel/openvswitch.spec.in \ rhel/openvswitch-fedora.spec \ rhel/openvswitch-fedora.spec.in \ + rhel/ovn-fedora.spec \ + rhel/ovn-fedora.spec.in \ rhel/usr_share_openvswitch_scripts_ovs-systemd-reload \ rhel/usr_share_openvswitch_scripts_sysconfig.template \ rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \ @@ -72,6 +74,13 @@ rpm-fedora: dist $(srcdir)/rhel/openvswitch-fedora.spec -D "_topdir ${RPMBUILD_TOP}" \ -ba $(srcdir)/rhel/openvswitch-fedora.spec +rpm-fedora-ovn: dist $(srcdir)/rhel/ovn-fedora.spec + ${MKDIR_P} ${RPMBUILD_TOP}/SOURCES + cp ${DIST_ARCHIVES} ${RPMBUILD_TOP}/SOURCES + rpmbuild ${RPMBUILD_OPT} \ + -D "_topdir ${RPMBUILD_TOP}" \ + -ba $(srcdir)/rhel/ovn-fedora.spec + # Build kernel datapath RPM rpm-fedora-kmod: dist $(srcdir)/rhel/openvswitch-kmod-fedora.spec ${MKDIR_P} ${RPMBUILD_TOP}/SOURCES diff --git a/rhel/openvswitch-fedora.spec.in b/rhel/openvswitch-fedora.spec.in index fedaf1077..94206022f 100644 --- a/rhel/openvswitch-fedora.spec.in +++ b/rhel/openvswitch-fedora.spec.in @@ -173,54 +173,6 @@ This provides the ifup and ifdown scripts for use with the legacy network service. %endif -%package ovn-central -Summary: Open vSwitch - Open Virtual Network support -License: ASL 2.0 -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-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. - %package ipsec Summary: Open vSwitch IPsec tunneling support License: ASL 2.0 @@ -282,7 +234,6 @@ install -p -D -m 0644 \ rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \ $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/openvswitch for service in openvswitch ovsdb-server ovs-vswitchd ovs-delete-transient-ports \ - ovn-controller ovn-controller-vtep ovn-northd \ openvswitch-ipsec; do install -p -D -m 0644 \ rhel/usr_lib_systemd_system_${service}.service \ @@ -328,14 +279,6 @@ 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 install -p -D -m 0755 \ rhel/usr_share_openvswitch_scripts_ovs-systemd-reload \ @@ -346,6 +289,17 @@ 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 +# remove ovn unpackages files +rm -f $RPM_BUILD_ROOT%{_bindir}/ovn* +rm -f $RPM_BUILD_ROOT%{_mandir}/man1/ovn* +rm -f $RPM_BUILD_ROOT%{_mandir}/man5/ovn* +rm -f $RPM_BUILD_ROOT%{_mandir}/man7/ovn* +rm -f $RPM_BUILD_ROOT%{_mandir}/man8/ovn* +rm -f $RPM_BUILD_ROOT%{_datadir}/openvswitch/ovn* +rm -f $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/ovn* +rm -f $RPM_BUILD_ROOT%{_includedir}/ovn/* +rm -f $RPM_BUILD_ROOT%{_libdir}/libovn* + %check %if %{with check} if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :; @@ -379,39 +333,6 @@ rm -rf $RPM_BUILD_ROOT fi %endif -%preun ovn-central -%if 0%{?systemd_preun:1} - %systemd_preun ovn-northd.service -%else - if [ $1 -eq 0 ] ; then - # 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 - %pre getent group openvswitch >/dev/null || groupadd -r openvswitch getent passwd openvswitch >/dev/null || \ @@ -449,36 +370,6 @@ fi fi %endif -%post ovn-central -%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 - -%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 %selinux_modules_install -s targeted %{_datadir}/selinux/packages/%{name}/openvswitch-custom.pp @@ -489,27 +380,6 @@ fi /bin/systemctl daemon-reload >/dev/null 2>&1 || : %endif -%postun ovn-central -%if 0%{?systemd_postun:1} - %systemd_postun ovn-northd.service -%else - /bin/systemctl daemon-reload >/dev/null 2>&1 || : -%endif - -%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 %selinux_modules_uninstall -s targeted openvswitch-custom @@ -550,7 +420,6 @@ fi %{_libdir}/pkgconfig/*.pc %{_includedir}/openvswitch/* %{_includedir}/openflow/* -%{_includedir}/ovn/* %exclude %{_libdir}/*.la %if 0%{?rhel} > 7 || 0%{?fedora} > 28 @@ -637,49 +506,6 @@ fi %attr(750,root,root) /var/log/openvswitch %ghost %attr(755,root,root) %{_rundir}/openvswitch -%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}/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-northd.service -%{_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 - %files ipsec %{_datadir}/openvswitch/scripts/ovs-monitor-ipsec %{_unitdir}/openvswitch-ipsec.service diff --git a/rhel/ovn-fedora.spec.in b/rhel/ovn-fedora.spec.in new file mode 100644 index 000000000..15f3352ca --- /dev/null +++ b/rhel/ovn-fedora.spec.in @@ -0,0 +1,440 @@ +# Spec file for Open Virtual Network (OVN). + +# Copyright (C) 2018 Red Hat, Inc. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without warranty of any kind. +# +# If tests have to be skipped while building, specify the '--without check' +# option. For example: +# rpmbuild -bb --without check rhel/ovn-fedora.spec +# + +# If libcap-ng isn't available and there is no need for running OVS +# as regular user, specify the '--without libcapng' +%bcond_without libcapng + +# 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: ovn +Summary: Open Virtual Network support +Group: System Environment/Daemons +URL: http://www.openvswitch.org/ +Version: @VERSION@ + +# Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the +# lib/sflow*.[ch] files are SISSL +License: ASL 2.0 and LGPLv2+ and SISSL +Release: 1%{?dist} +Source: http://openvswitch.org/releases/openvswitch-%{version}.tar.gz + +BuildRequires: gcc gcc-c++ +BuildRequires: autoconf automake libtool +BuildRequires: systemd-units openssl openssl-devel +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: %{_py2}-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 +BuildRequires: unbound unbound-devel + +Requires: openssl hostname iproute module-init-tools openvswitch + +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units + +# to skip running checks, pass --without check +%bcond_without check + +%description +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 central +Summary: Open Virtual Network support +License: ASL 2.0 +Requires: ovn ovn-common +Requires: firewalld-filesystem +Obsoletes: openvswitch-ovn-central +Provides: openvswitch-ovn-central = %{?epoch:%{epoch}:}%{version}-%{release} + +%description central +OVN DB servers and ovn-northd running on a central node. + +%package host +Summary: Open Virtual Network support +License: ASL 2.0 +Requires: ovn ovn-common +Requires: firewalld-filesystem +Obsoletes: openvswitch-ovn-host +Provides: openvswitch-ovn-host = %{?epoch:%{epoch}:}%{version}-%{release} + +%description host +OVN controller running on each host. + +%package vtep +Summary: Open Virtual Network support +License: ASL 2.0 +Requires: ovn ovn-common +Obsoletes: openvswitch-ovn-vtep +Provides: openvswitch-ovn-vtep = %{?epoch:%{epoch}:}%{version}-%{release} + +%description vtep +OVN vtep controller + +%package common +Summary: Open Virtual Network support +License: ASL 2.0 +Requires: ovn +Obsoletes: openvswitch-ovn-common +Provides: openvswitch-ovn-common = %{?epoch:%{epoch}:}%{version}-%{release} + +%description common +Utilities that are use to diagnose and manage the OVN components. + +%package docker +Summary: Open Virtual Network support +License: ASL 2.0 +Requires: ovn ovn-common %{_py2}-openvswitch +Obsoletes: openvswitch-ovn-docker +Provides: openvswitch-ovn-docker = %{?epoch:%{epoch}:}%{version}-%{release} + +%description docker +Docker network plugins for OVN. + +%prep +%setup -n openvswitch-%{version} + +%build +%configure \ +%if %{with libcapng} + --enable-libcapng \ +%else + --disable-libcapng \ +%endif + --enable-ssl \ + --with-pkidir=%{_sharedstatedir}/openvswitch/pki \ +%if 0%{?fedora} > 22 || %{with build_python3} + PYTHON3=%{__python3} \ + PYTHON=%{__python2} +%else + PYTHON=%{__python} +%endif + +make %{?_smp_mflags} + +%install +rm -rf $RPM_BUILD_ROOT +make install DESTDIR=$RPM_BUILD_ROOT + +for service in 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 +done + +rm -rf $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/ + +install -d -m 0755 $RPM_BUILD_ROOT/%{_sharedstatedir}/openvswitch + +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 OVS unpackages files +rm -f $RPM_BUILD_ROOT%{_bindir}/ovs* +rm -f $RPM_BUILD_ROOT%{_bindir}/vtep-ctl +rm -f $RPM_BUILD_ROOT%{_sbindir}/ovs* +rm -f $RPM_BUILD_ROOT%{_mandir}/man1/ovs* +rm -f $RPM_BUILD_ROOT%{_mandir}/man5/ovs* +rm -f $RPM_BUILD_ROOT%{_mandir}/man5/vtep* +rm -f $RPM_BUILD_ROOT%{_mandir}/man7/ovs* +rm -f $RPM_BUILD_ROOT%{_mandir}/man8/ovs* +rm -f $RPM_BUILD_ROOT%{_mandir}/man8/vtep* +rm -f $RPM_BUILD_ROOT%{_datadir}/openvswitch/ovs* +rm -f $RPM_BUILD_ROOT%{_datadir}/openvswitch/vswitch.ovsschema +rm -f $RPM_BUILD_ROOT%{_datadir}/openvswitch/vtep.ovsschema +rm -f $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/ovs* +rm -rf $RPM_BUILD_ROOT%{_datadir}/openvswitch/bugtool-plugins +rm -f $RPM_BUILD_ROOT%{_includedir}/openvswitch/* +rm -f $RPM_BUILD_ROOT%{_includedir}/openflow/* +rm -f $RPM_BUILD_ROOT%{_libdir}/*.a +rm -f $RPM_BUILD_ROOT%{_libdir}/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/pkgconfig/*.pc +rm -f $RPM_BUILD_ROOT%{_includedir}/openvswitch/* +rm -f $RPM_BUILD_ROOT%{_includedir}/openflow/* +rm -f $RPM_BUILD_ROOT%{_includedir}/ovn/* +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d/ovs-appctl-bashcomp.bash +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d/ovs-vsctl-bashcomp.bash +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/openvswitch + +%check +%if %{with check} + if make check TESTSUITEFLAGS='%{_smp_mflags}' RECHECK=yes; then :; + else + cat tests/testsuite.log + exit 1 + fi +%endif + +%clean +rm -rf $RPM_BUILD_ROOT + +%pre central +if [ $1 -eq 1 ] ; then + # Package install. + /bin/systemctl status ovn-northd.service >/dev/null + ovn_status=$? + rpm -ql openvswitch-ovn-central > /dev/null + if [[ "$?" = "0" && "$ovn_status" = "0" ]]; then + # ovn-northd service is running which means old openvswitch-ovn-central + # is already installed and it will be cleaned up. So start ovn-northd + # service when posttrans central is called. + touch %{_localstatedir}/lib/rpm-state/ovn-northd + fi +fi + +%pre host +if [ $1 -eq 1 ] ; then + # Package install. + /bin/systemctl status ovn-controller.service >/dev/null + ovn_status=$? + rpm -ql openvswitch-ovn-host > /dev/null + if [[ "$?" = "0" && "$ovn_status" = "0" ]]; then + # ovn-controller service is running which means old + # openvswitch-ovn-host is installed and it will be cleaned up. So + # start ovn-controller service when posttrans host is called. + touch %{_localstatedir}/lib/rpm-state/ovn-controller + fi +fi + +%pre vtep +if [ $1 -eq 1 ] ; then + # Package install. + /bin/systemctl status ovn-controller-vtep.service >/dev/null + ovn_status=$? + rpm -ql openvswitch-ovn-vtep > /dev/null + if [[ "$?" = "0" && "$ovn_status" = "0" ]]; then + # ovn-controller-vtep service is running which means old + # openvswitch-ovn-vtep is installed and it will be cleaned up. So + # start ovn-controller-vtep service when posttrans host is called. + touch %{_localstatedir}/lib/rpm-state/ovn-controller-vtep + fi +fi + +%preun central +%if 0%{?systemd_preun:1} + %systemd_preun ovn-northd.service +%else + if [ $1 -eq 0 ] ; then + # 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 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 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 central +%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 + +%post 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 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 + +%postun + +%postun central +%if 0%{?systemd_postun_with_restart:1} + %systemd_postun_with_restart 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-northd.service >/dev/null 2>&1 || : + fi +%endif + +%postun host +%if 0%{?systemd_postun_with_restart:1} + %systemd_postun_with_restart ovn-controller.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 || : + fi +%endif + +%postun vtep +%if 0%{?systemd_postun_with_restart:1} + %systemd_postun_with_restart ovn-controller-vtep.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-vtep.service >/dev/null 2>&1 || : + fi +%endif + +%posttrans central +if [ $1 -eq 1 ]; then + # Package install, not upgrade + if [ -e %{_localstatedir}/lib/rpm-state/ovn-northd ]; then + rm %{_localstatedir}/lib/rpm-state/ovn-northd + /bin/systemctl start ovn-northd.service >/dev/null 2>&1 || : + fi +fi + + +%posttrans host +if [ $1 -eq 1 ]; then + # Package install, not upgrade + if [ -e %{_localstatedir}/lib/rpm-state/ovn-controller ]; then + rm %{_localstatedir}/lib/rpm-state/ovn-controller + /bin/systemctl start ovn-controller.service >/dev/null 2>&1 || : + fi +fi + +%posttrans vtep +if [ $1 -eq 1 ]; then + # Package install, not upgrade + if [ -e %{_localstatedir}/lib/rpm-state/ovn-controller-vtep ]; then + rm %{_localstatedir}/lib/rpm-state/ovn-controller-vtep + /bin/systemctl start ovn-controller-vtep.service >/dev/null 2>&1 || : + fi +fi + +%files + +%files docker +%{_bindir}/ovn-docker-overlay-driver +%{_bindir}/ovn-docker-underlay-driver + +%files 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}/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 central +%{_bindir}/ovn-northd +%{_mandir}/man8/ovn-northd.8* +%config %{_datadir}/openvswitch/ovn-nb.ovsschema +%config %{_datadir}/openvswitch/ovn-sb.ovsschema +%{_unitdir}/ovn-northd.service +%{_prefix}/lib/firewalld/services/ovn-central-firewall-service.xml + +%files host +%{_bindir}/ovn-controller +%{_mandir}/man8/ovn-controller.8* +%{_unitdir}/ovn-controller.service +%{_prefix}/lib/firewalld/services/ovn-host-firewall-service.xml + +%files vtep +%{_bindir}/ovn-controller-vtep +%{_mandir}/man8/ovn-controller-vtep.8* +%{_unitdir}/ovn-controller-vtep.service + +%changelog +* Thu Dec 20 2018 Numan Siddique +- OVS/OVN split.