Solved

WebSphere Jython script to list node status

Posted on 2010-08-24
13
2,752 Views
Last Modified: 2013-12-11
I am trying to put together a jython script that will stop the nodes on the server, and then list the status of the server to verify it stopped.
Ideally, the script would attempt to stop, check the status, then IF they are stopped, continue, if they are not stopped, try and terminiate.

This is a small piece of a larger script which will do the following with all of the correct checks in place to ensure everything is being deployed correctly.
Stop nodes
Uninstall application
Save
Install application
Save
Wait for files to be built
Restart Node Agent
Ripple-Start the cluster
0
Comment
Question by:rwskas
  • 6
  • 4
  • 3
13 Comments
 
LVL 41

Accepted Solution

by:
HonorGod earned 250 total points
ID: 33516614
There are a couple of different ways to stop an AppServer:

- AdminControl.stopServer( serverName, nodeName );  # A couple of variations exists

- Get the MBean of the specific server, then;

  AdminControl.invoke( mbean, 'stop' );

The former "waits" for the AppServer to stop, but the latter doesn't.

However, the former writes message to the display (i.e., stdout), but the latter doesn't.

Which do you prefer?
0
 
LVL 41

Expert Comment

by:HonorGod
ID: 33517180
This book

Title: WebSphere Application Server Administration using Jython
 Pub: http://www.ibmpressbooks.com/bookstore/product.asp?isbn=0137009526

Includes some sample programs
- From the publisher website
  Click on the "Download" links
  Right click on the "Sample scripts" and "save as"

- Unzip the file, and locate "StopCell.py" in the Chapter 10

It uses technique #1 above.
If you want to see code for technique #2, let me know...
0
 
LVL 11

Assisted Solution

by:Radek Baranowski
Radek Baranowski earned 250 total points
ID: 33519138
what do you mean exactly ? you  say you want to stop 'nodes' when in reality you should stop servers on nodes (as HonorGod wrote) then do the app change, sync nodes and then bring servers up. in my opinion you should not try to restart nodeagents, as then you may compromise environment consistency. anyway, when working on DMgr side, you install apps to master config repository, and you need then send the thing out to nodes via nodeagents with appropriate wsadmin commands like:

nodeID = AdminConfig.getid('/Cell:xfinwas1Cell01/Node:XCRYPTO1PRENode01/')
print "Synchronizing node: " + nodeID
Sync1 = AdminControl.completeObjectName('type=NodeSync,node=XCRYPTO1Node01,*')
AdminControl.invoke(Sync1, 'sync')
0
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 
LVL 6

Author Comment

by:rwskas
ID: 33520863
Hmmm... I Suppose that would be why my script is not deploying correctly... I haven't had much time to test, but basically the files I would be expected to be built never show up.

So.. What is the CORRECT process to uninstall/reinstall an application?

@HonorGod
Thanks for the refrence! I have downloaded and will review the StopCell.py script in Chapter 9
0
 
LVL 11

Expert Comment

by:Radek Baranowski
ID: 33521062
in general - the process is simple and you do it as you try to (I suppose). the diference may come from environment you try to do it on.
on standalone server you install/uninstall (deploy) into servers config repository,and the server is the one you actually run application on.
in network deployment/cluster you install (deploy) application into master config repository on deployment manager, and through synchronization you deliver this runtime config change to the servers, that are actually running this application.
usually, dMgr is not used to run any business applications, just for management

as far as I know, all necessary files are either built during deployment, or - at latest - during server startup (in cluster)
0
 
LVL 41

Expert Comment

by:HonorGod
ID: 33521277
To add to what baranello stated.

We have 3 different scenarios:

1. A simple/single stand-alone AppServer
    Use the AdminApp.install() method
    http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/info/ae/ae/rxml_adminapp.html#rxml_adminapp__cmd7

2. A Federated (unclustered) AppServer = 1 AppServer managed & administered by/with a deployment manager
    Use the AdminApp.install() method

3. A Cluster - 1 or more AppServers managed & administered by/with a deployment manager
    Use the AdminApp.install() method
    Synchronize:
    http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/txml_sync.html
0
 
LVL 6

Author Comment

by:rwskas
ID: 33521395
So we have a few different clusters, across 4 different physical servers. Each cluster however, has its own 'version' of the build, as each cluster performs different/specfic actions.

Rigth now, we manually (through the websphere gui console) uninstall / install the application on each of the 4 physical servers. Each cluster is a single node, some have only one application server, while some have 4.

At what point do I need to use the sync commands?
0
 
LVL 11

Expert Comment

by:Radek Baranowski
ID: 33521472
after using AdminApp.install() in wsadmin on DMgr.
0
 
LVL 6

Author Comment

by:rwskas
ID: 33521496
before or after the Admin...save() ?
0
 
LVL 41

Expert Comment

by:HonorGod
ID: 33522164
The AdminConfig.save() will save the configuration information (i.e., the xml files).
That should be done first.
0
 
LVL 6

Author Comment

by:rwskas
ID: 33558634
Just to make sure I have this..
If I want to stop the application servers, and have the script WAIT for the server to actually stop, I would use
AdminControl.stopServer( serverName, nodeName )

Then I would uninstall the application
AdminApp.uninstall('myapp')

Then save
AdminConfig.save()

Then deploy the new app
AdminApp.install(....)

Then save
AdminConfig.save()

Then syncronize
AdminControl.invoke(Sync1, 'sync')

Does that sound correct to affectively reinstall an application?
0
 
LVL 41

Expert Comment

by:HonorGod
ID: 33563657
The save after uninstall is not required unless you aren't going to install something.

Other than that, yes.
0
 
LVL 41

Expert Comment

by:HonorGod
ID: 33577553
Thanks for the grade & points.

Good luck & have a great day.
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
servlet example issue 6 38
tomcat startup error 5 59
servlet example 17 28
pagenation logic how it is working in my code 1 26
Upgrading Tomcat – There are a couple of methods to upgrade Tomcat is to use The Apache Installer is to download and unzip and run the services.bat remove|install Tomcat6 Because of the App that we are working with, we can only use Tomcat 6.…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
The viewer will learn how to implement Singleton Design Pattern in Java.

816 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now