I renamed RunRestrictedCmd to RunCmd as it (now) runs both restricted
commands and repair commands. I interpreted "RunRestrictedCmd" as a
function that executes a "restricted command", and not just checking the
restrictions.

On Tue, Aug 25, 2015 at 11:06 AM Aditya Bhimanavajjula <[email protected]>
wrote:

> We cannot use StringIO, as it does not provide fileno(). (fileno is used
> by subprocess.Popen)
>
> On Tue, Aug 25, 2015 at 10:57 AM Klaus Aehlig <[email protected]> wrote:
>
>> On Mon, Aug 24, 2015 at 07:01:17PM +0200, 'Bhimanavajjula Aditya' via
>> ganeti-devel wrote:
>> > repair_command takes two strings as input cmd, and inp.
>> > This patch generalizes RunRestrictedCmd to RunCmd. RunCmd
>> > can now pass a string as stdin input to the command that
>> > will rull.
>> >
>> > Signed-off-by: Bhimanavajjula Aditya <[email protected]>
>> > ---
>> >  lib/backend.py                     | 41
>> ++++++++++++++++++++++----------
>> >  lib/pathutils.py                   |  4 ++++
>> >  lib/rpc_defs.py                    |  4 ++++
>> >  lib/server/noded.py                | 18 +++++++++++++-
>> >  test/py/ganeti.backend_unittest.py | 48
>> +++++++++++++++++++-------------------
>> >  5 files changed, 78 insertions(+), 37 deletions(-)
>> >
>> > diff --git a/lib/backend.py b/lib/backend.py
>> > index cc96689..6ed07e6 100644
>> > --- a/lib/backend.py
>> > +++ b/lib/backend.py
>> > @@ -5473,18 +5473,25 @@ def _PrepareRestrictedCmd(path, cmd,
>> >    return _verify_cmd(path, cmd)
>> >
>> >
>> > -def RunRestrictedCmd(cmd,
>> > -                     _lock_timeout=_RCMD_LOCK_TIMEOUT,
>> > -
>>  _lock_file=pathutils.RESTRICTED_COMMANDS_LOCK_FILE,
>> > -                     _path=pathutils.RESTRICTED_COMMANDS_DIR,
>> > -                     _sleep_fn=time.sleep,
>> > -                     _prepare_fn=_PrepareRestrictedCmd,
>> > -                     _runcmd_fn=utils.RunCmd,
>> > -                     _enabled=constants.ENABLE_RESTRICTED_COMMANDS):
>> > -  """Executes a restricted command after performing strict tests.
>> > +def RunCmd(cmd,
>>
>> Why rename RunRestrictedCmd to RunCmd? The method still verifies
>> restrictions, and hence is fundamentally different then RunCmd from
>> utils---a difference that gets blurred by your renaming.
>>
>> >        if status:
>> > +        if inp:
>> > +          input_fd = tempfile.TemporaryFile()
>> > +          input_fd.write(inp)
>> > +          input_fd.flush()
>> > +          input_fd.seek(0)
>> > +        else:
>> > +          input_fd = None
>>
>> Why generate a real file, if all we need is a file-like object?
>> Can't we use an in-memory file-like object, like StringIO?
>>
>>
>> --
>> Klaus Aehlig
>> Google Germany GmbH, Dienerstr. 12, 80331 Muenchen
>> Registergericht und -nummer: Hamburg, HRB 86891
>> Sitz der Gesellschaft: Hamburg
>> Geschaeftsfuehrer: Graham Law, Christine Elizabeth Flores
>>
>

Reply via email to