Commit 10183645 authored by Devaev Maxim's avatar Devaev Maxim

New function execProcess() with input support

parent 8f2b56b5
...@@ -95,12 +95,12 @@ class CommonInfo(service.FunctionObject) : ...@@ -95,12 +95,12 @@ class CommonInfo(service.FunctionObject) :
### Private ### ### Private ###
def lsbOption(self, option) : def lsbOption(self, option) :
proc_args = "%s %s" % (config.value(SERVICE_NAME, "lsb_release_bin"), option) proc_args_list = [config.value(SERVICE_NAME, "lsb_release_bin"), option]
return ":".join(tools.process.execProcess(proc_args)[0].split(":")[1:]).strip() return ":".join(tools.process.execProcess(proc_args_list)[0].split(":")[1:]).strip()
def unameOption(self, option) : def unameOption(self, option) :
proc_args = "%s %s" % (config.value(SERVICE_NAME, "uname_bin"), option) proc_args_list = [config.value(SERVICE_NAME, "uname_bin"), option]
return tools.process.execProcess(proc_args)[0].strip() return tools.process.execProcess(proc_args_list)[0].strip()
##### Public classes ##### ##### Public classes #####
......
...@@ -37,9 +37,9 @@ class DateTime(service.FunctionObject) : ...@@ -37,9 +37,9 @@ class DateTime(service.FunctionObject) :
@service.functionMethod(SYSTEM_CLOCK_METHODS_NAMESPACE, in_signature="iiiiii", out_signature="i") @service.functionMethod(SYSTEM_CLOCK_METHODS_NAMESPACE, in_signature="iiiiii", out_signature="i")
def setUtcTime(self, month, monthday, hour, minute, year, second) : def setUtcTime(self, month, monthday, hour, minute, year, second) :
proc_args = "%s -u %02d%02d%02d%02d%04d.%02d" % ( config.value(SERVICE_NAME, "date_bin"), proc_args_list = [ config.value(SERVICE_NAME, "date_bin"), "-u", "%02d%02d%02d%02d%04d.%02d" % (
month, monthday, hour, minute, year, second ) month, monthday, hour, minute, year, second ) ]
return tools.process.execProcess(proc_args, False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(SYSTEM_CLOCK_METHODS_NAMESPACE, out_signature="iiiiii") @service.functionMethod(SYSTEM_CLOCK_METHODS_NAMESPACE, out_signature="iiiiii")
def utcTime(self) : def utcTime(self) :
...@@ -102,7 +102,7 @@ class DateTime(service.FunctionObject) : ...@@ -102,7 +102,7 @@ class DateTime(service.FunctionObject) :
@service.functionMethod(HARDWARE_CLOCK_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(HARDWARE_CLOCK_METHODS_NAMESPACE, out_signature="i")
def syncWithSystem(self) : def syncWithSystem(self) :
return tools.process.execProcess("%s --systohc" % (config.value(SERVICE_NAME, "hwclock_bin")), False)[0] return tools.process.execProcess([config.value(SERVICE_NAME, "hwclock_bin"), "--systohc"], fatal_flag = False)[0]
##### Public classes ##### ##### Public classes #####
......
...@@ -38,11 +38,11 @@ class Disk(service.FunctionObject) : ...@@ -38,11 +38,11 @@ class Disk(service.FunctionObject) :
@service.functionMethod(SMART_METHODS_NAMESPACE, out_signature="a(isiiiissss)") @service.functionMethod(SMART_METHODS_NAMESPACE, out_signature="a(isiiiissss)")
def attributes(self) : def attributes(self) :
proc_args = "%s -A %s" % (config.value(SERVICE_NAME, "smartctl_bin"), self.__device_file_path) proc_args_list = [config.value(SERVICE_NAME, "smartctl_bin"), "-A", self.__device_file_path]
attrs_list = [] attrs_list = []
attrs_found_flag = False attrs_found_flag = False
for attrs_list_item in tools.process.execProcess(proc_args)[0].split("\n") : for attrs_list_item in tools.process.execProcess(proc_args_list)[0].split("\n") :
attrs_list_item = attrs_list_item.strip() attrs_list_item = attrs_list_item.strip()
if attrs_found_flag : if attrs_found_flag :
...@@ -65,11 +65,11 @@ class Disk(service.FunctionObject) : ...@@ -65,11 +65,11 @@ class Disk(service.FunctionObject) :
@service.functionMethod(SMART_METHODS_NAMESPACE, out_signature="b") @service.functionMethod(SMART_METHODS_NAMESPACE, out_signature="b")
def health(self) : def health(self) :
proc_args = "%s -H %s" % (config.value(SERVICE_NAME, "smartctl_bin"), self.__device_file_path) proc_args_list = [config.value(SERVICE_NAME, "smartctl_bin"), "-H", self.__device_file_path]
disk_health_flag = False disk_health_flag = False
health_found_flag = False health_found_flag = False
for health_list_item in tools.process.execProcess(proc_args)[0].split("\n") : for health_list_item in tools.process.execProcess(proc_args_list)[0].split("\n") :
health_list_item = health_list_item.strip() health_list_item = health_list_item.strip()
if health_found_flag : if health_found_flag :
...@@ -142,8 +142,8 @@ class Service(service.Service) : ...@@ -142,8 +142,8 @@ class Service(service.Service) :
### Private ### ### Private ###
def smartAvailable(self, device_file_path) : def smartAvailable(self, device_file_path) :
proc_args = "%s %s" % (config.value(SERVICE_NAME, "smartctl_bin"), device_file_path) proc_args_list = [config.value(SERVICE_NAME, "smartctl_bin"), device_file_path]
return not bool(tools.process.execProcess(proc_args, False)[2]) return not bool(tools.process.execProcess(proc_args_list, fatal_flag = False)[2])
### ###
......
...@@ -54,8 +54,8 @@ class LocalGroup(service.FunctionObject) : ...@@ -54,8 +54,8 @@ class LocalGroup(service.FunctionObject) :
logger.verbose("{mod}: Request to change gid for local group \"%s\", new gid=%d" % (self.__group_name, gid)) logger.verbose("{mod}: Request to change gid for local group \"%s\", new gid=%d" % (self.__group_name, gid))
return tools.process.execProcess("%s -g %d %s" % ( config.value(SERVICE_NAME, "groupmod_bin"), proc_args_list = [config.value(SERVICE_NAME, "groupmod_bin"), "-g", str(gid), self.__group_name]
gid, self.__group_name ), False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_GROUP_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(LOCAL_GROUP_METHODS_NAMESPACE, out_signature="i")
def gid(self) : def gid(self) :
...@@ -68,8 +68,9 @@ class LocalGroup(service.FunctionObject) : ...@@ -68,8 +68,9 @@ class LocalGroup(service.FunctionObject) :
user_name = validators.os.validUserName(user_name) user_name = validators.os.validUserName(user_name)
logger.verbose("{mod}: Request to add user \"%s\" to local group \"%s\"" % (user_name, self.__group_name)) logger.verbose("{mod}: Request to add user \"%s\" to local group \"%s\"" % (user_name, self.__group_name))
return tools.process.execProcess("%s -a -G %s %s" % ( config.value(SERVICE_NAME, "usermod_bin"),
self.__group_name, user_name ), False)[2] proc_args_list = [config.value(SERVICE_NAME, "usermod_bin"), "-a", "-G", self.__group_name, user_name]
return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_GROUP_METHODS_NAMESPACE, in_signature="s", out_signature="i") @service.functionMethod(LOCAL_GROUP_METHODS_NAMESPACE, in_signature="s", out_signature="i")
def removeUser(self, user_name) : def removeUser(self, user_name) :
...@@ -77,10 +78,12 @@ class LocalGroup(service.FunctionObject) : ...@@ -77,10 +78,12 @@ class LocalGroup(service.FunctionObject) :
users_list = grp.getgrnam(self.__group_name).gr_mem users_list = grp.getgrnam(self.__group_name).gr_mem
users_list.remove(self.__group_name) users_list.remove(self.__group_name)
users = ",".join(users_list)
logger.verbose("{mod}: Request to remove user \"%s\" from local group \"%s\"" % (user_name, self.__group_name)) logger.verbose("{mod}: Request to remove user \"%s\" from local group \"%s\"" % (user_name, self.__group_name))
return tools.process.execProcess("%s -G %s %s" % ( config.value(SERVICE_NAME, "usermod_bin"),
",".join(users_list), user_name ), False)[2] proc_args_list = [config.value(SERVICE_NAME, "usermod_bin"), "-G", users, user_name]
return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_GROUP_METHODS_NAMESPACE, out_signature="as") @service.functionMethod(LOCAL_GROUP_METHODS_NAMESPACE, out_signature="as")
def users(self) : def users(self) :
...@@ -94,18 +97,21 @@ class LocalGroups(service.FunctionObject) : ...@@ -94,18 +97,21 @@ class LocalGroups(service.FunctionObject) :
@service.functionMethod(LOCAL_GROUPS_METHODS_NAMESPACE, in_signature="si", out_signature="i") @service.functionMethod(LOCAL_GROUPS_METHODS_NAMESPACE, in_signature="si", out_signature="i")
def addGroup(self, group_name, gid) : def addGroup(self, group_name, gid) :
group_name = validators.os.validGroupName(group_name) group_name = validators.os.validGroupName(group_name)
(gid_arg, gid_str) = ( ("-g %d" % (gid), str(gid)) if gid >= 0 else ("", "auto") ) (gid_args_list, gid_str) = ( (["-g", str(gid)], str(gid)) if gid >= 0 else ([], "auto") )
logger.verbose("{mod}: Request to add local group \"%s\" with gid=%s" % (group_name, gid_str)) logger.verbose("{mod}: Request to add local group \"%s\" with gid=%s" % (group_name, gid_str))
return tools.process.execProcess("%s %s %s" % (config.value(SERVICE_NAME, "groupadd_bin"), gid_arg, group_name)) proc_args_list = [config.value(SERVICE_NAME, "groupadd_bin")] + gid_args_list + [group_name]
return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_GROUPS_METHODS_NAMESPACE, in_signature="s", out_signature="i") @service.functionMethod(LOCAL_GROUPS_METHODS_NAMESPACE, in_signature="s", out_signature="i")
def removeGroup(self, group_name) : def removeGroup(self, group_name) :
group_name = validators.os.validGroupName(group_name) group_name = validators.os.validGroupName(group_name)
logger.verbose("{mod}: Request to remove local group \"%s\"" % (group_name)) logger.verbose("{mod}: Request to remove local group \"%s\"" % (group_name))
return tools.process.execProcess("%s %s" % (config.value(SERVICE_NAME, "groupdel_bin"), group_name), False)[2]
proc_args_list = [config.value(SERVICE_NAME, "groupdel_bin"), group_name]
return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
### ###
......
...@@ -55,8 +55,8 @@ class LocalUser(service.FunctionObject) : ...@@ -55,8 +55,8 @@ class LocalUser(service.FunctionObject) :
logger.verbose("{mod}: Request to change uid for local user \"%s\", new uid=%d" % (self.__user_name, uid)) logger.verbose("{mod}: Request to change uid for local user \"%s\", new uid=%d" % (self.__user_name, uid))
return tools.process.execProcess("%s -u %d %s" % ( config.value(SERVICE_NAME, "usermod_bin"), proc_args_list = [config.value(SERVICE_NAME, "usermod_bin"), "-u", str(uid), self.__user_name]
uid, self.__user_name ), False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="i")
def uid(self) : def uid(self) :
...@@ -71,8 +71,8 @@ class LocalUser(service.FunctionObject) : ...@@ -71,8 +71,8 @@ class LocalUser(service.FunctionObject) :
logger.verbose("{mod}: Request to change gid for local user \"%s\", new gid=%d" % (self.__user_name, gid)) logger.verbose("{mod}: Request to change gid for local user \"%s\", new gid=%d" % (self.__user_name, gid))
return tools.process.execProcess("%s -g %d %s" % ( config.value(SERVICE_NAME, "usermod_bin"), proc_args_list = [config.value(SERVICE_NAME, "usermod_bin"), "-g", str(gid), self.__user_name]
gid, self.__user_name ), False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="i")
def gid(self) : def gid(self) :
...@@ -87,8 +87,8 @@ class LocalUser(service.FunctionObject) : ...@@ -87,8 +87,8 @@ class LocalUser(service.FunctionObject) :
logger.verbose("{mod}: Request to change home for local user \"%s\", new home=\"%s\"" % (self.__user_name, path)) logger.verbose("{mod}: Request to change home for local user \"%s\", new home=\"%s\"" % (self.__user_name, path))
return tools.process.execProcess("%s -d \'%s\' %s" % ( config.value(SERVICE_NAME, "usermod_bin"), proc_args_list = [config.value(SERVICE_NAME, "usermod_bin"), "-d", path, self.__user_name]
path, self.__user_name ), False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="s") @service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="s")
def homePath(self) : def homePath(self) :
...@@ -101,8 +101,8 @@ class LocalUser(service.FunctionObject) : ...@@ -101,8 +101,8 @@ class LocalUser(service.FunctionObject) :
logger.verbose("{mod}: Request to change shell for local user \"%s\", new shell=\"%s\"" % (self.__user_name, path)) logger.verbose("{mod}: Request to change shell for local user \"%s\", new shell=\"%s\"" % (self.__user_name, path))
return tools.process.execProcess("%s -s \'%s\' %s" % ( config.value(SERVICE_NAME, "usermod_bin"), proc_args_list = [config.value(SERVICE_NAME, "usermod_bin"), "-s", path, self.__user_name]
path, self.__user_name ), False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="s") @service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="s")
def shell(self) : def shell(self) :
...@@ -117,8 +117,8 @@ class LocalUser(service.FunctionObject) : ...@@ -117,8 +117,8 @@ class LocalUser(service.FunctionObject) :
logger.verbose("{mod}: Request to change comment for local user \"%s\", new comment=\"%s\"" % (self.__user_name, text)) logger.verbose("{mod}: Request to change comment for local user \"%s\", new comment=\"%s\"" % (self.__user_name, text))
return tools.process.execProcess("%s -c \'%s\' %s" % ( config.value(SERVICE_NAME, "usermod_bin"), proc_args_list = [config.value(SERVICE_NAME, "usermod_bin"), "-c", text, self.__user_name]
text, self.__user_name ), False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="s") @service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="s")
def comment(self) : def comment(self) :
...@@ -132,8 +132,8 @@ class LocalUser(service.FunctionObject) : ...@@ -132,8 +132,8 @@ class LocalUser(service.FunctionObject) :
logger.verbose("{mod}: Request to %s local user \"%s\"" % (lock_str)) logger.verbose("{mod}: Request to %s local user \"%s\"" % (lock_str))
return tools.process.execProcess("%s %s %s" % ( config.value(SERVICE_NAME, "usermod_bin"), proc_args_list = [config.value(SERVICE_NAME, "usermod_bin"), lock_arg, self.__user_name]
lock_arg, self.__user_name ), False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="b") @service.functionMethod(LOCAL_USER_METHODS_NAMESPACE, out_signature="b")
def isLocked(self) : def isLocked(self) :
...@@ -151,13 +151,13 @@ class LocalUsers(service.FunctionObject) : ...@@ -151,13 +151,13 @@ class LocalUsers(service.FunctionObject) :
@service.functionMethod(LOCAL_USERS_METHODS_NAMESPACE, in_signature="sii", out_signature="i") @service.functionMethod(LOCAL_USERS_METHODS_NAMESPACE, in_signature="sii", out_signature="i")
def addUser(self, user_name, uid, gid) : def addUser(self, user_name, uid, gid) :
user_name = validators.os.validUserName(user_name) user_name = validators.os.validUserName(user_name)
(uid_arg, uid_str) = ( ("-u %d" % (uid), str(uid)) if uid >= 0 else ("", "auto") ) (uid_args_list, uid_str) = ( (["-u", str(uid)], str(uid)) if uid >= 0 else ([], "auto") )
(gid_arg, gid_str) = ( ("-g %d" % (gid), str(gid)) if gid >= 0 else ("", "auto") ) (gid_args_list, gid_str) = ( (["-g", str(gid)], str(gid)) if gid >= 0 else ([], "auto") )
logger.verbose("{mod}: Request to add local user \"%s\" with uid=%s and gid=%s" % (user_name, uid_str, gid_str)) logger.verbose("{mod}: Request to add local user \"%s\" with uid=%s and gid=%s" % (user_name, uid_str, gid_str))
return tools.process.execProcess("%s %s %s %s" % (config.value(SERVICE_NAME, "useradd_bin"), proc_args_list = [config.value(SERVICE_NAME, "useradd_bin")] + uid_args_list + gid_args_list + [user_name]
uid_arg, gid_arg, user_name)) return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(LOCAL_USERS_METHODS_NAMESPACE, in_signature="sb", out_signature="i") @service.functionMethod(LOCAL_USERS_METHODS_NAMESPACE, in_signature="sb", out_signature="i")
def removeUser(self, user_name, remove_data_flag) : def removeUser(self, user_name, remove_data_flag) :
...@@ -165,8 +165,9 @@ class LocalUsers(service.FunctionObject) : ...@@ -165,8 +165,9 @@ class LocalUsers(service.FunctionObject) :
(remove_data_arg, remove_data_str) = ( ("-r", " and its data") if remove_data_flag else ("", "") ) (remove_data_arg, remove_data_str) = ( ("-r", " and its data") if remove_data_flag else ("", "") )
logger.verbose("{mod}: Request to remove local user \"%s\"%s" % (user_name, remove_data_str)) logger.verbose("{mod}: Request to remove local user \"%s\"%s" % (user_name, remove_data_str))
return tools.process.execProcess("%s %s %s" % (config.value(SERVICE_NAME, "userdel_bin"),
remove_data_arg, user_name), False)[2] proc_args_list = [config.value(SERVICE_NAME, "userdel_bin"), remove_data_arg, user_name]
return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
### ###
......
...@@ -19,9 +19,6 @@ SERVICE_NAME = "machine" ...@@ -19,9 +19,6 @@ SERVICE_NAME = "machine"
POWER_METHODS_NAMESPACE = "power" POWER_METHODS_NAMESPACE = "power"
RUNLEVELS_METHODS_NAMESPACE = "runlevels" RUNLEVELS_METHODS_NAMESPACE = "runlevels"
RUNLEVELS = "0123456"
##### Private classes ##### ##### Private classes #####
class Machine(service.FunctionObject) : class Machine(service.FunctionObject) :
...@@ -29,33 +26,31 @@ class Machine(service.FunctionObject) : ...@@ -29,33 +26,31 @@ class Machine(service.FunctionObject) :
@service.functionMethod(POWER_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(POWER_METHODS_NAMESPACE, out_signature="i")
def shutdown(self) : def shutdown(self) :
return tools.process.execProcess("%s -h now" % (config.value(SERVICE_NAME, "shutdown_bin")), False)[2] return tools.process.execProcess([config.value(SERVICE_NAME, "shutdown_bin"), "-h", "now"], fatal_flag = False)[2]
@service.functionMethod(POWER_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(POWER_METHODS_NAMESPACE, out_signature="i")
def reboot(self) : def reboot(self) :
return tools.process.execProcess("%s -r now" % (config.value(SERVICE_NAME, "shutdown_bin")), False)[2] return tools.process.execProcess([config.value(SERVICE_NAME, "shutdown_bin"), "-r", "now"], fatal_flag = False)[2]
@service.functionMethod(POWER_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(POWER_METHODS_NAMESPACE, out_signature="i")
def suspend(self) : def suspend(self) :
return tools.process.execProcess(config.value(SERVICE_NAME, "pm_suspend_bin"), False)[2] return tools.process.execProcess(config.value(SERVICE_NAME, "pm_suspend_bin"), fatal_flag = False)[2]
@service.functionMethod(POWER_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(POWER_METHODS_NAMESPACE, out_signature="i")
def hibernate(self) : def hibernate(self) :
return tools.process.execProcess(config.value(SERVICE_NAME, "pm_hibernate_bin"), False)[2] return tools.process.execProcess(config.value(SERVICE_NAME, "pm_hibernate_bin"), fatal_flag = False)[2]
### ###
@service.functionMethod(RUNLEVELS_METHODS_NAMESPACE, in_signature="i", out_signature="i") @service.functionMethod(RUNLEVELS_METHODS_NAMESPACE, in_signature="i", out_signature="i")
def switchTo(self, level) : def switchTo(self, level) :
proc_args = "%s %s" % (config.value(SERVICE_NAME, "telinit_bin"), validators.common.validRange(str(level), RUNLEVELS)) proc_args_list = [config.value(SERVICE_NAME, "telinit_bin"), validators.common.validRange(str(level), "0123456")]
return tools.process.execProcess(proc_args, False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(RUNLEVELS_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(RUNLEVELS_METHODS_NAMESPACE, out_signature="i")
def currentLevel(self) : def currentLevel(self) :
proc_args = config.value(SERVICE_NAME, "runlevel_bin") level_pairs_list = tools.process.execProcess(config.value(SERVICE_NAME, "runlevel_bin"))[0].strip().split(" ")
if len(level_pairs_list) != 2 or not level_pairs_list[1] in "0123456" :
level_pairs_list = tools.process.execProcess(proc_args)[0].strip().split(" ")
if len(level_pairs_list) != 2 or not level_pairs_list[1] in RUNLEVELS :
raise tools.process.SubprocessFailure("Error while execute \"%s\"\nStdout: %s\nStderr: %s\nReturn code: %d" % ( raise tools.process.SubprocessFailure("Error while execute \"%s\"\nStdout: %s\nStderr: %s\nReturn code: %d" % (
proc_args, proc_stdout.strip(), proc_stderr.strip(), proc_returncode )) proc_args, proc_stdout.strip(), proc_stderr.strip(), proc_returncode ))
...@@ -63,14 +58,12 @@ class Machine(service.FunctionObject) : ...@@ -63,14 +58,12 @@ class Machine(service.FunctionObject) :
@service.functionMethod(RUNLEVELS_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(RUNLEVELS_METHODS_NAMESPACE, out_signature="i")
def previousLevel(self) : def previousLevel(self) :
proc_args = config.value(SERVICE_NAME, "runlevel_bin") level_pairs_list = tools.process.execProcess(config.value(SERVICE_NAME, "runlevel_bin"))[0].strip().split(" ")
if len(level_pairs_list) != 2 or not level_pairs_list[1] in "0123456N" :
level_pairs_list = tools.process.execProcess(proc_args)[0].strip().split(" ")
if len(level_pairs_list) != 2 or not level_pairs_list[1] in RUNLEVELS+"N" :
raise tools.process.SubprocessFailure("Error while execute \"%s\"\nStdout: %s\nStderr: %s\nReturn code: %d" % ( raise tools.process.SubprocessFailure("Error while execute \"%s\"\nStdout: %s\nStderr: %s\nReturn code: %d" % (
proc_args, proc_stdout.strip(), proc_stderr.strip(), proc_returncode )) proc_args, proc_stdout.strip(), proc_stderr.strip(), proc_returncode ))
return ( int(level_pairs_list[0]) if level_pairs_list[0] in RUNLEVELS else -1 ) return ( int(level_pairs_list[0]) if level_pairs_list[0] in "0123456" else -1 )
##### Public classes ##### ##### Public classes #####
......
...@@ -128,8 +128,9 @@ class NssRole(service.FunctionObject) : ...@@ -128,8 +128,9 @@ class NssRole(service.FunctionObject) :
user_name = validators.os.validUserName(user_name) user_name = validators.os.validUserName(user_name)
logger.verbose("{mod}: Request to add user \"%s\" to NSS role \"%s\"" % (user_name, self.__role_name)) logger.verbose("{mod}: Request to add user \"%s\" to NSS role \"%s\"" % (user_name, self.__role_name))
return tools.process.execProcess("%s -a -G %s %s" % ( config.value(SERVICE_NAME, "usermod_bin"),
self.__role_name, user_name ), False)[2] proc_args_list = [config.value(SERVICE_NAME, "usermod_bin"), "-a", "-G", self.__role_name, user_name]
return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(NSS_ROLE_METHODS_NAMESPACE, in_signature="s", out_signature="i") @service.functionMethod(NSS_ROLE_METHODS_NAMESPACE, in_signature="s", out_signature="i")
def removeUser(self, user_name) : def removeUser(self, user_name) :
...@@ -137,10 +138,12 @@ class NssRole(service.FunctionObject) : ...@@ -137,10 +138,12 @@ class NssRole(service.FunctionObject) :
users_list = grp.getgrnam(self.__role_name).gr_mem users_list = grp.getgrnam(self.__role_name).gr_mem
users_list.remove(self.__role_name) users_list.remove(self.__role_name)
users = ",".join(users_list)
logger.verbose("{mod}: Request to remove user \"%s\" from NSS role \"%s\"" % (user_name, self.__role_name)) logger.verbose("{mod}: Request to remove user \"%s\" from NSS role \"%s\"" % (user_name, self.__role_name))
return tools.process.execProcess("%s -G %s %s" % ( config.value(SERVICE_NAME, "usermod_bin"),
",".join(users_list), user_name ), False)[2] proc_args_list = [config.value(SERVICE_NAME, "usermod_bin"), "-G", users, user_name]
return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(NSS_ROLE_METHODS_NAMESPACE, out_signature="as") @service.functionMethod(NSS_ROLE_METHODS_NAMESPACE, out_signature="as")
def users(self) : def users(self) :
......
...@@ -46,8 +46,7 @@ class NtpConfig(service.FunctionObject) : ...@@ -46,8 +46,7 @@ class NtpConfig(service.FunctionObject) :
@service.functionMethod(NTP_METHODS_NAMESPACE) @service.functionMethod(NTP_METHODS_NAMESPACE)
def request(self) : def request(self) :
proc_args = "%s %s" % (config.value(SERVICE_NAME, "ntpdate_bin"), " ".join(self.servers())) tools.process.execProcess([config.value(SERVICE_NAME, "ntpdate_bin")] + self.servers())
tools.process.execProcess(proc_args)
##### Public classes ##### ##### Public classes #####
......
...@@ -55,8 +55,8 @@ class SystemService(service.FunctionObject) : ...@@ -55,8 +55,8 @@ class SystemService(service.FunctionObject) :
@service.functionMethod(SYSTEM_SERVICE_METHODS_NAMESPACE, out_signature="s") @service.functionMethod(SYSTEM_SERVICE_METHODS_NAMESPACE, out_signature="s")
def levelsMap(self) : def levelsMap(self) :
proc_args = "%s --list %s" % (config.value(SERVICE_NAME, "chkconfig_bin"), self.__system_service_name) proc_args_list = [config.value(SERVICE_NAME, "chkconfig_bin"), "--list", self.__system_service_name]
(proc_stdout, proc_stderr, proc_returncode) = tools.process.execProcess(proc_args) (proc_stdout, proc_stderr, proc_returncode) = tools.process.execProcess(proc_args_list)
service_record_list = re.split(r"\s+", proc_stdout.split("\n")[0]) service_record_list = re.split(r"\s+", proc_stdout.split("\n")[0])
levels_list = ["0"]*(len(service_record_list) - 1) levels_list = ["0"]*(len(service_record_list) - 1)
...@@ -81,19 +81,19 @@ class SystemService(service.FunctionObject) : ...@@ -81,19 +81,19 @@ class SystemService(service.FunctionObject) :
@service.functionMethod(SYSTEM_SERVICE_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(SYSTEM_SERVICE_METHODS_NAMESPACE, out_signature="i")
def start(self) : def start(self) :
logger.verbose("{mod}: Request to start service \"%s\"" % (self.__system_service_name)) logger.verbose("{mod}: Request to start service \"%s\"" % (self.__system_service_name))
return tools.process.execProcess("%s start" % ( os.path.join(config.value(SERVICE_NAME, "initd_dir"), proc_args_list = [ os.path.join(config.value(SERVICE_NAME, "initd_dir"), self.__system_service_name), "start"]
self.__system_service_name) ), False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(SYSTEM_SERVICE_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(SYSTEM_SERVICE_METHODS_NAMESPACE, out_signature="i")
def stop(self) : def stop(self) :
logger.verbose("{mod}: Request to stop service \"%s\"" % (self.__system_service_name)) logger.verbose("{mod}: Request to stop service \"%s\"" % (self.__system_service_name))
return tools.process.execProcess("%s stop" % ( os.path.join(config.value(SERVICE_NAME, "initd_dir"), proc_args_list = [ os.path.join(config.value(SERVICE_NAME, "initd_dir"), self.__system_service_name), "stop"]
self.__system_service_name) ), False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
@service.functionMethod(SYSTEM_SERVICE_METHODS_NAMESPACE, out_signature="i") @service.functionMethod(SYSTEM_SERVICE_METHODS_NAMESPACE, out_signature="i")
def status(self) : def status(self) :
return tools.process.execProcess("%s status" % ( os.path.join(config.value(SERVICE_NAME, "initd_dir"), proc_args_list = [ os.path.join(config.value(SERVICE_NAME, "initd_dir"), self.__system_service_name), "status"]
self.__system_service_name) ), False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
### Private ### ### Private ###
...@@ -104,10 +104,10 @@ class SystemService(service.FunctionObject) : ...@@ -104,10 +104,10 @@ class SystemService(service.FunctionObject) :
logger.verbose("Request to %s service \"%s\" on runlevels \"%s\"" % ( ( "enable" if enabled_flag else "disable" ), logger.verbose("Request to %s service \"%s\" on runlevels \"%s\"" % ( ( "enable" if enabled_flag else "disable" ),
self.__system_service_name, ( levels if levels != None else "default" ) )) self.__system_service_name, ( levels if levels != None else "default" ) ))
proc_args = "%s %s %s %s" % ( config.value(SERVICE_NAME, "chkconfig_bin"), proc_args_list = ( [config.value(SERVICE_NAME, "chkconfig_bin")] +
( "--level %s" % (levels) if levels != None else "" ), ( ["--level", str(levels)] if levels != None else [] ),
self.__system_service_name, ( "on" if enabled_flag else "off" ) ) self.__system_service_name, ( ["on"] if enabled_flag else ["off"] ) )
return tools.process.execProcess(proc_args, False)[2] return tools.process.execProcess(proc_args_list, fatal_flag = False)[2]
### ###
......
...@@ -11,22 +11,22 @@ class SubprocessFailure(Exception) : ...@@ -11,22 +11,22 @@ class SubprocessFailure(Exception) :
##### Public methods ##### ##### Public methods #####
def execProcess(proc_args, fatal_flag = True) : def execProcess(args_list, input = None, fatal_flag = True) :
logger.debug("{submod}: Executing child process \"%s\"" % (proc_args)) logger.debug("{submod}: Executing child process \"%s\"" % (str(args_list)))
proc = subprocess.Popen(proc_args, shell=True, bufsize=1024, close_fds=True, proc = subprocess.Popen(args_list, shell=True, bufsize=1024, close_fds=True,
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
env={ "LC_ALL" : "C" }) env={ "LC_ALL" : "C" })
(proc_stdout, proc_stderr) = proc.communicate() (proc_stdout, proc_stderr) = proc.communicate(input)
if proc.returncode != 0 : if proc.returncode != 0 :
error_text = "Error while execute \"%s\"\nStdout: %s\nStderr: %s\nReturn code: %d" % ( error_text = "Error while execute \"%s\"\nStdout: %s\nStderr: %s\nReturn code: %d" % (
proc_args, proc_stdout.strip(), proc_stderr.strip(), proc.returncode ) str(args_list), proc_stdout.strip(), proc_stderr.strip(), proc.returncode )
if fatal_flag : if fatal_flag :
raise SubprocessFailure(error_text) raise SubprocessFailure(error_text)
logger.error("{submod}: "+error_text) logger.error("{submod}: "+error_text)
logger.debug("{submod}: Child process \"%s\" finished, return_code=%d" % (proc_args, proc.returncode)) logger.debug("{submod}: Child process \"%s\" finished, return_code=%d" % (str(args_list), proc.returncode))
return (proc_stdout, proc_stderr, proc.returncode) return (proc_stdout, proc_stderr, proc.returncode)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment