mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-04 05:12:30 +00:00 
			
		
		
		
	added capacity table to store cpu, memory and disk sizes for nodes
This commit is contained in:
		@@ -1500,6 +1500,20 @@ mic => {
 | 
			
		||||
        disable => "Do not use.  tabprune will not work if set to yes or 1",
 | 
			
		||||
    },
 | 
			
		||||
},
 | 
			
		||||
capacity => {
 | 
			
		||||
    cols => [qw(node cputype cpucount memory disksize comments disable)],
 | 
			
		||||
    keys => [qw(node)],
 | 
			
		||||
    table_desc => 'The basic node capacity.',
 | 
			
		||||
    descriptions => {
 | 
			
		||||
        node => 'The node name or group name.',
 | 
			
		||||
        cputype => 'The cpu model name for the node.',
 | 
			
		||||
        cpucount => 'The number of cpus for the node.',
 | 
			
		||||
        memory => 'The size of the memory for the node.',
 | 
			
		||||
        disksize => 'The size of the disks for the node.',
 | 
			
		||||
        comments => 'Any user-provided notes.',
 | 
			
		||||
        disable =>  "Set to 'yes' or '1' to comment out this row.",
 | 
			
		||||
    },
 | 
			
		||||
},
 | 
			
		||||
 | 
			
		||||
); # end of tabspec definition
 | 
			
		||||
 | 
			
		||||
@@ -2478,7 +2492,26 @@ my @nodeattrs = (
 | 
			
		||||
		tabentry => 'mic.powermgt',
 | 
			
		||||
		access_tabentry => 'mic.node=attr:node',
 | 
			
		||||
	},
 | 
			
		||||
	
 | 
			
		||||
#####################
 | 
			
		||||
##   capacity   table    #
 | 
			
		||||
#####################
 | 
			
		||||
	{attr_name => 'cputype',
 | 
			
		||||
		tabentry => 'capacity.cputype',
 | 
			
		||||
		access_tabentry => 'capacity.node=attr:node',
 | 
			
		||||
	},
 | 
			
		||||
	{attr_name => 'cpucount',
 | 
			
		||||
		tabentry => 'capacity.cpucount',
 | 
			
		||||
		access_tabentry => 'capacity.node=attr:node',
 | 
			
		||||
	},
 | 
			
		||||
	{attr_name => 'memory',
 | 
			
		||||
		tabentry => 'capacity.memory',
 | 
			
		||||
		access_tabentry => 'capacity.node=attr:node',
 | 
			
		||||
	},
 | 
			
		||||
	{attr_name => 'disksize',
 | 
			
		||||
		tabentry => 'capacity.disksize',
 | 
			
		||||
		access_tabentry => 'capacity.node=attr:node',
 | 
			
		||||
	},
 | 
			
		||||
		
 | 
			
		||||
  );	# end of @nodeattrs that applies to both nodes and groups
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -75,7 +75,17 @@ elif [ -r /proc/device-tree/model ]; then #POWER
 | 
			
		||||
	MTM=`cat /proc/device-tree/model |awk -F, '{print $2}'`
 | 
			
		||||
fi
 | 
			
		||||
CPUCOUNT=`cat /proc/cpuinfo |grep "model name"|wc -l`
 | 
			
		||||
MEMORY=`cat /proc/meminfo |grep MemTotal|awk '{print $2}'`
 | 
			
		||||
 | 
			
		||||
# The MEMORY will look like this: 32868920
 | 
			
		||||
MEMORY=`cat /proc/meminfo |grep MemTotal|awk '{printf "%.0fMB\n", $2/1024}'`
 | 
			
		||||
# The MEMORY will look like this: 32GiB
 | 
			
		||||
#MEMORY=`lshw -C memory -short |grep "System Memory"|awk -F' ' '{print $3}'`
 | 
			
		||||
 | 
			
		||||
# The DISKSIZE will look like this: /dev/sda:250GB,/dev/sdb:250GB
 | 
			
		||||
#DISKSIZE=`lshw -C disk -short |grep disk |awk -F' ' '{print $2":"$4}'|sed 'N;s/\n/,/'`
 | 
			
		||||
# The DISKSIZE will look like this: sdb:250GB,sda:250GB
 | 
			
		||||
DISKSIZE=`cat /proc/partitions |grep -e "sd.\>" |awk -F' ' '{printf "%s:%.0fGB\n", $4, $3*0.000001024}' |sed 'N;s/\n/,/'`
 | 
			
		||||
 | 
			
		||||
UUID=`sed -e 's/\(..\)\(..\)\(..\)\(..\)-\(..\)\(..\)-\(..\)\(..\)/\4\3\2\1-\6\5-\8\7/' /sys/devices/virtual/dmi/id/product_uuid`
 | 
			
		||||
grep "model name" /proc/cpuinfo | while read line; do #to avoid pulling in tail, we do a goofy thing
 | 
			
		||||
	echo $line > /tmp/cpumod
 | 
			
		||||
@@ -90,6 +100,7 @@ fi
 | 
			
		||||
echo "<cpucount>$CPUCOUNT</cpucount>" >> /tmp/discopacket
 | 
			
		||||
echo "<cputype>$CPUTYPE</cputype>" >> /tmp/discopacket
 | 
			
		||||
echo "<memory>$MEMORY</memory>" >> /tmp/discopacket
 | 
			
		||||
echo "<disksize>$DISKSIZE</disksize>" >> /tmp/discopacket
 | 
			
		||||
echo "<uuid>$UUID</uuid>" >> /tmp/discopacket
 | 
			
		||||
if [ "$MTM" != "unknown" ]; then
 | 
			
		||||
	echo "<mtm>$MTM</mtm>" >> /tmp/discopacket
 | 
			
		||||
 
 | 
			
		||||
@@ -153,6 +153,27 @@ sub process_request {
 | 
			
		||||
            $vpdtab->setNodeAttribs($node,{serial=>$request->{serial}->[0]});
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    # save basic capacities in the capacity table
 | 
			
		||||
    if (defined($request->{cpucount}) or defined($request->{cputype}) or defined($request->{memory}) or defined($request->{disksize})) {
 | 
			
		||||
	my $basicdata;
 | 
			
		||||
        my $cap_tab = xCAT::Table->new("capacity",-create=>1);
 | 
			
		||||
        if ($request->{memory}->[0]) {
 | 
			
		||||
	    $basicdata->{memory} = $request->{memory}->[0];
 | 
			
		||||
        }
 | 
			
		||||
        if ($request->{disksize}->[0]) {
 | 
			
		||||
	    $basicdata->{disksize} = $request->{disksize}->[0];
 | 
			
		||||
        }
 | 
			
		||||
        if ($request->{cpucount}->[0]) {
 | 
			
		||||
	    $basicdata->{cpucount} = $request->{cpucount}->[0];
 | 
			
		||||
        }
 | 
			
		||||
        if ($request->{cputype}->[0]) {
 | 
			
		||||
	    $basicdata->{cputype} = $request->{cputype}->[0];
 | 
			
		||||
        }
 | 
			
		||||
	$cap_tab->setNodeAttribs($node, $basicdata);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    my $nrtab;
 | 
			
		||||
    my @discoverynics;
 | 
			
		||||
    my @forcenics; #list of 'eth' style interface names to require to come up on post-discovery client dhcp restart
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user