Index by: file name | procedure name | procedure call | annotation
installClusterMember_proc.tcl (annotations | original source)

# Install a new application.  
####################################################################
# Patrick Finnegan 20/02/2007.  V1. 
####################################################################
proc installClusterMember { 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 applications. 

   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 member 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 

   }

   # The cluster must exist.

   set memberClusterName [ $PropertyI getProperty clusterMember.clusterName ] 

   if { [ catch { $AdminConfig getid /ServerCluster:$memberClusterName/ } r ] == 0 } {

       if { $r == "" } {

        putsLog "ERROR: Cluster does not exist: $memberClusterName"

	return -code error $r 

       } else {

	   set clusterId $r 

       }

   }

   # The node must exist.

   set nodeName [ $PropertyI getProperty clusterMember.nodeName ] 

   if { [ catch { $AdminConfig getid /Node:$nodeName/ } r  ] == 0 } {

       if { $r == "" } {

          putsLog "ERROR: Node does not exist: $nodeName"

	  return -code error $r 

       } else {

	   set nodeId $r 

       }

   }

   # The server template must exist.

   set serverName [ $PropertyI getProperty clusterMember.memberTemplate ] 

   if { [ catch { $AdminConfig getid /Server:$serverName/ } r  ] == 0 } {

       if { $r == "" } {

          putsLog "ERROR: Server Template does not exist: $serverName"

	  return -code error $r 

       } else {

	   set serverId $r 

       }

   }

   # get any existing members of the cluster.
 
   if { [ catch { $AdminConfig showAttribute $clusterId members } r ]  == 0 } {

      if { $r == "{}" } {

	  putsLog "no existing members" 

      } else {

	  putsLog "existing cluster members are........... " 

	  foreach i [ lindex $r 0 ] {

	      putsLog  [ format "%-5s %s" " " [ $AdminConfig showAttribute $i memberName ] ]

          }

      }  

   }

   # The new member must not already exist.

   set memberName [ $PropertyI getProperty clusterMember.memberName  ]

   if { [ catch { $AdminConfig getid /ClusterMember:$memberName/ } r  ] == 0 } {

       if { $r != {} } {

          putsLog "ERROR: Cluster member already exists: $memberName"

	  return -code error $r 

       }

   }

   # set the cluster member properties.

   set attrList [ setClusterMemberProperties $PropertyI ] 

   # get the cell parent. Assume single cell. 

   set cellId   [ $AdminConfig list Cell ]

   # create a new cluster member using an existing JVM as a template.  

   puts " attrList = $attrList" 

   if { [ catch { $AdminConfig createClusterMember $clusterId $nodeId $attrList $serverId } r ] == 0 } {

       putsLog "************************************"
       putsLog "Cluster Member created successfully:  $memberName"
       putsLog $r 
       putsLog "************************************"

       } else {

       putsLog "************************************"
       putsLog "ERROR: problem creating ClusterMember: $memberName"
       putsLog $r 
       putsLog "************************************"
       return -code error $r

   }
}
######################################
# set Cluster attributes. 
######################################
proc setClusterMemberProperties { PropertyI } {

   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" ]

   }

   set memberName  [ list memberName [ $PropertyI getProperty  clusterMember.memberName   ] ]
   set weight      [ list weight     [ $PropertyI getProperty  clusterMember.weight       ] ] 

   set attrList [ list $memberName $weight ]

   return $attrList 

}

Index by: file name | procedure name | procedure call | annotation
File generated 2007-08-07 at 13:42.