xcat-core/xCAT-web/machines/noderangesource.php
2008-10-29 13:57:19 +00:00

52 lines
1.6 KiB
PHP

<?php
// Gets the nodes and groups for group/node js widget
$TOPDIR = '..';
require_once "$TOPDIR/lib/functions.php";
require_once "$TOPDIR/jq/jsonwrapper.php";
if (isset($_GET['id'])) {
$id = $_GET['id'];
}
if ($id == "0") {
$id = '/.*';
} else {
$id=preg_replace('/^,/','',$id);
}
$rvals=docmd('extnoderange',$id,array('subgroups'));
$parents=array();
$root=1;
if ($id == '/.*') {
$id=',';
} else {
$parents=split("@",$id);
$id=",$id@";
$root=0;
}
//unset($rvals->xcatresponse->serverdone[0]);
$numsubgroups=count($rvals->xcatresponse->intersectinggroups);
$numnodes=count($rvals->xcatresponse->node);
$jdata=array();
if ($numnodes >= $numsubgroups) { #If there are few enough subgroups to be helpful filters, add them in
foreach ($rvals->xcatresponse->intersectinggroups as $group) {
if (! in_array("$group",$parents)) {
$jdata[]= array("data"=>"$group",
"attributes"=>array("id"=>"$id$group",
"rel"=>'group'),
"state"=>'closed');
}
}
} #If there were more groups than nodes, leave the signal to noise ratio down
if ($root==0) {
foreach ($rvals->xcatresponse->node as $node) {
$jdata[] = array("data"=>"$node",
"attributes"=>array("id"=>",$node",
"rel"=>'node'));
}
}
# header('Content-type: text/html');
echo json_encode($jdata);
?>