diff mbox series

[ovs-dev,v3,2/4] rhel: add ovn-db@.service systemd-unit

Message ID 20230121145414.3616384-3-odivlad@gmail.com
State Accepted
Headers show
Series Add support for OVSDB Relay in OVN SB DB | expand

Checks

Context Check Description
ovsrobot/apply-robot warning apply and check: warning
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/github-robot-_ovn-kubernetes fail github build: failed

Commit Message

Vladislav Odintsov Jan. 21, 2023, 2:54 p.m. UTC
With this universal systemd unit users, which run ovsdb-servers with
systemd, will be able to run different OVSDB server instances within
separate systemd-units.

Now it is possible to run all commands from ovn-ctl script, which start
and end with "start_/stop_" and "_ovsdb" respectively. Current list is:

  - ovn-db@sb
  - ovn-db@nb
  - ovn-db@ic
  - ovn-db@ic_sb
  - ovn-db@ic_nb
  - ovn-db@sb_relay

And any possible future commands, which conform rules described above.

To run such units user must define environment variable, which name
has a next form: "ovn_%i_opts". Where %i is the name of unit instance
(a part after "@" symbol).  User may supply this variable with
configuration parameter in one of /etc/sysconfig/ovn,
/etc/sysconfig/ovn-%i or in
/etc/systemd/system/ovn-db@%i.service.d/local.conf files.

In general this feature gives more granular process management.  For
instance, it is not needed to restart SB and NB ovsdb-servers anymore,
when user just restarts ovn-northd daemon (upgrade scenario).

Signed-off-by: Vladislav Odintsov <odivlad@gmail.com>
Reviewed-by: Ales Musil <amusil@redhat.com>
---
 NEWS                                        |  2 ++
 rhel/automake.mk                            |  1 +
 rhel/ovn-fedora.spec.in                     | 31 +++++++++++++++-
 rhel/usr_lib_systemd_system_ovn-db@.service | 39 +++++++++++++++++++++
 4 files changed, 72 insertions(+), 1 deletion(-)
 create mode 100644 rhel/usr_lib_systemd_system_ovn-db@.service

Comments

0-day Robot Jan. 21, 2023, 3 p.m. UTC | #1
Bleep bloop.  Greetings Vladislav Odintsov, I am a robot and I have tried out your patch.
Thanks for your contribution.

I encountered some error that I wasn't expecting.  See the details below.


checkpatch:
WARNING: Line is 80 characters long (recommended limit is 79)
#155 FILE: rhel/usr_lib_systemd_system_ovn-db@.service:5:
# Each OVN DB systemd unit instance name %i (a part after '@' symbol) must match

WARNING: Line is 88 characters long (recommended limit is 79)
#169 FILE: rhel/usr_lib_systemd_system_ovn-db@.service:19:
# Alternatively, you may specify environment variable in the /etc/sysconfig/ovn-sb file:

Lines checked: 193, Warnings: 2, Errors: 0


Please check this out.  If you feel there has been an error, please email aconole@redhat.com

Thanks,
0-day Robot
diff mbox series

Patch

diff --git a/NEWS b/NEWS
index 9aeeac10b..fd0fee75c 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,8 @@  Post v22.12.0
   - ovn-controller: Experimental support for co-hosting multiple controller
     instances on the same host.
   - Add ovn-ctl commands for (re)starting/stopping OVSDB relay for OVN SB DB.
+  - Add new ovn-db@.service systemd unit to run ovsdb-servers in separate
+    systemd units.
 
 OVN v22.12.0 - 16 Dec 2022
 --------------------------
diff --git a/rhel/automake.mk b/rhel/automake.mk
index 3e71f5d80..992de3dc7 100644
--- a/rhel/automake.mk
+++ b/rhel/automake.mk
@@ -13,6 +13,7 @@  EXTRA_DIST += \
 	rhel/ovn-fedora.spec.in \
 	rhel/usr_lib_systemd_system_ovn-controller.service \
 	rhel/usr_lib_systemd_system_ovn-controller-vtep.service \
+	rhel/usr_lib_systemd_system_ovn-db@.service \
 	rhel/usr_lib_systemd_system_ovn-ic.service \
 	rhel/usr_lib_systemd_system_ovn-ic-db.service \
 	rhel/usr_lib_systemd_system_ovn-northd.service \
diff --git a/rhel/ovn-fedora.spec.in b/rhel/ovn-fedora.spec.in
index 57dc977c1..03c1f27c5 100644
--- a/rhel/ovn-fedora.spec.in
+++ b/rhel/ovn-fedora.spec.in
@@ -165,7 +165,7 @@  install -p -D -m 0644 \
         rhel/usr_share_ovn_scripts_systemd_sysconfig.template \
         $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/ovn
 
