# This program may be used, executed, copied, modified and distributed # without royalty for the purpose of developing, using, marketing, or distribution #----------------------------------------------------------------- # addapp2.jacl - Jacl implementation of example script 12 #----------------------------------------------------------------- # # The purpose of this example is to show methods for # updating configuration attributes that are lists. Some attributes # (the "transports" attribute of the WebContainer in this example) are # lists of objects. If you request a list of attributes for the WebContainer # object you will see: # # transports Transport(IIOPTransport, JMSTransport, HTTPTransport)* # # This means that the transports attribute is a list (signified by the asterisk # at the end) of objects of type "Transport." Individual members of the # list may have type IIOPTransport, JMSTransport, or HTTPTransport, as well # as the base Transport class. # # If you modify an attribute that is a list you set it in it's entirety. There # is no syntax for adding or deleting from a list-type attribute by operating # on the attribute itself. But since the members of the list are objects themselves, # they can be added, modified, and removed individually. # # This is a bi-modal script: it can be included in the wsadmin # command invocation like this: # wsadmin -f addapp2.jacl mynode myserv # # or the script can be sourced from the wsadmin command line if: # wsadmin> source addapp2.jacl # wsadmin> addapp2 mynode myserv # # The script expects some parameters: # arg1 - node name # arg2 - server name # # This example demonstrates many wsadmin features: # # - The use of the AdminConfig object to create objects in the configuration # - The use of the AdminConfig object to find objects in the configuration # - The use of the AdminConfig object to modify objects in the configuration # - The use of the AdminConfig object to save the configuration #----------------------------------------------------------------- proc addapp2 {nodeName serverName} { #-------------------------------------------------------------- # set up globals #-------------------------------------------------------------- global AdminConfig global AdminControl global AdminApp #-------------------------------------------------------------- # do some sanity checking # -- do we have a node by this name? #-------------------------------------------------------------- set node [$AdminConfig getid /Node:$nodeName/] puts "addapp2: checking for existence of node $nodeName" if {[llength $node] == 0} { puts "addapp2: Error -- node not found for name $nodeName" return } #-------------------------------------------------------------- # -- and a server?..... #-------------------------------------------------------------- set server [$AdminConfig getid /Node:$nodeName/Server:$serverName/] puts "addapp2: checking for existence of server $serverName" if {[llength $server] == 0} { puts "addapp2: Error -- server not found for name $serverName" return } #-------------------------------------------------------------- # -- and a web container? #-------------------------------------------------------------- set wc [$AdminConfig list WebContainer $server] puts "addapp2: checking for existence of WebContainer in $serverName" if {[llength $wc] == 0} { puts "addapp2: Error -- WebContainer not found in name $serverName" return } #-------------------------------------------------------------- # Manipulate list -- change one transport #-------------------------------------------------------------- puts "addapp2: change a member in the list." set trans_list [$AdminConfig showAttribute $wc transports] set transports [lindex $trans_list 0] # pick the first transport for this example set t0 [lindex $transports 0] set t_before [$AdminConfig showall $t0] set host_attr [list host {}] set port_attr [list port 9081] set address_attr [list address [list $host_attr $port_attr]] set attrs [list $address_attr] $AdminConfig modify $t0 $attrs set t_after [$AdminConfig showall $t0] puts "addapp2: transport before: " puts "$t_before" puts "" puts "addapp2: transport after: " puts "$t_after" puts "" #-------------------------------------------------------------- # Manipulate list -- remove one transport #-------------------------------------------------------------- puts "addapp2: Remove a new member from the list." set t1 [lindex $transports 1] $AdminConfig remove $t1 #-------------------------------------------------------------- # Manipulate list -- add one #-------------------------------------------------------------- puts "addapp2: Add a new member to the list." set ssle_attr [list sslEnabled true] set sslc_attr [list sslConfig DefaultSSLSettings] set host_attr [list host {}] set port_attr [list port 7777] set address_attr [list address [list $host_attr $port_attr]] set attrs [list $ssle_attr $sslc_attr $address_attr] $AdminConfig create HTTPTransport $wc $attrs #-------------------------------------------------------------- # Save all the changes #-------------------------------------------------------------- puts "addapp2: saving the configuration" $AdminConfig save } #----------------------------------------------------------------- # Main #----------------------------------------------------------------- if { !($argc == 2) } { puts "addapp2: this script requires 2 parameters: node name, server name" puts "e.g.: addapp2 mynode myserv" } else { set nodeName [lindex $argv 0] set serverName [lindex $argv 1] addapp2 $nodeName $serverName }