#!/usr/bin/perl
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
#  
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 2000,2019 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
# sccsid = "@(#)30   1.18   src/rsct/rm/SensorRM/cli/bin/rmsensor.perl, sensorcli, rsct_rady, rady2035a 11/12/15 16:37:21"

# Removes an RMC IBM.Sensor resource

use strict;
use locale;
BEGIN
  {
	# this enables us to redirect where it looks for other RSCT files during development
	$::rsctroot = $ENV{'RSCT_ROOT'} || '/opt/rsct';
	$::rsctpm = "$::rsctroot/pm";
	$::rsctmsgmaps = "$::rsctroot/msgmaps";
  }

use lib $::rsctpm;
use Getopt::Long;
use CT_cli_utils qw(printIMsg printEMsg);
use CT_cli_input_utils qw(
    check_input_file
);
use MC_cli_utils qw(
     read_from_Stdin
);

$main::PROGNAME = 'rmsensor';
$main::MSGCAT = 'sensorcli.cat';
$main::LSMSG = '/opt/rsct/bin/ctdspmsg';

# For the usage, see sensorcli.msg
#sub usage { printIMsg('IMsgRmsensorUsage');  exit (scalar(@_) ? $_[0] : 1); }
#sub usage { printIMsg('IMsgRmsensorUsage2');  exit (scalar(@_) ? $_[0] : 1); }
sub usage { printIMsg('IMsgRmsensorUsage3');  exit (scalar(@_) ? $_[0] : 1); }

Getopt::Long::Configure ("bundling", "no_auto_abbrev",
                         "no_ignore_case", "require_order",
                         "prefix_pattern=(--|-)");
# Parse the cmd line args and check them
if(!GetOptions(
                'h|help|version' ,
                'a' ,
                'm' ,
                'v' ,
                'V',
                'n=s',
                'N=s' ))
{
    &usage;
}
if ($::opt_h) { &usage(0); }
if (scalar(@ARGV) < 1 ||
    (defined($::opt_n) && defined($::opt_N)) ||
    ($::opt_a && defined($::opt_N)) ||
    ($::opt_a && defined($::opt_n)))
{
    &usage;
}

if ($::opt_V) { $::opt_v = 1; }

# determine the class to use
my $CLASSNAME = "IBM.Sensor";
if ($::opt_m) { $CLASSNAME = "IBM.MicroSensor"; }

my $name = join("','",@ARGV);
my $selectstr = q/Name IN ('/ . join("','",@ARGV) . q/')/;
my $node_file_flag = 0;                           # node_file_flag =1         if -N was specified.
my $node_file_name = "";                          # node_file_name
my $node_file_from_stdin = 0;                     # node_file_from_stdin = 1  if -N '-'

# set -api command delimiters
my $DELIMITERI = "tvitvitvi";
my $DELIMITERO = "tvotvotvo";

if ($::opt_a || defined($::opt_n) || defined($::opt_N))
{
    if ($ENV{CT_MANAGEMENT_SCOPE}!=2 && $ENV{CT_MANAGEMENT_SCOPE}!=3)
    {
        $ENV{CT_MANAGEMENT_SCOPE}=4;
    }
}

if (defined($::opt_n))
  {
	my @nodes = split(/[, ]+/,$::opt_n);
	if (length($selectstr)) { $selectstr .= ' && '; }
	$selectstr .= q/NodeNameList IN ('/ . join("','",@nodes) . q/')/;
  }

if (defined($::opt_N))
{
    $node_file_name = $::opt_N;
    $node_file_flag = 1;

    if ( $node_file_name eq "-" )
    {
        $node_file_from_stdin = 1;
    } else
    {
        if ( check_input_file($node_file_name) )
        {
            exit(1);
        }
    }
}
if (length($selectstr)) { $selectstr = qq("$selectstr"); }

my $cmd;
if ( $node_file_flag == 0)
{
    $cmd = qq(/usr/bin/rmrsrc-api -I $DELIMITERI -D $DELIMITERO -s ${CLASSNAME}${DELIMITERI}$selectstr 2>&1);
}
else
{
    if ($node_file_from_stdin != 0) { $node_file_name = read_from_Stdin(); }
    $cmd = qq(/usr/bin/rmrsrc-api -I $DELIMITERI -D $DELIMITERO -w ${CLASSNAME}${DELIMITERI}${selectstr}${DELIMITERI}$node_file_name 2>&1);
}
if ($::opt_v) { $main::PROGNAME = 'lssensor'; printIMsg('IMsgRmcCmd', $cmd); $main::PROGNAME = 'rmsensor'; }

my @output = `$cmd`;
my $rc = $? >> 8;
# remove temp node file if from STDIN
if ($node_file_from_stdin != 0)
{
    unlink($node_file_name);
}
if ($rc)
  {
	if (!$::opt_v) { $output[0] =~ s/.*${DELIMITERO}.*${DELIMITERO}.*${DELIMITERO}.*${DELIMITERO}.*${DELIMITERO}//; }
	if ($rc == 6)
            {
                if ($::opt_v) { print @output; }
                printEMsg('EMsgResNotDefinedRm',$name);
            }
            else
            {
                print @output;
            }
	exit $rc;
  }

exit $rc;