On Sat, Jan 14, 2023 at 10:28 AM Vladislav Odintsov <[email protected]>
wrote:

> 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 <[email protected]>
> ---
>  NEWS                                        |  2 ++
>  rhel/automake.mk                            |  1 +
>  rhel/ovn-fedora.spec.in                     | 31 +++++++++++++++-
>  rhel/[email protected] | 39 +++++++++++++++++++++
>  4 files changed, 72 insertions(+), 1 deletion(-)
>  create mode 100644 rhel/[email protected]
>
> 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 [email protected] 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/[email protected] \
>         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..b41ad062f 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
> +%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}/[email protected]
>
>  %files docker
>  %{_bindir}/ovn-docker-overlay-driver
> @@ -522,6 +548,9 @@ fi
>  %{_unitdir}/ovn-controller-vtep.service
>
>  %changelog
> +* Wed Jan 11 2023 Vladislav Odintsov <[email protected]>
> +- Added [email protected] systemd-unit.
> +
>  * Mon Feb 1 2021 Vladislav Odintsov <[email protected]>
>  - Added ovn-ic, ovn-ic-db systemd-units.
>
> diff --git a/rhel/[email protected]
> b/rhel/[email protected]
> new file mode 100644
> index 000000000..98556a673
> --- /dev/null
> +++ b/rhel/[email protected]
> @@ -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/[email protected]/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
> --
> 2.36.1
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
Looks good to me, thanks.

Reviewed-by: Ales Musil <[email protected]>

-- 

Ales Musil

Senior Software Engineer - OVN Core

Red Hat EMEA <https://www.redhat.com>

[email protected]    IM: amusil
<https://red.ht/sig>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to