#!/usr/bin/perl
# removes the configuration of a node so that the next time you reboot 
# a node it forces it to go through the discovery process.
# usage: rmnodecfg <noderange>
# this does not remove it completely from xCAT.  You may want to do this
# command before running noderm to completely purge the system of the node
BEGIN
{
    $::XCATROOT = $ENV{'XCATROOT'} ? $ENV{'XCATROOT'} : '/opt/xcat';
}

use lib "$::XCATROOT/lib/perl";
use xCAT::Utils;
use strict;
use Socket;

my $blades = shift;
if(! $blades) {
  print "Please specify a noderange of blades to remove\n";
  exit; 
}

my $tftpdir = xCAT::Utils->getTftpDir();

foreach my $blade (`/opt/xcat/bin/nodels $blades`){
  chomp($blade);
  my $hex = ip2hex($blade); 
  my $cmd = "nodech $blade chain.currstate= chain.currchain= chain.chain=";
  $cmd = "chtab -d node=$blade chain";
  print "$cmd\n";
  `$cmd`;
  $cmd = "chtab -d node=$blade mac";
  print "$cmd\n";
  `$cmd`;
  $cmd = "makedhcp -d $blade";
  print "$cmd\n";
  `$cmd`;
  $cmd = "rm $tftpdir/pxelinux.cfg/$blade";
  print "$cmd\n";
  `$cmd`;
  if($hex){
    $cmd = "rm $tftpdir/pxelinux.cfg/$hex";
    print "$cmd\n";
    `$cmd`;     
  }     
}

sub ip2hex {
  my $node = shift;
  my $ip = '';
  my @quad;
  my $hex = '';
  my $packed_ip = gethostbyname($node);
  if(defined $packed_ip){
    $ip = inet_ntoa($packed_ip);
    @quad = split('\.', $ip);
    $hex = sprintf("%02X%02X%02X%02X", @quad);
  }
  return $hex;
}