Provide better error reporting and error checking when updating a network
authorStephen Soltesz <soltesz@cs.princeton.edu>
Tue, 16 Jun 2009 22:18:12 +0000 (22:18 +0000)
committerStephen Soltesz <soltesz@cs.princeton.edu>
Tue, 16 Jun 2009 22:18:12 +0000 (22:18 +0000)
interface on stage3.

This is an essential fix for handling errors on a bad static network.

application/controllers/register.php
application/views/stage3_node_choose.php

index 242d860..f3b4075 100644 (file)
@@ -324,7 +324,6 @@ class Register extends Controller {
        function add_node(&$data)
        {
                global $api, $plc;
-               print "Adding Node\n<br>";
                $hostname = trim($_REQUEST['hostname']);
                $model= trim($_REQUEST['model']);
                $method = trim($_REQUEST['method']);
@@ -361,10 +360,16 @@ class Register extends Controller {
                        $optional_vals= array( "hostname"=>$hostname, "model"=>$model );
 
                        $site_id= $data['site_id'];
-                       $node_id= $api->AddNode( intval( $site_id ), $optional_vals );
-                       if( $node_id <= 0 ) {
-                               $data['error'] = $api->error();
-                               print $data['error'];
+                       // Try to get node in case this is from an error:
+                       $nodes = $api->GetNodes($optional_vals);
+                       if ( count($nodes) > 0 ) {
+                               $node_id= $nodes[0]['node_id'];
+                       } else {
+                               $node_id= $api->AddNode( intval( $site_id ), $optional_vals );
+                               if( $node_id <= 0 ) {
+                                       $data['error'] = $api->error();
+                                       print $data['error'];
+                               }
                        }
 
                        // now, try to add the network.
@@ -392,18 +397,33 @@ class Register extends Controller {
                                print $data['error'];
                        }
 
-                       $success = $api->AddNodeToPCU( $node_id, $data['pcu_id'], 1);
-                       if( !isset($success) || $success <= 0 ) {
-                               $data['error'] = $api->error();
-                               print $data['error'];
+                       $pcus = $api->GetPCUs(array('pcu_id' => $data['pcu_id']));
+                       if ( count($pcus) > 0 )
+                       {
+                               $pcu = $pcus[0];
+                               # if $node_id in $pcu['node_ids']
+                               if ( ! in_array( $node_id , $pcu['node_ids'] ) )
+                               {
+                                   $success = $api->AddNodeToPCU( $node_id, $data['pcu_id'], 1);
+                                   if( !isset($success) || $success <= 0 ) {
+                                           $data['error'] = $api->error();
+                                           print $data['error'];
+                                   }
+                                  
+                               }
                        }
+                       $data['interface_id'] = $interface_id;
+                       $data['node_id'] = $node_id;
+                       if ( isset($errors) ) { $data['errors'] = $errors; }
+                       return $node_id;
+
+               } else {
+                   $data['error'] = $errors[0];
+                       return 0;
                }
 
 
-               $data['node_id'] = $node_id;
-               if ( isset($errors) ) { $data['errors'] = $errors; }
                
-               return $node_id;
        }
 
        function get_stage3_data($person, $data=NULL)
index 0330f39..5a17ef3 100644 (file)
@@ -1,13 +1,6 @@
 <?php
 if( isset($errors) && count($errors) > 0 )
 {
-  print( "<p><strong>The following errors occured:</strong>" );
-  print( "<font color='red' size='-1'><ul>\n" );
-  foreach( $errors as $err )
-    {
-      print( "<li>$err\n" );
-    }
-  print( "</ul></font>\n" );
 }
 ?>
 <script language="javascript">
@@ -27,8 +20,9 @@ function updateStaticFields()
 <?= form_open("register/stage4_confirmnode/$pcu_id/$site_id") ?>
                <table border=0 cellpadding=3>
                        <tbody>
+               <?php if ( !empty($node_list)  && !isset($error) ): ?>
                                <tr><td colspan='2'><h3>Choose a Node to Associate with PCU</h3></td></tr>
-               <?php if ( !empty($node_list) ): ?>
+
                                        <tr><th>Node Name: </th><td>
                                                        <select name='node_id'>
                                                                        <option value='0'>--</option>
@@ -47,6 +41,11 @@ function updateStaticFields()
                                        </td>
                                </tr>
                                        </tr>
+               <?php else: ?>
+                                 <p><strong>The following errors occured:</strong>
+                                 <font color='red' size='-1'><ul>
+                                         <li><?= $error ?></li>
+                                       </ul></font>
                <?php endif; ?>
                        </tbody>
                        </table>
@@ -56,7 +55,7 @@ function updateStaticFields()
 <div class="plroundedupdate">
                <table border=0 cellpadding=3>
                        <tbody>
-<?php if ( !isset($node_id) || $node_id == 0 ): ?>
+<?php if ( !isset($node_id) || $node_id == 0 || !isset($interface_id) || $interface_id == 0): ?>
 <?= form_open("register/stage3_addnode/$pcu_id/$site_id", array('name'=>'fm', 'method'=>'post')) ?>
                <tr><td colspan='2'><h3>Or, Add a Node</h3></td></tr>
                                        <tr><th>Site: </th><td><?= $site['name'] ?></td>