Index by: file name | procedure name | procedure call | annotation
saveChanges_proc.tcl (annotations | original source)

####################################################################
# Save Admin changes 
####################################################################
proc saveChanges { } {

   global AdminConfig 
   global AdminControl 

   set procName [ lindex [ info level 0 ] 0 ]

   putsLog "## proc - $procName"

   foreach i [ info args $procName ]  {

      upvar 0 $i ilocal

      set propertiesArray($i) $ilocal 

   }

   putsLog "properties are.................."

   foreach { a b } [ array get propertiesArray ] {

       putsLog [ format "%-35s %s" "$a" "$b" ]

   }

   # save changes to repository 

   if { [ catch { $AdminConfig save } r ] == 0 } {
        putsLog "Changes saved to repository."
   } else {
           putsLog "ERROR: failed to save changes"
           putsLog $r 
	   return -code error $r
   }

   # modified script to cater for operations in an unmanaged process(no DM) i.e
   # environment with no node agent.  Sync not required.    

   if { [ $AdminConfig list NodeAgent ] == {} } {

	   return 

   } else {

       # sync changes to nodes 

       # get a list of configured nodes  

       set cellId   [ $AdminConfig list Cell  ]
       set nodeList [ $AdminConfig list Node $cellId ]  

       putsLog "configured nodes are ......................"

       foreach nodeId $nodeList {

	  set name [ $AdminConfig showAttribute $nodeId name ]

	  putsLog $name 

	  lappend nameList $name

       }
       
       # all the nodes may not be running. 
       # get a list of running nodes.
       
       foreach nodeName $nameList {

	  set nodeAgentMbean [ $AdminControl queryNames type=NodeAgent,node=$nodeName,* ]

	  if { $nodeAgentMbean == {} } {
      
		  lappend stoppedNodeList $nodeName

	  } else {

		  lappend startedNodeList $nodeName

	  }

       }

       putsLog "running nodes are ...................."

       if { [ info exist startedNodeList ] == 0 } {

	   putsLog "ERROR: no started nodes"
	   putsLog "ERROR: at least one node must be started for sync"
	   return -code error $r

       } else {

	     foreach i $startedNodeList { putsLog $i } 

       }

       putsLog "stopped nodes are ...................."

       if { [ info exist stoppedNodeList ] == 0 } {

	   putsLog "no stopped nodes"

       } else {

	     foreach i $stoppedNodeList { putsLog $i } 

       }
     
       # only started nodes can be synced.  

       putsLog "syncing nodes ...................."

       foreach nodeName $startedNodeList {

	  set nodeSyncId [ $AdminControl completeObjectName type=NodeSync,node=$nodeName,* ]

	  if { [ catch { $AdminControl invoke $nodeSyncId sync } r ] == 0 } {

		  putsLog "$nodeName sync successfull" 
		  putsLog $r

	  } else {

		  putsLog "ERROR: $nodeName sync failed" 
		  return -code error $r

	  }

       }

   }

}

Index by: file name | procedure name | procedure call | annotation
File generated 2007-08-07 at 13:42.