A.3 Client SDK Reference information

This section provides the reference information for the Java classes used by the PlateSpin Orchestrate Client SDK

A.3.1 Constraint Package

The Java classes included in the Constraint package form the basis of the PlateSpin Orchestrate infrastructure. For complete documentation of each class, click on the links to access the online documentation javadoc.

Interfaces

The following Java files form the interfaces for the PlateSpin Orchestrate constraint grid structure:

Interface AndConstraint

Perform a logical and-ing of all child constraints.This is a no-op if this constraint contains no children.

For complete documentation of the class, see AndConstraint.

Interface BetweenConstraint

Binary Operator Constraints that have both a left and right side.

For complete documentation of the class, see BetweenConstraint.

Interface BinaryConstraint

Binary Operator Constraints that have both a left and right side.

For complete documentation of the class, see BinaryConstraint.

Interface Constraint

Basic Constraint interface that allows traversal and evaluation of a constraint tree.

For complete documentation of the class, see Constraint.

Interface ContainerConstraint

Container constraints that perform logical aggregation operations on contained constraints.

For complete documentation of the class, see ContainerConstraint.

Interface ContainsConstraint

Performs a simple set operation that returns true if the right side of the operation is found in the value set of the left side.

For complete documentation of the class, see ContainsConstraint.

Interface DefinedConstraint

Evaluates to true only if the left side fact is defined in the match context. If the left side is not defined, this will evaluate to false.

For complete documentation of the class, see DefinedConstraint.

Interface EqConstraint

Performs a equality constraint operation. Missing arguments will always result in this constraint evaluating to false.

Supported match modes:

  • Strings — MATCH_MODE_REGEXP & MATCH_MODE_GLOB

For complete documentation of the class, see EqConstraint.

Interface GeConstraint

Performs a ‘greater than or equal to’ constraint operation. Missing arguments always result in this constraint evaluating to false. The standard lexicographical ordering of values is used to determine result.

For complete documentation of the class, see GeConstraint.

Interface GtConstraint

Performs a 'greater than' constraint operation. Missing arguments will always result in this constraint evaluating to false. The standard lexicographical ordering of values is used to determine result.

For complete documentation of the class, see GtConstraint.

Interface IfConstraint

Perform a conditional if,then,else block. If conditional passes, the pass block is run as it would be in an AND constraint. If the the conditional fails, the fail block is run as it would be in an AND constraint.

For complete documentation of the class, see IfConstraint.

Interface IncludeConstraint

Extends the class Constraint.

For complete documentation of the class, see IncludeConstraint.

Interface LeConstraint

Performs a “less than or equal to” constraint operation. Missing arguments always result in this constraint evaluating to false. The standard lexicographical ordering of values is used to determine result.

For complete documentation of the class, see LeConstraint.

Interface LtConstraint

Performs a “‘less than” constraint operation. Missing arguments always result in this constraint evaluating to false. The standard lexicographical ordering of values is used to determine result.

For complete documentation of the class, see LtConstraint.

Interface NeConstraint

Performs a not equal constraint operation. Missing arguments always result in this constraint evaluating to false.

Supported match modes:

  • Strings — MATCH_MODE_REGEXP & MATCH_MODE_GLOB

For complete documentation of the class, see NeConstraint.

Interface NotConstraint

Perform a logical not operation of all the child constraints. This is a no-op if this constraint contains no children.

For complete documentation of the class, see NotConstraint.

Interface OperatorConstraint

Operator constraints that perform comparison operation on facts.

For complete documentation of the class, see OperatorConstraint.

Interface OrConstraint

Perform a logical or-ing operation of all the child constraints. This is a no-op if this constraint contains no children.

For complete documentation of the class, see OrConstraint.

Interface TypedConstraint

Typed constraint must only be used as the outermost wrapper when it is necessary to override the default constraint type of ‘resource.’ It provides the necessary context about where to add the contained constraints.

For complete documentation of the class, see TypedConstraint.

Interface UndefinedConstraint

Evaluates to true only if the left side fact is not defined in the match context. If the left side is not defined, this will evaluate to false.

For complete documentation of the class, see UndefinedConstraint.

Exceptions

The following Java files form the exceptions for the PlateSpin Orchestrate constraint grid structure:

Class ConstraintException

For exceptions that occur in parsing or executing constraints.

For complete documentation of the class, see ConstraintException.

A.3.2 Datagrid Package

The Java classes included in the Datagrid package form the basis of the PlateSpin Orchestrate infrastructure. For complete documentation of each class, click on the links to access the online documentation javadoc.

Interfaces

The following Java files form the interfaces for the PlateSpin Orchestrate datagrid structure:

