Skip to content

Commit

Permalink
Provide option for choosing specific upstream submariner based on tags (
Browse files Browse the repository at this point in the history
red-hat-storage#8308)

* Provide option for choosing specific upstream submariner based on tags
* Handle subctl CLI based on versions
* Handle submariner connectivity test failure exceptions

Signed-off-by: Shylesh Kumar Mohan <[email protected]>
  • Loading branch information
shylesh committed Aug 24, 2023
1 parent 1c8dc9d commit 55031ae
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 3 deletions.
2 changes: 2 additions & 0 deletions conf/ocsci/submariner_upstream.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@ ENV_DATA:
submariner_info_file: "broker-info.subm"
# Timeout for submeriner cli prompts
submariner_prompt_timeout: 5
submariner_upstream_version_tag: "devel"
submariner_ignore_connectivity_test: True


37 changes: 34 additions & 3 deletions ocs_ci/deployment/acm.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import shutil
import requests

import semantic_version

from ocs_ci.framework import config
from ocs_ci.ocs import constants
from ocs_ci.ocs.exceptions import (
Expand Down Expand Up @@ -112,6 +114,10 @@ def download_binary(self):
tempf.write(resp.content)

# Actual submariner binary download
if config.ENV_DATA.get("submariner_upstream_version_tag"):
os.environ["VERSION"] = config.ENV_DATA.get(
"submariner_upstream_version_tag"
)
cmd = f"bash {tempf.name}"
try:
run_cmd(cmd)
Expand Down Expand Up @@ -185,14 +191,39 @@ def submariner_configure_upstream(self):
kubeconf_list = []
for i in self.dr_only_list:
kubeconf_list.append(config.clusters[i].RUN["kubeconfig"])
connct_check = f"verify {' '.join(kubeconf_list)} --only connectivity"

connct_check = None
if config.ENV_DATA.get("submariner_upstream_version_tag") != "devel":
subctl_vers = self.get_subctl_version()
if subctl_vers.minor <= 15:
connct_check = f"verify {' '.join(kubeconf_list)} --only connectivity"
if not connct_check:
# New cmd format
connct_check = f"verify --kubeconfig {kubeconf_list[0]} --toconfig {kubeconf_list[1]} --only connectivity"

# Workaround for now, ignoring verify faliures
# need to be fixed once pod security issue is fixed
try:
run_subctl_cmd(connct_check)
except Exception:
logger.error("Submariner verification has issues")
raise
if not config.ENV_DATA["submariner_ignore_connectivity_test"]:
logger.error("Submariner verification has issues")
raise
else:
logger.warning("Submariner verification has issues but ignored for now")

def get_subctl_version(self):
"""
Run 'subctl version ' command and return a Version object
Returns:
vers (Version): semanctic version object
"""
out = run_cmd("subctl version")
vstr = out.split(":")[1].rstrip().lstrip()[1:]
vers = semantic_version.Version(vstr)
return vers

def get_primary_cluster_index(self):
"""
Expand Down

0 comments on commit 55031ae

Please sign in to comment.