#!/usr/bin/perl
#
# sm_init works for a fresh installation only
#
# purpose:
#  1. correctly re-format store  -b 1024 -i 1024
#  2. place store into fstab
#  3. mount store for a first time
#
# LINUX specific 
# TBD: sm_scan has to be adopted to show store always

use strict;
use Data::Dumper;

my $USR      ='apl';
my $APL      ="$ENV{APL}";
my $SCAN     ="$APL/sm/sbin/sm_scan";
my $UMOUNT   ="$APL/sm/sbin/sm_umount";
my $MOUNT    ="$APL/sm/sbin/sm_mount";
my $DF       ='/bin/df -P';
my $SYSUMOUNT="/bin/umount";
my $TUNE     ='/sbin/tune2fs';
my $XFSADM='/usr/sbin/xfs_admin';
my $MKFS     ='/sbin/mkfs.xfs';
my $FSTAB    ="/etc/fstab";
my $VER      =$ENV{APL_SM_VER};
my $GRP      =$ENV{APL_HTTPD_GRP};
# MAIN ========================================================================
exit 0 if $ENV{APL_MOD} eq 'SKMHA';       # do not configure storage if SKMHA

#---------- Unconditionaly correct store if exists
#           it won't touch store if it defined differently
if( -e "/dev/mapper/vg0-store" ) {
  `$DF /vasm/stage/store | grep -q /vasm/stage/store`;
  if(!$?) {                    # store in stage location
    `$SYSUMOUNT /dev/mapper/vg0-store`;
    print `$MKFS -f -L va-store /dev/mapper/vg0-store`;
    print `/bin/mount -a`;
  }
  `$XFSADM -L va-store /dev/mapper/vg0-store`;
  ## `#$TUNE -L va-store -e continue -m 0 /dev/mapper/vg0-store`;  
}

#---------- Unconditionaly set names for default volume if exists
if( -e "/dev/mapper/vg0-default") {
  `$SYSUMOUNT /dev/mapper/vg0-default 2>&1`;
  `$XFSADM -L va-default /dev/mapper/vg0-default`;
}

#---------- Find store in the scan
open(SCAN, "$SCAN va-store 2>/dev/null|") || die ("Cannot run $SCAN");
($_)=grep {m!\s+va-store\s+!} <SCAN>; # take only first string
close SCAN;
die ("Init stopped since va-store is not found") if ! $_;
# free fa9abce4-3cba-4d8d-8dce-b4927cebf5eb va-store 7782 /dev/mapper/vg0-store 
my ($stat,$uuid,$dev)=m|(\S+)\s+(\S+)\s+va-store\s+\S+\s+(\S+)|;

#----------Store section: correct fstab, mount store
`$SYSUMOUNT $dev >/dev/null 2>&1`;   # if it still mounted
`$UMOUNT store >/dev/null 2>&1`;     # unoumt with force if mounted and in use 
`perl -ni -e 'print if not m|/vasm(/stage)*/store|'   $FSTAB`;#rm store if any
`perl -ni -e 'print if not m|/vasm(/stage)*/default|' $FSTAB`;#rm default if any
open (FSTAB, ">>$FSTAB") ||  die ("Cannot open $FSTAB");
print(FSTAB "LABEL=va-store\t\t/vasm/store\t\txfs\tnoatime,noexec,nosuid\t\t1 2\n");
close FSTAB;
`$MOUNT $uuid '' '' store`;              # mount store to /vasm/store
mkdir "/vasm/store/$VER",0755;           # create ver directory
`chown $USR:$GRP /vasm/store/$VER`;      # set owner for directory
