#!/bin/sh
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Performs first-time lxd setup if necessary.

set -eu

info() {
  if [ -t 2 ]; then
    echo "lxd_setup: info: $*" >&2
  else
    logger -p syslog.info -t "lxd_setup" "$*"
  fi
}

error() {
  if [ -t 2 ]; then
    echo "lxd_setup: error: $*" >&2
  else
    logger -p syslog.err -t "lxd_setup" "$*"
  fi
}

die() {
  error "$*"
  exit 1
}

do_preseed() {
  local preseed_config="
# Storage pools
storage_pools:
- name: default
  driver: btrfs
  config:
    source: /mnt/stateful/lxd/storage-pools/default

# Network
# IPv4 address is configured by the host.
networks:
- name: lxdbr0
  type: bridge
  config:
    ipv4.address: none
    ipv6.address: none

# Profiles
profiles:
- name: default
  config:
    boot.autostart: false
  devices:
    root:
      path: /
      pool: default
      type: disk
    eth0:
      nictype: bridged
      parent: lxdbr0
      type: nic
    cros_containers:
      path: /opt/google/cros-containers
      source: /opt/google/cros-containers
      type: disk
    host-ip:
      path: /dev/.host_ip
      source: /run/host_ip
      type: disk
    wl0:
      source: /dev/wl0
      type: unix-char
      mode: 0666
"

  echo "${preseed_config}" | lxd init --preseed >/dev/null 2>&1 || \
    die "Failed to configure LXD"
}

main() {
  if ! lxc network show lxdbr0 >/dev/null 2>&1; then
    info "Performing initial LXD setup"
    do_preseed
  fi

  # Migration: add 0666 mode to default profile for /dev/wl0.
  lxc profile device set default wl0 mode 0666 || die "Failed to add /dev/wl0"

  # Migration: add host-ip device to default profile.
  if ! lxc profile device get default host-ip source; then
    lxc profile device add default host-ip disk \
        source=/run/host_ip path=/dev/.host_ip || die "Failed to add host_ip"
  fi

  if ! lxc profile device get default cros_containers source; then
    lxc profile device add default cros_containers disk \
        source=/opt/google/cros-containers path=/opt/google/cros-containers || \
      die "Failed to add cros_containers bind mount"
  fi

  # Migration: remove wayland`sock
  if lxc profile device get default wayland-sock source; then
    lxc profile device remove default wayland-sock
  fi

  # Now that the lxc command has been run, fix up permission for the config.
  chmod 755 "${LXD_CONF}"
  chown -R chronos:chronos "${LXD_CONF}"
}

main "$@"
