On 1/20/23 10:51, Ales Musil wrote:
> 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]>
>> ---

Hi Vladislav,

>>  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

"make rpm-fedora" is failing now:

error: The %systemd_postun macro requires some arguments
  4<          (%error)
  3<        (%__systemd_someargs_0)
  2<      (%__systemd_someargs_0)
  1<    (%expand)
  0<  (%systemd_postun)

Should this be:

%systemd_postun ovn-db@*.service

Or something like that?

Thanks,
Dumitru                                                                         
                                                

>> +%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]>
> 


_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to