org.hpccsystems.ws.client.HPCCWsTopologyClient Maven / Gradle / Ivy
package org.hpccsystems.ws.client;
import java.io.PrintStream;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import org.apache.axis2.AxisFault;
import org.apache.log4j.Logger;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.ArrayOfTpCluster;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.ArrayOfTpTargetCluster;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpCluster;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpClusterInfoRequest;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpClusterInfoResponse;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpDropZoneQueryRequest;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpDropZoneQueryResponse;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpLogicalClusterQueryRequest;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpLogicalClusterQueryResponse;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpServiceQueryRequest;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpServiceQueryResponse;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpTargetCluster;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpTargetClusterQueryRequest;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.TpTargetClusterQueryResponse;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.WsTopologyPingRequest;
import org.hpccsystems.ws.client.gen.axis2.wstopology.v1_28.WsTopologyStub;
import org.hpccsystems.ws.client.utils.Connection;
import org.hpccsystems.ws.client.wrappers.ArrayOfEspExceptionWrapper;
import org.hpccsystems.ws.client.wrappers.gen.wstopology.ArrayOfTpDropZoneWrapper;
import org.hpccsystems.ws.client.wrappers.gen.wstopology.ArrayOfTpLogicalClusterWrapper;
import org.hpccsystems.ws.client.wrappers.gen.wstopology.ArrayOfTpTargetClusterWrapper;
import org.hpccsystems.ws.client.wrappers.gen.wstopology.TpClusterInfoResponseWrapper;
import org.hpccsystems.ws.client.wrappers.gen.wstopology.TpDropZoneWrapper;
import org.hpccsystems.ws.client.wrappers.gen.wstopology.TpLogicalClusterWrapper;
import org.hpccsystems.ws.client.wrappers.gen.wstopology.TpMachineWrapper;
import org.hpccsystems.ws.client.wrappers.gen.wstopology.TpServicesWrapper;
import org.hpccsystems.ws.client.wrappers.gen.wstopology.TpTargetClusterWrapper;
/**
* Use as soap client for HPCC WsTopology web service.
* This client can be used for fetching topology information regarding the target HPCCSystem
* of special interest are the cluster groups, and the target clusters within those groups.
*
*/
public class HPCCWsTopologyClient extends BaseHPCCWsClient
{
private static final Logger log = Logger.getLogger(HPCCWsTopologyClient.class.getName());
//public static final String WSTOPOLOGYWSDLURI = "/WsTopology/TpTargetClusterQuery";
public static final String WSTOPOLOGYWSDLURI = "/WsTopology";
public static HPCCWsTopologyClient get(Connection connection)
{
return new HPCCWsTopologyClient(connection);
}
public static HPCCWsTopologyClient get(String protocol, String targetHost, String targetPort, String user, String pass)
{
Connection conn = new Connection(protocol,targetHost,targetPort);
conn.setCredentials(user, pass);
return new HPCCWsTopologyClient(conn);
}
public static HPCCWsTopologyClient get(String protocol, String targetHost, String targetPort, String user, String pass, int timeout)
{
Connection conn = new Connection(protocol,targetHost,targetPort);
conn.setCredentials(user, pass);
conn.setConnectTimeoutMilli(timeout);
conn.setSocketTimeoutMilli(timeout);
return new HPCCWsTopologyClient(conn);
}
protected HPCCWsTopologyClient(Connection baseConnection)
{
initWsTopologyStub(baseConnection);
}
/**
* Initializes the service's underlying soap proxy. Should only be used by constructors
*
* @param baseURL Target service base URL
* @param user User credentials
* @param pass User credentials
*/
private void initWsTopologyStub(Connection connection)
{
try
{
stub = setStubOptions(new WsTopologyStub(connection.getBaseUrl()+WSTOPOLOGYWSDLURI),connection);
}
catch (AxisFault e)
{
log.error("Could not initialize WsTopologyStub - Review all HPCC connection values");
e.printStackTrace();
}
catch (Exception e)
{
log.error("Could not initialize WsTopologyStub - Review all HPCC connection values");
if (!e.getLocalizedMessage().isEmpty())
{
initErrMessage = e.getLocalizedMessage();
log.error(e.getLocalizedMessage());
}
}
}
/**
* prints available target cluster names to given print stream
* @param stream - Stream to print onto (System.out | System.err)
* @return - Boolean, success
* @throws Exception
* @throws ArrayOfEspExceptionWrapper
*/
public boolean printValidTargetClusters(PrintStream stream) throws Exception, ArrayOfEspExceptionWrapper
{
boolean success = false;
verifyStub(); //Throws exception if stub failed
TpTargetClusterQueryRequest request = new TpTargetClusterQueryRequest();
request.setType("ROOT");
request.setShowDetails(false);
TpTargetClusterQueryResponse response = null;
try
{
response = ((WsTopologyStub)stub).tpTargetClusterQuery(request);
}
catch (RemoteException e)
{
throw new Exception ("HPCCWsTopologyClient.printValidTargetClusters(...) encountered RemoteException.", e);
}
if (response.getExceptions() != null)
handleEspExceptions(new ArrayOfEspExceptionWrapper(response.getExceptions()), "Could Not fetch target groups.");
ArrayOfTpTargetCluster arrayOfTpTargetCluster = response.getTpTargetClusters();
if (arrayOfTpTargetCluster != null)
{
TpTargetCluster [] tpTargetClusters = arrayOfTpTargetCluster.getTpTargetCluster();
for (TpTargetCluster tptargetcluster : tpTargetClusters)
{
ArrayOfTpCluster tpClusters = tptargetcluster.getTpClusters();
if (tpClusters != null)
{
for (TpCluster tpcluster : tpClusters.getTpCluster())
{
stream.println(" TPCluster Name: " + tpcluster.getName());
}
}
}
success = true;
}
return success;
}
/**
* Get full descriptions of all valid cluster groups on the target HPCC System
* @return
* @throws Exception
* @throws ArrayOfEspExceptionWrapper
*/
public List getValidTargetGroups() throws Exception, ArrayOfEspExceptionWrapper
{
List tpTargetClusters = null;
verifyStub(); //Throws exception if stub failed
TpTargetClusterQueryRequest request = new TpTargetClusterQueryRequest();
request.setType("ROOT");
request.setShowDetails(false);
TpTargetClusterQueryResponse response = null;
try
{
response = ((WsTopologyStub)stub).tpTargetClusterQuery(request);
}
catch (RemoteException e)
{
throw new Exception ("HPCCWsTopologyClient.getValidTargetGroups(...) encountered RemoteException.", e);
}
if (response.getExceptions() != null)
handleEspExceptions(new ArrayOfEspExceptionWrapper(response.getExceptions()), "Could Not fetch target groups.");
ArrayOfTpTargetClusterWrapper arrayOfTpTargetCluster = new ArrayOfTpTargetClusterWrapper(response.getTpTargetClusters());
if (arrayOfTpTargetCluster != null)
tpTargetClusters = arrayOfTpTargetCluster.getTpTargetCluster();
return tpTargetClusters;
}
/**
* Get names of all available target clusters on the given HPCC System
* @return
* @throws Exception
* @throws ArrayOfEspExceptionWrapper
*/
public String[] getValidTargetGroupNames() throws Exception, ArrayOfEspExceptionWrapper
{
String[] tpTargetClusterNames = null;
verifyStub(); //Throws exception if stub failed
TpTargetClusterQueryRequest request = new TpTargetClusterQueryRequest();
request.setType("ROOT");
request.setShowDetails(false);
TpTargetClusterQueryResponse response = null;
try
{
response = ((WsTopologyStub)stub).tpTargetClusterQuery(request);
}
catch (RemoteException e)
{
throw new Exception ("HPCCWsTopologyClient.getValidTargetGroupNames(...) encountered RemoteException.", e);
}
if (response.getExceptions() != null)
handleEspExceptions(new ArrayOfEspExceptionWrapper(response.getExceptions()), "Could Not fetch target groups.");
ArrayOfTpTargetCluster arrayOfTpTargetCluster = response.getTpTargetClusters();
TpTargetCluster[] tpTargetClusters = arrayOfTpTargetCluster.getTpTargetCluster();
tpTargetClusterNames = new String [tpTargetClusters.length];
for (int i = 0; i < tpTargetClusters.length; i++)
{
tpTargetClusterNames[i] = tpTargetClusters[i].getName();
}
return tpTargetClusterNames;
}
/**
* @param name - The target dropzone name
* @return
* @throws Exception
* @throws ArrayOfEspExceptionWrapper
*/
public TpDropZoneWrapper queryDropzone(String name) throws Exception, ArrayOfEspExceptionWrapper
{
List dropZones = queryDropzones(name);
if (dropZones.size() != 1)
throw new Exception ("Could not query Dropzone: '" + name + "'");
return dropZones.get(0);
}
/**
* @param namefilter - Empty for all dropzones, or specific dropzeon name
* @return
* @throws Exception
* @throws ArrayOfEspExceptionWrapper
*/
public List queryDropzones(String namefilter) throws Exception, ArrayOfEspExceptionWrapper
{
verifyStub(); //Throws exception if stub failed
TpDropZoneQueryRequest request = new TpDropZoneQueryRequest();
request.setName(namefilter);
TpDropZoneQueryResponse response = null;
try
{
response = ((WsTopologyStub)stub).tpDropZoneQuery(request);
}
catch (RemoteException e)
{
throw new Exception ("HPCCWsTopologyClient.queryDropzones(...) encountered RemoteException.", e);
}
if (response.getExceptions() != null)
handleEspExceptions(new ArrayOfEspExceptionWrapper(response.getExceptions()), "Error fetching dropzone info");
ArrayOfTpDropZoneWrapper arrayoftpdz = new ArrayOfTpDropZoneWrapper(response.getTpDropZones());
return arrayoftpdz.getTpDropZone();
}
public List queryDropzoneMachines(String name) throws Exception, ArrayOfEspExceptionWrapper
{
return queryDropzone(name).getTpMachines().getTpMachine();
}
/**
* Get the names of all available target clusters from a given cluster group (hthor, thor, roxie, Hole, etc)
* @param clusterGroupType -- RoxieCluster, HoleCluster
* @return
* @throws Exception
* @throws ArrayOfEspExceptionWrapper
*/
public String[] getValidTargetClusterNames(String clusterGroupType) throws Exception, ArrayOfEspExceptionWrapper
{
List tpTargetClusterNames = new ArrayList();
verifyStub(); //Throws exception if stub failed
TpTargetClusterQueryRequest request = new TpTargetClusterQueryRequest();
request.setType("ROOT");
request.setShowDetails(false);
TpTargetClusterQueryResponse response = null;
try
{
response = ((WsTopologyStub)stub).tpTargetClusterQuery(request);
}
catch (RemoteException e)
{
throw new Exception ("HPCCWsTopologyClient.getValidTargetGroupNames(...) encountered RemoteException.", e);
}
if (response.getExceptions() != null)
handleEspExceptions(new ArrayOfEspExceptionWrapper(response.getExceptions()), "Could Not fetch target groups.");
ArrayOfTpTargetCluster arrayOfTpTargetCluster = response.getTpTargetClusters();
if (arrayOfTpTargetCluster != null)
{
TpTargetCluster[] tpTargetClusters = arrayOfTpTargetCluster.getTpTargetCluster();
for (int i = 0; i < tpTargetClusters.length; i++)
{
if (clusterGroupType == null || clusterGroupType.isEmpty() || tpTargetClusters[i].getType().equalsIgnoreCase(clusterGroupType+"cluster" )) //type == HoleCluster | ThorCluster , etc.
{
ArrayOfTpCluster arrayOfTpCluster = tpTargetClusters[i].getTpClusters();
if (arrayOfTpCluster != null)
{
TpCluster[] tpClusters = arrayOfTpCluster.getTpCluster();
if (tpClusters != null )
{
for (int k = 0; k < tpClusters.length; k++)
{
if (clusterGroupType == null || clusterGroupType.isEmpty() || tpClusters[k].getType().equalsIgnoreCase(clusterGroupType+"cluster" ))
{
//We're looking for the name of the tptargetcluster, not the the child cluster name
if (!tpTargetClusterNames.contains(tpTargetClusters[i].getName()))
tpTargetClusterNames.add(tpTargetClusters[i].getName());
}
}
}
}
}
}
}
return tpTargetClusterNames.toArray(new String [0]);
}
/**
* Get the names of all available target clusters (mythor, myroxie, etc.) from all cluster groups (hthor, thor, roxie, etc)
* @return
* @throws Exception
* @throws ArrayOfEspExceptionWrapper
*/
public String [] getValidTargetClusterNamesArray() throws Exception, ArrayOfEspExceptionWrapper
{
return getValidTargetClusterNames("");
}
/**
* Get the names of all available target clusters (mythor, myroxie, etc.) from all cluster groups (hthor, thor, roxie, etc)
* @return
* @throws Exception
* @throws ArrayOfEspExceptionWrapper
*/
public List getValidTargetClusterNames() throws Exception, ArrayOfEspExceptionWrapper
{
List names = new ArrayList();
String[] validTargetClusterNames = getValidTargetClusterNamesArray();
for (int i = 0; i < validTargetClusterNames.length; i++)
{
names.add(validTargetClusterNames[i]);
}
return names;
}
public TpServicesWrapper getServices() throws Exception, ArrayOfEspExceptionWrapper
{
verifyStub(); //Throws exception if stub failed
TpServiceQueryRequest request = new TpServiceQueryRequest();
request.setType("ALLSERVICES");
TpServiceQueryResponse response = null;
try
{
response = ((WsTopologyStub)stub).tpServiceQuery(request);
}
catch (RemoteException e)
{
throw new Exception ("HPCCWsTopologyClient.getServices(...) encountered RemoteException.", e);
}
if (response.getExceptions() != null)
handleEspExceptions(new ArrayOfEspExceptionWrapper(response.getExceptions()), "Could Not fetch target services.");
return new TpServicesWrapper(response.getServiceList());
}
public TpClusterInfoResponseWrapper getClusterInfo(String clusterName) throws Exception, ArrayOfEspExceptionWrapper
{
verifyStub(); //Throws exception if stub failed
TpClusterInfoRequest request = new TpClusterInfoRequest();
request.setName(clusterName);
TpClusterInfoResponse response = null;
try
{
response = ((WsTopologyStub)stub).tpClusterInfo(request);
}
catch (RemoteException e)
{
throw new Exception ("HPCCWsTopologyClient.getClusterInfo("+clusterName+") encountered RemoteException.", e);
}
if (response.getExceptions() != null)
handleEspExceptions(new ArrayOfEspExceptionWrapper(response.getExceptions()), "Could not get getClusterInfo for cluster: '"+clusterName+"'");
return new TpClusterInfoResponseWrapper(response);
}
public List getLogicalClusters() throws Exception, ArrayOfEspExceptionWrapper
{
verifyStub(); //Throws exception if stub failed
List tplogclusters = null;
TpLogicalClusterQueryRequest request = new TpLogicalClusterQueryRequest();
TpLogicalClusterQueryResponse response = null;
try
{
response = ((WsTopologyStub)stub).tpLogicalClusterQuery(request);
}
catch (RemoteException e)
{
throw new Exception ("HPCCWsTopologyClient.getLogicalClusters() encountered RemoteException.", e);
}
if (response.getExceptions() != null)
handleEspExceptions(new ArrayOfEspExceptionWrapper(response.getExceptions()), "Could not get getLogicalClusters");
ArrayOfTpLogicalClusterWrapper tpLogicalClusters = new ArrayOfTpLogicalClusterWrapper(response.getTpLogicalClusters());
if (tpLogicalClusters != null)
tplogclusters = tpLogicalClusters.getTpLogicalCluster();
return tplogclusters;
}
public boolean ping() throws Exception
{
verifyStub();
WsTopologyPingRequest request = new WsTopologyPingRequest();
try
{
((WsTopologyStub)stub).ping(request);
}
catch (Exception e)
{
return false;
}
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy