#!/bin/bash

# generate /must-gather/version file
. version
echo "medik8s/must-gather" > /must-gather/version
version >> /must-gather/version

# Named resource list, eg. ns/openshift-config
named_resources=()

# Resource groups list, eg. pods
group_resources=()

# Medik8s ns
MEDIK8S_NS=$(oc get subs -A --field-selector=metadata.name=node-healthcheck-operator -o jsonpath='{.items[*].metadata.namespace}')
named_resources+=(ns/${MEDIK8S_NS})

# Medik8s pods
# Gathering pod/podname does not collect logs, that is only done for namespaces. So no need to gather pods explicitly.
# Leaving it here in case things change...
# MEDIK8S_PODS=$(oc -n ${MEDIK8S_NS} get pods -o jsonpath='{range .items[*]}{"pod/"}{.metadata.name}{"\n"}{end}' | grep 'node-healthcheck\|poison-pill' | sed -z 's/\n/ /g')
# named_resources+=(${MEDIK8S_PODs})

# Nodes
group_resources+=(nodes)

# Look for MHC to detect conflicts with NHC
group_resources+=(machinehealthchecks)

# Medik8s CRDs
MEDIK8S_CRDS=$(oc get crds -o jsonpath='{range .items[*]}{"crd/"}{.metadata.name}{"\n"}{end}' | grep 'medik8s' | sed -z 's/\n/ /g')
named_resources+=(${MEDIK8S_CRDS})

# Medik8s CRs
MEDIK8S_CRS=$(oc get crds -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | grep 'medik8s' | sed -z 's/\n/ /g')
group_resources+=(${MEDIK8S_CRS})

# Run the Collection of Resources using inspect
oc adm inspect --dest-dir must-gather --rotated-pod-logs --all-namespaces "${named_resources[@]}"
group_resources_text=$(IFS=, ; echo "${group_resources[*]}")
oc adm inspect --dest-dir must-gather --rotated-pod-logs --all-namespaces "${group_resources_text}"

exit 0
