###
### remove.jacl
###
### Stop a server on a given node
### Uninstall the given application,
### Remove the server from the configuration.
###
### This is a bi-modal script: it can be included in the wsadmin
### command invocation like this:
###
### wsadmin -f remove.jacl serverX nodeY myapp
###
### or the script can be sourced from the wsadmin command line if:
###
### wsadmin> source remove.jacl
### wsadmin> remove serverX nodeY myapp
###
### The script expects some parameters:
###
### arg1 - server name
### arg2 - node name
### arg3 - application name
###
###
proc remove {serverName nodeName args} {
###
### check for optional argument
###
set app [lindex $args 0]
if {[llength $args] > 1} {
set appName [lindex $args 1]
} else {
set appName ""
}
###
### set up globals
###
global AdminConfig
global AdminControl
global AdminApp
###
### Do we have a node by this name?
###
set node [$AdminConfig getid /Node:$nodeName/]
puts "Checking for existence of node $nodeName..."
if {[llength $node] == 0} {
puts "remove: Error -- node not found for name $nodeName"
return
}
###
### Is a server by this name already running on the node?
###
puts "Checking to see if server $serverName is running on node $nodeName..."
set runningServer [$AdminControl completeObjectName type=Server,node=$nodeName,process=$serverName,*]
if {[llength $runningServer] < 0} {
puts "remove: Error -- Server $serverName not running on node $nodeName"
return
}
###
### Stop the server
###
puts "Stopping server $serverName ..."
$AdminControl stopServer $serverName $nodeName
puts "Done."
###
### Uninstall the application
###
puts "Uninstalling the application"
$AdminApp uninstall $app
###
### Find the configuration object
###
set server [$AdminConfig getid /Node:$nodeName/Server:$serverName/]
###
### Remove it
###
$AdminConfig remove $server
###
### Save all the changes
###
puts "Saving the configuration"
$AdminConfig save
}
###
### Main
###
if { !($argc == 3) } {
puts "Usage: remove.jacl server_name node_name, and application_name"
} else {
set serverName [lindex $argv 0]
set nodeName [lindex $argv 1]
set appName [lindex $argv 2]
remove $serverName $nodeName $appName
}