GAT Adaptor Writer FAQ

 

 

 

Understanding GAT adaptor

 

1-1: Why adapt to GAT?

1-2: What is a GAT Adaptor?

1-3: What is the intent of GAT adaptors?

1-4: What is the applicability of a GAT adaptor can provide?

1-5: How many catalogues of GAT adaptors?

 

Writing a GAT adaptor

 

2-1: What prerequisites to write a GAT adaptor?

2-2: What is GAT CPI?

2-3: What kinds of functions a GAT adaptor should be implemented?

2-4: What is a registration function?

2-5: What are GAT adaptor management functions?

2-6: What are GATObject specific functions?

2-7: What are Instance specific functions?

2-8: What are serialisable functions?

2-9: What are Monitorable functions?

 

Deploying a GAT adaptor

 

3-1: How to install a GAT adaptor manually?

3-2: How many environment variables are needed to test a GAT adaptor (or GAT)?

 

Understanding GAT adaptor

 

1-1: Why adapt to GAT?

 

            GAT presents a uniform interface to the grid middleware, which eases the burden placed on Grid application programmers.  They only need learn one API, and they can program to any Grid middleware without fear of vendor lock-in.

 

1-2: What is a GAT Adaptor?

 

            The GAT has a three-tier design consisting of GAT-API, GAT Engine, and GAT Adaptors.  GAT-API defines a simple, platform-independent API to generic Grid resources and services.  GAT Engine is employed to transparently dispatch GAT API calls to GAT Adaptor.

            GAT Adaptors provide all the functionality for GAT, which makes it straightforward to incorporate new services and technologies without needing any change to Grid application code.

 

1-3: What is the intent of GAT adaptors?

 

            A GAT adaptor converts the interface presented by a particular piece of Grid middleware into the interface expected by GAT.  Through this Grid middleware wrapper a GAT adaptor allows GAT and a particular piece of Grid middleware to work together, where as previously they were mutually incompatible.

 

1-4: What is the applicability of a GAT adaptor?

 

            There are three major cases: GAT benefits from the use of existing classes with interfaces not matching those required by GAT; GAT requires a reusable interface which can interoperate with classes developed independent of GAT; GAT benefits from the existence of numerous realizations of a given interface that can be exchanged at run time.

 

1-5: How many catalogues of GAT adaptors?

 

            From the functionality perspective, there are 7 kinds of GAT adaptors: File Management, FileStream Management, LogicalFile Management, Advertisable Management, Resource Management, Interprocess Communication, Job Management, and Monitoring.


Writing a GAT adaptor

 

2-1: What prerequisites are needed to write a GAT adaptor?

 

            Before you develop a GAT adaptor, you should have a basic familiarity with the C89/C99 programming language, have a programming environment for the C89/C99 programming language, and a basic familiarity with the concepts of object oriented programming.

 

2-2: What is GAT CPI?

 

            CPI stands for Capability Provider Interface. 

GAT-API is divided into several subsystems which handle different aspects of Grids, such as resource management, data management, event management, and information management.  Subsystems are implemented by adaptors through the appropriate set of CPIs.  It defines how the underlying subsystem functionality is translated into the GAT API.  Each CPI corresponds to a fundamental object of a particular subsystem.  While an individual CPI may be re-implemented in different subsystem, the set of CPI utilized by a particular subsystem will be unique.

 

2-3: What kinds of functions a GAT adaptor should be implemented by a GAT adaptor writer?

 

            Generally to speak, there are six kinds of functions which should be implemented by a GAT adaptor developer: Registration, Adaptor management functions, GATObject specific functions, Instance specific functions, Serializable functions, and Monitorable functions.

 

2-4: What is the registration function?

 

            The registration function is a function that makes GAT aware of the functions a developer has written to implement a GAT adaptor’s functionalities. 

In implementing a GAT adaptor one must write the various functions which implement the functionalities provided by the Target.  However, to allow GAT to utilize these functions, the writer must make GAT aware of these functions’ existence.  This is done through the registration function.  It is the first function of a GAT adaptor called by GAT Engine.

 

2-5: What are GAT adaptor management functions?

 

            The GAT adaptor management functions are the various functions in a GAT adaptor which implement the adaptor functionality required to handle adaptor administration.  Currently there are two adaptor management functions: one is to destroy a GAT adaptor, and the other to perform service action.

 

2-6: What are GATObject specific functions?

 

            The GATObject specific functions are the various functions in a GAT adaptor which implement the general GATObject functionalities.  For example, in any class which requires an adaptor the adaptor must implement various functions which provide the standard GATObject functionalities.

 

2-7: What are Instance specific functions?

 

            These functions are the functions in a GAT adaptor which implement the functionalities specific the particular subclass of GATObject the adaptor adapts.  For example, in the case of the class GATFile, these functions would include those for copying an instance, moving an instance, deleting an instance, and the like.

 

2-8: What are serialisable functions?

 

            The serializable functions enable each instance of a class to serialize and de-serialise itself.  A class which implements the interface GATInterface_ISerialisable is serialisable.  For example, the class GATFile implements the interface GATInterface_ISerialisable.  As a result of this, an adaptor which adapts the GATFile functionaility must provide some serialisable support.  This is accomplished through the serialisable functions.

            Currently there are two types of serialisable functions.  The first is used to serialize a serialisable.  The second one is used to de-serialise a serialisable.

 

2-9: What are Monitorable functions?

 

            The GAT contains numerous classes which implement the interface GATInterface_IMonitorable.  For example, GATAdvertService, GATEndpoint, GATFile, and so on, all implement this interface.  The functions which this interface requires the adaptor programmer to implement are called the monitorable functions.

 

 

 

Deploying a GAT adaptor

 

3-1: How to install a GAT adaptor manually?

 

            You should copy the adaptor libraries into the directory $GAT_LOCATION/bin/GAT/adaptors/, then, add the adaptor name into the file $GAT_LOCATION/lib/GAT/adaptor-list.

 

3-2: How many environment variables are needed to test a GAT adaptor (or GAT)?

 

            There are three required environment variables needed: GAT_LOCATION, GAT_ADAPTOR_PATH, LD_LIBRARY_PATH.  There is one optional variable GAT_VERBOSE for more information.  Example:

 

            export GAT_LOCATION=/home/zlei/GAT

            export GAT_ADAPTOR_PATH=$GAT_LOCATION/lib/GAT/adaptor-list

            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GAT_LOCATION/lib

            export GAT_VERBOSE=1