Go to main content

Developing Data Services

Exit Print View

Updated: August 2018

Determining the Interface to Use

    The Oracle Solaris Cluster developer support IPS package (ha-cluster/developer/api) provides two sets of interfaces for coding data service methods:

  • The Resource Management API (RMAPI), a set of low-level functions (in the libscha.so library)

  • The Data Services Development Library (DSDL), a set of higher-level functions (in the libdsdev.so library) that encapsulate the functionality of the RMAPI and provide some additional functionality

Oracle Solaris Cluster software provides the following additional packages to aid data service development:

    Here is the recommended approach to developing a data service:

  1. Decide whether to use the Generic Data Service (GDS) method or to code in C or the Korn shell. If you decide to use the Korn shell, you cannot use the DSDL, which provides a C interface only.

  2. Run Agent Builder, specify the requested information, and generate a data service, which includes source and executable code, an RTR file, and a package.

  3. If the generated data service requires customizing, you can add DSDL code to the generated source files. Agent Builder indicates, with comments, specific places in the source files where you can add your own code.

  4. If the code requires further customizing to support the target application, you can add RMAPI functions to the existing source code.

In practice, you can take numerous approaches to creating a data service. For example, rather than add your own code to specific places in the code that is generated by Agent Builder, you could entirely replace one of the generated methods or the generated monitor program with a program that you write from scratch using DSDL or RMAPI functions.

    However, regardless of how you proceed, in almost every case, starting with Agent Builder using the GDS method makes sense, for the following reasons:

  • The code that is generated by Agent Builder using the GDS method, while generic in nature, has been tested in numerous data services.

  • Agent Builder generates an RTR file, a Makefile, a package for the resource, and other support files for the data service. Even if you use none of the data service code, using these other files can save you considerable work.

  • You can modify the generated code.

Note - Unlike the RMAPI, which provides a set of C functions and a set of commands for use in scripts, the DSDL provides a C function interface only. Therefore, if you specify Korn shell (ksh) output in Agent Builder, the generated source code makes calls to RMAPI because there are no DSDL ksh commands.