diff mbox

[ovs-dev,4/5] Python tests: Set CREATE_NO_WINDOW flag for Popen

Message ID 20161229174031.15944-5-abalutoiu@cloudbasesolutions.com
State Superseded
Headers show

Commit Message

Alin Balutoiu Dec. 29, 2016, 5:40 p.m. UTC
On Windows if the flag CREATE_NO_WINDOW is not
specified when using subprocess.Popen, a new
window will appear with the new process.

The window is not necessary for the tests.
This patch addresses this issue by adding
the flag CREATE_NO_WINDOW for all subprocess.Popen
calls if the machine is running Windows.

Signed-off-by: Alin-Gheorghe Balutoiu <abalutoiu@cloudbasesolutions.com>
---
 ovn/utilities/ovn-docker-overlay-driver                     |  7 ++++++-
 ovn/utilities/ovn-docker-underlay-driver                    |  7 ++++++-
 python/ovstest/util.py                                      | 13 +++++++++++--
 utilities/bugtool/ovs-bugtool.in                            | 12 ++++++++++--
 utilities/ovs-dev.py                                        |  6 +++++-
 utilities/ovs-dpctl-top.in                                  |  6 +++++-
 utilities/ovs-parse-backtrace.in                            |  6 +++++-
 utilities/ovs-tcpdump.in                                    |  5 ++++-
 vtep/ovs-vtep                                               |  6 +++++-
 xenserver/etc_xapi.d_plugins_openvswitch-cfg-update         |  7 ++++++-
 .../opt_xensource_libexec_InterfaceReconfigureVswitch.py    |  7 ++++++-
 xenserver/opt_xensource_libexec_interface-reconfigure       |  6 +++++-
 12 files changed, 74 insertions(+), 14 deletions(-)

Comments

Alin Serdean Dec. 29, 2016, 10:28 p.m. UTC | #1
Just one question: are the modifications to Xen Server necessarry?

Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions>
Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions>

> -----Original Message-----
> From: ovs-dev-bounces@openvswitch.org [mailto:ovs-dev-
> bounces@openvswitch.org] On Behalf Of Alin Balutoiu
> Sent: Thursday, December 29, 2016 7:41 PM
> To: dev@openvswitch.org
> Cc: Alin Balutoiu <abalutoiu@cloudbasesolutions.com>
> Subject: [ovs-dev] [PATCH 4/5] Python tests: Set CREATE_NO_WINDOW flag
> for Popen
> 
> On Windows if the flag CREATE_NO_WINDOW is not specified when using
> subprocess.Popen, a new window will appear with the new process.
> 
> The window is not necessary for the tests.
> This patch addresses this issue by adding the flag CREATE_NO_WINDOW for
> all subprocess.Popen calls if the machine is running Windows.
> 
> Signed-off-by: Alin-Gheorghe Balutoiu <abalutoiu@cloudbasesolutions.com>
> ---
>  ovn/utilities/ovn-docker-overlay-driver                     |  7 ++++++-
>  ovn/utilities/ovn-docker-underlay-driver                    |  7 ++++++-
>  python/ovstest/util.py                                      | 13 +++++++++++--
>  utilities/bugtool/ovs-bugtool.in                            | 12 ++++++++++--
>  utilities/ovs-dev.py                                        |  6 +++++-
>  utilities/ovs-dpctl-top.in                                  |  6 +++++-
>  utilities/ovs-parse-backtrace.in                            |  6 +++++-
>  utilities/ovs-tcpdump.in                                    |  5 ++++-
>  vtep/ovs-vtep                                               |  6 +++++-
>  xenserver/etc_xapi.d_plugins_openvswitch-cfg-update         |  7 ++++++-
>  .../opt_xensource_libexec_InterfaceReconfigureVswitch.py    |  7 ++++++-
>  xenserver/opt_xensource_libexec_interface-reconfigure       |  6 +++++-
>  12 files changed, 74 insertions(+), 14 deletions(-)
>
Alin Balutoiu Jan. 3, 2017, 3:09 p.m. UTC | #2
Actually they are not needed, only the changes from ovs-vtep are needed.

Thanks,
Alin Balutoiu.

