person; $_roles= $_person['role_ids']; //print_r( $_person ); // if node_host is set then set id to that node's id. if( $_POST['slicename'] ) { $slicename= $_POST['slicename']; $slice_info= $api->GetSlices( array( $slicename ), array( "slice_id" ) ); header( "location: index.php?id=". $slice_info[0]['slice_id'] ); exit(); } // if no slice id, display list of slices if( !$_GET['id'] ) { // diplay site select list for admins if( in_array( 10, $_roles ) ) { // auto complete box for finding a slice drupal_set_html_head(' '); echo "
\n
\n"; if( $slicename ) echo "'$slicename' is not a valid slice name.\n"; echo "

\n \n \n

\n
\n"; // get site info $site_info= $api->GetSites( NULL, array( "site_id", "name", "peer_id" ) ); sort_sites( $site_info ); // Thierry -- try to select only one entry // xxx still not right if _person in several sites, but that is good enough //if( $site['site_id'] == $_POST['site_id'] || in_array( $site['site_id'], $_person['site_ids'] ) ) if ($_POST['site_id']) $selected_site_id = $_POST['site_id']; else if ($_GET['site_id']) $selected_site_id = $_GET['site_id']; else $selected_site_id = $_person['site_ids'][0]; echo "Select a site to view slices from:  "; echo "\n"; } if( $_POST['site_id'] ) { $selection="Site"; $site= array( intval( $_POST['site_id'] ) ); } elseif( $_GET['site_id'] ) { $selection="Site"; $site= array( intval( $_GET['site_id'] ) ); } else { $selection="Person"; $site= $_person['site_ids']; } // get site's slices $site_info= $api->GetSites( $site, array( "slice_ids","name" ) ); if ( $selection == "Site" ) drupal_set_title ("Slices for site " . $site_info[0]['name']); else drupal_set_title ("Slices for " . $_person['email'] . "'s sites"); // make an array of all slices foreach( $site_info as $site ) { foreach( $site['slice_ids'] as $slice_id ) { $slice_ids[]= $slice_id; } } if (empty ($slice_ids)) { echo "

No slice found, or all are expired."; } else { $slice_info= $api->GetSlices( $slice_ids, array( "slice_id", "name", "site_id", "state", "person_ids", "expires", "peer_id" ) ); //print '

'; print_r( $api->trace() ) ; print '
'; if ( ! $slice_info) { echo "