Interface GridFile

Specifies the PlateSpin Orchestrate datagrid interface for individual files and directories.

This interface rather closely mirrors java.io.File. It does not, however, extend that class, since the standard Java I/O classes would not understand the semantics of this extended version. In particular, path names specified by this class refer to remote files that might not be directly accessible via the file system, as expected by standard Java file I/O classes.

The mirroring of java.io.File is done strictly for consistency and familiarity. There are a few methods in java.io.File that don't make sense in the context of the datagrid, and have thus been omitted. However, the commonly used methods such as canWrite, mkdir(), and so on are implemented and provide functionality for datagrid paths that is analogous to that provided by java.io.File for local file system paths.

For complete documentation of the class, see GridFile.

Interface GridFileFilter

Filter for accepting/rejecting file names in a directory list.

Filtering is done by fully qualified GridFile objects representing the files and directories contained directly under the parent.

For complete documentation of the class, see GridFileFilter.

Interface GridFileNameFilter

Filter for accepting/rejecting file names in a directory list.

Filtering is done by simple string path component names relative to the parent.

For complete documentation of the class, see GridFileNameFilter.

Classes

The following Java files form the classes for the PlateSpin Orchestrate datagrid structure:

Class DGLogger

Definitions of the DataGrid Logger options used for multicast.

For complete documentation of the class, see DGLogger.

Exceptions

The following Java files form the exceptions for the PlateSpin Orchestrate datagrid structure:

Class DataGridException

General exception class for datagrid errors.

For complete documentation of the class, see DataGridException.

Class DataGridNotAvailableException

Exception thrown if the datagrid cannot be reached due to a network error.

For complete documentation of the class, see DataGridNotAvailableException.

Class GridFile.CancelException

Exception thrown by cancelled requests.

For complete documentation of the class, see GridFile.CancelException.

A.3.3 Grid Package

The Java classes included in the Grid package form the basis of the PlateSpin Orchestrate infrastructure. For complete documentation of each class, click on the links to access the online documentation javadoc.

Interfaces

The following Java files form the interfaces for the PlateSpin Orchestrate grid structure:

Interface AgentListener

Provides the interface necessary for processing messages sent from the Orchestrate Server.

The implementation of this interface is registered with the agent using ClientAgent.addAgentListener().

For complete documentation, see AgentListener.

Interface ClientAgent

API for client communication with server for job and datagrid operations. This includes retrieving information about available jobs, to start jobs and to manage running jobs.

For complete documentation, see ClientAgent.

Interface Credential

A credential used for identity on the PlateSpin Orchestrate system. Use the CredentialFactory to create Credential instances.

For complete documentation, see Credential.

Interface Fact

The Fact object. This contains accessors for setting and getting fact values and for describing a Fact.

For complete documentation, see Fact.

Interface FactSet

Definition of a set of facts. Typically, this represents all facts associated with a particular Grid object.

NOTE:There is also a FactSetSnapshot that can hold a read-only, non-dynamic version of the facts.

For complete documentation, see FactSet.

Interface GridObjectInfo

Client interface to any Grid object. All “Info” objects are serializable.

For complete documentation, see GridObjectInfo.

Interface ID

A unique identifier for an engine or a facility or Grid object.

The default identifiers for the broker, facilities, and an unknown ID are defined here.

For complete documentation, see ID.

Interface JobInfo

A client representation of a deployed job.

The interface describes details about a deployed job. This is a simplified interface that is likely to be a subset of Job. It is used in the client API and for management.

For complete documentation, see JobInfo.

Interface Message

A base interface for all the messages in the system. It defines the basic methods that must be implemented by a message class, and also defines sub-interfaces for each of the actual messages in the system.

All of these message interfaces are intended to be viewed from the perspective of the consumer, not the producer. Producers are responsible for implementing the concrete classes which will underly these interfaces, and have complete freedom of choice as to how to implement constructors and set methods.

For complete documentation, see Message.

Interface Message.Ack

A general acknowledgement of “action” message.

For complete documentation, see Message.Ack.

Interface Message.AuthFailure

Authentication failure messages indicating that processing of a client message will not occur because client credentials are invalid.

For complete documentation, see Message.AuthFailure.

Interface Message.ClientResponseMessage

All messages that can optionally carry an error string back to the client extend this.

For complete documentation, see Message.ClientResponseMessage.

Interface Message.ConnectionID

Messages assigned a connection ID by the session manager.

For complete documentation, see Message.ConnectionID.

Interface Message.Event

An Event is used to signal clients and workflows. A client can receive an Event sent from a workflow. The ClientAgent.sendEvent() constructs an Event to send to workflows.

