Files
homelab/acm-hub-bootstrap/tests/interop/test_validate_hub_site_components.py

96 lines
3.2 KiB
Python

import logging
import os
import pytest
from ocp_resources.storage_class import StorageClass
from validatedpatterns_tests.interop import application, components
from . import __loggername__
logger = logging.getLogger(__loggername__)
oc = os.environ["HOME"] + "/oc_client/oc"
@pytest.mark.test_validate_hub_site_components
def test_validate_hub_site_components(openshift_dyn_client):
logger.info("Checking Openshift version on hub site")
version_out = components.dump_openshift_version()
logger.info(f"Openshift version:\n{version_out}")
logger.info("Dump PVC and storageclass info")
pvcs_out = components.dump_pvc()
logger.info(f"PVCs:\n{pvcs_out}")
for sc in StorageClass.get(dyn_client=openshift_dyn_client):
logger.info(sc.instance)
@pytest.mark.validate_hub_site_reachable
def test_validate_hub_site_reachable(kube_config, openshift_dyn_client):
logger.info("Check if hub site API end point is reachable")
err_msg = components.validate_site_reachable(kube_config, openshift_dyn_client)
if err_msg:
logger.error(f"FAIL: {err_msg}")
assert False, err_msg
else:
logger.info("PASS: Hub site is reachable")
@pytest.mark.check_pod_status_hub
def test_check_pod_status(openshift_dyn_client):
logger.info("Checking pod status")
projects = [
"openshift-operators",
"open-cluster-management",
"open-cluster-management-hub",
"openshift-gitops",
"vault",
]
err_msg = components.check_pod_status(openshift_dyn_client, projects)
if err_msg:
logger.error(f"FAIL: {err_msg}")
assert False, err_msg
else:
logger.info("PASS: Pod status check succeeded.")
@pytest.mark.validate_acm_self_registration_managed_clusters
def test_validate_acm_self_registration_managed_clusters(openshift_dyn_client):
logger.info("Check ACM self registration for edge site")
kubefiles = [os.getenv("KUBECONFIG_EDGE")]
err_msg = components.validate_acm_self_registration_managed_clusters(
openshift_dyn_client, kubefiles
)
if err_msg:
logger.error(f"FAIL: {err_msg}")
assert False, err_msg
else:
logger.info("PASS: Edge site is self registered")
@pytest.mark.validate_argocd_reachable_hub_site
def test_validate_argocd_reachable_hub_site(openshift_dyn_client):
logger.info("Check if argocd route/url on hub site is reachable")
err_msg = components.validate_argocd_reachable(openshift_dyn_client)
if err_msg:
logger.error(f"FAIL: {err_msg}")
assert False, err_msg
else:
logger.info("PASS: Argocd is reachable")
@pytest.mark.validate_argocd_applications_health_hub_site
def test_validate_argocd_applications_health_hub_site(openshift_dyn_client):
logger.info("Get all applications deployed by argocd on hub site")
projects = ["openshift-gitops", "multicloud-gitops-hub"]
unhealthy_apps = application.get_argocd_application_status(
openshift_dyn_client, projects
)
if unhealthy_apps:
err_msg = "Some or all applications deployed on hub site are unhealthy"
logger.error(f"FAIL: {err_msg}:\n{unhealthy_apps}")
assert False, err_msg
else:
logger.info("PASS: All applications deployed on hub site are healthy.")