configurationengine/source/plugins/common/ConeCommandPlugin/commandplugin/commandml.py
changeset 4 0951727b8815
parent 3 e7e0ae78773e
equal deleted inserted replaced
3:e7e0ae78773e 4:0951727b8815
    23 import re
    23 import re
    24 import os
    24 import os
    25 import logging
    25 import logging
    26 import types
    26 import types
    27 import pkg_resources
    27 import pkg_resources
    28 
    28 import sys 
    29 import subprocess
    29 import subprocess
    30 
    30 
    31 from cone.public import plugin,utils
    31 from cone.public import plugin,utils
    32 
    32 
    33 def get_folder_set(folder):
    33 def get_folder_set(folder):
   329         self.shell = False
   329         self.shell = False
   330         self.bufsize = 0
   330         self.bufsize = 0
   331         self.cwd = None
   331         self.cwd = None
   332         self.envs = None
   332         self.envs = None
   333         self.arguments = []
   333         self.arguments = []
   334         self.pipes = {}
   334         self.pipes = {'stdout': subprocess.PIPE, 'stderr': subprocess.PIPE}
   335         self.streams = {}
   335         self.streams = {}
   336         self.filters = []
   336         self.filters = []
   337         self.logger = None
   337         self.logger = None
   338         self.dview = None
   338         self.dview = None
   339     
   339     
   455                                  % (self.shell, self.envs, cwd, self.bufsize, \
   455                                  % (self.shell, self.envs, cwd, self.bufsize, \
   456                                     self.get_pipe("stdin", 'r'),self.get_pipe("stdout"), self.get_pipe("stderr")))
   456                                     self.get_pipe("stdin", 'r'),self.get_pipe("stdout"), self.get_pipe("stderr")))
   457                 pid = subprocess.Popen(command_str, shell=self.shell, env=env_dict, cwd=cwd,\
   457                 pid = subprocess.Popen(command_str, shell=self.shell, env=env_dict, cwd=cwd,\
   458                                           bufsize=self.bufsize, stdin = self.get_pipe("stdin", 'r'),\
   458                                           bufsize=self.bufsize, stdin = self.get_pipe("stdin", 'r'),\
   459                                           stdout = self.get_pipe("stdout"), stderr = self.get_pipe("stderr"))
   459                                           stdout = self.get_pipe("stdout"), stderr = self.get_pipe("stderr"))
       
   460                 
       
   461                 #log stdout and stderr to logger
       
   462                 stdout_value, stderr_value = pid.communicate()
       
   463                 if stdout_value != None: self.logger.info("stdout: %s" % stdout_value)
       
   464                 if stderr_value != None: self.logger.warning("stderr: %s" % stderr_value)
       
   465                 
   460                 #Waiting for process to complete
   466                 #Waiting for process to complete
   461                 retcode = pid.wait()
   467                 retcode = pid.wait()
       
   468                 
   462                 #Storing stream information for possible further processing.
   469                 #Storing stream information for possible further processing.
   463                 self.set_streams(pid.stdin, pid.stdout, pid.stderr)
   470                 self.set_streams(pid.stdin, pid.stdout, pid.stderr)
   464                 
   471                 
   465                 if retcode < 0:
   472                 if retcode < 0:
   466                     self.logger.error("Child was terminated by signal %s" % (-retcode))
   473                     self.logger.error("Child was terminated by signal %s" % (-retcode))