ONTAPI includes APIs for qtrees, quotas, volumes, luns, snapshots,
snapmirror, vfilers, and numerous other features. Complete API lists
are in the doc/ontapi directory of the distribution,
with subdirectories for each release version (the chart at doc/ONTAP_Interface_Versions.html
lines up the versions of each interface that pertain to each major
release of the ONTAP OS.
ONTAPI interfaces use XML as a format and may be configured to
use either HTTP or DCE/RPC as the transport mechanism. HTTP is important
when managing devices which may be outside of the corporate firewall,
and locked down so that only port 80 is available, and is the default
transport configuration. Security for HTTP can be be provided by
using SSL.
ONTAPI is implemented as a small set of primitives that marshall
and unmarshall arguments onto and from the wire, using XML as the
description language. At present, bindings for C/C++, Perl and Java
are provided. Development of bindings for other languages will be
driven primarily by developer demand.
These primitives are the core routines that you use to call the
ONTAPI APIs. There's a tutorial on how
to use the core APIs from C/C++, Perl or Java. There's also
language-specific reference information for C/C++,
Perl and Java.
A companion document shows the mapping
between the core primitives in C, Perl and Java. There's also
a Windows application called zexplore
that lets you dynamically browse the ONTAPI APIs, call them and
inspect the results. A perl script called ontapi
lets you explore the APIs from a command line, either Windows or
Unix.
The Manage ONTAP SDK contains sample code demonstrating the use
of ONTAPI in both C and Perl. The sample applications, which are
in the src/sample directory of the distribution, check version numbers
and demonstrate a primitive snapshot management utility. The snapshot
management sample code shows how to encapsulate a number of
ONTAPI interfaces into typed functions and arguments. This code
is not part of the ONTAPI interface set, as ONTAPI was designed
to be easy to port to multiple languages because of its very simple
and small set of primitives and use of the mini-DOM object model.
|