Showing posts with label create Cluster using Jythonn. Show all posts
Showing posts with label create Cluster using Jythonn. Show all posts

Thursday, September 4, 2014

Creating cluster using Jython wsadmin

Pre requisites 
As per todays experiment what I understood is we need the following are the pre-requisites for the Cluster configuration in WebSphere Environment:
1) Cell created with a DMGR Profile
2) Nodeagents created and added to the cell.
3) Dmgr, Nodeagent must be running.

Jython Script for Cluster

 
import sys
import os
import socket

#Get the operating system line separator from the linesep method of the os object
nl = os.linesep

# Store the Cell identifier for the specified Cell
cellID = AdminConfig.list('Cell')
cellName = AdminConfig.showAttribute(cellID, 'name')

#derives the environment type from the cellName
sName = cellName.replace("Cell","")
sName = sName.replace("Demo","")

# Store the Node identifier for the specified Node
nodeIDs = AdminConfig.list('Node').split(nl)
nodeNames = AdminTask.listNodes().split(nl)
nodeNames.sort()

# Identify each node and it's purpose so we can start creating servers and clusters on the
# appropriate nodes
for nid in nodeIDs:
 nname=AdminConfig.showAttribute(nid, 'name')
 nname=nname.replace(sName, "")
 if nname == "AppSrvNode":
  NID01=nid
 elif nname == "AppSrvNode02":
  NID02=nid
 continue
# Store the node names
Node1Name = AdminConfig.showAttribute(NID01, 'name')
Node2Name = AdminConfig.showAttribute(NID02, 'name') 
 
print Node1Name,Node2Name

# Create the cluster and store the cluster name
print "\nCreating the Demo cluster"
clusterID = AdminTask.createCluster('[-clusterConfig [-clusterName Demo' + sName + 'Cluster -preferLocal true]]')
clusterName = AdminConfig.showAttribute(clusterID, 'name')


# Creates all of the cluster members on the specified nodes
print "\nCreating the cluster members for the Demo cluster"
def createClusterMembers(nn01, nn02, clustName):
 i = 1
 while i <= 2:
  if i == 1:
   AdminTask.createClusterMember('[-clusterName ' + clustName + ' -memberConfig [-memberNode ' + nn01 + ' -memberName Demo' + sName + 'CM' + str(i) + ' -memberWeight 2 -genUniquePorts true -replicatorEntry false] -firstMember [-templateName default -nodeGroup DefaultNodeGroup -coreGroup DefaultCoreGroup]]')
  elif i > 1:
   AdminTask.createClusterMember('[-clusterName ' + clustName + ' -memberConfig [-memberNode ' + nn01 + ' -memberName Demo' + sName + 'CM' + str(i) + ' -memberWeight 2 -genUniquePorts true -replicatorEntry false]]')
  i+=1
  continue
 
 while i <=4:
  AdminTask.createClusterMember('[-clusterName ' + clustName + ' -memberConfig [-memberNode ' + nn02 + ' -memberName Demo' + sName + 'CM' + str(i) + ' -memberWeight 2 -genUniquePorts true -replicatorEntry false]]')
  i+=1
  continue

createClusterMembers(Node1Name, Node2Name, clusterName)
# Gets a list of all the newly created cluster members
cmIDs = AdminConfig.list('ClusterMember', clusterID).split(nl)

#Lists all of the application servers
serverName = []
serverID = AdminTask.listServers('-serverType APPLICATION_SERVER').split(nl)
for sid in serverID:
 serverName.append(AdminConfig.showAttribute(sid, 'name'))

serverName.sort()


# This function saves any configuration changes to the master respository
def saveConfig():
 print ""
 print "Saving changes to the master repository"
 AdminConfig.save()
 print ""
 print "DONE!"

# The following function Syncs all of the nodes with an active/started nodeagent task
def syncNodes():
 nodelist = AdminConfig.list('Node').split(nl)
 print "\n\n########################################"
 print "### Synchronizing the Nodes"
 print "########################################\n"
 for n in nodelist:
  nodename = AdminConfig.showAttribute(n, 'name')
  objname = "type=NodeSync,node=" + nodename + ",*"
  Syncl = AdminControl.completeObjectName(objname)
  if Syncl != "":
   if AdminControl.invoke(Syncl, 'isNodeSynchronized') == "true":
    print "\n!! " + nodename + " is already synchronized"
   else:
    AdminControl.invoke(Syncl, 'sync')
    print "\n)) " + nodename + " synchronized"
  continue
  
print "Save the configuration changes?\n\n"

saveConfig()

syncNodes()
This was given me great learning oppurtunity the output makes me THRILLED!! O/P
 

wsadmin>execfile('/home/krish/jython/cluster.py')
AppSrvNode AppSrvNode02

Creating the Demo cluster
Creating the cluster members for the Demo cluster
Save the configuration changes?

Saving changes to the master repository

DONE!

########################################
### Synchronizing the nodes
########################################

)) AppSrvNode synchronized

)) AppSrvNode02 synchronized

Containerization with Docker

Containerization with Docker
Learn modern microservices containers grow