// expects: node_id
$known_actions []= "update-node";
// expects: node_id, hostname, model
+$known_actions []= "attach-pcu";
+// expects: node_id, pcu_id, port (pcu_id <0 means detach)
//////////////////////////////////////// interfaces
$known_actions []= "delete-interfaces";
// expects: interface_ids
$known_actions []="add-interface";
// expects: node_id & interface details
+$known_actions []="new-interface";
+// expects: node_id
$known_actions []="update-interface";
// expects: interface_id & interface details
}
case 'update-node': {
+ $node_id=intval($_POST['node_id']);
$hostname= $_POST['hostname'];
$model= $_POST['model'];
$fields= array( "hostname"=>$hostname, "model"=>$model );
- $api->UpdateNode( intval( $node_id ), $fields );
+ $api->UpdateNode( $node_id, $fields );
$error= $api->error();
if( empty( $error ) ) {
break;
}
+ // this code will ensure that at most one PCU gets attached to the node
+ case 'attach-pcu': {
+ $node_id=intval($_POST['node_id']);
+ $pcu_id=intval($_POST['pcu_id']);
+ $port=intval($_POST['port']);
+ // always start with deleting former PCUs
+ $nodes = $api->GetNodes(array($node_id),array('pcu_ids'));
+ $former_pcu_ids = $nodes[0]['pcu_ids'];
+ if ($former_pcu_ids) foreach ($former_pcu_ids as $former_pcu_id) {
+ if ($api->DeleteNodeFromPCU($node_id,$former_pcu_id) == 1)
+ drupal_set_message ('Detached node ' . $node_id . ' from PCU ' . $pcu_id);
+ else
+ drupal_set_error ('Could not detach node ' . $node_id . ' from PCU ' . $pcu_id);
+ }
+ // re-attach only if provided pcu_id >=0
+ if ($pcu_id >= 0) {
+ if ($api->AddNodeToPCU($node_id,$pcu_id,$port) == 1)
+ drupal_set_message ('Attached node ' . $node_id . ' to PCU ' . $pcu_id . ' on port ' . $port);
+ else
+ drupal_set_error ('Failed to attach node ' . $node_id . ' to PCU ' . $pcu_id . ' on port ' . $port);
+ } else {
+ drupal_set_message ('Detached node from all PCUs');
+ }
+
+ plc_redirect(l_node($node_id));
+ break;
+ }
+
+
//////////////////////////////////////////////////////////// interfaces
case 'delete-interfaces' : {
$interface_ids=$_POST['interface_ids'];
drupal_set_error ("Could not delete all selected interfaces, only $counter were removed");
plc_redirect(l_node($_POST['node_id']));
}
-
+ case 'new-interface': {
+ plc_redirect(l_interface_add($_POST['node_id']));
+ }
case 'add-interface': {
$node_id=$_POST['node_id'];
foreach ($interface_details as $field) {
$interface[$field]= intval( $interface[$field] );
}
}
- $result=$api->AddInterface( intval( $node_id ), $interface );
- if ($result >0 )
- drupal_set_message ("Interface $result added into node $node_id");
- else
+ $interface_id =$api->AddInterface( intval( $node_id ), $interface );
+ if ($interface_id >0 ) {
+ $api->begin();
+ $api->AddInterfaceTag($interface_id,"alias",strval($interface_id));
+ $api->AddInterfaceTag($interface_id,"ifname","eth0");
+ list($id1, $id2) = $api->commit();
+ if ( $id1 > 0 && $id2 > 0 ) {
+ drupal_set_message ("Interface $interface_id added into node $node_id");
+ } else {
+ drupal_set_error ("Could not add interface tags to interface $interface_id");
+ }
+ } else {
drupal_set_error ("Could not create interface");
+ }
plc_redirect (l_node($node_id));
}
foreach ($interface_details as $field) {
$interface[$field]= $_POST[$field];
if( in_array( $field, array( 'bwlimit', 'node_id' ) ) ) {
- $interface[$field]= intval( $interface[$field] );
+ if ( intval($interface[$field]) != 0 ) {
+ $interface[$field]= intval( $interface[$field]);
+ } elseif ($field=='bwlimit' ) {
+ $interface[$field] = NULL;
+ }
}
}
$result=$api->UpdateInterface( intval( $interface_id ), $interface );
if ($_POST['login_base'])
$fields['login_base'] = $_POST['login_base'];
- if ($_POST['max_slices'])
+ if (isset($_POST['max_slices']))
$fields['max_slices'] = intval($_POST['max_slices']);
+ if (isset($_POST['enabled'])) {
+ $fields['enabled'] = (bool)$_POST['enabled'];
+ }
$retcod=$api->UpdateSite( intval( $site_id ), $fields );
if ($retcod == 1)
$slice_id = intval ($_POST['slice_id']);
$person_ids = $_POST['person_ids'];
+ $slice_name = "";
+ $tmp_slices = $api->GetSlices($slice_id, array("name"));
+ if (count($tmp_slices) > 0) {
+ $tmp_slice = $tmp_slices[0];
+ $slice_name = $tmp_slice["name"];
+ }
+ $notify_subject = "Removed from slice: " . $slice_name;
+ $notify_body = sprintf("You have been removed from the slice %s.
+
+Our support team will be glad to answer any question that you might have.
+",$slice_name);
+ $notify_person_ids = array();
+
$success=true;
$counter=0;
foreach( $person_ids as $person_id ) {
if ($api->DeletePersonFromSlice(intval($person_id),$slice_id) != 1)
$success=false;
- else
+ else {
+ array_push($notify_person_ids, intval($person_id));
$counter++;
+ }
}
- if ($success)
+ if ($success) {
+ $api->NotifyPersons($notify_person_ids,$notify_subject,$notify_body);
drupal_set_message ("Deleted $counter person(s)");
+ }
else
drupal_set_error ("Could not delete all selected persons, only $counter were removed");
plc_redirect(l_slice($slice_id) . " &show_persons=true");
case 'add-persons-in-slice': {
$slice_id = intval ($_POST['slice_id']);
$person_ids = $_POST['person_ids'];
+
+ $slice_name = "";
+ $tmp_slices = $api->GetSlices($slice_id, array("name"));
+ if (count($tmp_slices) > 0) {
+ $tmp_slice = $tmp_slices[0];
+ $slice_name = $tmp_slice["name"];
+ }
+ $notify_subject = "Added to slice: " . $slice_name;
+ $notify_body = sprintf("You have been added to the slice %s as a user.
+
+You can go to your slice page following the link below:
+https://%s:%d/db/slices/index.php?id=%d
+
+Our support team will be glad to answer any question that you might have.
+",$slice_name,PLC_WWW_HOST,PLC_WWW_SSL_PORT,$slice_id);
+ $notify_person_ids = array();
$success=true;
$counter=0;
foreach ($person_ids as $person_id) {
if ($api->AddPersonToSlice(intval($person_id),$slice_id) != 1)
$success=false;
- else
+ else {
+ array_push($notify_person_ids, intval($person_id));
$counter++;
+ }
}
- if ($success)
+ if ($success) {
+ $api->NotifyPersons($notify_person_ids,$notify_subject,$notify_body);
drupal_set_message ("Added $counter person(s)");
+ }
else
drupal_set_error ("Could not add all selected persons, only $counter were added");
plc_redirect(l_slice($slice_id) . "&show_persons=true" );