From 5b12b920e4dfaa2699f20e845389833eb77f9eb4 Mon Sep 17 00:00:00 2001
From: Bipin Adhikari <bipin.adhikari@eurecom.fr>
Date: Wed, 29 May 2024 14:21:31 +0200
Subject: [PATCH] using new ssh function

---
 ci-scripts/cls_containerize.py | 53 +++++++++++++++++++---------------
 1 file changed, 29 insertions(+), 24 deletions(-)

diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py
index 4051bfd158..b1ecc2b1a2 100644
--- a/ci-scripts/cls_containerize.py
+++ b/ci-scripts/cls_containerize.py
@@ -880,8 +880,9 @@ class Containerize():
 			HELP.GenericHelp(CONST.Version)
 			sys.exit('Insufficient Parameter')
 
-		sshSession = SSH.SSHConnection()
-		sshSession.open(lIpAddr, lUserName, lPassWord)
+		# sshSession = SSH.SSHConnection()
+		# sshSession.open(lIpAddr, lUserName, lPassWord)
+		sshSession = cls_cmd.getConnection(lIpAddr)
 		ranCommitID = self.ranCommitID
 		ranRepository = self.ranRepository
 		sourcePath = lSourcePath
@@ -894,7 +895,9 @@ class Containerize():
 
 		sshSession.command(f'rm -rf {sourcePath}', '\$', 10)
 		sshSession.command('mkdir -p ' + sourcePath, '\$', 5)
-		sshSession.command('cd ' + sourcePath, '\$', 5)
+		print("------------------------------PRINTING PWD",sshSession.command('pwd','\$',2), sshSession.getBefore())
+		sshSession.cd(sourcePath)
+		print(sshSession.command('pwd','\$',2),sshSession.getBefore())
 		# Recent version of git (>2.20?) should handle missing .git extension # without problems
 		if ranTargetBranch == 'null':
 			ranTargetBranch = 'develop'
@@ -944,26 +947,27 @@ class Containerize():
 		logging.debug('\u001B[1m Deploying OAI Object on server: ' + lIpAddr + '\u001B[0m')
 		self.deployKind[self.eNB_instance] = True
 
-		mySSH = SSH.SSHConnection()
-		mySSH.open(lIpAddr, lUserName, lPassWord)
-
+		mySSH = cls_cmd.getConnection(lIpAddr)
 		CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
 
-		mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
-		mySSH.command('cp docker-compose.y*ml ci-docker-compose.yml', '\$', 5)
+		mySSH.cd(lSourcePath + '/' + self.yamlPath[self.eNB_instance])
+		mySSH.run('cp docker-compose.y*ml docker-compose-ci.yml', 5)
 		for image in IMAGES:
 			imageTag = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
-			mySSH.command(f'sed -i -e "s#image: {image}:latest#image: oai-ci/{imageTag}#" ci-docker-compose.yml', '\$', 2)
+			mySSH.run(f'sed -i -e "s@oaisoftwarealliance/{image}:develop@oai-ci/{imageTag}@" docker-compose-ci.yml',silent=True)
+			mySSH.run(f'sed -i -e "s@{image}:latest@oai-ci/{imageTag}@" docker-compose-ci.yml',silent=True) # temporary solution for not using the new branch
+
 
 		# Currently support only one
 		svcName = self.services[self.eNB_instance]
 		if svcName == '':
-			logging.warning('no service name given: starting all services in ci-docker-compose.yml!')
-
-		mySSH.command(f'docker compose --file ci-docker-compose.yml up -d -- {svcName}', '\$', 30)
+			logging.warning('no service name given: starting all services in docker-compose-ci.yml!')
+		mySSH.run(f'docker compose --file docker-compose-ci.yml up -d -- {svcName}', 30)
 
 		# Checking Status
-		mySSH.command(f'docker compose --file ci-docker-compose.yml config {svcName}', '\$', 5)
+		grep = ''
+		if svcName != '': grep = f' | grep -A3 --color=never {svcName}'
+		mySSH.run(f'docker compose --file docker-compose-ci.yml config {grep}', 5)
 		result = re.search('container_name: (?P<container_name>[a-zA-Z0-9\-\_]+)', mySSH.getBefore())
 		unhealthyNb = 0
 		healthyNb = 0
@@ -976,7 +980,7 @@ class Containerize():
 			time.sleep(5)
 			cnt = 0
 			while (cnt < 3):
-				mySSH.command('docker inspect --format="{{.State.Health.Status}}" ' + containerName, '\$', 5)
+				mySSH.run('docker inspect --format="{{.State.Health.Status}}" ' + containerName, 5)
 				unhealthyNb = mySSH.getBefore().count('unhealthy')
 				healthyNb = mySSH.getBefore().count('healthy') - unhealthyNb
 				startingNb = mySSH.getBefore().count('starting')
