#!/bin/bash

# Copyright 2017 The Openstack-Helm Authors.
#
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
#    not use this file except in compliance with the License. You may obtain
#    a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#    License for the specific language governing permissions and limitations
#    under the License.
set -xe

# Set the KUBELET_CONTAINER env var
source /etc/kubelet-container

# Detrmine the Cgroup driver in use by Docker
CGROUP_DRIVER=$(docker info | awk '/^Cgroup Driver:/ { print $NF }')

if [[ "${KUBELET_CONTAINER}" == "this_one" ]]; then
  exec kubelet-real \
        --containerized=true \
        --enable-cri=false \
        --cgroup-driver=${CGROUP_DRIVER} "${@}"
else
  # Lets remove any old containers
  docker rm -f kubelet || true

  # Launch the container
  exec docker run \
        --name kubelet \
        --restart=always \
        --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro \
        --volume=/:/rootfs:ro \
        --volume=/dev:/dev:rshared \
        --volume=/lib/modules:/lib/modules:ro \
        --volume=/var/run/netns:/var/run/netns:rw \
        --volume=/sys:/sys:ro \
        --volume=/etc/machine-id:/etc/machine-id:ro \
        --volume=/opt/cni:/opt/cni:rw \
        --volume=/etc/cni/net.d:/etc/cni/net.d:rw \
        --volume=/var/lib/docker/:/var/lib/docker:rw \
        --volume=/var/lib/kubelet/:/var/lib/kubelet:rshared \
        --volume=/var/run:/var/run:rw \
        --volume=/var/log/containers:/var/log/containers:rw \
        --volume=/etc/kubernetes:/etc/kubernetes:rw \
        --volume=/etc/hosts:/etc/hosts:rw \
        --volume=/etc/resolv.conf:/etc/resolv.conf:rw \
        --net=host \
        --privileged=true \
        --pid=host \
        --ipc=host \
        ${KUBELET_CONTAINER} \
          kubelet \
            --containerized=true \
            --enable-cri=false \
            --cgroup-driver=${CGROUP_DRIVER} "${@}"
fi
