|
|
|
@ -19,6 +19,7 @@ import sys, os
|
|
|
|
|
from cl_print import color_print
|
|
|
|
|
from cl_datavars import DataVars
|
|
|
|
|
|
|
|
|
|
import cl_overriding
|
|
|
|
|
# translate language
|
|
|
|
|
import cl_lang
|
|
|
|
|
tr = cl_lang.lang()
|
|
|
|
@ -69,8 +70,35 @@ class services(color_print):
|
|
|
|
|
return False
|
|
|
|
|
return apiObjects
|
|
|
|
|
|
|
|
|
|
def runMethodToAllServices(self, methodName, sortedServices="normal"):
|
|
|
|
|
"""Stopped all setup services"""
|
|
|
|
|
def runMethodToPkg(self, pkgName, methodName, argv=[]):
|
|
|
|
|
"""Execute method from pkg"""
|
|
|
|
|
allServObjs = self.allServicesApi()
|
|
|
|
|
if allServObjs is False:
|
|
|
|
|
return False
|
|
|
|
|
allSetupServObjs = filter(lambda x:\
|
|
|
|
|
x.isSetup() and x.getPkgName()==pkgName,
|
|
|
|
|
allServObjs)
|
|
|
|
|
if not allSetupServObjs:
|
|
|
|
|
return False
|
|
|
|
|
pkgObj = allSetupServObjs[0]
|
|
|
|
|
if not hasattr(pkgObj, methodName):
|
|
|
|
|
self.printERROR(_("Can not found method %(method)s in \
|
|
|
|
|
API object service %(service)s") %{'method':methodName,
|
|
|
|
|
'service':pkgObj.getServiceName()})
|
|
|
|
|
cl_overriding.exit(1)
|
|
|
|
|
if argv:
|
|
|
|
|
res = getattr(pkgObj, methodName)(*argv)
|
|
|
|
|
else:
|
|
|
|
|
res = getattr(pkgObj, methodName)()
|
|
|
|
|
return res
|
|
|
|
|
|
|
|
|
|
def runMethodFromAllServices(self, methodName, sortedServices="normal",
|
|
|
|
|
argv=[], result='bool'):
|
|
|
|
|
"""Execute method from all setup services"""
|
|
|
|
|
if not result in ('bool', 'list'):
|
|
|
|
|
self.printERROR(_("Method: runMethodFromAllServices()"))
|
|
|
|
|
self.printERROR(_("Can't result argv in bool or list"))
|
|
|
|
|
cl_overriding.exit(1)
|
|
|
|
|
allServObjs = self.allServicesApi()
|
|
|
|
|
if allServObjs is False:
|
|
|
|
|
return False
|
|
|
|
@ -110,32 +138,75 @@ class services(color_print):
|
|
|
|
|
else:
|
|
|
|
|
smpPrioritet = smpPrioritetNormal
|
|
|
|
|
allSetupServObjs.sort(smpPrioritet)
|
|
|
|
|
if result=='list':
|
|
|
|
|
data = []
|
|
|
|
|
for service in allSetupServObjs:
|
|
|
|
|
if hasattr(service, methodName):
|
|
|
|
|
if not getattr(service, methodName)():
|
|
|
|
|
return False
|
|
|
|
|
else:
|
|
|
|
|
if not hasattr(service, methodName):
|
|
|
|
|
self.printERROR(_("Can not found method %(method)s in \
|
|
|
|
|
API object service %(service)s") %{'method':methodName,
|
|
|
|
|
'service':service.getServiceName()})
|
|
|
|
|
return False
|
|
|
|
|
return True
|
|
|
|
|
cl_overriding.exit(1)
|
|
|
|
|
if argv:
|
|
|
|
|
res = getattr(service, methodName)(*argv)
|
|
|
|
|
else:
|
|
|
|
|
res = getattr(service, methodName)()
|
|
|
|
|
if result=='bool':
|
|
|
|
|
if res is False:
|
|
|
|
|
return False
|
|
|
|
|
elif result=='list':
|
|
|
|
|
serviceName = service.getServiceName()
|
|
|
|
|
data.append((serviceName, res))
|
|
|
|
|
if result=='bool':
|
|
|
|
|
return True
|
|
|
|
|
elif result=='list':
|
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
def stopAllServices(self):
|
|
|
|
|
"""Stop all services that were setup"""
|
|
|
|
|
return self.runMethodToAllServices("stop", sortedServices="reverse")
|
|
|
|
|
return self.runMethodFromAllServices("stop", sortedServices="reverse")
|
|
|
|
|
|
|
|
|
|
def startAllServices(self):
|
|
|
|
|
"""Start all services that were setup"""
|
|
|
|
|
return self.runMethodToAllServices("start")
|
|
|
|
|
return self.runMethodFromAllServices("start")
|
|
|
|
|
|
|
|
|
|
def delRunlevelAllServices(self):
|
|
|
|
|
"""Delete all services that were setup from runlevel"""
|
|
|
|
|
return self.runMethodToAllServices("delRunlevel",
|
|
|
|
|
return self.runMethodFromAllServices("delRunlevel",
|
|
|
|
|
sortedServices="reverse")
|
|
|
|
|
def delVarsFromAllServices(self):
|
|
|
|
|
"""Delete template vars from all services"""
|
|
|
|
|
return self.runMethodToAllServices("delVarsFromEnv",
|
|
|
|
|
return self.runMethodFromAllServices("delVarsFromEnv",
|
|
|
|
|
sortedServices="reverse")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getInfoFromAllServices(self, request):
|
|
|
|
|
"""Get info from all services"""
|
|
|
|
|
return self.runMethodFromAllServices("getServiceInfo", argv=[request],
|
|
|
|
|
result='list')
|
|
|
|
|
def clGetVar(self, pkgName, varName):
|
|
|
|
|
"""Get variable value from pkg"""
|
|
|
|
|
clVars = self.runMethodToPkg(pkgName, 'getVars')
|
|
|
|
|
if clVars is False:
|
|
|
|
|
return ""
|
|
|
|
|
try:
|
|
|
|
|
value = clVars.Get(varName)
|
|
|
|
|
except:
|
|
|
|
|
self.printERROR(_("Can not found variable %(var)s "
|
|
|
|
|
"in package %(pkg)s") %{'var':varName,
|
|
|
|
|
'pkg':pkgName})
|
|
|
|
|
cl_overriding.exit(1)
|
|
|
|
|
return value
|
|
|
|
|
|
|
|
|
|
def clGet(self, pkgNameOrAll, request):
|
|
|
|
|
"""Get info from service or all services"""
|
|
|
|
|
res = ""
|
|
|
|
|
if pkgNameOrAll == "all":
|
|
|
|
|
listData = self.getInfoFromAllServices(request)
|
|
|
|
|
if not listData:
|
|
|
|
|
return res
|
|
|
|
|
res = "\n".join(map(lambda x: x[1], listData))
|
|
|
|
|
else:
|
|
|
|
|
res = self.runMethodToPkg(pkgNameOrAll, "getServiceInfo",
|
|
|
|
|
argv=[request])
|
|
|
|
|
if not res:
|
|
|
|
|
res = ""
|
|
|
|
|
return res
|