Commit 7fe823d1 authored by Jaroslava Fiedlerova's avatar Jaroslava Fiedlerova Committed by Reem Bahsoun

Modifs of cls_containerize

- use new ssh class
- do proper logging from multiple services
- use yaml dir
parent 031af9f3
...@@ -977,46 +977,46 @@ class Containerize(): ...@@ -977,46 +977,46 @@ class Containerize():
HELP.GenericHelp(CONST.Version) HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter') sys.exit('Insufficient Parameter')
logging.debug('\u001B[1m Undeploying OAI Object from server: ' + lIpAddr + '\u001B[0m') logging.debug('\u001B[1m Undeploying OAI Object from server: ' + lIpAddr + '\u001B[0m')
mySSH = SSH.SSHConnection() copyin_res = 0
mySSH.open(lIpAddr, lUserName, lPassWord) mySSH = cls_cmd.getConnection(lIpAddr)
yamlDir = f'{lSourcePath}/{self.yamlPath[self.eNB_instance]}'
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5) mySSH.run(f'cd {yamlDir}')
svcName = self.services[self.eNB_instance] svcName = self.services[self.eNB_instance]
forceDown = False forceDown = False
if svcName != '': if svcName != '':
logging.warning(f'service name given, but will stop all services in ci-docker-compose.yml!') logging.warning(f'service name given, but will stop all services in ci-docker-compose.yml!')
svcName = '' svcName = ''
mySSH.command(f'docker-compose -f ci-docker-compose.yml config --services', '\$', 5) mySSH.run(f'docker-compose -f {yamlDir}/ci-docker-compose.yml config --services')
# first line has command, last line has next command prompt # first line has command, last line has next command prompt
allServices = mySSH.getBefore().split('\r\n')[1:-1] allServices = mySSH.getBefore().split('\n')[:]
services = [] services = []
for s in allServices: for s in allServices:
mySSH.command(f'docker-compose -f ci-docker-compose.yml ps --all -- {s}', '\$', 5, silent=False) mySSH.run(f'docker-compose -f {yamlDir}/ci-docker-compose.yml ps --all -- {s}')
running = mySSH.getBefore().split('\r\n')[2:-1] running = mySSH.getBefore().split('\r\n')[:]
logging.debug(f'running services: {running}') logging.debug(f'running services: {running}')
if len(running) > 0: # something is running for that service if len(running) > 0: # something is running for that service
services.append(s) services.append(s)
logging.info(f'stopping services {services}') logging.info(f'stopping services {services}')
mySSH.command(f'docker-compose -f ci-docker-compose.yml stop -t3', '\$', 30) mySSH.run(f'docker-compose -f {yamlDir}/ci-docker-compose.yml stop -t3')
time.sleep(5) # give some time to running containers to stop time.sleep(5) # give some time to running containers to stop
for svcName in services: for svcName in allServices:
# head -n -1 suppresses the final "X exited with status code Y" # head -n -1 suppresses the final "X exited with status code Y"
filename = f'{svcName}-{HTML.testCase_id}.log' filename = f'{svcName}-{HTML.testCase_id}.log'
mySSH.command(f'docker-compose -f ci-docker-compose.yml logs --no-log-prefix -- {svcName} &> {lSourcePath}/cmake_targets/log/{filename}', '\$', 120) mySSH.run(f'docker-compose -f {yamlDir}/ci-docker-compose.yml logs --no-log-prefix -- {svcName} &> {lSourcePath}/cmake_targets/log/{filename}')
copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', f'{filename}')
# when nv-cubb container is available, copy L1 pcap, OAI Aerial pipeline
if 'nv-cubb' in allServices:
mySSH.copyin(f'/home/oaicicd/share/nvipc.pcap', f'gnb_nvipc.pcap')
mySSH.run(f'cp /home/oaicicd/share/nvipc.pcap {lSourcePath}/cmake_targets/gnb_nvipc.pcap')
mySSH.command('docker-compose -f ci-docker-compose.yml down -v', '\$', 5) mySSH.run(f'docker-compose -f {yamlDir}/ci-docker-compose.yml down -v')
mySSH.close()
# Analyzing log file! # Analyzing log file!
files = ','.join([f'{s}-{HTML.testCase_id}' for s in services]) files = ','.join([f'{s}-{HTML.testCase_id}' for s in services])
if len(services) > 1: if len(services) > 1:
files = '{' + files + '}' files = '{' + files + '}'
copyin_res = 0
if len(services) > 0:
copyin_res = mySSH.copyin(lIpAddr, lUserName, lPassWord, f'{lSourcePath}/cmake_targets/log/{files}.log', '.')
if copyin_res == -1: if copyin_res == -1:
HTML.htmleNBFailureMsg='Could not copy logfile to analyze it!' HTML.htmleNBFailureMsg='Could not copy logfile to analyze it!'
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE) HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
...@@ -1024,7 +1024,7 @@ class Containerize(): ...@@ -1024,7 +1024,7 @@ class Containerize():
# use function for UE log analysis, when oai-nr-ue container is used # use function for UE log analysis, when oai-nr-ue container is used
elif 'oai-nr-ue' in services or 'lte_ue0' in services: elif 'oai-nr-ue' in services or 'lte_ue0' in services:
self.exitStatus == 0 self.exitStatus == 0
logging.debug('\u001B[1m Analyzing UE logfile ' + filename + ' \u001B[0m') logging.debug(f'Analyzing UE logfile {filename}')
logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(f'{filename}', HTML, RAN) logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(f'{filename}', HTML, RAN)
if (logStatus < 0): if (logStatus < 0):
fullStatus = False fullStatus = False
...@@ -1043,11 +1043,12 @@ class Containerize(): ...@@ -1043,11 +1043,12 @@ class Containerize():
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK) HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
# all the xNB run logs shall be on the server 0 for logCollecting # all the xNB run logs shall be on the server 0 for logCollecting
if self.eNB_serverId[self.eNB_instance] != '0': if self.eNB_serverId[self.eNB_instance] != '0':
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, f'./{files}.log', f'{self.eNBSourceCodePath}/cmake_targets/') mySSH.copyout(f'./{files}.log', f'{self.eNBSourceCodePath}/cmake_targets/')
if self.exitStatus == 0: if self.exitStatus == 0:
logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m') logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m')
else: else:
logging.error('\u001B[1m Undeploying OAI Object Failed\u001B[0m') logging.error('\u001B[1m Undeploying OAI Object Failed\u001B[0m')
mySSH.close()
def DeployGenObject(self, HTML, RAN, UE): def DeployGenObject(self, HTML, RAN, UE):
self.exitStatus = 0 self.exitStatus = 0
......
...@@ -34,8 +34,6 @@ ...@@ -34,8 +34,6 @@
000111 000111
100000 100000
000011 000011
000022
000033
000222 000222
003333 003333
222222 222222
......
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