> -----Original Message-----
> From: Alin Serdean
> Sent: Friday, December 30, 2016 12:29 AM
> To: Alin Balutoiu <abalutoiu@cloudbasesolutions.com>;
> dev@openvswitch.org
> Cc: Alin Balutoiu <abalutoiu@cloudbasesolutions.com>
> Subject: RE: [ovs-dev] [PATCH 4/5] Python tests: Set CREATE_NO_WINDOW
> flag for Popen
> 
> Just one question: are the modifications to Xen Server necessarry?
> 
> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions>
> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions>
> 
> > -----Original Message-----
> > From: ovs-dev-bounces@openvswitch.org [mailto:ovs-dev-
> > bounces@openvswitch.org] On Behalf Of Alin Balutoiu
> > Sent: Thursday, December 29, 2016 7:41 PM
> > To: dev@openvswitch.org
> > Cc: Alin Balutoiu <abalutoiu@cloudbasesolutions.com>
> > Subject: [ovs-dev] [PATCH 4/5] Python tests: Set CREATE_NO_WINDOW
> flag
> > for Popen
> >
> > On Windows if the flag CREATE_NO_WINDOW is not specified when using
> > subprocess.Popen, a new window will appear with the new process.
> >
> > The window is not necessary for the tests.
> > This patch addresses this issue by adding the flag CREATE_NO_WINDOW
> > for all subprocess.Popen calls if the machine is running Windows.
> >
> > Signed-off-by: Alin-Gheorghe Balutoiu
> > <abalutoiu@cloudbasesolutions.com>
> > ---
> >  ovn/utilities/ovn-docker-overlay-driver                     |  7 ++++++-
> >  ovn/utilities/ovn-docker-underlay-driver                    |  7 ++++++-
> >  python/ovstest/util.py                                      | 13 +++++++++++--
> >  utilities/bugtool/ovs-bugtool.in                            | 12 ++++++++++--
> >  utilities/ovs-dev.py                                        |  6 +++++-
> >  utilities/ovs-dpctl-top.in                                  |  6 +++++-
> >  utilities/ovs-parse-backtrace.in                            |  6 +++++-
> >  utilities/ovs-tcpdump.in                                    |  5 ++++-
> >  vtep/ovs-vtep                                               |  6 +++++-
> >  xenserver/etc_xapi.d_plugins_openvswitch-cfg-update         |  7 ++++++-
> >  .../opt_xensource_libexec_InterfaceReconfigureVswitch.py    |  7 ++++++-
> >  xenserver/opt_xensource_libexec_interface-reconfigure       |  6 +++++-
> >  12 files changed, 74 insertions(+), 14 deletions(-)
> >
diff mbox

Patch

diff --git a/ovn/utilities/ovn-docker-overlay-driver b/ovn/utilities/ovn-docker-overlay-driver
index 52de3db..25c45b3 100755
--- a/ovn/utilities/ovn-docker-overlay-driver
+++ b/ovn/utilities/ovn-docker-overlay-driver
@@ -42,7 +42,12 @@  PLUGIN_FILE = "/etc/docker/plugins/openvswitch.spec"
 
 
 def call_popen(cmd):
-    child = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+    creationFlags = 0
+    if sys.platform == 'win32':
+        creationFlags = 0x08000000  # CREATE_NO_WINDOW
+    child = subprocess.Popen(cmd,
+                             stdout=subprocess.PIPE,
+                             creationflags=creationFlags)
     output = child.communicate()
     if child.returncode:
         raise RuntimeError("Fatal error executing %s" % (cmd))
diff --git a/ovn/utilities/ovn-docker-underlay-driver b/ovn/utilities/ovn-docker-underlay-driver
index 2c9c4b6..7905611 100755
--- a/ovn/utilities/ovn-docker-underlay-driver
+++ b/ovn/utilities/ovn-docker-underlay-driver
@@ -51,7 +51,12 @@  VIF_ID = ""
 
 
 def call_popen(cmd):
-    child = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+    creationFlags = 0
+    if sys.platform == 'win32':
+        creationFlags = 0x08000000  # CREATE_NO_WINDOW
+    child = subprocess.Popen(cmd,
+                             stdout=subprocess.PIPE,
+                             creationflags=creationFlags)
     output = child.communicate()
     if child.returncode:
         raise RuntimeError("Fatal error executing %s" % (cmd))
diff --git a/python/ovstest/util.py b/python/ovstest/util.py
index 830feba..8ae4c79 100644
--- a/python/ovstest/util.py
+++ b/python/ovstest/util.py
@@ -23,6 +23,7 @@  import select
 import socket
 import struct
 import signal
+import sys
 import subprocess
 import re
 
@@ -81,10 +82,14 @@  def uname():
 
 def start_process(args):
     try:
