newly created node can be declared 'reservable'
[www-register-wizard.git] / application / controllers / register.php
index 242d860..4e15529 100644 (file)
@@ -245,8 +245,9 @@ class Register extends Controller {
 
                if ( isset($_REQUEST['pcu_proceed']) ) {
                        $rules['hostname']  = "";
+                       $rules['node_type']     = 'regular';
                        $rules['model']         = "";
-                       $rules['method']        = "";
+                       $rules['method']        = "dhcp";
                        $rules['ip']            = "";
                        $rules['netmask']  = "";
                        $rules['network']  = "";
@@ -256,6 +257,7 @@ class Register extends Controller {
                        $rules['dns2']  = "";
                        $this->validation->set_rules($rules);
                        $fields['hostname']  = "Hostname";
+                       $fields['node_type']    = "Node Type";
                        $fields['model']        = "Model";
                        $fields['method']       = "Method";
                        $fields['ip']           = "IP Address";
@@ -324,8 +326,8 @@ class Register extends Controller {
        function add_node(&$data)
        {
                global $api, $plc;
-               print "Adding Node\n<br>";
                $hostname = trim($_REQUEST['hostname']);
+               $node_type = trim($_REQUEST['node_type']);
                $model= trim($_REQUEST['model']);
                $method = trim($_REQUEST['method']);
                $ip = trim($_REQUEST['ip']);
@@ -358,13 +360,19 @@ class Register extends Controller {
                if( !isset($errors) || count($errors) == 0 )
                {
                        // add new node and its network
-                       $optional_vals= array( "hostname"=>$hostname, "model"=>$model );
+                 $optional_vals= array( 'hostname'=>$hostname, 'node_type'=>$node_type, '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 +400,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)
@@ -513,6 +536,7 @@ class Register extends Controller {
                $person = new Person($plc->person);
 
                $fields['hostname']     = "Hostname";
+               $fields['node_type']    = "Node Type";
                $fields['model']        = "Model";
                $fields['method']       = "Method";
                $fields['ip']           = "IP Address";
@@ -532,8 +556,9 @@ class Register extends Controller {
                if ( isset($_REQUEST['node_choose']) ) {
                        $rules['node_id']       = "required|intval";
                        $rules['hostname']      = "";
+                       $rules['node_type']     = "regular";
                        $rules['model']         = "";
-                       $rules['method']        = "";
+                       $rules['method']        = "dhcp";
                        $rules['ip']            = "";
                        $rules['netmask']       = "";
                        $rules['network']       = "";
@@ -598,10 +623,11 @@ class Register extends Controller {
                # TODO: RECODE To update values instead of adding them...
                global $api, $plc;
                $hostname = trim($_REQUEST['hostname']);
-               $model= trim($_REQUEST['model']);
+               $model = trim($_REQUEST['model']);
+               $node_type = trim($_REQUEST['node_type']);
                $node_id = intval($this->validation->node_id);
-               $ret = $api->UpdateNode( $node_id, array('hostname' => $hostname, 
-                                                                                 'model' => $model));
+               $optional_vals = array('hostname' => $hostname, 'model' => $model, 'node_type' => $node_type );
+               $ret = $api->UpdateNode( $node_id, $optional_vals);
                if( $ret <= 0 ) {
                        $data['error'] = $api->error();
                        print $data['error'];