#################################################################### # 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 } } } }