No Slices on site, or all are expired.\n"; } else { echo "\n"; echo "\n"; echo ""; echo ""; echo ""; echo "\n"; // create a list of person_ids $person_ids = array(); foreach( $slice_info as $slice ) { if ( !empty($slice['person_ids']) ) $person_ids = array_merge($person_ids, $slice['person_ids']); } // create an associative array of persons with person_id as the key $person_list = $api->GetPersons( $person_ids, array("person_id", "email") ); $persons = array(); foreach( $person_list as $person) { $persons[$person['person_id']] = $person; } foreach( $slice_info as $slice ) { $slice_id= $slice['slice_id']; $slice_name= $slice['name']; $slice_state= $slice['state']; $slice_expires= date( "M j, Y", $slice['expires'] ); $peer_id = $slice['peer_id']; $extraclass=""; if ( $peer_id ) $extraclass="plc-foreign"; echo "\n"; } echo "
Slice list
Slice NameUsersExpiration
$slice_name"; if( !empty( $slice['person_ids'] ) ) { foreach( $slice['person_ids'] as $person_id ) { $person = $persons[$person_id]; $id= $person['person_id']; $email= $person['email']; echo "$email
\n"; } } else { echo "None"; } echo "
$slice_expires
\n"; } } echo "\n"; echo "\n"; } // if nothing else then show slice info else { $slice_id= intval( $_GET['id'] ); // GetSlices API call $slice_info= $api->GetSlices( array( $slice_id ) ); if( empty( $slice_info ) ) { header( "location: index.php" ); exit(); } // pull all slice info to vars $instantiation= $slice_info[0]['instantiation']; $name= $slice_info[0]['name']; $url= $slice_info[0]['url']; $expires= date( "M j, Y", $slice_info[0]['expires'] ); $site_id= $slice_info[0]['site_id']; $description= $slice_info[0]['description']; $max_nodes= $slice_info[0]['max_nodes']; $node_ids=$slice_info[0]['node_ids']; $person_ids=$slice_info[0]['node_ids']; // get peer id $peer_id= $slice_info[0]['peer_id']; $person_ids= $slice_info[0]['person_ids']; $node_ids= $slice_info[0]['node_ids']; $slice_attribute_ids= $slice_info[0]['slice_attribute_ids']; // node info // looks unused // if( !empty( $node_ids ) ) // $nodes= $api->GetNodes( $node_ids, array( "node_id", "hostname" ) ); // site info $site_info= $api->GetSites( array( $site_id ), array( "site_id", "name", "person_ids" ) ); // gets all persons from site_id // person info if( !empty( $person_ids ) ) $persons= $api->GetPersons( $site_info[0]['person_ids'] , array( "person_id", "role_ids", "first_name", "last_name", "email" ) ); if( $persons ) { // gets site contacts pis stores in dict foreach( $persons as $person ) if( in_array( "20", $person['role_ids'] ) ) { $pis[]= array( "email" => $person['email'], "first_name" => $person['first_name'], "last_name" => $person['last_name'], "person_id" => $person['person_id'] ); } if ($pis) { sort_persons( $pis ); } } // slice attribute info if( !empty( $slice_attribute_ids ) ) $slice_attibs= $api->GetSliceAttributes( $slice_attribute_ids, array( "slice_attribute_id", "attribute_type_id", "value", "description", "min_role_id", "node_id" ) ); // gets attrib type info and combines it to form all attrib info array if( $slice_attibs ) { foreach( $slice_attibs as $slice_attib ) { $attrib_type= $api->GetSliceAttributeTypes( array( $slice_attib['attribute_type_id'] ), array( "attribute_type_id", "name", "description" ) ); $attributes[]= array( "slice_attribute_id" => $slice_attib['slice_attribute_id'], "attribute_type_id" => $slice_attib['attribute_type_id'], "name" => $attrib_type[0]['name'], "value" => $slice_attib['value'], "description" => $slice_attib['description'], "min_role_id" => $slice_attib['min_role_id'], "node_id" => $slice_attib['node_id'] ); } } drupal_set_title("Slice details for " . $name); // start form if( $peer_id ) { echo "

\n"; } // basic slice menu if( ! $peer_id ) { $actions= array( ''=>'Choose Action' ); if( in_array( 10, $_roles ) || ( in_array( 20, $_roles ) && in_array( $site_id, $_person['site_ids'] ) ) || in_array( $slice_id, $_person['slice_ids'] ) ) { $actions['renew']= "Renew $name"; $actions['nodes']= "Manage Nodes"; } if ( in_array( 10, $_roles ) || ( in_array( 20, $_roles ) && in_array( $site_id, $_person['site_ids'] ) ) ) { $actions['users']= "Manage Users"; $actions['delete']= "Delete $name"; } echo "
\n"; if (in_array( 10, $_roles )) { echo plc_event_button("slices","slice",$slice_id); echo ""; } echo plc_comon_button("slice_id",$slice_id); echo "\n"; echo "
\n"; echo "\n"; echo "
\n"; echo "
\n"; echo "
\n"; } echo "\n \n \n \n"; if( gmmktime() > $slice_info[0]['expires'] ) { $class1= ' style="color:red;"'; $msg1= '(slice is expired)'; } echo "Expiration: $expires   $msg1\n"; echo "\n"; echo "\n"; $href="'/db/nodes/index.php?slice_id=" . $slice_id . "'"; printf ("\n",$href,$href,count($node_ids)); $href="'/db/persons/index.php?slice_id=" . $slice_id . "'"; printf ("\n",$href,$href,count($person_ids)); echo "
Slice Name: $name
Description: $description
URL: $url
Instantiation: "; echo "
Site: ". $site_info[0]['name'] ."
# NodesTotal %d nodes
# UsersTotal %d users
\n"; if ( (!$class1) && in_array( $slice_id, $_person['slice_ids'] ) && (! $peer_id) ) echo "

