From 43b79f1bf8bec4461e6dc3bbf185a5894b9891de Mon Sep 17 00:00:00 2001 From: Ceyda Cinarel Date: Thu, 21 May 2020 20:49:30 +0900 Subject: [PATCH 1/6] add sudo_options kwarg, add env kwarg to run_command --- spython/instance/cmd/start.py | 4 ++-- spython/main/execute.py | 5 +++-- spython/main/instances.py | 4 ++-- spython/utils/terminal.py | 4 +++- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/spython/instance/cmd/start.py b/spython/instance/cmd/start.py index f1c5230f..bd4c85b0 100644 --- a/spython/instance/cmd/start.py +++ b/spython/instance/cmd/start.py @@ -9,7 +9,7 @@ def start( - self, image=None, name=None, args=None, sudo=False, options=None, capture=False + self, image=None, name=None, args=None, sudo=False, sudo_options=None, options=None, capture=False, env=None ): """start an instance. This is done by default when an instance is created. @@ -69,7 +69,7 @@ def start( self.args = args self.cmd = cmd - output = run_command(cmd, sudo=sudo, quiet=True, capture=capture) + output = run_command(cmd, sudo=sudo, sudo_options=sudo_options, quiet=True, capture=capture, env=env) if output["return_code"] == 0: self._update_metadata() diff --git a/spython/main/execute.py b/spython/main/execute.py index 43ad0944..d2dde647 100644 --- a/spython/main/execute.py +++ b/spython/main/execute.py @@ -24,6 +24,7 @@ def execute( return_result=False, options=None, sudo=False, + sudo_options=None, quiet=True, ): """ execute: send a command to a container @@ -97,9 +98,9 @@ def execute( if not stream: return self._run_command( - cmd, sudo=sudo, return_result=return_result, quiet=quiet + cmd, sudo=sudo, sudo_options=sudo_options, return_result=return_result, quiet=quiet ) - return stream_command(cmd, sudo=sudo) + return stream_command(cmd, sudo=sudo, sudo_options=sudo_options) bot.exit("Please include a command (list) to execute.") diff --git a/spython/main/instances.py b/spython/main/instances.py index d134cde4..87d3ac0c 100644 --- a/spython/main/instances.py +++ b/spython/main/instances.py @@ -9,7 +9,7 @@ from spython.utils import run_command -def list_instances(self, name=None, return_json=False, quiet=False, sudo=False): +def list_instances(self, name=None, return_json=False, quiet=False, sudo=False, sudo_options=None): """list instances. For Singularity, this is provided as a command sub group. @@ -45,7 +45,7 @@ def list_instances(self, name=None, return_json=False, quiet=False, sudo=False): if name is not None: cmd.append(name) - output = run_command(cmd, quiet=True, sudo=sudo) + output = run_command(cmd, quiet=True, sudo=sudo, sudo_options=sudo_options) instances = [] # Success, we have instances diff --git a/spython/utils/terminal.py b/spython/utils/terminal.py index 8ce14613..63c426ab 100644 --- a/spython/utils/terminal.py +++ b/spython/utils/terminal.py @@ -151,6 +151,7 @@ def run_command( no_newline_regexp="Progess", quiet=False, sudo_options=None, + env=None ): """run_command uses subprocess to send a command to the terminal. If @@ -176,7 +177,8 @@ def run_command( stdout = subprocess.PIPE # Use the parent stdout and stderr - process = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=stdout) + + process = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=stdout, env=env) lines = [] found_match = False From 167c334022d2a02cc95561289d0fbc3e2f90445f Mon Sep 17 00:00:00 2001 From: Ceyda Cinarel Date: Fri, 5 Jun 2020 09:09:19 +0900 Subject: [PATCH 2/6] add sudo_options to instance stop --- spython/instance/cmd/stop.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spython/instance/cmd/stop.py b/spython/instance/cmd/stop.py index 09c0367d..36c9a8a4 100644 --- a/spython/instance/cmd/stop.py +++ b/spython/instance/cmd/stop.py @@ -8,7 +8,7 @@ from spython.logger import bot -def stop(self, name=None, sudo=False, timeout=None, singularity_options=None): +def stop(self, name=None, sudo=False, sudo_options=None, timeout=None, singularity_options=None): """stop an instance. This is done by default when an instance is created. Parameters @@ -42,7 +42,7 @@ def stop(self, name=None, sudo=False, timeout=None, singularity_options=None): instance_name = name cmd = cmd + [instance_name] - output = run_command(cmd, sudo=sudo, quiet=True) + output = run_command(cmd, sudo=sudo, sudo_options=sudo_options, quiet=True) if output["return_code"] != 0: message = "%s : return code %s" % (output["message"], output["return_code"]) From d0564b948953aa319a549fbd60908f79726b3dbf Mon Sep 17 00:00:00 2001 From: Ceyda Cinarel Date: Mon, 14 Sep 2020 16:02:41 +0900 Subject: [PATCH 3/6] add environment parameter to run_command --- spython/main/base/command.py | 3 ++- spython/main/execute.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/spython/main/base/command.py b/spython/main/base/command.py index 36204b09..626d5b16 100644 --- a/spython/main/base/command.py +++ b/spython/main/base/command.py @@ -108,6 +108,7 @@ def run_command( quiet=None, return_result=False, sudo_options=None, + env=None, ): """run_command is a wrapper for the global run_command, checking first @@ -130,7 +131,7 @@ def run_command( quiet = self.quiet result = run_cmd( - cmd, sudo=sudo, capture=capture, quiet=quiet, sudo_options=sudo_options + cmd, sudo=sudo, capture=capture, quiet=quiet, sudo_options=sudo_options, env=env ) # If one line is returned, squash dimension diff --git a/spython/main/execute.py b/spython/main/execute.py index f66ecc1c..e005e598 100644 --- a/spython/main/execute.py +++ b/spython/main/execute.py @@ -27,6 +27,7 @@ def execute( sudo=False, sudo_options=None, quiet=True, + env=None, ): """ execute: send a command to a container @@ -100,7 +101,7 @@ def execute( if not stream: return self._run_command( - cmd, sudo=sudo, sudo_options=sudo_options, return_result=return_result, quiet=quiet + cmd, sudo=sudo, sudo_options=sudo_options, return_result=return_result, quiet=quiet, env=env ) return stream_command(cmd, sudo=sudo, sudo_options=sudo_options) From bc7b346b0b9d0bacc258dd7e24a81d58ee99dec9 Mon Sep 17 00:00:00 2001 From: Ceyda Cinarel Date: Mon, 14 Sep 2020 16:44:46 +0900 Subject: [PATCH 4/6] lint code --- spython/instance/cmd/start.py | 6 ++++-- spython/instance/cmd/stop.py | 9 ++++++++- spython/main/execute.py | 7 ++++++- spython/utils/terminal.py | 2 +- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/spython/instance/cmd/start.py b/spython/instance/cmd/start.py index 58aeed1b..2f56b0bc 100644 --- a/spython/instance/cmd/start.py +++ b/spython/instance/cmd/start.py @@ -18,7 +18,7 @@ def start( options=None, capture=False, singularity_options=None, - env=None + env=None, ): """start an instance. This is done by default when an instance is created. @@ -79,7 +79,9 @@ def start( self.args = args self.cmd = cmd - output = run_command(cmd, sudo=sudo, sudo_options=sudo_options, quiet=True, capture=capture, env=env) + output = run_command( + cmd, sudo=sudo, sudo_options=sudo_options, quiet=True, capture=capture, env=env + ) if output["return_code"] == 0: self._update_metadata() diff --git a/spython/instance/cmd/stop.py b/spython/instance/cmd/stop.py index 36c9a8a4..c6017946 100644 --- a/spython/instance/cmd/stop.py +++ b/spython/instance/cmd/stop.py @@ -8,7 +8,14 @@ from spython.logger import bot -def stop(self, name=None, sudo=False, sudo_options=None, timeout=None, singularity_options=None): +def stop( + self, + name=None, + sudo=False, + sudo_options=None, + timeout=None, + singularity_options=None, +): """stop an instance. This is done by default when an instance is created. Parameters diff --git a/spython/main/execute.py b/spython/main/execute.py index e005e598..77981451 100644 --- a/spython/main/execute.py +++ b/spython/main/execute.py @@ -101,7 +101,12 @@ def execute( if not stream: return self._run_command( - cmd, sudo=sudo, sudo_options=sudo_options, return_result=return_result, quiet=quiet, env=env + cmd, + sudo=sudo, + sudo_options=sudo_options, + return_result=return_result, + quiet=quiet, + env=env, ) return stream_command(cmd, sudo=sudo, sudo_options=sudo_options) diff --git a/spython/utils/terminal.py b/spython/utils/terminal.py index b36d04ce..b844d9b7 100644 --- a/spython/utils/terminal.py +++ b/spython/utils/terminal.py @@ -154,7 +154,7 @@ def run_command( no_newline_regexp="Progess", quiet=False, sudo_options=None, - env=None + env=None, ): """run_command uses subprocess to send a command to the terminal. If From c72c4932e125df826922f3956c18e7c6e4144e95 Mon Sep 17 00:00:00 2001 From: Ceyda Cinarel Date: Tue, 15 Sep 2020 18:12:10 +0900 Subject: [PATCH 5/6] rename env to environ --- CHANGELOG.md | 2 ++ spython/instance/cmd/start.py | 4 ++-- spython/main/base/command.py | 4 ++-- spython/main/execute.py | 4 ++-- spython/utils/terminal.py | 4 ++-- spython/version.py | 2 +- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91fbad0e..bbf4922d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ The client here will eventually be released as "spython" (and eventually to singularity on pypi), and the versions here will coincide with these releases. ## [master](https://github.com/singularityhub/singularity-cli/tree/master) + - add sudo_options option to Instance.start/stop and Client.execute (0.0.85) + - add environ option to Instance.start and Client.execute for passing env variables - Small bugfix for docker writer and adding pyflakes for unused imports (0.0.84) - Adding support for multistage build parsing (0.0.83) - Singularity Python does not yet support multistage builds (0.0.82) diff --git a/spython/instance/cmd/start.py b/spython/instance/cmd/start.py index 2f56b0bc..e9ad9c69 100644 --- a/spython/instance/cmd/start.py +++ b/spython/instance/cmd/start.py @@ -18,7 +18,7 @@ def start( options=None, capture=False, singularity_options=None, - env=None, + environ=None, ): """start an instance. This is done by default when an instance is created. @@ -80,7 +80,7 @@ def start( self.cmd = cmd output = run_command( - cmd, sudo=sudo, sudo_options=sudo_options, quiet=True, capture=capture, env=env + cmd, sudo=sudo, sudo_options=sudo_options, quiet=True, capture=capture, environ=environ ) if output["return_code"] == 0: diff --git a/spython/main/base/command.py b/spython/main/base/command.py index 626d5b16..bc352021 100644 --- a/spython/main/base/command.py +++ b/spython/main/base/command.py @@ -108,7 +108,7 @@ def run_command( quiet=None, return_result=False, sudo_options=None, - env=None, + environ=None, ): """run_command is a wrapper for the global run_command, checking first @@ -131,7 +131,7 @@ def run_command( quiet = self.quiet result = run_cmd( - cmd, sudo=sudo, capture=capture, quiet=quiet, sudo_options=sudo_options, env=env + cmd, sudo=sudo, capture=capture, quiet=quiet, sudo_options=sudo_options, environ=environ ) # If one line is returned, squash dimension diff --git a/spython/main/execute.py b/spython/main/execute.py index 77981451..62d127bb 100644 --- a/spython/main/execute.py +++ b/spython/main/execute.py @@ -27,7 +27,7 @@ def execute( sudo=False, sudo_options=None, quiet=True, - env=None, + environ=None, ): """ execute: send a command to a container @@ -106,7 +106,7 @@ def execute( sudo_options=sudo_options, return_result=return_result, quiet=quiet, - env=env, + environ=environ, ) return stream_command(cmd, sudo=sudo, sudo_options=sudo_options) diff --git a/spython/utils/terminal.py b/spython/utils/terminal.py index b844d9b7..1562925a 100644 --- a/spython/utils/terminal.py +++ b/spython/utils/terminal.py @@ -154,7 +154,7 @@ def run_command( no_newline_regexp="Progess", quiet=False, sudo_options=None, - env=None, + environ=None, ): """run_command uses subprocess to send a command to the terminal. If @@ -181,7 +181,7 @@ def run_command( # Use the parent stdout and stderr - process = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=stdout, env=env) + process = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=stdout, env=environ) lines = [] found_match = False diff --git a/spython/version.py b/spython/version.py index 4d9d0dbb..7d716570 100644 --- a/spython/version.py +++ b/spython/version.py @@ -5,7 +5,7 @@ # with this file, You can obtain one at http://mozilla.org/MPL/2.0/. -__version__ = "0.0.84" +__version__ = "0.0.85" AUTHOR = "Vanessa Sochat" AUTHOR_EMAIL = "vsochat@stanford.edu" NAME = "spython" From 75e6e672a51e91e558b1c3f5d33b74fb77cbb5ca Mon Sep 17 00:00:00 2001 From: Ceyda Cinarel Date: Tue, 15 Sep 2020 18:15:31 +0900 Subject: [PATCH 6/6] lint --- spython/instance/cmd/start.py | 7 ++++++- spython/main/base/command.py | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/spython/instance/cmd/start.py b/spython/instance/cmd/start.py index e9ad9c69..ad6a5578 100644 --- a/spython/instance/cmd/start.py +++ b/spython/instance/cmd/start.py @@ -80,7 +80,12 @@ def start( self.cmd = cmd output = run_command( - cmd, sudo=sudo, sudo_options=sudo_options, quiet=True, capture=capture, environ=environ + cmd, + sudo=sudo, + sudo_options=sudo_options, + quiet=True, + capture=capture, + environ=environ, ) if output["return_code"] == 0: diff --git a/spython/main/base/command.py b/spython/main/base/command.py index bc352021..53555782 100644 --- a/spython/main/base/command.py +++ b/spython/main/base/command.py @@ -131,7 +131,12 @@ def run_command( quiet = self.quiet result = run_cmd( - cmd, sudo=sudo, capture=capture, quiet=quiet, sudo_options=sudo_options, environ=environ + cmd, + sudo=sudo, + capture=capture, + quiet=quiet, + sudo_options=sudo_options, + environ=environ, ) # If one line is returned, squash dimension