Welcome, guest | Sign In | My Account | Store | Cart
# 
# Install Application Server.
#
####################################################################
# Patrick Finnegan 19/10/2005.  V1. 
####################################################################

####################################################################
# List installed application servers.
####################################################################
proc showList { a } {

    puts "\nList installed servers"
    puts "**********************\n"

    foreach e $a {
	regexp {(.*)(\(cells.*)} $e 1 2 3
	puts [ format "%-5s %-50s"  " "  $2 ]
	lappend returnList                 $2
    }

    puts "\n**********************\n"

    return $returnList   
}
####################################################################
# Install Server then create properties for server.
####################################################################
proc installServer { serverName nodeId nonsslPort sslPort rmiPort sessionTimeout tranTimeout } {

   global AdminConfig 

   set nameList [ list name $serverName ]
   set attrList [ list $nameList        ] 

   if { [ catch {$AdminConfig create Server $nodeId $attrList} r ] == 0 } {
        puts "************************************"
        puts "$serverName server created successfully."
        puts "************************************\n"
   } else {
           puts "\nfailed to create $serverName server\n"
           puts $r 
           puts "************************************\n"
	   return -code error $r
   }

   set serverId [ $AdminConfig getid /Server:$serverName/ ]

   regexp {(.*)(\(cells.*)} $serverId 1 2 3
   set serverName $2

#  set Transaction Service Properties. 

   if { [ catch { setTransProps $serverId $serverName $tranTimeout } r ] != 0 } {
	   return -code error $r
   }

#  set Web Container Properties. 

   if { [ catch { setWebProps $serverId $serverName $nonsslPort $sslPort $sessionTimeout } r ] != 0 } { 
	   return -code error $r
   }

#  set Log File Properties. 

   if { [ catch { setLogProps $serverId $serverName } r ] != 0 } {
	   return -code error $r
   }

#  set JVM Properties. 

   if { [ catch { setJVMProps $serverId $serverName } r ] != 0 } {
	   return -code error $r
   }

#  set Process Definition Properties. 

   if { [ catch { setProcessDefProps $serverId $serverName } r ] != 0 } {
	   return -code error $r
   }

#  set EndPoints Properties. 

   if { [ catch { setEndPointsProps $serverId $serverName $rmiPort } r ] != 0 } {
	   puts "\nfailed - result is $r"
	   return -code error $r
   }
}
####################################################################
# Set transaction service properties.
####################################################################
proc setTransProps { serverId serverName tranTimeout } {

   global alias 
   global AdminConfig 

   # get Transaction Service id 

   set TransactionServiceId [ $AdminConfig list TransactionService $serverId ]

   set drive [lindex [file split [info script]] 0 ] 

   set clientInactivityTimeout  [ list clientInactivityTimeout  60  ]
   set totalTranLifetimeTimeout [ list totalTranLifetimeTimeout $tranTimeout ]
   set transactionLogDirectory  [ list transactionLogDirectory  " " ]

   set attrList  [ list $clientInactivityTimeout  \
                        $totalTranLifetimeTimeout \
                        $transactionLogDirectory  \
                 ]

   if { [ catch { $AdminConfig modify $TransactionServiceId $attrList } r ] == 0 } {
        puts "************************************"
        puts "$serverName transaction properties created successfully."
        puts "************************************\n"
   } else {
           puts "\nfailed to create transaction properties for $serverName\n"
           puts $r 
           puts "************************************\n"
	   return -code error $r
   }
}
####################################################################
# Set web container properties.
####################################################################
proc setWebProps {serverId serverName nonsslPort sslPort sessionTimeout } {

   global AdminConfig 

   # get Web Container id 

   set WebContainerId [ $AdminConfig list WebContainer $serverId ]

   set defaultVirtualHostName [ list defaultVirtualHostName intg_$serverName ] 
   set enableServletCaching   [ list enableServletCaching   true ] 

   set attrList [ list $defaultVirtualHostName \
                       $enableServletCaching   \
                ]

   if { [ catch { $AdminConfig modify $WebContainerId $attrList } r ] == 0 } {
        puts "************************************"
        puts "$serverName - WebContainer properties created successfully."
        puts "************************************\n"
   } else {
           puts "\nfailed to create WebContainer properties for $serverName\n"
           puts $r 
           puts "************************************\n"
	   return -code error $r
   }

   # get ThreadPool id 

   set threadPoolId [ lindex [ $AdminConfig list ThreadPool $WebContainerId ] 0 ]

   set inactivityTimeout  [ list inactivityTimeout 3500  ]
   set isGrowable         [ list isGrowable        true  ]
   set maximumSize        [ list maximumSize       50 ]
   set minimumSize        [ list minimumSize       10 ]

   set threadPoolList  [ list $inactivityTimeout   \
                              $isGrowable          \
                              $maximumSize         \
                              $minimumSize         \
                       ]

   if { [ catch { $AdminConfig modify $threadPoolId $threadPoolList } r ] == 0 } {
        puts "************************************"
        puts "$serverName - Threadpool properties created successfully."
        puts "************************************\n"
   } else {
           puts "\nfailed to create Threadpool properties for $serverName\n"
           puts $r 
           puts "************************************\n"
	   return -code error $r
   }

   # get Session Manager id 

   set sessionManagerId [ $AdminConfig list SessionManager $WebContainerId]

   set accessSessionOnTimeout        [ list accessSessionOnTimeout        true   ]
   set allowSerializedSessionAccess  [ list allowSerializedSessionAccess  false  ] 
   set enable                        [ list enable                        true   ]
   set enableCookies                 [ list enableCookies                 true   ]
   set enableProtocolSwitchRewriting [ list enableProtocolSwitchRewriting false  ]
   set enableSSLTracking             [ list enableSSLTracking             false  ]
   set enableSecurityIntegration     [ list enableSecurityIntegration     false  ]
   set enableUrlRewriting            [ list enableUrlRewriting            false  ]
   set maxWaitTime                   [ list maxWaitTime                   5      ]

   set sessionManagerList [ list $accessSessionOnTimeout        \
                                 $allowSerializedSessionAccess  \
                                 $enable                        \
                                 $enableCookies                 \
                                 $enableProtocolSwitchRewriting \
                                 $enableSSLTracking             \
                                 $enableSecurityIntegration     \
                                 $enableUrlRewriting            \
                                 $maxWaitTime                   \
                          ]

   if { [ catch { $AdminConfig modify $sessionManagerId $sessionManagerList } r ] == 0 } {
        puts "************************************"
        puts "$serverName - Session Manager properties created successfully."
        puts "************************************\n"
   } else {
           puts "\nfailed to create Session Manager properties for $serverName\n"
           puts $r 
           puts "************************************\n"
	   return -code error $r
   }

   # get Tuning Parms 

   set tuningParamsId [ $AdminConfig list TuningParams $WebContainerId ]

   set allowOverflow                 [ list allowOverflow           false ]
   set invalidationTimeout           [ list invalidationTimeout     $sessionTimeout ] 
   set maxInMemorySessionCount       [ list maxInMemorySessionCount 1000  ]

   set tuningParamsList [ list $allowOverflow           \
                               $invalidationTimeout     \
                               $maxInMemorySessionCount \
                       ]

   if { [ catch { $AdminConfig modify $tuningParamsId $tuningParamsList } r ] == 0 } {
        puts "************************************"
        puts "$serverName - Tuning properties created successfully."
        puts "************************************\n"
   } else {
           puts "\nfailed to create Tuning properties for $serverName\n"
           puts $r 
           puts "************************************\n"
	   return -code error $r
   }

   # get http transports id. 

   set httpTransportIdList [ $AdminConfig list HTTPTransport $WebContainerId ]

   # assume two default host entries.  
   # modify host entries with new values.

   # Transport 1.
   set transport1     [ lindex $httpTransportIdList 0 ]
   set addressId [ $AdminConfig showAttribute $transport1 address ] 
   set oldHost   [ $AdminConfig showAttribute $addressId host ]
   set oldPort   [ $AdminConfig showAttribute $addressId port ]

   puts "Old Host is $oldHost " 
   puts "Old Port is $oldPort " 

   set newHost     [ list host *           ]
   set newPort     [ list port $nonsslPort ]
   set addressList [ list $newHost $newPort  ]

   puts "New Host is $oldHost" 
   puts "New Port is $newPort" 

   if { [ catch { $AdminConfig modify $addressId $addressList } r ] == 0 } {
        puts "************************************"
        puts "$serverName - HTTP Transport properties modified successfully."
        puts "************************************\n"
   } else {
           puts "************************************"
           puts "\nfailed to create modify HTTP Transport properties for $serverName\n"
           puts $r 
           puts "************************************\n"
	   return -code error $r
   }

   # Transport2.
   set transport2 [ lindex $httpTransportIdList 1 ]
   set addressId  [ $AdminConfig showAttribute $transport2 address ] 
   set oldHost    [ $AdminConfig showAttribute $addressId host ]
   set oldPort    [ $AdminConfig showAttribute $addressId port ]

   puts "Old Host is $oldHost " 
   puts "Old Port is $oldPort " 

   set newHost     [ list host *            ]
   set newPort     [ list port $sslPort     ]
   set addressList [ list $newHost $newPort ]

   puts "New Host is $oldHost" 
   puts "New Port is $newPort" 

   if { [ catch { $AdminConfig modify $addressId $addressList } r ] == 0 } {
        puts "************************************"
        puts "$serverName - HTTP Transport properties modified successfully."
        puts "************************************\n"
   } else {
           puts "************************************"
           puts "\nfailed to create modify HTTP Transport properties for $serverName\n"
           puts $r 
           puts "************************************\n"
	   return -code error $r
   }
   
}
####################################################################
# Set logging properties.
####################################################################
proc setLogProps {serverId serverName } {

   global AdminConfig 

   # get websphere install directory from node variable map. 

   set nodeVarMapId [ $AdminConfig getid /Node:[exec hostname]/VariableMap:/ ]
   set listVar1     [ eval join  [ $AdminConfig showall $nodeVarMapId ] ]
   set x            [ lindex [ lindex $listVar1 [lsearch $listVar1 *WAS_INSTALL_ROOT*] ] 2 ]
   set WAS_INSTALL_ROOT [ lindex [ split $x ] 1 ]

   # get output log id 

   set outputLogId [ $AdminConfig showAttribute $serverId outputStreamRedirect ]

   set baseHour               [ list baseHour 24 ]
   set fileName               [ list fileName $WAS_INSTALL_ROOT\\logs\\$serverName\\$serverName\_SystemOut.log ]
   set formatWrites           [ list formatWrites           true   ]
   set maxNumberOfBackupFiles [ list maxNumberOfBackupFiles 5      ]
   set messageFormatKind      [ list messageFormatKind      BASIC  ]
   set rolloverPeriod         [ list rolloverPeriod         24     ]
   set rolloverSize           [ list rolloverSize           5      ]
   set rolloverType           [ list rolloverType           TIME   ]
   set suppressStackTrace     [ list suppressStackTrace     false  ]
   set suppressWrites         [ list suppressWrites         false  ]

   set attrList [ list $baseHour               \
                       $fileName               \
                       $formatWrites           \
                       $maxNumberOfBackupFiles \
                       $messageFormatKind      \
                       $rolloverPeriod         \
                       $rolloverSize           \
                       $rolloverType           \
                       $suppressStackTrace     \
                       $suppressWrites         \
                ]
   
   if { [ catch { $AdminConfig modify $outputLogId $attrList } r ] == 0 } {
        puts "************************************"
        puts "$serverName - Server output log properties created successfully."
        puts "************************************\n"
   } else {
           puts "\nfailed to create Server output log properties for $serverName\n"
           puts $r 
           puts "************************************\n"
	   return -code error $r
   }

   # get error log id 

   set errorLogId [ $AdminConfig showAttribute $serverId errorStreamRedirect ]

   set baseHour               [ list baseHour 24 ]
   set fileName               [ list fileName $WAS_INSTALL_ROOT\\logs\\$serverName\\$serverName\_SystemErr.log ]
   set formatWrites           [ list formatWrites           true   ]
   set maxNumberOfBackupFiles [ list maxNumberOfBackupFiles 5      ]
   set messageFormatKind      [ list messageFormatKind      BASIC  ]
   set rolloverPeriod         [ list rolloverPeriod         24     ]
   set rolloverSize           [ list rolloverSize           5      ]
   set rolloverType           [ list rolloverType           TIME   ]
   set suppressStackTrace     [ list suppressStackTrace     false  ]
   set suppressWrites         [ list suppressWrites         false  ]

   set attrList [ list $baseHour               \
                       $fileName               \
                       $formatWrites           \
                       $maxNumberOfBackupFiles \
                       $messageFormatKind      \
                       $rolloverPeriod         \
                       $rolloverSize           \
                       $rolloverType           \
                       $suppressStackTrace     \
                       $suppressWrites         \
                ]

   if { [ catch { $AdminConfig modify $errorLogId $attrList } r ] == 0 } {
        puts "************************************"
        puts "$serverName - Server error log properties created successfully."
        puts "************************************\n"
   } else {
           puts "\nfailed to create Server error log properties for $serverName\n"
           puts $r 
           puts "************************************\n"
	   return -code error $r
   }

}
####################################################################
# Set JVM Properties.
####################################################################
proc setJVMProps {serverId serverName } {

   global AdminConfig 

   # get JVM id 

   set jvmId [ $AdminConfig list JavaVirtualMachine $serverId ]


   set initialHeapSize        [ list initialHeapSize 128 ]
   set maximumHeapSize        [ list maximumHeapSize 256 ]

   # set custom properties.
   ## ws.ext.dirs
  
   set name                   [ list name        ws.ext.dirs                  ]
   set value                  [ list value       {d:\HBFWeb\properties}  ]
   set description            [ list description {Application Property Files} ]

   set wsExtDirs              [ list $name $value $description ]

   set systemPropertiesList   [ list systemProperties [ list $wsExtDirs]]

   set attrList [ list $initialHeapSize        \
                       $maximumHeapSize        \
                       $systemPropertiesList   \
                ]

   if { [ catch { $AdminConfig modify $jvmId $attrList } r ] == 0 } {
        puts "************************************"
        puts "$serverName - JVM properties created successfully."
        puts "************************************\n"
   } else {
           puts "\nfailed to create Server JVM properties for $serverName\n"
           puts "************************************\n"
	   return -code error $r
   }

}
####################################################################
# Set Process Definition Properties.
####################################################################
proc setProcessDefProps {serverId serverName } {

   global AdminConfig 

   set processDefId [ $AdminConfig showAttribute $serverId processDefinition ]

   set monPolicyId  [$AdminConfig showAttribute $processDefId monitoringPolicy ]

   set monPolicy    [ list nodeRestartState PREVIOUS ] 

   set attrList     [ list $monPolicy ]

   if { [ catch { $AdminConfig modify $monPolicyId $attrList } r ] == 0 } {
        puts "************************************"
        puts "$serverName - Process Definition properties created successfully."
        puts "************************************\n"
   } else {
           puts "\nfailed to create Process Definition properties for $serverName\n"
           puts "************************************\n"
	   return -code error $r
   }

}
####################################################################
# Set Endpoints - RMI. 
####################################################################
proc setEndPointsProps {serverId serverName rmiPort } {

   global AdminConfig 

   set endPointsId      [ $AdminConfig getid /ServerEntry:$serverName/ ]

   set specialEndPoints [ $AdminConfig showAttribute $endPointsId specialEndpoints ]

   # specialEndPoints is a one element list containing an embedded list. 
  
   set listlength [ llength [ lindex $specialEndPoints 0 ] ]

   set listElements [ expr { $listlength - 1 } ] 

   # iterate through the sublist and find the bootstrap address.

   set i 0

   while { $i <= $listElements } {

       set endPoint [ lindex [ lindex $specialEndPoints 0 ] $i ]

       set endPointName [ $AdminConfig showAttribute $endPoint endPointName ] 

       if { $endPointName == "BOOTSTRAP_ADDRESS" } {

          set endPointId [ $AdminConfig showAttribute $endPoint endPoint ] 
          set port       [ $AdminConfig showAttribute $endPointId port ]

	  puts "End Point Name = $endPointName"
	  puts "Old port       = $port"

	  set newPort  [ list port $rmiPort ] 
	  set attrList [ list $newPort ] 

	  if { [ catch { $AdminConfig modify $endPointId $attrList } r ] == 0 } {

	       puts "************************************"
	       puts "End Point Name = $endPointName"
	       puts "New port       = $rmiPort"
	       puts "$serverName - End Points modified successfully."
	       puts "************************************\n"

	  } else {
	          puts "************************************"
	          puts "\nfailed to modify End Points for $serverName\n"
	          puts "************************************\n"
	          return -code error $r
	  }

       }

       incr i

    }

}
####################################################################
# Main Control.
####################################################################

puts "\n argc = $argc \n"

if {$argc < 1} {
        return -code error "error - no arguments supplied.  Supply server name"
        puts "no arguments"
}

# Assume one cell, one deployment manager node and one application node. 

set cellId [ lindex [ $AdminConfig list Cell ] 0 ]
set nodes  [ $AdminConfig list Node ]

# delete the manager node from the list.

set manIndex   [ lsearch -glob $nodes *Manager* ]
set nodeId     [ lindex [ lreplace $nodes $manIndex $manIndex ] 0 ]

# get name attribute for cell and application node

set cellName [ $AdminConfig showAttribute $cellId name ]
set nodeName [ $AdminConfig showAttribute $nodeId name ]

set serverName     [ lindex $argv 0 ]
set nonsslPort     [ lindex $argv 1 ]
set sslPort        [ lindex $argv 2 ]
set rmiPort        [ lindex $argv 3 ]
set sessionTimeout [ lindex $argv 4 ]
set tranTimeout    [ lindex $argv 5 ]

puts "server name    = $serverName"
puts "nonsslPort     = $nonsslPort"  
puts "sslPort        = $sslPort"  
puts "rmiPort        = $rmiPort"   
puts "sessionTimeout = $sessionTimeout"   
puts "tranTimeout    = $tranTimeout"   

#######################################################################
# List servers and check if target server already exists.
# If so delete it and recreate
#######################################################################

set servers [ $AdminConfig list Server ]

catch { showList $servers } r

catch {lsearch $r $serverName } r 

if { $r == -1 } {
    set continue true 
} else { 
        set serverId [ $AdminConfig getid /Server:$serverName/ ]
        catch { $AdminConfig remove $serverId } r
	puts $r
}
####################################################################
# Install Server 
####################################################################

if { [ catch { installServer $serverName $nodeId $nonsslPort $sslPort $rmiPort $sessionTimeout $tranTimeout } r ] == 0 } {
    puts "************************************"
    puts "$serverName installed successfully"
    puts "************************************\n"
    puts "\n###### Admin Config Save ######\n"
    $AdminConfig save
} else {
        puts "\n$serverName failed to install\n"
        puts $r 
        puts "************************************\n"
}

####################################################################
# List servers to verify install 
####################################################################

set servers [ $AdminConfig list Server ]

catch { showList $servers } r

History