Commit 074cf91b authored by Robert Schmidt's avatar Robert Schmidt

cls_cluster: various fixes after review

- Mention python version and separate Python/own modules
- Use constants for registry and namespace name
- Provide OC url in oc login
- Do not perform oc logout in background
parent 941acb2e
...@@ -19,27 +19,28 @@ ...@@ -19,27 +19,28 @@
# * contact@openairinterface.org # * contact@openairinterface.org
# */ # */
#--------------------------------------------------------------------- #---------------------------------------------------------------------
# Python for CI of OAI-eNB + COTS-UE
# #
# Required Python Version # Required Python Version
# Python 3.x # Python 3.x
# #
# Required Python Package
# pexpect
#--------------------------------------------------------------------- #---------------------------------------------------------------------
#----------------------------------------------------------- #-----------------------------------------------------------
# Import # Import
#----------------------------------------------------------- #-----------------------------------------------------------
import logging import logging
import cls_oai_html
import re import re
import time import time
import cls_oai_html
import constants as CONST import constants as CONST
import helpreadme as HELP import helpreadme as HELP
import cls_containerize import cls_containerize
import cls_cmd import cls_cmd
IMAGE_REGISTRY_SERVICE_NAME = "image-registry.openshift-image-registry.svc"
NAMESPACE = "oaicicd-ran"
class Cluster: class Cluster:
def __init__(self): def __init__(self):
self.eNBIPAddress = "" self.eNBIPAddress = ""
...@@ -110,18 +111,9 @@ class Cluster: ...@@ -110,18 +111,9 @@ class Cluster:
regres = re.search(r'build.build.openshift.io/(?P<jobname>[a-zA-Z0-9\-]+) started', ret.stdout) regres = re.search(r'build.build.openshift.io/(?P<jobname>[a-zA-Z0-9\-]+) started', ret.stdout)
if ret.returncode != 0 or ret.stdout.count('Uploading finished') != 1 or regres is None: if ret.returncode != 0 or ret.stdout.count('Uploading finished') != 1 or regres is None:
logging.error(f"error during oc start-build: {ret.stdout}") logging.error(f"error during oc start-build: {ret.stdout}")
self._delete_pod(name)
return None return None
return regres.group('jobname') + '-build' return regres.group('jobname') + '-build'
def _delete_pod(self, shortName):
ret = self.cmd.run(f"oc get pods | grep {shortName}")
regres = re.search(rf'{shortName}-[0-9]+-build', ret.stdout)
if regres is not None:
self.cmd.run(f"oc delete pod {regres.group(0)}")
else:
logging.warning(f"no pod found with name {shortName}")
def _wait_build_end(self, jobs, timeout_sec, check_interval_sec = 5): def _wait_build_end(self, jobs, timeout_sec, check_interval_sec = 5):
logging.debug(f"waiting for jobs {jobs} to finish building") logging.debug(f"waiting for jobs {jobs} to finish building")
while timeout_sec > 0: while timeout_sec > 0:
...@@ -146,7 +138,7 @@ class Cluster: ...@@ -146,7 +138,7 @@ class Cluster:
def _get_image_size(self, image, tag): def _get_image_size(self, image, tag):
# get the SHA of the image we built using the image name and its tag # get the SHA of the image we built using the image name and its tag
ret = self.cmd.run(f'oc describe is {image} | grep -A4 {tag}') ret = self.cmd.run(f'oc describe is {image} | grep -A4 {tag}')
result = re.search(f'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/(?P<imageSha>{image}@sha256:[a-f0-9]+)', ret.stdout) result = re.search(f'{IMAGE_REGISTRY_SERVICE_NAME}:5000/{NAMESPACE}/(?P<imageSha>{image}@sha256:[a-f0-9]+)', ret.stdout)
if result is None: if result is None:
return -1 return -1
imageSha = result.group("imageSha") imageSha = result.group("imageSha")
...@@ -225,7 +217,7 @@ class Cluster: ...@@ -225,7 +217,7 @@ class Cluster:
forceBaseImageBuild = True forceBaseImageBuild = True
# logging to OC Cluster and then switch to corresponding project # logging to OC Cluster and then switch to corresponding project
ret = self.cmd.run(f'oc login -u {ocUserName} -p {ocPassword}') ret = self.cmd.run(f'oc login -u {ocUserName} -p {ocPassword} --server {self.OCUrl}')
if ret.returncode != 0: if ret.returncode != 0:
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
...@@ -357,7 +349,7 @@ class Cluster: ...@@ -357,7 +349,7 @@ class Cluster:
self.cmd.run('for pod in $(oc get pods | tail -n +2 | awk \'{print $1}\'); do oc delete pod ${pod}; done') self.cmd.run('for pod in $(oc get pods | tail -n +2 | awk \'{print $1}\'); do oc delete pod ${pod}; done')
# logout will return eventually, but we don't care when -> start in background # logout will return eventually, but we don't care when -> start in background
self.cmd.run(f'oc logout &') self.cmd.run(f'oc logout')
self.cmd.close() self.cmd.close()
# Analyze the logs # Analyze the logs
......
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