-for service in ovn-controller ovn-controller-vtep ovn-northd ovn-ic ovn-ic-db; do
+for service in ovn-controller ovn-controller-vtep ovn-northd ovn-ic ovn-ic-db ovn-db@; do
         install -p -D -m 0644 \
                         rhel/usr_lib_systemd_system_${service}.service \
                         $RPM_BUILD_ROOT%{_unitdir}/${service}.service
@@ -265,6 +265,17 @@  if [ $1 -eq 1 ] ; then
     fi
 fi
 
+%preun
+%if 0%{?systemd_preun:1}
+    %systemd_preun ovn-db@*.service
+%else
+    if [ $1 -eq 0 ] ; then
+        # Package removal, not upgrade
+        /bin/systemctl --no-reload disable ovn-db@*.service >/dev/null 2>&1 || :
+        /bin/systemctl stop ovn-db@*.service >/dev/null 2>&1 || :
+    fi
+%endif
+
 %preun central
 %if 0%{?systemd_preun:1}
     %systemd_preun ovn-northd.service
@@ -328,6 +339,15 @@  if [ $1 -eq 1 ]; then
 fi
 %endif
 
+%if 0%{?systemd_post:1}
+    %systemd_post ovn-db@*.service
+%else
+    # Package install, not upgrade
+    if [ $1 -eq 1 ]; then
+        /bin/systemctl daemon-reload >dev/null || :
+    fi
+%endif
+
 %post central
 %if 0%{?systemd_post:1}
     %systemd_post ovn-northd.service
@@ -377,6 +397,11 @@  fi
 %endif
 
 %postun
+%if 0%{?systemd_postun:1}
+    %systemd_postun ovn-db@*.service
+%else
+    /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+%endif
 
 %postun central
 %if 0%{?systemd_postun_with_restart:1}
@@ -492,6 +517,7 @@  fi
 %{_mandir}/man5/ovn-ic-sb.5*
 %{_prefix}/lib/ocf/resource.d/ovn/ovndb-servers
 %config(noreplace) %{_sysconfdir}/logrotate.d/ovn
+%{_unitdir}/ovn-db@.service
 
 %files docker
 %{_bindir}/ovn-docker-overlay-driver
@@ -522,6 +548,9 @@  fi
 %{_unitdir}/ovn-controller-vtep.service
 
 %changelog
+* Wed Jan 11 2023 Vladislav Odintsov <odivlad@gmail.com>
+- Added ovn-db@.service systemd-unit.
+
 * Mon Feb 1 2021 Vladislav Odintsov <odivlad@gmail.com>
 - Added ovn-ic, ovn-ic-db systemd-units.
 
diff --git a/rhel/usr_lib_systemd_system_ovn-db@.service b/rhel/usr_lib_systemd_system_ovn-db@.service
new file mode 100644
index 000000000..98556a673
--- /dev/null
+++ b/rhel/usr_lib_systemd_system_ovn-db@.service
@@ -0,0 +1,39 @@ 
+# This system unit is used to manage OVN DB daemons.
+# It supports all '_ovsdb'-ending commands in
+# /usr/share/ovn/scripts/ovn-ctl script. Consult it for additional info.
+#
+# Each OVN DB systemd unit instance name %i (a part after '@' symbol) must match
+# with appropriate ovn-ctl subcommand, which starts and ends with 'start_' and
+# '_ovsdb' respectively.
+# User must provide appropriate environment variable 'ovn_$i_opts' either in
+# /etc/sysconfig/ovn, in /etc/sysconfig/ovn-%i or in
+# /etc/systemd/system/ovn-db@%i.service.d/local.conf file.
+#
+# For example, to configure ovn-db@sb daemon, which runs ovsdb-server with
+# OVN_Southbound database schema, you should define variable 'ovn_sb_opts' in
+# /etc/systemd/system/ovn-db@sb.service.d/local.conf:
+#
+#   [System]
+#   Environment="ovn_sb_opts=--db-sb-sock=/usr/local/var/run/ovn/ovnsb_db.sock"
+#
+# Alternatively, you may specify environment variable in the /etc/sysconfig/ovn-sb file:
+#
+#   ovn_sb_opts="--db-sb-sock=/usr/local/var/run/ovn/ovnsb_db.sock"
+
+[Unit]
+Description=OVN database daemon
+After=syslog.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+Environment=OVN_RUNDIR=%t/ovn OVN_DBDIR=/var/lib/ovn
+EnvironmentFile=-/etc/sysconfig/ovn
+EnvironmentFile=-/etc/sysconfig/ovn-%i
+ExecStartPre=-/usr/bin/chown -R ${OVN_USER_ID} ${OVN_DBDIR}
+ExecStart=/usr/share/ovn/scripts/ovn-ctl \
+          --ovn-user=${OVN_USER_ID} start_%i_ovsdb $OPTIONS $ovn_%i_opts
+ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_%i_ovsdb
+
+[Install]
+WantedBy=multi-user.target