#!/bin/bash
# Copyright (c) 2018 by Cisco Systems, Inc.
# lv-functions : 
#   this script has functions which are used for creating host and sysadmin LVs.
#   it assumes that LV names are already set. they are currently set
#   by set_lv_param function. so, please make sure to have that called prior to 
#   Any function in this file.
#

function create_host_boot_and_data_lvs {
    # Create host_lv0 logical volume
    step_log_file $"lvcreate -L ${DISK_HOST_BOOT_SIZE} -n ${HOST_LV_NAME} ${LVG_NAME}"
    lvcreate -L ${DISK_HOST_BOOT_SIZE} -n ${HOST_LV_NAME} ${LVG_NAME} >&107 2>&1

    check_fs_partition "${HOST_LV_NAME_FULL}" "HostOs"
    step_log_file $"lvcreate -L ${DISK_HOST_SCRATCH_SIZE} -n ${HOST_LV_NAME_DATA_SCRATCH} ${LVG_NAME}"
    lvcreate -L ${DISK_HOST_SCRATCH_SIZE} -n ${HOST_LV_NAME_DATA_SCRATCH} ${LVG_NAME} >&107 2>&1
    check_fs_partition "${HOST_LV_NAME_DATA_SCRATCH_FULL}" "HostScratch"
    clean_partition "${HOST_LV_NAME_DATA_SCRATCH_FULL}"

    step_log_file $"lvcreate -L ${DISK_HOST_LOG_SIZE} -n ${HOST_LV_NAME_DATA_LOG} ${LVG_NAME}"
    lvcreate -L ${DISK_HOST_LOG_SIZE} -n ${HOST_LV_NAME_DATA_LOG} ${LVG_NAME} >&107 2>&1
    check_fs_partition "${HOST_LV_NAME_DATA_LOG_FULL}" "HostLog"
    clean_partition "${HOST_LV_NAME_DATA_LOG_FULL}"

    step_log_file $"lvcreate -L ${DISK_HOST_CONFIG_SIZE} -n ${HOST_LV_NAME_DATA_CONFIG} ${LVG_NAME}"
    lvcreate -L ${DISK_HOST_CONFIG_SIZE} -n ${HOST_LV_NAME_DATA_CONFIG} ${LVG_NAME} >&107 2>&1
    check_fs_partition "${HOST_LV_NAME_DATA_CONFIG_FULL}" "HostConfig"
    clean_partition "${HOST_LV_NAME_DATA_CONFIG_FULL}"
}

function create_sysadmin_boot_and_data_lv {
    step_log_console
    step_log_console $'---Starting to prepare calvados logical volume---'

    # Create calvados_lv0 logical volume
    step_log_file $"lvcreate -L ${DISK_CALVADOS_BOOT_SIZE} -n ${CALVADOS_LV_NAME} ${LVG_NAME}"
    lvcreate -L ${DISK_CALVADOS_BOOT_SIZE} -n ${CALVADOS_LV_NAME} ${LVG_NAME} >&107 2>&1

    # Create calvados_data_lv0 logical volume
    step_log_file $"lvcreate -L ${DISK_CALVADOS_DATA_SIZE} -n ${CALVADOS_LV_NAME_DATA} ${LVG_NAME}"
    lvcreate -L ${DISK_CALVADOS_DATA_SIZE} -n ${CALVADOS_LV_NAME_DATA} ${LVG_NAME} >&107 2>&1

    #-----Creating Sub partitions-----
    step_log_console $"Create sub partition on /dev/${CALVADOS_LV_PART}"
    check_fix_disk_part "${CALVADOS_LV_PART_BOOT}" "1" "/tmp/fdisk_boot.input"
    mark_part_bootable "${CALVADOS_LV_PART_BOOT}" "${CALVADOS_LV_PART_BOOT}p1"

    step_log_console $"Create data sub partition on /dev/${CALVADOS_LV_PART_DATA}"
    check_fix_disk_part "${CALVADOS_LV_PART_DATA}" "${TOTAL_SUB_PART_DATA}" "/tmp/fdisk_data.input"

    for subprt in p1 ; do
      loop_dev=$(setup_loop_offset "/dev/${CALVADOS_LV_PART_BOOT}" "${subprt}")
      if [ -z "${loop_dev}" ]; then
        step_log_console "Cannot setup loop device for ${CALVADOS_LV_PART_BOOT}${subprt}"
      fi   
      check_fs_partition "${loop_dev}" "Calvados"
      losetup -d ${loop_dev}
    done
    for subprt in p1 p2 p3 ; do
      loop_dev=$(setup_loop_offset "/dev/${CALVADOS_LV_PART_DATA}" "${subprt}")
      if [ -z "${loop_dev}" ]; then
        step_log_console "Cannot setup loop device for ${CALVADOS_LV_PART_DATA}${subprt}"
      fi   
      check_fs_partition "${loop_dev}" "VMMOUNT"

      # cleaning data partitions on sysadmin-vm.
      clean_partition "${loop_dev}"
      losetup -d ${loop_dev}
    done
}
