[Starlingx-discuss] FW: [starlingx-discuss][python3] four solutions for "Add python3-daemon required by logmgmt"
Saul Wold
sgw at linux.intel.com
Tue Apr 28 13:44:35 UTC 2020
+StarlingX-Discuss
On 4/28/20 12:47 AM, An, Ran1 wrote:
> Hi Cores:
>
> There were some concerns on patch
> https://review.opendev.org/#/c/717211/, and we had a discussion on last
> Non-Openstack meeting few days ago.
>
> By further investigation, there are 4 solutions below. W*e'd like
> to prefer option3 , if no other objection , we will implement option3*.
>
I am not sure I understand how option 1 and option 3 are different both
are modifying upstream projects and require the StarlingX community to
maintain a patched version (ie technical debt).
Is there an option that modifies the logmgmt code directly instead of
changing the daemon code?
Sau!
> *Background:*
>
> Logmgmt uses “daemon.runner. DaemonRunner()” from package
> python-daemon <http://pypi.python.org/pypi/python-daemon/> to
> create/recreate/kill a daemon process in which it run log-rotate and
> control system logs size.
>
> However, python-daemon has a “unbuffered I/O related error” in python3.x
> [1], which require us do some changes to upgrade logmgmt to python3.
>
> *Solutions:*
>
> Option 1: fix the bug of python-daemon by adding patch when we build
> the python3-daemon rpm. (implement in patch-717211/
> <https://review.opendev.org/#/c/717211/>)
>
> * add patch to fix the bug of python-daemon in python3
> * build python3-daemon rpm from python-daemon srpm
>
> Option 2: rewrite the entrance function of logmgmt (start_polling())
> following examples provides by PEP 3143
> <https://www.python.org/dev/peps/pep-3143/>
>
> * using “daemon.Context()” instead of “daemon.runner.DaemonRunner() in
> entrance function of logmgmt.
> * implement a runner class “MyDaemonRunner()” in logmgmt
> * build python3-daemon rpm from python-daemon srpm
>
> Limitation: the implementation of daemon service required
> to write is very similar with “daemon.runner”.
>
> Option 3: import python-daemon-3k [2] python3 condition.
>
> * use "python-daemon-3k" instead of "python-daemon" when the env is
> python3
> * add patch to fix the bug of python-daemon in python3 (refer to pull
> request #1 from takuti/fix-unbuffered-error
> <https://github.com/jbvsmo/python-daemon/commit/91567c9e68a1e02d3e9a811eaf9ab49961d9d63c>)
> * build python3-daemon rpm from python-daemon-3k release
> <https://github.com/jbvsmo/python-daemon/archive/1.5.8.tar.gz>
>
> Option 4: implement a daemon class "MyDaemon" and rewrite the
> logmgmt codes with "MyDaemon"
>
> * implement a daemon class "MyDaemon" (refer to
> https://www.workaround.cz/howto-make-code-daemon-python-3)
> * rewrite the logmgmt codes with "MyDaemon"
>
> *Comparation: *
>
> Option
>
>
>
> Pkg provides daemon class
>
>
>
> Require build python3-daemon.rpm
>
>
>
> maintain offline patch
>
>
>
> Stars of github
>
>
>
> Changes
>
> Option1
>
>
>
> python-daemon <http://pypi.python.org/pypi/python-daemon/>
>
>
>
> Yes
>
>
>
> yes
>
>
>
> 916
>
>
>
> little
>
> Option2
>
>
>
> python-daemon <http://pypi.python.org/pypi/python-daemon/>
>
>
>
> Yes
>
>
>
>
>
> 916
>
>
>
> Medium
>
> Option3
>
>
>
> python-daemon-3K <https://pypi.org/project/python-daemon-3K>
>
>
>
> Yes
>
>
>
> yes
>
>
>
> 14
>
>
>
> little
>
> Option4
>
>
>
> write “MyDaemon” based on basic python libs
>
>
>
> No
>
>
>
> No
>
>
>
> 0
>
>
>
> huge
>
> [1] https://pagure.io/python-daemon/issue/5;
> https://pagure.io/python-daemon/issue/8;
> https://pagure.io/python-daemon/issue/36;
>
> [2] https://pypi.org/project/python-daemon-3K/; we had assessed 4
> projects that implement the python daemon following the PEP 3143 and
> “python-daemon-3k” is the most proper for logmgmt.
>
More information about the Starlingx-discuss
mailing list