For complete documentation, see Message.Event.

Interface Message.GetGridObjects

Client request to retrieve an (optionally ordered) set of grid objects that match a search criteria (constraint).

For complete documentation, see Message.GetGridObjects.

Interface Message.GridObjects

Server response to client request to retrieve a grid object set.

For complete documentation, see Message.GridObjects.

Interface Message.JobAccepted

A JobAccepted message is sent in response to a RunJob message when a job is successfully accepted into the system.

For complete documentation, see Message.JobAccepted.

Interface Message.JobError

A JobError message is sent when an unrecoverable error occurs in a job.

For complete documentation, see Message.JobError.

Interface Message.JobFinished

A JobFinished message is sent when processing of a job completes.

For complete documentation, see Message.JobFinished.

Interface Message.JobIdEvent

Base Event interface for retrieving JobID used for jobid messages.

For complete documentation, see Message.JobIdEvent.

Interface Message.JobInfo

A JobInfo message contains information describing a deployed job.

For complete documentation, see Message.JobInfo.

Interface Message.Jobs

A Jobs message contains a list of deployed job names.

For complete documentation, see Message.Jobs.

Interface Message.JobStarted

A JobStarted message is sent when a job is successfully started.

For complete documentation, see Message.JobStarted.

Interface Message.JobStatus

A JobStatus message contains the state of the specified job. This is used in lieu of JobStatusDetail to get simple state info.

For complete documentation, see Message.JobStatus.

Interface Message.LoginFailed

Response message for an unsuccessful login.

For complete documentation, see Message.LoginFailed.

Interface Message.LoginSuccess

Response message for a successful login.

For complete documentation, see Message.LoginSuccess.

Interface Message.LogoutAck

A LogoutAck indicates success or failure of logout operation. It is a specific message type so error filtering can be applied when the message can't be delivered because the transport has already been closed.

For complete documentation, see Message.LogoutAck.

Interface Message.RunningJobs

A RunningJobs message contains the list of running jobs.

For complete documentation, see Message.RunningJobs.

Interface Message.ServerStatus

A ServerStatus message.

ServerStatus is different from a normal status message from the server because it normally requires an action on the part of the receiver whereas a Status is more informational. ServerStatus can be used for server shutdown, restart, version upgrade, migration to new host, and so on.

For complete documentation, see Message.ServerStatus.

Interface Node

Internal interface for Node (Resource) Grid object.

For complete documentation, see Node.

Interface Priority

Priority information.

For complete documentation, see Priority.

Interface WorkflowInfo

A WorkflowInfo can represent either a snapshot of a running instance or an historical record of an instance. It can be thought of as the client view of a Workflow which is its big sister that is active and runs in the server.

NOTE:Workflow extends WorkflowInfo. LiteWorkflowInfo implements WorkflowInfo.

Setter methods should be put in Workflow and not in WorkflowInfo.

For complete documentation, see WorkflowInfo.

Exceptions

The following Java files form the exceptions for the PlateSpin Orchestrate grid structure:

Class ClientOutOfDateException

Grid exception indicating the client is not compatible with the server.

This exception is thrown if a connection cannot be established with the PlateSpin Orchestrate Sserver because the current client software is either too old or too new to be compatible with the server.

For complete documentation, see ClientOutOfDateException.

Class FactException

For exceptions that occur in accessing or setting facts.

For complete documentation, see FactException.

Class GridAuthenticationException

Thrown when authentication is denied by a PlateSpin Orchestrate Server.

For complete documentation, see GridAuthenticationException.

Class GridAuthorizationException

Thrown when credentials are insufficient for the desired grid operation.

For complete documentation, see GridAuthorizationException.

Class GridConfigurationException

Grid exception thrown to indicate a grid configuration error.

This exception is thrown to indicate a severe error in the grid’s configuration that prevents it or one of its major components from operating correctly.

For complete documentation, see GridConfigurationException.

Class GridDeploymentException

Thrown when credentials are insufficient for the desired grid operation.

For complete documentation, see GridDeploymentException.

Class GridException

The base exception for all grid exceptions. This provides an easy way to catch multiple types of related exceptions in the system without needing to explicitly list every one.

For complete documentation, see GridException.

Class GridObjectNotFoundException

Thrown when a Grid object lookup does not find the requested object.

For complete documentation, see GridObjectNotFoundException.

A.3.4 TLS Package

The Java classes included in the TLS package form the basis of the PlateSpin Orchestrate infrastructure. For complete documentation of each class, click on the links to access the online documentation javadoc.

Interfaces

