anyone?

On Thu, Jul 09, 2020 at 01:52:37PM +0200, Florian Obser wrote:
> ... after it was deprecated since 3.2.
> 
> 2020-07-09 08:38:44,604 [salt.utils.schedule                                  
>                  :853 ][ERROR   ][26771] Unhandled exception running stat
> e.highstate
> Traceback (most recent call last):
>   File "/usr/local/lib/python3.8/site-packages/salt/utils/schedule.py", line 
> 844, in handle_func
>     self.returners[ret_str](ret)
>   File 
> "/usr/local/lib/python3.8/site-packages/salt/returners/highstate_return.py", 
> line 480, in returner
>     _produce_output(report, failed, setup)
>   File 
> "/usr/local/lib/python3.8/site-packages/salt/returners/highstate_return.py", 
> line 433, in _produce_output
>     _generate_html(report, string_file)
>   File 
> "/usr/local/lib/python3.8/site-packages/salt/returners/highstate_return.py", 
> line 269, in _generate_html
>     _generate_html_table(data, out, 0)
>   File 
> "/usr/local/lib/python3.8/site-packages/salt/returners/highstate_return.py", 
> line 220, in _generate_html_table
>     _generate_html_table(value, out, level + 1, new_extra_style)
>   File 
> "/usr/local/lib/python3.8/site-packages/salt/returners/highstate_return.py", 
> line 229, in _generate_html_table
>     cgi.escape(six.text_type(value)),
> AttributeError: module 'cgi' has no attribute 'escape'
> 
> I only tested the hightstate returner, no idea about nagios, but it's
> mechanical...
> 
> Technically this changes behavior in the highstate returner but I
> think what it did before was actually a bug, called out in the
> deprecation note:
> 
> "Deprecated since version 3.2: This function is unsafe because quote
> is false by default, and therefore deprecated. Use html.escape()
> instead."
> https://docs.python.org/3.7/library/cgi.html#cgi.escape
> 
> OK?
> 
> p.s. I tried to work out how to feed this upstream but I don't fully
> grok the hoopes they want me to jump through.
> 
> diff --git Makefile Makefile
> index 1f38fa8af70..9fcf4d52a38 100644
> --- Makefile
> +++ Makefile
> @@ -19,7 +19,7 @@ COMMENT =           remote execution and configuration 
> management system
>  
>  MODPY_EGG_VERSION =  3001
>  DISTNAME =           salt-${MODPY_EGG_VERSION}
> -REVISION =           3
> +REVISION =           4
>  
>  CATEGORIES =         sysutils net devel
>  
> diff --git patches/patch-salt_returners_highstate_return_py 
> patches/patch-salt_returners_highstate_return_py
> new file mode 100644
> index 00000000000..439612ac661
> --- /dev/null
> +++ patches/patch-salt_returners_highstate_return_py
> @@ -0,0 +1,33 @@
> +$OpenBSD$
> +cgi.escape has been deprecated since python 3.2 and removed in 3.8.
> +
> +Index: salt/returners/highstate_return.py
> +--- salt/returners/highstate_return.py.orig
> ++++ salt/returners/highstate_return.py
> +@@ -79,7 +79,7 @@ the time of execution.
> + """
> + from __future__ import absolute_import, print_function, unicode_literals
> + 
> +-import cgi
> ++import html
> + import logging
> + import smtplib
> + from email.mime.text import MIMEText
> +@@ -226,7 +226,7 @@ def _generate_html_table(data, out, level=0, extra_sty
> +                                 "td",
> +                                 [cell_style, second_style, "value", 
> new_extra_style],
> +                             ),
> +-                            cgi.escape(six.text_type(value)),
> ++                            html.escape(six.text_type(value)),
> +                         ),
> +                         file=out,
> +                     )
> +@@ -251,7 +251,7 @@ def _generate_html_table(data, out, level=0, extra_sty
> +                     _lookup_style(
> +                         "td", [cell_style, first_style, "value", 
> extra_style]
> +                     ),
> +-                    cgi.escape(six.text_type(subdata)),
> ++                    html.escape(six.text_type(subdata)),
> +                 ),
> +                 file=out,
> +             )
> diff --git patches/patch-salt_returners_nagios_nrdp_return_py 
> patches/patch-salt_returners_nagios_nrdp_return_py
> new file mode 100644
> index 00000000000..a3406afa892
> --- /dev/null
> +++ patches/patch-salt_returners_nagios_nrdp_return_py
> @@ -0,0 +1,40 @@
> +$OpenBSD$
> +cgi.escape has been deprecated since python 3.2 and removed in 3.8.
> +
> +Index: salt/returners/nagios_nrdp_return.py
> +--- salt/returners/nagios_nrdp_return.py.orig
> ++++ salt/returners/nagios_nrdp_return.py
> +@@ -51,7 +51,7 @@ To override individual configuration items, append --r
> + from __future__ import absolute_import, print_function, unicode_literals
> + 
> + # Import python libs
> +-import cgi
> ++import html
> + import logging
> + 
> + import salt.ext.six.moves.http_client
> +@@ -125,20 +125,20 @@ def _prepare_xml(options=None, state=None):
> +             + six.text_type(options["checktype"])
> +             + "'>"
> +         )
> +-        xml += "<hostname>" + cgi.escape(options["hostname"], True) + 
> "</hostname>"
> +-        xml += "<servicename>" + cgi.escape(options["service"], True) + 
> "</servicename>"
> ++        xml += "<hostname>" + html.escape(options["hostname"]) + 
> "</hostname>"
> ++        xml += "<servicename>" + html.escape(options["service"]) + 
> "</servicename>"
> +     else:
> +         xml += (
> +             "<checkresult type='host' checktype='"
> +             + six.text_type(options["checktype"])
> +             + "'>"
> +         )
> +-        xml += "<hostname>" + cgi.escape(options["hostname"], True) + 
> "</hostname>"
> ++        xml += "<hostname>" + html.escape(options["hostname"]) + 
> "</hostname>"
> + 
> +     xml += "<state>" + _state + "</state>"
> + 
> +     if "output" in options:
> +-        xml += "<output>" + cgi.escape(options["output"], True) + 
> "</output>"
> ++        xml += "<output>" + html.escape(options["output"]) + "</output>"
> + 
> +     xml += "</checkresult>"
> + 
> 
> 
> -- 
> I'm not entirely sure you are real.
> 

-- 
I'm not entirely sure you are real.

Reply via email to