+        creationFlags = 0
+        if sys.platform == 'win32':
+            creationFlags = 0x08000000  # CREATE_NO_WINDOW
         p = subprocess.Popen(args,
                              stdin=subprocess.PIPE,
                              stdout=subprocess.PIPE,
-                             stderr=subprocess.PIPE)
+                             stderr=subprocess.PIPE,
+                             creationflags=creationFlags)
         out, err = p.communicate()
         return (p.returncode, out, err)
     except exceptions.OSError:
@@ -186,9 +191,13 @@  def start_local_server(port):
     and blocks till the spawned ovs-test server is ready to accept XML RPC
     connections.
     """
+    creationFlags = 0
+    if sys.platform == 'win32':
+        creationFlags = 0x08000000  # CREATE_NO_WINDOW
     p = subprocess.Popen(["ovs-test", "-s", str(port)],
                          stdout=subprocess.PIPE, stderr=subprocess.PIPE,
-                         preexec_fn=sigint_intercept)
+                         preexec_fn=sigint_intercept,
+                         creationflags=creationFlags)
     fcntl.fcntl(p.stdout.fileno(), fcntl.F_SETFL,
         fcntl.fcntl(p.stdout.fileno(), fcntl.F_GETFL) | os.O_NONBLOCK)
 
diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in
index 963c50c..905f598 100755
--- a/utilities/bugtool/ovs-bugtool.in
+++ b/utilities/bugtool/ovs-bugtool.in
@@ -775,8 +775,12 @@  def module_info(cap):
 
 
 def multipathd_topology(cap):
+    creationFlags = 0
+    if sys.platform == 'win32':
+        creationFlags = 0x08000000  # CREATE_NO_WINDOW
     pipe = Popen([MULTIPATHD, '-k'], bufsize=1, stdin=PIPE,
-                     stdout=PIPE, stderr=dev_null)
+                     stdout=PIPE, stderr=dev_null,
+                     creationflags=creationFlags)
     stdout, stderr = pipe.communicate('show topology')
 
     return stdout
@@ -1236,9 +1240,13 @@  class ProcOutput(object):
         try:
             if ProcOutput.debug:
                 output_ts("Starting '%s'" % self.cmdAsStr())
+            creationFlags = 0
+            if sys.platform == 'win32':
+                creationFlags = 0x08000000  # CREATE_NO_WINDOW
             self.proc = Popen(self.command, bufsize=self.bufsize,
                               stdin=dev_null, stdout=PIPE, stderr=dev_null,
-                              shell=isinstance(self.command, str))
+                              shell=isinstance(self.command, str),
+                              creationflags=creationFlags)
             old = fcntl.fcntl(self.proc.stdout.fileno(), fcntl.F_GETFD)
             fcntl.fcntl(self.proc.stdout.fileno(),
                         fcntl.F_SETFD, old | fcntl.FD_CLOEXEC)
diff --git a/utilities/ovs-dev.py b/utilities/ovs-dev.py
index 9ce0f04..a52e5a5 100755
--- a/utilities/ovs-dev.py
+++ b/utilities/ovs-dev.py
@@ -45,7 +45,11 @@  def _sh(*args, **kwargs):
     print("------> " + " ".join(args))
     shell = len(args) == 1
     if kwargs.get("capture", False):
-        proc = subprocess.Popen(args, stdout=subprocess.PIPE, shell=shell)
+        creationFlags = 0
+        if sys.platform == 'win32':
+            creationFlags = 0x08000000  # CREATE_NO_WINDOW
+        proc = subprocess.Popen(args, stdout=subprocess.PIPE, shell=shell,
+                                creationflags=creationFlags)
         return proc.stdout.readlines()
     elif kwargs.get("check", True):
         subprocess.check_call(args, shell=shell)
diff --git a/utilities/ovs-dpctl-top.in b/utilities/ovs-dpctl-top.in
index 401a80e..79e5eb7 100755
--- a/utilities/ovs-dpctl-top.in
+++ b/utilities/ovs-dpctl-top.in
@@ -336,8 +336,12 @@  def top_input_get(args):
         cmd += ["ssh", args.host]
     cmd += ["ovs-dpctl", "dump-flows"]
 
+    creationFlags = 0
+    if sys.platform == 'win32':
+        creationFlags = 0x08000000  # CREATE_NO_WINDOW
     return subprocess.Popen(cmd, stderr=subprocess.STDOUT,
-                            stdout=subprocess.PIPE).stdout
+                            stdout=subprocess.PIPE,
+                            creationflags=creationFlags).stdout
 
 
 def args_get():
diff --git a/utilities/ovs-parse-backtrace.in b/utilities/ovs-parse-backtrace.in
index c8a4385..52e9a6c 100755
--- a/utilities/ovs-parse-backtrace.in
+++ b/utilities/ovs-parse-backtrace.in
@@ -35,8 +35,12 @@  def addr2line(binary, addr):
 
     cmd = ["addr2line", "-f", "-s", "-e", binary, addr]
     try:
+        creationFlags = 0
+        if sys.platform == 'win32':
+            creationFlags = 0x08000000  # CREATE_NO_WINDOW
         proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
-                                stderr=subprocess.PIPE)
+                                stderr=subprocess.PIPE,
+                                creationflags=creationFlags)
         lines = proc.stdout.readlines()
         failed = proc.returncode
     except OSError:
diff --git a/utilities/ovs-tcpdump.in b/utilities/ovs-tcpdump.in
index a6e4ada..91ea324 100755
--- a/utilities/ovs-tcpdump.in
+++ b/utilities/ovs-tcpdump.in
@@ -43,8 +43,11 @@  def _doexec(*args, **kwargs):
     """Executes an application and returns a set of pipes"""
 
     shell = len(args) == 1
+    creationFlags = 0
+    if sys.platform == 'win32':
+        creationFlags = 0x08000000  # CREATE_NO_WINDOW
     proc = subprocess.Popen(args, stdout=subprocess.PIPE, shell=shell,
-                            bufsize=0)
+                            bufsize=0, creationflags=creationFlags)
     return proc
 
 
diff --git a/vtep/ovs-vtep b/vtep/ovs-vtep
index 9a5aa3d..fd652d4 100755
--- a/vtep/ovs-vtep
+++ b/vtep/ovs-vtep
@@ -53,7 +53,11 @@  bfd_ref = {}
 
 def call_prog(prog, args_list):
     cmd = [prog, "-vconsole:off"] + args_list
-    output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()
+    creationFlags = 0
+    if sys.platform == 'win32':
+        creationFlags = 0x08000000  # CREATE_NO_WINDOW
+    output = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+                              creationflags=creationFlags).communicate()
     if len(output) == 0 or output[0] is None:
         output = ""
     else:
diff --git a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
index e7404e3..2464454 100755
--- a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
+++ b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
@@ -24,6 +24,7 @@ 
 import XenAPIPlugin
 import os
 import subprocess
+import sys
 import syslog
 import re
 
@@ -230,7 +231,11 @@  def setControllerCfg(controller):
 
 def vswitchCfgQuery(action_args):
     cmd = [vsctl, '-vconsole:off'] + action_args
-    output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()
+    creationFlags = 0
+    if sys.platform == 'win32':
+        creationFlags = 0x08000000  # CREATE_NO_WINDOW
+    output = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+                              creationflags=creationFlags).communicate()
     if len(output) == 0 or output[0] is None:
         output = ''
     else:
diff --git a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
index c65fb3d..3b1e338 100644
--- a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
+++ b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py
@@ -15,6 +15,7 @@  from InterfaceReconfigure import *
 import os
 import re
 import subprocess
+import sys
 
 #
 # Bare Network Devices -- network devices without IP configuration
@@ -722,7 +723,11 @@  class DatapathVswitch(Datapath):
 def vswitchCfgQuery(action_args):
     cmd = ['%s/usr/bin/ovs-vsctl' % root_prefix(),
            '-vconsole:off'] + action_args
-    output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()
+    creationFlags = 0
+    if sys.platform == 'win32':
+        creationFlags = 0x08000000  # CREATE_NO_WINDOW
+    output = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+                              creationflags=creationFlags).communicate()
     if len(output) == 0 or output[0] == None:
         output = ""
     else:
diff --git a/xenserver/opt_xensource_libexec_interface-reconfigure b/xenserver/opt_xensource_libexec_interface-reconfigure
index ea4a742..caf9819 100755
--- a/xenserver/opt_xensource_libexec_interface-reconfigure
+++ b/xenserver/opt_xensource_libexec_interface-reconfigure
@@ -483,7 +483,11 @@  def action_rewrite():
 def action_force_rewrite(bridge, config):
     def getUUID():
         import subprocess
-        uuid,_ = subprocess.Popen(['uuidgen'], stdout = subprocess.PIPE).communicate()
+        creationFlags = 0
+        if sys.platform == 'win32':
+            creationFlags = 0x08000000  # CREATE_NO_WINDOW
+        uuid,_ = subprocess.Popen(['uuidgen'], stdout = subprocess.PIPE,
+                                  creationflags=creationFlags).communicate()
         return uuid.strip()
 
     # Notes: