Welcome, guest | Sign In | My Account | Store | Cart
@echo off 
echo
################################################
echo
# Create Enterprise App on %computername%
echo
################################################

::################################################
::# This is a windows shell script which calls the WSCP shell to execute the Tcl script.
::# The Tcl script is designed to be portable across environments hence the parameters are set here and then fed to the script.
:: EARFILE              - location of deployable ear file
:: APPNAME              - application name
:: DEFAPPSERVER         - default app server.  Note: if this is used within the Tcl script it overides specific app server mappings.    
:: GROUPROLESFILE       - roles to user groups mapping file.    
:: NETSENDMSG           - displayable error message.    
:: NETSENDFILE          - specifies users who receive net send error message.
:: HOSTFILE             - maps web modules to virtual hosts
:: SERVERFILE           - maps web/ejb modules to application servers.  
::################################################

set EARFILE=c:\Enterprise_Apps\h2.ear
set APPNAME=H2
set DEFAPPSERVER="/Node:%computername%/ApplicationServer:Default Server/" set USERROLESFILE=c:\userrole_mapping.txt
set GROUPROLESFILE=c:\grouprole_mapping.txt
set NETSENDMSG="Create H2 app failed on %computername% at %date% %time%"
set NETSENDFILE=C:\SCRIPTS\DB2\emailfiles\netsend.txt
set HOSTFILE=c:\vhost_mapping.txt
set SERVERFILE=c:\server_mappings.txt

:: "^" is a dos shell continuation character"

call wscp -p c:\scripts\websphere\wscp_properties.txt^
          -f c:\SCRIPTS\tcl\create_enterprise_app.tcl^
          -- %EARFILE%^
             %APPNAME%^
             %DEFAPPSERVER%^
             %USERROLESFILE%^
             %NETSENDMSG%^
             %NETSENDFILE%^
             %HOSTFILE%^
             %SERVERFILE%^
             %GROUPROLESFILE%



-----------------------------------------------------------------

create_enterprise_app.tcl script.


###############################################
# Create Websphere Enterprise App.
###############################################

######################################################
# Proc - assign parameters.
######################################################
proc assign_param {argv} {

   
    global  earFile
    global  nodeId
    global  appName
    global  defAppServer
    global  userrolesFile
    global  grouprolesFile
    global  netSendMsg
    global  netSendFile
    global  vhostsfile
    global  serverfile

    set earFile        [lindex $argv 0]
    set appName        [lindex $argv 1]
    set defAppServer   [lindex $argv 2]
    set userrolesFile  [lindex $argv 3]
    set netSendMsg     [lindex $argv 4]
    set netSendFile    [lindex $argv 5]
    set vhostsfile     [lindex $argv 6]
    set serverfile     [lindex $argv 7]
    set grouprolesFile [lindex $argv 8]

    set nodeId [Node list]

    puts "
NodeID                 = $nodeId"
    puts "
App Name               = $appName"
    puts "
Default App Server     = $defAppServer"
    puts "
User Roles File        = $userrolesFile"
    puts "
netSendMsg             = $netSendMsg"
    puts "
netSendFile            = $netSendFile"
    puts "
earFile                = $earFile"
    puts "
vhostsfile             = $vhostsfile"
    puts "
serverfile             = $serverfile"
    puts "
Group Roles File       = $grouprolesFile"
}
######################################
# Proc - check number of arguments
######################################
proc check_args {argc} {
   
    if {$argc < 0} {
            error "
Argument Count is Zero.  No arguments supplied."
           } else {
                puts ""
                puts "
argument count = $argc"
                puts ""
    }

}
######################################
# Proc - check if dir path exists.  If not create the directory.
######################################
proc check_file {file_name netSendMsg} {
   
    if {[file exists $file_name] == 1} {
       puts "
File location confirmed for:  $file_name"
       } else {
               error "
$file_name does not exist.  Create $file_name before running this scipt"
               netsend $netSendMsg
    }
}
######################################################
# Proc - get net send list
######################################################
proc get_netsend {netsendfile_id} {

    global netsend_list

    while {[gets $netsendfile_id line] >=0} {
        lappend netsend_list $line
    }
}
######################################################
# Proc - generate net send messages.
######################################################
proc netsend {net_message} {

    global netsend_list    

    foreach name $netsend_list {
        puts "
exec net send $name $net_message."
        exec net send $name $net_message
    }
}
########################################################
# Proc - get user roles from input file and process into list
#      - note that there can be several users to a role so "
list user"
########################################################
proc get_userroles {userrolesfileid} {

   puts "
executing get_userroles"

   global list_userroleslist
 
   puts "
User roles are ...................."
   puts ""

   while {[gets $userrolesfileid line] >=0} {
       puts "
role mapping is: $line"
       lappend roleslist $line
   }
#   puts "
roleslist = $roleslist"
   set list_userroleslist [list $roleslist]
#   puts "
list_userroleslist = $list_userroleslist"
}
########################################################
# Proc - get group roles from input file and process into list
#      - note that there can be several group to a role so "
list group"
########################################################
proc get_grouproles {grouprolesfileid} {

   puts "
executing get_grouproles"

   global list_grouproleslist
 
   puts "
Group roles are ...................."
   puts ""


   while {[gets $grouprolesfileid line] >=0} {
       puts "
group role mapping is: $line"
       lappend grouproleslist $line
   }
   set list_grouproleslist [list $grouproleslist]
}
########################################################
# Proc - get virtual host mappings
#      - note vhosts can be spread across nodes
########################################################
proc get_vhosts {vhostsfileid} {

   puts "
executing get_vhosts"

   global list_vhostlist
 
   set block [read -nonewline $vhostsfileid]
   
   puts "
virtual host mappings are ................"
   puts ""

   foreach {module vhost} $block {
       puts "
vhost mapping = $module $vhost"
        lappend vhostlist [list $module $vhost]
   }
   
   set list_vhostlist $vhostlist

}
########################################################
# Proc - get appserver mappings
#      - note webmodules can be spread across appservers
########################################################
proc get_servers {serverfileid} {

   puts "
executing get_servers"

   global list_serverlist
 
   set block [read -nonewline $serverfileid]
   
   puts "
appserver mappings are ................"
   puts ""

   foreach {module server} $block {
       puts "
server mapping = $module $server"
        lappend serverlist [list $module $server]
   }
   set list_serverlist $serverlist
   
}
######################################################
# Proc - create enterprose app.
######################################################
proc create_enterprise_app {nodeId earFile appName defAppServer netSendMsg list_userroleslist list_grouproleslist list_vhostlist list_serverlist} {

    puts "
EnterpriseApp install $nodeId  "
    puts "
                     $earFile "
#    puts "
                    -defAppServer $defAppServer"  
    puts "
                     -moduleappservers $list_serverlist"
    puts "
                     -appname $appName "
    puts "
                     -modvirtualhosts $list_vhostlist"
    puts "
                     -userroles $list_userroleslist"
    puts "
                     -grouproles $list_grouproleslist"

    puts "
########################################"
    puts
"Creating $appName Enterprise Application"
    puts
"########################################"


   
if {[catch {
               
EnterpriseApp install $nodeId \
                                      $earFile
\
                                     
-appname $appName                  \
                                     
-moduleappservers $list_serverlist \
                                     
-modvirtualhosts $list_vhostlist   \
                                     
-userroles $list_userroleslist     \
                                     
-grouproles $list_grouproleslist   \
               
} result_var] == 0} {
        puts $result_var
        puts
"${defAppServer} deployed sucessfully"
       
} else {
               puts $result_var
               puts
"########################################"
               puts
"${defAppServer} failed to deploy"
               puts
"########################################"
               netsend $netSendMsg
   
}
}
######################################
# Control block"
######################################

check_args $argc

assign_param $argv

puts
""

check_file $netSendFile    $netSendMsg
check_file $earFile        $netSendMsg
check_file $userrolesFile  $netSendMsg
check_file $grouprolesFile $netSendMsg
check_file $vhostsfile     $netSendMsg
check_file $serverfile     $netSendMsg

puts
""

set netSendFile_id    [open $netSendFile r]
set userrolesFile_id  [open $userrolesFile   r]
set grouprolesFile_id [open $grouprolesFile   r]
set vhostsfileid      [open $vhostsfile  r]
set serverfileid      [open $serverfile  r]

get_netsend  $netSendFile_id

puts
""

get_userroles $userrolesFile_id

puts
""

get_grouproles $grouprolesFile_id

puts
""

get_vhosts $vhostsfileid

get_servers $serverfileid

puts
""

puts
"create_enterprise_app"

create_enterprise_app $nodeId $earFile $appName $defAppServer $netSendMsg $list_userroleslist $list_grouproleslist $list_vhostlist $list_serverlist

######################################
# Close files
######################################

close $netSendFile_id
close $userrolesFile_id
close $grouprolesFile_id
close $vhostsfileid

######################################
# END
######################################

History