#!/bin/bash

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

# Resource List
resources=()

# Cluster Version Information
resources+=(clusterversion ns/openshift-cluster-version)

# Operator Resources
resources+=(clusteroperators)

# Certificate Resources
resources+=(certificatesigningrequests)

# Machine/Node Resources
resources+=(nodes)

# Namespaces/Project Resources
resources+=(ns/default ns/openshift ns/kube-system ns/openshift-etcd ns/openshift-kni-infra)

# Storage Resources
resources+=(storageclasses persistentvolumes volumeattachments csidrivers csinodes volumesnapshotclasses volumesnapshotcontents)

# Image-source Resources
resources+=(imagecontentsourcepolicies.operator.openshift.io)

# Networking Resources
resources+=(networks.operator.openshift.io)

# Run the Collection of Resources using inspect
# running accross all-namespaces for the few "Autoscaler" resouces.
for resource in "${resources[@]}"; do
    oc adm inspect --dest-dir must-gather ${resource}
done

# Gather etcd information
/usr/bin/gather_etcd

# Gather Service Logs (using a suplamental Script); Scoped to Masters.
/usr/bin/gather_service_logs master

# Gather Windows Kubernetes component logs
/usr/bin/gather_windows_node_logs

# force disk flush to ensure that all data gathered is accessible in the copy container
sync
