96 lines
3.2 KiB
Python
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.")
|