Interfaces used for secure authentication to Orchestrate Server include the following:

Interface TlsCallbacks

Callback interface for TLS certificate exceptions.

An instance of this interface may be passed to TlsConfiguration.setCallbacks(TlsCallbacks) or to TlsConfiguration.setDefaultCallbacks(TlsCallbacks) to provide customized handling of missing or mismatched TLS server certicates encountered while attempting to make TLS connections to a PlateSpin Orchestrate Server.

The TlsCallbacks.onCertificateNotFound(SocketAddress,PemCertificate) method is invoked when the PlateSpin Orchestrate Server returns a server certificate and there is currently no certificate found for that server. If this method returns false, a certificate exception is thrown on the client; otherwise, the code for this method can “accept” the certificate, possibly with user warnings and a confirmation dialog before returning true to indicate that the certificate is “OK.”

The TlsCallbacks.onCertificateMismatch(SocketAddress,PemCertificate,PemCertificate) method is invoked when the PlateSpin Orchestrate Server returns a server certificate that does not correctly match the current certificate held by the client. This exception is a more severe error than “not found” because it indicates a possible spoofing attempt by a “man in the middle.” We recommend that implementations of this callback method default to returning false unless the user or administrator very specifically indicates a willingness to accept the new certificate.

For complete documentation of the class, see TlsCallbacks.

Classes

Classes used for secure authentication to Orchestrate Server include the following:

Class PemCertificate

PEM certificate wrapper for X.509 certificates.

This convenience class wraps up an X.509 certificate in an object that allows the certificate to be read from and stored to a standard PEM encoded X.509 certificate file. This allows the Orchestrate Clients to make use of the Sun TLS provider without requiring that the Orchestrate Server certificate be manually installed in the JRE’s keystore. The use of standardized PEM certificates allows more portable handling and offline generation of certificates (if desired for security purposes) and enables simplified management of certificates.

For complete documentation of the class, see PemCertificate.

Class TlsConfiguration

TLS Configuration parameters for Orchestrate Clients.

This class holds various TLS-related configuration parameters used by Orchestrate Clients to connect to the server. By passing an instance of this class to the Development Client API upon login, or by setting global defaults, the behavior and usage of Transport Layer Security (TLS) can be modified by client writers.

The factory default behavior for Orchestrate Clients and agents is to enable TLS, with the level of encryption specified by the server upon client connection. By default, “client” (as opposed to “agent”) connection mode is assumed.

This class is fully cloneable and serializable. It is recommended that the type-safe TlsConfiguration.copy() method be used for cloning.

The following is a simple example of the usage of this class to configure TLS support on a client connection to a PlateSpin Orchestrate Server:

    import com.novell.zos.tls.TlsConfiguration;
    import com.novell.zos.grid.ClientAgent;
    import com.novell.zos.grid.Credential;
    import com.novell.zos.toolkit.CredentialFactory;
    ...
    TlsConfiguration tlsConfig = new TlsConfiguration();
    tlsConfig.setCertificatePath("/tmp");
    Credential cred = CredentialFactory.newPasswordCredential("user", "pass".toCharArray());
    ClientAgent client = ClientAgentFactory.newClientAgent("127.0.0.1");
    client.setTlsConfiguration(tlsConfig);
    client.login(cred);
    System.out.println("Logged In");

If custom handling of unknown or mismatched server certificates is required by the client, then add a call to TlsConfiguration.setCallbacks(TlsCallbacks) with an instance of TlsCallbacks providing methods for handling each of those cases.

If certain TLS parameters will always be the same for all instances (that is, they were specified on a global command line at JVM launch), those parameters can be specified as “global defaults” using the “setDefault*” versions of the various methods of this class. This can be used to avoid passing global configuration parameters among many different objects.

For complete documentation of the class, see TlsConfiguration.

A.3.5 Toolkit Package

The Java classes included in the Toolkit package form the basis of the PlateSpin Orchestrate infrastructure. For complete documentation of each class, click on the links to access the online documentation javadoc.

Classes

The following Java files form the classes for the PlateSpin Orchestrate toolkit structure:

Class ClientAgentFactory

Factory pattern used to create new clients for connection to a PlateSpin Orchestrate Server. This is the starting point for clients to communicate with the server.

For complete documentation of the class, see ClientAgentFactory.

Class ConstraintFactory

Factory pattern used to create constraint objects that can be combined into larger constraint hierarchies for use in searches or other constraint-based matching.

For complete documentation of the class, see ConstraintFactory.

Class CredentialFactory

Factory pattern used to create a Credential used for connection to a PlateSpin Orchestrate Server.

For complete documentation of the class, see CredentialFactory.