Index by: file name |
procedure name |
procedure call |
annotation
installCluster_proc.tcl
(annotations | original source)
#
# Install a new Cluster.
# The new cluster must have one member which is an existing server
####################################################################
# Patrick Finnegan 31/01/2007. V1.
####################################################################
namespace eval cluster {
proc installCluster { propertiesFile } {
global AdminConfig
global AdminTask
# display procedure arguments.
set procName [ lindex [ info level 0 ] 0 ]
putsLog "## proc - $procName"
foreach i [ info args $procName ] {
upvar 0 $i ilocal
set propertiesArray($i) $ilocal
}
putsLog "procedure arguments are................."
foreach { a b } [ array get propertiesArray ] {
putsLog [ format "%-35s %s" "$a" "$b" ]
}
# get and display the existing Clusters.
putsLog "existing Clusters are:............"
if { [ catch { $AdminConfig list ServerCluster } r ] == 0 } {
set ClusterList $r
if { $ClusterList == {} } {
putsLog "no existing clusters"
} else {
foreach i $ClusterList {
set ClusterName [ $AdminConfig showAttribute $i name ]
putsLog [ format "%-5s %s" " " $ClusterName ]
}
}
} else {
return -code error $r
}
# call the hashMapList proc which returns a sorted list from the Property object loaded from the properties file.
putsLog "new Cluster properties are:............"
if { [ catch { hashMapList $propertiesFile } r ] == 0 } {
set propertiesList $r
foreach a $propertiesList {
putsLog [ format "%-5s %-40s %-s" " " [ lindex $a 0 ] [ lindex $a 1 ] ]
}
} else {
return -code error $r
}
# call the hashMap proc which returns a Property object populated with property file values.
if { [ catch { hashMap $propertiesFile } r ] == 0 } {
set PropertyI $r
} else {
return -code error $r
}
# check if the target Cluster already exists. If so delete.
set clusterName [ $PropertyI getProperty serverCluster.name ]
foreach i $ClusterList {
set name [ $AdminConfig showAttribute $i name ]
if { [ string match -nocase $name $clusterName ] == 1 } {
if { [ catch { $AdminConfig remove $i } r ] == 0 } {
putsLog "Cluster removed successfully: $ClusterName"
} else {
putsLog "ERROR: error removing Cluster: $ClusterName"
return -code error $r
}
}
}
# set the Cluster properties.
set attrList [ setClusterProperties $propertiesList ]
# get the cell parent. Assume singel cell.
set cellId [ $AdminConfig list Cell ]
if { [ catch { $AdminConfig create ServerCluster $cellId $attrList } r ] == 0 } {
putsLog "************************************"
putsLog "Cluster created successfully:"
putsLog $r
putsLog "************************************"
} else {
putsLog "************************************"
putsLog "ERROR: problem creating Cluster"
putsLog $r
putsLog "************************************"
return -code error $r
}
}
######################################
# set Cluster attributes.
######################################
proc setClusterProperties { propertiesList } {
global AdminConfig
set procName [ lindex [ info level 0 ] 0 ]
putsLog "## proc - $procName"
foreach i [ info args $procName ] {
upvar 0 $i ilocal
set propertiesArray($i) $ilocal
}
putsLog "procedure arguments are................."
foreach { a b } [ array get propertiesArray ] {
putsLog [ format "%-35s %s" "$a" "$b" ]
}
foreach a $propertiesList {
# the first list element contains the property name.
# the first segment of the property name is the type.
# the second segment of the property name is the attribute.
set propertyName [ lindex $a 0 ]
#puts "property name is $propertyName"
set lengthFirstName [ string first "." $propertyName ]
set firstName [ string range $propertyName 0 [ expr { $lengthFirstName - 1 } ] ]
set secondName [ string range $propertyName [ expr { $lengthFirstName + 1 } ] end ]
#puts "firstname is $firstName"
#puts "secondName is $secondName"
# Build the attribute lists
switch -exact -- $secondName {
name {
set nameList [ list $secondName [ lindex $a 1 ] ]
}
description {
set descriptionList [ list $secondName [ lindex $a 1 ] ]
}
enableHA {
set enableHAList [ list $secondName [ lindex $a 1 ] ]
}
preferLocal {
set preferLocalList [ list $secondName [ lindex $a 1 ] ]
}
serverType {
set serverTypeList [ list $secondName [ lindex $a 1 ] ]
}
}
}
# 17/04/2007
# make the proc more flexible by only setting attributes that exist in the properties file.
# check if each list variable exists.
## set transaction properties.
if { [ info exist nameList ] == 1 } {
lappend attrList $nameList
}
if { [ info exist descriptionList ] == 1 } {
lappend attrList $descriptionList
}
if { [ info exist enableHAList ] == 1 } {
lappend attrList $enableHAList
}
if { [ info exist preferLocalList ] == 1 } {
lappend attrList $preferLocalList
}
if { [ info exist serverTypeList ] == 1 } {
lappend attrList $serverTypeList
}
return $attrList
}
}
Index by: file name |
procedure name |
procedure call |
annotation
File generated 2007-08-07 at 13:42.