#!/bin/sh

# Seeing issues w/ buildah log output being intermingled with the container
# output, so adding a sleep in an attempt to let the buildah log output
# stop before the container output starts
sleep 10
cgroupv1Val=$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes) || true
echo "cgroupv1Val is ${cgroupv1Val}"
if [ "$cgroupv1Val" = "419430400" ]; then
  echo "MEMORY=${cgroupv1Val}"
else
  memory_max_list=$(find /sys/fs/cgroup/kubepods.slice -name memory.max)
  for item in ${memory_max_list};
  do
    echo "${item}"
    cgroupv2Val=$(cat "${item}")
    echo "cgroupv2Val is ${cgroupv2Val}"
    if [ "$cgroupv2Val" = "419430400" ]; then
      echo "MEMORY=${cgroupv2Val}"
    fi
  done
fi
cgroupv1Val=$(cat /sys/fs/cgroup/memory/memory.memsw.limit_in_bytes) || true
echo "cgroupv1Val is ${cgroupv1Val}"
if [ "$cgroupv1Val" = "419430400" ]; then
  echo "MEMORYSWAP=${cgroupv1Val}"
else
  # ok swap is treated differently between cgroup v1 and v2.  In v1, memory.memsw.limit_in_bytes
  # is memory+swap.  In v2, memory.swap.max is just swap.  So with our quota in place, we will
  # find a memory.swap.max file with a value of '0' instead of 'max'.
  memory_swap_max_list=$(find /sys/fs/cgroup/kubepods.slice -name memory.swap.max)
  for item in ${memory_swap_max_list};
  do
    echo "${item}"
    cgroupv2Val=$(cat "${item}")
    echo "cgroupv2Val is ${cgroupv2Val}"
    if [ "$cgroupv2Val" = "0" ]; then
      # so that our associated ginkgo test case does not have to distinguish between cgroup v1
      # and v2, we echo the expected v1 string when we find a memory.swap.max file with '0' in it.
      echo "MEMORYSWAP=419430400"
    fi
  done
fi

if [ -e /sys/fs/cgroup/cpuacct,cpu ]; then
	quota=$(cat /sys/fs/cgroup/cpuacct,cpu/cpu.cfs_quota_us)
	echo QUOTA= && cat /sys/fs/cgroup/cpuacct,cpu/cpu.cfs_quota_us
	echo SHARES= && cat /sys/fs/cgroup/cpuacct,cpu/cpu.shares
	echo PERIOD= && cat /sys/fs/cgroup/cpuacct,cpu/cpu.cfs_period_us
else
	quota=$(cat /sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us)
	echo QUOTA= && cat /sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
	echo SHARES= && cat /sys/fs/cgroup/cpu,cpuacct/cpu.shares
	echo PERIOD= && cat /sys/fs/cgroup/cpu,cpuacct/cpu.cfs_period_us
fi

if [ "${quota}" = "-1" ]; then
	cat /proc/self/cgroup
	cat /proc/self/mountinfo
	findmnt
fi