@@ -986,13 +990,13 @@ class Containerize():
 					time.sleep(10)
 					cnt += 1
 
-			mySSH.command('docker inspect --format="ImageUsed: {{.Config.Image}}" ' + containerName, '\$', 5)
+			mySSH.run('docker inspect --format="ImageUsed: {{.Config.Image}}" ' + containerName, 5)
 			for stdoutLine in mySSH.getBefore().split('\n'):
 				if stdoutLine.count('ImageUsed: oai-ci'):
 					usedImage = stdoutLine.replace('ImageUsed: oai-ci', 'oai-ci').strip()
 					logging.debug('Used image is ' + usedImage)
 			if usedImage != '':
-				mySSH.command('docker image inspect --format "* Size     = {{.Size}} bytes\n* Creation = {{.Created}}\n* Id       = {{.Id}}" ' + usedImage, '\$', 5, silent=True)
+				mySSH.run('docker image inspect --format "* Size     = {{.Size}} bytes\n* Creation = {{.Created}}\n* Id       = {{.Id}}" ' + usedImage, 5, silent=True)
 				for stdoutLine in mySSH.getBefore().split('\n'):
 					if re.search('Size     = [0-9]', stdoutLine) is not None:
 						imageInfo += stdoutLine.strip() + '\n'
@@ -1011,7 +1015,7 @@ class Containerize():
 		if healthyNb == 1:
 			cnt = 0
 			while (cnt < 20):
-				mySSH.command('docker logs ' + containerName + ' | egrep --text --color=never -i "wait|sync|Starting|ready"', '\$', 30)
+				mySSH.run('docker logs ' + containerName + ' | egrep --text --color=never -i "wait|sync|Starting|ready"', 30)
 				result = re.search('got sync|Starting E1AP at CU UP|Starting F1AP at CU|Got sync|Waiting for RUs to be configured|cuPHYController initialized|Received CONFIG.response, gNB is ready', mySSH.getBefore())
 				if result is None:
 					time.sleep(6)
@@ -1024,8 +1028,9 @@ class Containerize():
 			# containers are unhealthy, so we won't start. However, logs are stored at the end
 			# in UndeployObject so we here store the logs of the unhealthy container to report it
 			logfilename = f'{lSourcePath}/cmake_targets/log/{self.eNB_logFile[self.eNB_instance]}'
-			mySSH.command(f'docker logs {containerName} > {logfilename}', '\$', 30)
-			mySSH.copyin(lIpAddr, lUserName, lPassWord, logfilename, '.')
+			mySSH.run(f'docker logs {containerName} > {logfilename}', 30)
+			mySSH.copyin(logfilename, '.',True)
+
 		mySSH.close()
 
 		message = ''
@@ -1071,10 +1076,10 @@ class Containerize():
 		svcName = self.services[self.eNB_instance]
 		forceDown = False
 		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 docker-compose-ci.yml!')
 			svcName = ''
 
-		ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml config --services')
+		ret = mySSH.run(f'docker compose -f {yamlDir}/docker-compose-ci.yml config --services')
 		if ret.returncode != 0:
 			HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', "cannot enumerate running services")
 			self.exitStatus = 1
@@ -1084,14 +1089,14 @@ class Containerize():
 		services = []
 		for s in allServices:
 			# outputs the hash if the container is running
-			ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml ps --all --quiet -- {s}')
+			ret = mySSH.run(f'docker compose -f {yamlDir}/docker-compose-ci.yml ps --all --quiet -- {s}')
 			c = ret.stdout
 			logging.debug(f'running service {s} with container id {c}')
 			if ret.stdout != "" and ret.returncode == 0: # something is running for that service
 				services.append((s, c))
 		logging.info(f'stopping services {[s for s, _ in services]}')
 
-		mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml stop -t3')
+		mySSH.run(f'docker compose -f {yamlDir}/docker-compose-ci.yml stop -t3')
 		copyin_res = True
 		for service_name, container_id in services:
 			# head -n -1 suppresses the final "X exited with status code Y"
@@ -1099,7 +1104,7 @@ class Containerize():
 			mySSH.run(f'docker logs {container_id} &> {lSourcePath}/cmake_targets/log/{filename}')
 			copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', f'{filename}') and copyin_res
 
-		mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml down -v')
+		mySSH.run(f'docker compose -f {yamlDir}/docker-compose-ci.yml down -v')
 
 		# Analyzing log file!
 		if not copyin_res:
-- 
2.26.2