Update Information\n"; echo "


\n"; // slice attributes if( $attributes ) { // builds 2 arrays, one for attribs,one for slivers foreach( $attributes as $attribute ) { if( empty( $attribute['node_id'] ) ) { $slice_attrib[]= $attribute; } else { $sliver_attrib[]= $attribute; $sliver_nodes[]= $attribute['node_id']; } } } // Get node info for those slivers $sliver_node_info= $api->GetNodes( $sliver_nodes, array( "node_id", "hostname" ) ); if( $sliver_node_info ) { foreach( $sliver_node_info as $sliv_node ) { $new_sliver_node_info[$sliv_node['node_id']]= $sliv_node; } } if( $peer_id ) { echo "
\n"; } // slice attributes $is_admin=in_array( 10, $_roles ); $is_in_slice=in_array( $slice_id, $_person['slice_ids'] ); $is_pi=in_array( 20, $_roles ); if( $slice_attrib ) { echo ""; echo ""; if( $is_admin ) echo ""; echo ""; echo "\n"; foreach( $attributes as $attribute ) { // ignore sliver attributes at this stage if( empty( $attribute['node_id'] ) ) { echo(""); if( $is_admin ) { printf(""; } if( $is_admin || ($is_pi && $is_in_slice) ) { printf ("", $attribute['slice_attribute_id'],$attribute['name']); } else { printf("",$attribute['name']); } printf("", $attribute['value'],$attribute['description']); echo ""; } } echo "
Slice Attributes
AttributeValueDescription
"); sprintf($label,"\\n [ %s = %s] \\n from %s",$attribute['name'],$attribute['value'],$name); echo plc_delete_link_button ('attrib_action.php?rem_id=' . $attribute['slice_attribute_id'], $label); echo "%s%s%s%s
\n"; } if( $is_admin || ($is_pi && $is_in_slice) ) echo "Add a Slice Attribute\n"; // sliver attributes if( $sliver_attrib ) { echo ""; echo ""; if( $is_admin ) echo ""; echo ""; echo "\n"; foreach( $attributes as $attribute ) { $nodename=$new_sliver_node_info[$attribute['node_id']]['hostname']; // consider only sliver attributes at this stage if( !empty( $attribute['node_id'] ) ) { echo(""); if( $is_admin ) { echo(""; } if( $is_admin ) { printf("",$attribute['slice_attribute_id'],$attribute['name']); } else { printf("",$attribute['name']); } printf("", $attribute['value'],$attribute['description'],$attribute['node_id'],$nodename); echo ""; } } echo "
Sliver Attributes
AttributeValueDescriptionNode
"); $label=sprintf("\\n [ %s = %s ] \\n from %s \\n on node %s", $attribute['name'],$attribute['value'],$name,$nodename); echo plc_delete_link_label('/db/nodes/sliver_action.php?rem_id=' . $attribute['slice_attribute_id'], $label); echo "%s%s%s%s%s
\n"; } echo "

\n"; if( $pis && !$peer_id ) { // site contacts echo "
Contacts
\n"; $pi_rows= count( $pis ); $tech_rows= count( $techs ); $table_row= 0; echo ""; if( $pis ) { echo "\n"; foreach( $pis as $pi ) { if( $table_row != 0 ) echo ""; printf("\n", $pi['person_id'],$pi['first_name'],$pi['last_name'],$pi['email'],$pi['email']); $table_row++; } } echo "
PI's:  
%s %s%s
\n

\n"; } echo "

Back to slice list\n"; } // Print footer include 'plc_footer.php'; ?>