diff mbox series

[ovs-dev] ovs-bugtool: Fix Python3 bytes str issue.

Message ID 1594673180-26396-1-git-send-email-u9012063@gmail.com
State Accepted
Commit c57e02cfd7978368dd90bba52cd20f75934ed8ed
Headers show
Series [ovs-dev] ovs-bugtool: Fix Python3 bytes str issue. | expand

Commit Message

William Tu July 13, 2020, 8:46 p.m. UTC
The patch fixes two errors due to type mismatched, when converting
between str and bytes:
  File "/usr/local/sbin/ovs-bugtool", line 649, in main
    cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'dump-flows', '-m', d])
  File "/usr/local/sbin/ovs-bugtool", line 278, in cmd_output
    label = ' '.join(a)
TypeError: sequence item 3: expected str instance, bytes found

And
  File "/usr/sbin/ovs-bugtool", line 721, in main
    collect_data()
  File "/usr/sbin/ovs-bugtool", line 366, in collect_data
    run_procs(process_lists.values())
  File "/usr/sbin/ovs-bugtool", line 1354, in run_procs
    p.inst.write("\n** timeout **\n")
  File "/usr/sbin/ovs-bugtool", line 1403, in write
    BytesIO.write(self, s)
TypeError: a bytes-like object is required, not 'str'

VMware-BZ: #2602135
Fixed: 9e6c00bca9af ("bugtool: Fix for Python3.")
Signed-off-by: William Tu <u9012063@gmail.com>
---
 utilities/bugtool/ovs-bugtool.in | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Yi-Hung Wei July 14, 2020, 5:14 p.m. UTC | #1
On Mon, Jul 13, 2020 at 1:46 PM William Tu <u9012063@gmail.com> wrote:
>
> The patch fixes two errors due to type mismatched, when converting
> between str and bytes:
>   File "/usr/local/sbin/ovs-bugtool", line 649, in main
>     cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'dump-flows', '-m', d])
>   File "/usr/local/sbin/ovs-bugtool", line 278, in cmd_output
>     label = ' '.join(a)
> TypeError: sequence item 3: expected str instance, bytes found
>
> And
>   File "/usr/sbin/ovs-bugtool", line 721, in main
>     collect_data()
>   File "/usr/sbin/ovs-bugtool", line 366, in collect_data
>     run_procs(process_lists.values())
>   File "/usr/sbin/ovs-bugtool", line 1354, in run_procs
>     p.inst.write("\n** timeout **\n")
>   File "/usr/sbin/ovs-bugtool", line 1403, in write
>     BytesIO.write(self, s)
> TypeError: a bytes-like object is required, not 'str'
>
> VMware-BZ: #2602135
> Fixed: 9e6c00bca9af ("bugtool: Fix for Python3.")
> Signed-off-by: William Tu <u9012063@gmail.com>
> ---
>  utilities/bugtool/ovs-bugtool.in | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in
> index 1a5170d8c78b..8ca4c922a104 100755
> --- a/utilities/bugtool/ovs-bugtool.in
> +++ b/utilities/bugtool/ovs-bugtool.in
> @@ -643,7 +643,7 @@ exclude those logs from the archive.
>      if os.path.exists(OPENVSWITCH_VSWITCHD_PID):
>          cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'show', '-s'])
>          for d in dp_list():
> -            cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'dump-flows', '-m', d])
> +            cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'dump-flows', '-m', d.decode()])
Thanks for the patch. I got the following flake check warning.

utilities/bugtool/ovs-bugtool.in:646:80: E501 line too long (87 > 79 characters)

Other than that, it looks good to me.

Thanks,

-Yi-Hung
William Tu July 14, 2020, 11:42 p.m. UTC | #2
On Tue, Jul 14, 2020 at 10:14 AM Yi-Hung Wei <yihung.wei@gmail.com> wrote:
>
> On Mon, Jul 13, 2020 at 1:46 PM William Tu <u9012063@gmail.com> wrote:
> >
> > The patch fixes two errors due to type mismatched, when converting
> > between str and bytes:
> >   File "/usr/local/sbin/ovs-bugtool", line 649, in main
> >     cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'dump-flows', '-m', d])
> >   File "/usr/local/sbin/ovs-bugtool", line 278, in cmd_output
> >     label = ' '.join(a)
> > TypeError: sequence item 3: expected str instance, bytes found
> >
> > And
> >   File "/usr/sbin/ovs-bugtool", line 721, in main
> >     collect_data()
> >   File "/usr/sbin/ovs-bugtool", line 366, in collect_data
> >     run_procs(process_lists.values())
> >   File "/usr/sbin/ovs-bugtool", line 1354, in run_procs
> >     p.inst.write("\n** timeout **\n")
> >   File "/usr/sbin/ovs-bugtool", line 1403, in write
> >     BytesIO.write(self, s)
> > TypeError: a bytes-like object is required, not 'str'
> >
> > VMware-BZ: #2602135
> > Fixed: 9e6c00bca9af ("bugtool: Fix for Python3.")
> > Signed-off-by: William Tu <u9012063@gmail.com>
> > ---
> >  utilities/bugtool/ovs-bugtool.in | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in
> > index 1a5170d8c78b..8ca4c922a104 100755
> > --- a/utilities/bugtool/ovs-bugtool.in
> > +++ b/utilities/bugtool/ovs-bugtool.in
> > @@ -643,7 +643,7 @@ exclude those logs from the archive.
> >      if os.path.exists(OPENVSWITCH_VSWITCHD_PID):
> >          cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'show', '-s'])
> >          for d in dp_list():
> > -            cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'dump-flows', '-m', d])
> > +            cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'dump-flows', '-m', d.decode()])
> Thanks for the patch. I got the following flake check warning.
>
> utilities/bugtool/ovs-bugtool.in:646:80: E501 line too long (87 > 79 characters)
>
> Other than that, it looks good to me.
Thanks, I applied to master and 2.13
William
diff mbox series

Patch

diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in
index 1a5170d8c78b..8ca4c922a104 100755
--- a/utilities/bugtool/ovs-bugtool.in
+++ b/utilities/bugtool/ovs-bugtool.in
@@ -643,7 +643,7 @@  exclude those logs from the archive.
     if os.path.exists(OPENVSWITCH_VSWITCHD_PID):
         cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'show', '-s'])
         for d in dp_list():
-            cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'dump-flows', '-m', d])
+            cmd_output(CAP_NETWORK_STATUS, [OVS_DPCTL, 'dump-flows', '-m', d.decode()])
 
     cmd_output(CAP_PROCESS_LIST, [PS, 'wwwaxf', '-eo',
                'pid,tty,stat,time,nice,psr,pcpu,pmem,nwchan,wchan:25,args'],
@@ -1351,7 +1351,7 @@  def run_procs(procs):
             if p.running and now > p.timeout:
                 output_ts("'%s' timed out" % p.cmdAsStr())
                 if p.inst:
-                    p.inst.write("\n** timeout **\n")
+                    p.inst.write("\n** timeout **\n".encode())
                 p.timed_out = True
                 p.terminate()