diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py
index 5cf6b76b38..1b756b84c3 100644
--- a/ci-scripts/cls_containerize.py
+++ b/ci-scripts/cls_containerize.py
@@ -208,6 +208,7 @@ class Containerize():
self.imageToCopy = ''
self.registrySvrId = ''
self.testSvrId = ''
+ self.imageToPull = []
#checkers from xml
self.ran_checkers={}
@@ -616,6 +617,148 @@ class Containerize():
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
return True
+ def ImageTagToUse(self, imageName):
+ shortCommit = self.ranCommitID[0:8]
+ if self.ranAllowMerge:
+ tagToUse = f'{self.ranBranch}-{shortCommit}'
+ else:
+ tagToUse = f'develop-{shortCommit}'
+ fullTag = f'porcepix.sboai.cs.eurecom.fr/{imageName}:{tagToUse}'
+ return fullTag
+
+ def Push_Image_to_Local_Registry(self, HTML):
+ if self.registrySvrId == '0':
+ lIpAddr = self.eNBIPAddress
+ lUserName = self.eNBUserName
+ lPassWord = self.eNBPassword
+ lSourcePath = self.eNBSourceCodePath
+ elif self.registrySvrId == '1':
+ lIpAddr = self.eNB1IPAddress
+ lUserName = self.eNB1UserName
+ lPassWord = self.eNB1Password
+ lSourcePath = self.eNB1SourceCodePath
+ elif self.registrySvrId == '2':
+ lIpAddr = self.eNB2IPAddress
+ lUserName = self.eNB2UserName
+ lPassWord = self.eNB2Password
+ lSourcePath = self.eNB2SourceCodePath
+ if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
+ HELP.GenericHelp(CONST.Version)
+ sys.exit('Insufficient Parameter')
+ logging.debug('Pushing images from server: ' + lIpAddr)
+ mySSH = SSH.SSHConnection()
+ mySSH.open(lIpAddr, lUserName, lPassWord)
+
+ mySSH.command('echo oaicicd | docker login --password-stdin -u oaicicd porcepix.sboai.cs.eurecom.fr', '\$', 5)
+ if re.search('Login Succeeded', mySSH.getBefore()) is None:
+ logging.error('Could not log into local registry')
+ return False
+
+ orgTag = 'develop'
+ if self.ranAllowMerge:
+ orgTag = 'ci-temp'
+ imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru']
+ for image in imageNames:
+ tagToUse = self.ImageTagToUse(image)
+ mySSH.command(f'docker image tag {image}:{orgTag} {tagToUse}', '\$', 5)
+ mySSH.command(f'docker push {tagToUse}', '\$', 120)
+ if re.search(': digest:', mySSH.getBefore()) is None:
+ logging.debug(mySSH.getBefore())
+ logging.error(f'Could not push {image} to local registry : {tagToUse}')
+ return False
+ mySSH.command(f'docker rmi {tagToUse}', '\$', 5)
+
+ mySSH.command('docker logout porcepix.sboai.cs.eurecom.fr', '\$', 5)
+ if re.search('Removing login credentials', mySSH.getBefore()) is None:
+ logging.error('Could not log off from local registry')
+ return False
+
+ mySSH.close()
+ return True
+
+ def Pull_Image_from_Local_Registry(self, HTML):
+ if self.testSvrId == '0':
+ lIpAddr = self.eNBIPAddress
+ lUserName = self.eNBUserName
+ lPassWord = self.eNBPassword
+ lSourcePath = self.eNBSourceCodePath
+ elif self.testSvrId == '1':
+ lIpAddr = self.eNB1IPAddress
+ lUserName = self.eNB1UserName
+ lPassWord = self.eNB1Password
+ lSourcePath = self.eNB1SourceCodePath
+ elif self.testSvrId == '2':
+ lIpAddr = self.eNB2IPAddress
+ lUserName = self.eNB2UserName
+ lPassWord = self.eNB2Password
+ lSourcePath = self.eNB2SourceCodePath
+ if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
+ HELP.GenericHelp(CONST.Version)
+ sys.exit('Insufficient Parameter')
+ logging.debug('Pulling images onto server: ' + lIpAddr)
+ mySSH = SSH.SSHConnection()
+ mySSH.open(lIpAddr, lUserName, lPassWord)
+
+ mySSH.command('echo oaicicd | docker login --password-stdin -u oaicicd porcepix.sboai.cs.eurecom.fr', '\$', 5)
+ if re.search('Login Succeeded', mySSH.getBefore()) is None:
+ logging.error('Could not log into local registry')
+ return False
+
+ orgTag = 'develop'
+ if self.ranAllowMerge:
+ orgTag = 'ci-temp'
+
+ for image in self.imageToPull:
+ tagToUse = self.ImageTagToUse(image)
+ mySSH.command(f'docker pull {tagToUse}', '\$', 120)
+ if re.search('Status: Downloaded newer image for |Status: Image is up to date for', mySSH.getBefore()) is None:
+ logging.debug(mySSH.getBefore())
+ logging.error(f'Could not pull {image} from local registry : {tagToUse}')
+ return False
+
+ mySSH.command('docker logout porcepix.sboai.cs.eurecom.fr', '\$', 5)
+ if re.search('Removing login credentials', mySSH.getBefore()) is None:
+ logging.error('Could not log off from local registry')
+ return False
+
+ mySSH.close()
+ return True
+
+ def Clean_Test_Server_Images(self, HTML):
+ if self.testSvrId == '0':
+ lIpAddr = self.eNBIPAddress
+ lUserName = self.eNBUserName
+ lPassWord = self.eNBPassword
+ lSourcePath = self.eNBSourceCodePath
+ elif self.testSvrId == '1':
+ lIpAddr = self.eNB1IPAddress
+ lUserName = self.eNB1UserName
+ lPassWord = self.eNB1Password
+ lSourcePath = self.eNB1SourceCodePath
+ elif self.testSvrId == '2':
+ lIpAddr = self.eNB2IPAddress
+ lUserName = self.eNB2UserName
+ lPassWord = self.eNB2Password
+ lSourcePath = self.eNB2SourceCodePath
+ if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
+ HELP.GenericHelp(CONST.Version)
+ sys.exit('Insufficient Parameter')
+ logging.debug('Removing test images from server: ' + lIpAddr)
+ mySSH = SSH.SSHConnection()
+ mySSH.open(lIpAddr, lUserName, lPassWord)
+
+ orgTag = 'develop'
+ if self.ranAllowMerge:
+ orgTag = 'ci-temp'
+ tagToUse = self.ImageTagToUse(self.imageToPull)
+ imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru']
+ for image in imageNames:
+ tagToUse = self.ImageTagToUse(image)
+ mySSH.command(f'docker rmi {tagToUse} || true', '\$', 5)
+
+ mySSH.close()
+ return True
+
def DeployObject(self, HTML, EPC):
if self.eNB_serverId[self.eNB_instance] == '0':
lIpAddr = self.eNBIPAddress
diff --git a/ci-scripts/cls_log_mgt.py b/ci-scripts/cls_log_mgt.py
index f1dbf6b8ec..a78eee5a33 100644
--- a/ci-scripts/cls_log_mgt.py
+++ b/ci-scripts/cls_log_mgt.py
@@ -35,11 +35,6 @@ import re
import subprocess
import sshconnection
-logging.basicConfig(
- level=logging.DEBUG,
- format="[%(asctime)s] %(name)s:%(levelname)s: %(message)s"
-)
-
class Log_Mgt:
def __init__(self,Username, IPAddress,Password,Path):
diff --git a/ci-scripts/cls_oai_html.py b/ci-scripts/cls_oai_html.py
index 536f2ff49e..b7514172dc 100644
--- a/ci-scripts/cls_oai_html.py
+++ b/ci-scripts/cls_oai_html.py
@@ -102,9 +102,9 @@ class HTMLManagement():
def CreateHtmlHeader(self, ADBIPAddress):
if (not self.htmlHeaderCreated):
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
- logging.debug('\u001B[1m Creating HTML header \u001B[0m')
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m Creating HTML header \u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
self.htmlFile = open('test_results.html', 'w')
self.htmlFile.write('\n')
self.htmlFile.write('\n')
diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py
index d3f4191c02..f16df2cb97 100644
--- a/ci-scripts/cls_oaicitest.py
+++ b/ci-scripts/cls_oaicitest.py
@@ -44,10 +44,6 @@ import datetime
import signal
import statistics as stat
from multiprocessing import Process, Lock, SimpleQueue
-logging.basicConfig(
- level=logging.DEBUG,
- format="[%(asctime)s] %(name)s:%(levelname)s: %(message)s"
-)
#import our libs
import helpreadme as HELP
@@ -3937,7 +3933,7 @@ class OaiCiTest():
sys.exit(1)
def ShowTestID(self):
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
- logging.debug('\u001B[1mTest ID:' + self.testCase_id + '\u001B[0m')
- logging.debug('\u001B[1m' + self.desc + '\u001B[0m')
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1mTest ID:' + self.testCase_id + '\u001B[0m')
+ logging.info('\u001B[1m' + self.desc + '\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
diff --git a/ci-scripts/main.py b/ci-scripts/main.py
index eb9e60a83e..9c7bab4efd 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -70,7 +70,7 @@ import subprocess
from multiprocessing import Process, Lock, SimpleQueue
logging.basicConfig(
level=logging.DEBUG,
- format="[%(asctime)s] %(name)s:%(levelname)s: %(message)s"
+ format="[%(asctime)s] %(levelname)8s: %(message)s"
)
@@ -84,7 +84,7 @@ logging.basicConfig(
def CheckClassValidity(xml_class_list,action,id):
if action not in xml_class_list:
- logging.debug('ERROR: test-case ' + id + ' has unlisted class ' + action + ' ##CHECK xml_class_list.yml')
+ logging.error('test-case ' + id + ' has unlisted class ' + action + ' ##CHECK xml_class_list.yml')
resp=False
else:
resp=True
@@ -328,14 +328,14 @@ def GetParametersFromXML(action):
CiTestObj.iperf_profile = 'balanced'
else:
if CiTestObj.iperf_profile != 'balanced' and CiTestObj.iperf_profile != 'unbalanced' and CiTestObj.iperf_profile != 'single-ue':
- logging.debug('ERROR: test-case has wrong profile ' + CiTestObj.iperf_profile)
+ logging.error('test-case has wrong profile ' + CiTestObj.iperf_profile)
CiTestObj.iperf_profile = 'balanced'
CiTestObj.iperf_options = test.findtext('iperf_options')
if (CiTestObj.iperf_options is None):
CiTestObj.iperf_options = 'check'
else:
if CiTestObj.iperf_options != 'check' and CiTestObj.iperf_options != 'sink':
- logging.debug('ERROR: test-case has wrong option ' + CiTestObj.iperf_options)
+ logging.error('test-case has wrong option ' + CiTestObj.iperf_options)
CiTestObj.iperf_options = 'check'
elif action == 'IdleSleep':
@@ -464,8 +464,27 @@ def GetParametersFromXML(action):
elif action == 'Cppcheck_Analysis':
pass
+ elif action == 'Push_Local_Registry':
+ string_field = test.findtext('registry_svr_id')
+ if (string_field is not None):
+ CONTAINERS.registrySvrId = string_field
+
+ elif action == 'Pull_Local_Registry':
+ string_field = test.findtext('test_svr_id')
+ if (string_field is not None):
+ CONTAINERS.testSvrId = string_field
+ for image in test.findall('image_to_pull'):
+ string_field = image.findtext('image_name')
+ if (string_field is not None):
+ CONTAINERS.imageToPull.append(string_field)
+
+ elif action == 'Clean_Test_Server_Images':
+ string_field = test.findtext('test_svr_id')
+ if (string_field is not None):
+ CONTAINERS.testSvrId = string_field
+
else:
- logging.error(f"unknown action {action}")
+ logging.warning(f"unknown action {action} from option-parsing point-of-view")
#check if given test is in list
@@ -617,7 +636,7 @@ elif re.match('^LogCollecteNB$', mode, re.IGNORECASE):
sys.exit('Insufficient Parameter')
if RAN.eNBIPAddress == 'none':
cmd = 'zip -r enb.log.' + RAN.BuildId + '.zip cmake_targets/log'
- logging.debug(cmd)
+ logging.info(cmd)
zipStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=60)
sys.exit(0)
RAN.LogCollecteNB()
@@ -683,17 +702,17 @@ elif re.match('^InitiateHtml$', mode, re.IGNORECASE):
HTML.htmlNb_CATM_Modules=len(CiTestObj.CatMDevices)
HTML.CreateHtmlHeader(CiTestObj.ADBIPAddress)
elif re.match('^FinalizeHtml$', mode, re.IGNORECASE):
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
- logging.debug('\u001B[1m Creating HTML footer \u001B[0m')
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m Creating HTML footer \u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
CiTestObj.RetrieveSystemVersion('eNB',HTML,RAN)
CiTestObj.RetrieveSystemVersion('UE',HTML,RAN)
HTML.CreateHtmlFooter(CiTestObj.finalStatus)
elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re.IGNORECASE):
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
- logging.debug('\u001B[1m Starting Scenario: ' + CiTestObj.testXMLfiles[0] + '\u001B[0m')
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m Starting Scenario: ' + CiTestObj.testXMLfiles[0] + '\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
if re.match('^TesteNB$', mode, re.IGNORECASE):
if RAN.eNBIPAddress == '' or RAN.ranRepository == '' or RAN.ranBranch == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '' or RAN.eNBSourceCodePath == '' or EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '' or CiTestObj.ADBIPAddress == '' or CiTestObj.ADBUserName == '' or CiTestObj.ADBPassword == '':
HELP.GenericHelp(CONST.Version)
@@ -736,7 +755,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
HTML.testUnstable = True
CiTestObj.testMinStableId = xmlRoot.findtext('TestMinId',default='999999')
HTML.testMinStableId = CiTestObj.testMinStableId
- logging.debug('Test is tagged as Unstable -- starting from TestID ' + str(CiTestObj.testMinStableId))
+ logging.warning('Test is tagged as Unstable -- starting from TestID ' + str(CiTestObj.testMinStableId))
all_tests=xmlRoot.findall('testCase')
exclusion_tests=exclusion_tests.split()
@@ -747,10 +766,10 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
for test in exclusion_tests:
if (not re.match('^[0-9]{6}$', test) and
not re.match('^[0-9]{1,5}\+$', test)):
- logging.debug('ERROR: exclusion test is invalidly formatted: ' + test)
+ logging.error('exclusion test is invalidly formatted: ' + test)
sys.exit(1)
else:
- logging.debug(test)
+ logging.info(test)
#check that requested tests are well formatted
#(6 digits or less than 6 digits followed by +)
@@ -758,9 +777,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
for test in requested_tests:
if (re.match('^[0-9]{6}$', test) or
re.match('^[0-9]{1,5}\+$', test)):
- logging.debug('INFO: test group/case requested: ' + test)
+ logging.info('test group/case requested: ' + test)
else:
- logging.debug('ERROR: requested test is invalidly formatted: ' + test)
+ logging.error('requested test is invalidly formatted: ' + test)
sys.exit(1)
if (EPC.IPAddress != '') and (EPC.IPAddress != 'none'):
CiTestObj.CheckFlexranCtrlInstallation(RAN,EPC,CONTAINERS)
@@ -771,9 +790,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
todo_tests=[]
for test in requested_tests:
if (test_in_list(test, exclusion_tests)):
- logging.debug('INFO: test will be skipped: ' + test)
+ logging.info('test will be skipped: ' + test)
else:
- #logging.debug('INFO: test will be run: ' + test)
+ #logging.info('test will be run: ' + test)
todo_tests.append(test)
signal.signal(signal.SIGUSR1, receive_signal)
@@ -941,6 +960,18 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
success = CONTAINERS.Copy_Image_to_Test_Server(HTML)
if not success:
RAN.prematureExit = True
+ elif action == 'Push_Local_Registry':
+ success = CONTAINERS.Push_Image_to_Local_Registry(HTML)
+ if not success:
+ RAN.prematureExit = True
+ elif action == 'Pull_Local_Registry':
+ success = CONTAINERS.Pull_Image_from_Local_Registry(HTML)
+ if not success:
+ RAN.prematureExit = True
+ elif action == 'Clean_Test_Server_Images':
+ success = CONTAINERS.Clean_Test_Server_Images(HTML)
+ if not success:
+ RAN.prematureExit = True
elif action == 'Deploy_Object':
CONTAINERS.DeployObject(HTML, EPC)
if CONTAINERS.exitStatus==1:
@@ -973,19 +1004,21 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
RAN.prematureExit = True
elif action == 'StatsFromGenObject':
CONTAINERS.StatsFromGenObject(HTML)
+ elif action == 'Push_Images_To_Test_Servers':
+ logging.debug('To be implemented')
else:
sys.exit('Invalid class (action) from xml')
if RAN.prematureExit:
if CiTestObj.testCase_id == CiTestObj.testMinStableId:
- logging.debug('Scenario has reached minimal stability point')
+ logging.warning('Scenario has reached minimal stability point')
CiTestObj.testStabilityPointReached = True
HTML.testStabilityPointReached = True
CiTestObj.FailReportCnt += 1
if CiTestObj.FailReportCnt == CiTestObj.repeatCounts[0] and RAN.prematureExit:
- logging.debug('Scenario failed ' + str(CiTestObj.FailReportCnt) + ' time(s)')
+ logging.error('Scenario failed ' + str(CiTestObj.FailReportCnt) + ' time(s)')
HTML.CreateHtmlTabFooter(False)
if CiTestObj.testUnstable and (CiTestObj.testStabilityPointReached or CiTestObj.testMinStableId == '999999'):
- logging.debug('Scenario has reached minimal stability point -- Not a Failure')
+ logging.warning('Scenario has reached minimal stability point -- Not a Failure')
else:
sys.exit('Failed Scenario')
else:
diff --git a/ci-scripts/sshconnection.py b/ci-scripts/sshconnection.py
index 0946ce0f34..7c9991119e 100644
--- a/ci-scripts/sshconnection.py
+++ b/ci-scripts/sshconnection.py
@@ -74,7 +74,7 @@ class SSHConnection():
count = 10
connect_status = True
else:
- logging.debug('self.sshresponse = ' + str(self.sshresponse))
+ logging.warning('self.sshresponse = ' + str(self.sshresponse))
elif self.sshresponse == 1:
self.ssh.sendline(password)
self.sshresponse = self.ssh.expect([prompt, 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
@@ -82,7 +82,7 @@ class SSHConnection():
count = 10
connect_status = True
else:
- logging.debug('self.sshresponse = ' + str(self.sshresponse))
+ logging.warning('self.sshresponse = ' + str(self.sshresponse))
elif self.sshresponse == 2:
# We directly ended up on the remote server because of pubkey auth
count = 10
@@ -91,8 +91,8 @@ class SSHConnection():
self.sshresponse = self.ssh.expect([prompt])
else:
# debug output
- logging.debug(str(self.ssh.before))
- logging.debug('self.sshresponse = ' + str(self.sshresponse))
+ logging.warning(str(self.ssh.before))
+ logging.warning('self.sshresponse = ' + str(self.sshresponse))
# adding a tempo when failure
if not connect_status:
time.sleep(1)
@@ -108,7 +108,7 @@ class SSHConnection():
def cde_check_value(self, commandline, expected, timeout):
- logging.debug(commandline)
+ logging.info(commandline)
self.ssh.timeout = timeout
self.ssh.sendline(commandline)
expected.append(pexpect.EOF)
@@ -118,7 +118,7 @@ class SSHConnection():
def command(self, commandline, expectedline, timeout, silent=False, resync=False):
if not silent:
- logging.debug(commandline)
+ logging.info(commandline)
self.ssh.timeout = timeout
# Nasty patch when pexpect output is out of sync.
# Much pronounced when running back-to-back-back oc commands
@@ -133,27 +133,27 @@ class SSHConnection():
if self.sshresponse == 0:
return 0
elif self.sshresponse == 1:
- logging.debug('\u001B[1;37;41m Unexpected EOF \u001B[0m')
- logging.debug('Expected Line : ' + expectedline)
- logging.debug(str(self.ssh.before))
+ logging.error('\u001B[1;37;41m Unexpected EOF \u001B[0m')
+ logging.error('Expected Line : ' + expectedline)
+ logging.error(str(self.ssh.before))
sys.exit(self.sshresponse)
elif self.sshresponse == 2:
- logging.debug('\u001B[1;37;41m Unexpected TIMEOUT \u001B[0m')
- logging.debug('Expected Line : ' + expectedline)
+ logging.error('\u001B[1;37;41m Unexpected TIMEOUT \u001B[0m')
+ logging.error('Expected Line : ' + expectedline)
result = re.search('ping |iperf |picocom', str(commandline))
if result is None:
- logging.debug(str(self.ssh.before))
+ logging.warning(str(self.ssh.before))
sys.exit(self.sshresponse)
else:
return -1
else:
- logging.debug('\u001B[1;37;41m Unexpected Others \u001B[0m')
- logging.debug('Expected Line : ' + expectedline)
+ logging.error('\u001B[1;37;41m Unexpected Others \u001B[0m')
+ logging.error('Expected Line : ' + expectedline)
sys.exit(self.sshresponse)
def command2(self, commandline, timeout, silent=False):
if not silent:
- logging.debug(commandline)
+ logging.info(commandline)
self.cmd2Results = ''
noHistoryCmd = 'unset HISTFILE; ' + commandline
myHost = self.username + '@' + self.ipaddress
@@ -165,7 +165,7 @@ class SSHConnection():
def command3(self, commandline, timeout, silent=False):
if not silent:
- logging.debug(commandline)
+ logging.info(commandline)
self.cmd2Results = ''
noHistoryCmd = 'unset HISTFILE; ' + commandline
myHost = self.username + '@' + self.ipaddress
@@ -186,14 +186,14 @@ class SSHConnection():
pass
elif self.sshresponse == 1:
if not self.picocom_closure:
- logging.debug('\u001B[1;37;41m Unexpected TIMEOUT during closing\u001B[0m')
+ logging.warning('\u001B[1;37;41m Unexpected TIMEOUT during closing\u001B[0m')
else:
- logging.debug('\u001B[1;37;41m Unexpected Others during closing\u001B[0m')
+ logging.warning('\u001B[1;37;41m Unexpected Others during closing\u001B[0m')
def copyin(self, ipaddress, username, password, source, destination):
count = 0
copy_status = False
- logging.debug('scp -r '+ username + '@' + ipaddress + ':' + source + ' ' + destination)
+ logging.info('scp -r '+ username + '@' + ipaddress + ':' + source + ' ' + destination)
while count < 10:
scp_spawn = pexpect.spawn('scp -r '+ username + '@' + ipaddress + ':' + source + ' ' + destination, timeout = 100)
scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT])
@@ -206,7 +206,7 @@ class SSHConnection():
count = 10
copy_status = True
else:
- logging.debug('1 - scp_response = ' + str(scp_response))
+ logging.warning('1 - scp_response = ' + str(scp_response))
elif scp_response == 1:
scp_spawn.sendline(password)
scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
@@ -214,12 +214,12 @@ class SSHConnection():
count = 10
copy_status = True
else:
- logging.debug('2 - scp_response = ' + str(scp_response))
+ logging.warning('2 - scp_response = ' + str(scp_response))
elif scp_response == 2:
count = 10
copy_status = True
else:
- logging.debug('3 - scp_response = ' + str(scp_response))
+ logging.warning('3 - scp_response = ' + str(scp_response))
# adding a tempo when failure
if not copy_status:
time.sleep(1)
@@ -232,7 +232,7 @@ class SSHConnection():
def copyout(self, ipaddress, username, password, source, destination):
count = 0
copy_status = False
- logging.debug('scp -r ' + source + ' ' + username + '@' + ipaddress + ':' + destination)
+ logging.info('scp -r ' + source + ' ' + username + '@' + ipaddress + ':' + destination)
while count < 4:
scp_spawn = pexpect.spawn('scp -r ' + source + ' ' + username + '@' + ipaddress + ':' + destination, timeout = 100)
scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT])
@@ -245,7 +245,7 @@ class SSHConnection():
count = 10
copy_status = True
else:
- logging.debug('1 - scp_response = ' + str(scp_response))
+ logging.warning('1 - scp_response = ' + str(scp_response))
elif scp_response == 1:
scp_spawn.sendline(password)
scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
@@ -253,12 +253,12 @@ class SSHConnection():
count = 10
copy_status = True
else:
- logging.debug('2 - scp_response = ' + str(scp_response))
+ logging.warning('2 - scp_response = ' + str(scp_response))
elif scp_response == 2:
count = 10
copy_status = True
else:
- logging.debug('3 - scp_response = ' + str(scp_response))
+ logging.warning('3 - scp_response = ' + str(scp_response))
# adding a tempo when failure
if not copy_status:
time.sleep(1)
diff --git a/ci-scripts/xml_class_list.yml b/ci-scripts/xml_class_list.yml
index 6497fd3020..d77683f9c9 100755
--- a/ci-scripts/xml_class_list.yml
+++ b/ci-scripts/xml_class_list.yml
@@ -51,3 +51,6 @@
- IperfFromContainer
- StatsFromGenObject
- LicenceAndFormattingCheck
+ - Push_Local_Registry
+ - Pull_Local_Registry
+ - Clean_Test_Server_Images
diff --git a/ci-scripts/xml_files/container_image_build.xml b/ci-scripts/xml_files/container_image_build.xml
index e7eabc0794..7684e0f997 100644
--- a/ci-scripts/xml_files/container_image_build.xml
+++ b/ci-scripts/xml_files/container_image_build.xml
@@ -26,6 +26,7 @@
wrench
000001
+ 000010
@@ -38,4 +39,10 @@
True
+
+ Push_Local_Registry
+ Push Images to Local Registry
+ 0
+
+