OPeNDAP Developer's Workshop 2010: Difference between revisions

From OPeNDAP Documentation
⧼opendap2-jumptonavigation⧽
Line 16: Line 16:
;0900 -
;0900 -


:'''''Server Side Functions'''''


: Currently, server side functions are compiled into libdap. In order to ad new functions we must incorporate them into a libdap release. How can we make them run time loadable, yet executable in libadap.
==== Server Side Functions ====
::* Registration
::* What gets registered


* '''Registration'''
** modularized
** each function -> class
** version
*** can you handle this
*** service
*** how do we package this
* '''Discovery'''
** Ask the OLFS/BES what functions for dataset
*** what functions
*** capabilities
* '''Format'''
** function(p1,p2,p3,p4...)
* '''Usage'''
** Run by handler during loading - slection
** Run during constraint parsing
** Run during transmission/serialization (constraint evaluation)
** What about functions like "version"??


:'''''Admin interface'''''
 
void
function_version(int, BaseType *[], DDS &, BaseType **btpp)
typedef void(*bool_func)(int argc, BaseType *argv[], DDS &dds, bool *result);
typedef void(*btp_func)(int argc, BaseType *argv[], DDS &dds, BaseType **btpp);
typedef void(*proj_func)(int argc, BaseType *argv[], DDS &dds, ConstraintEvaluator &ce);
 
 
===== Use Cases =====
* Scientist has a dataset and wants to discover what functions are available to apply to that dataset
* Data provider has a set of server-side functions that they wish to provide for data users. They want to add these modules to the OPeNDAP via dynamically loaded modules
* Scientist has a dataset and wants to apply geogrid function to that dataset
* Scientist wants to discover the the shape and size (metadata) of a particular function against a dataset
 
===== Plan: Define a class/hierarchy =====
* Define a set of classes for server-saide functions
* Have the BES instantiate those from .so files
* Those instances are then passed into a ConstraintEvaluator instance which is then passed to a handler
* The BES conf file(s) can include information so that some functions are always loaded and some are loaded only for specific handlers (e.g., FreeForm).
 
* Take the server side functions out of libdap and add to BES modules
* Add the server side functions to server side class
* These classes will be able to handle things like get version, given a ddx(?) can this function be run against it (return true/false)
* At load time the classes are created within the BES, the functions are registered with libdap. This maintains binary compatability.
 
==== Admin interface ====
::* admin connects to a listener
::* admin connects to a listener
::* can restart a listener
::* can restart a listener

Revision as of 14:57, 6 October 2010

Where & When

  • Location: Troy, NY
  • Dates: 6-8 Oct

Meeting modus operandi

  • mockups
  • whiteboard designs
  • use cases
  • best to exploit face-to-face for what it affords.

Agenda


Wednesday

0830 - Coffee
0900 -


Server Side Functions

  • Registration
    • modularized
    • each function -> class
    • version
      • can you handle this
      • service
      • how do we package this
  • Discovery
    • Ask the OLFS/BES what functions for dataset
      • what functions
      • capabilities
  • Format
    • function(p1,p2,p3,p4...)
  • Usage
    • Run by handler during loading - slection
    • Run during constraint parsing
    • Run during transmission/serialization (constraint evaluation)
    • What about functions like "version"??


void
function_version(int, BaseType *[], DDS &, BaseType **btpp)

typedef void(*bool_func)(int argc, BaseType *argv[], DDS &dds, bool *result);
typedef void(*btp_func)(int argc, BaseType *argv[], DDS &dds, BaseType **btpp);
typedef void(*proj_func)(int argc, BaseType *argv[], DDS &dds, ConstraintEvaluator &ce);


Use Cases
  • Scientist has a dataset and wants to discover what functions are available to apply to that dataset
  • Data provider has a set of server-side functions that they wish to provide for data users. They want to add these modules to the OPeNDAP via dynamically loaded modules
  • Scientist has a dataset and wants to apply geogrid function to that dataset
  • Scientist wants to discover the the shape and size (metadata) of a particular function against a dataset
Plan: Define a class/hierarchy
  • Define a set of classes for server-saide functions
  • Have the BES instantiate those from .so files
  • Those instances are then passed into a ConstraintEvaluator instance which is then passed to a handler
  • The BES conf file(s) can include information so that some functions are always loaded and some are loaded only for specific handlers (e.g., FreeForm).
  • Take the server side functions out of libdap and add to BES modules
  • Add the server side functions to server side class
  • These classes will be able to handle things like get version, given a ddx(?) can this function be run against it (return true/false)
  • At load time the classes are created within the BES, the functions are registered with libdap. This maintains binary compatability.

Admin interface

  • admin connects to a listener
  • can restart a listener
  • can restart the BES with ADMIN
  • turn on/off debugging through admin interface
  • keep track of how many connections are allowed/active
  • re-write besdaemon/beslistener (2-3 hrs)
  • allowed size of response from BES (1 hr)
http://docs.opendap.org/index.php/Hyrax_Admin_Interface


1230 - Lunch
1300 -
Active file system
Nicer install for Hyrax
RPM, yum, apt-get, something like what perl has, mac port, etc...
SQL Data Handler
Patrick explains all...


1800 - Dinner

Thursday

0830 - Coffee
0900 -
NcML Ingestion Break Out
BES Internal Caching
1230 - Lunch
1300 -
1400-1800
Strategy Breakout
  • Peter, Dan, James."
1400-1800
NcML Ingestion Break Out
  • Patrick, Micheal, Nathan
  • Instead of reading NCML file, taking an NCML document (1 hr)
  • Issues with adding new BES commands? While adding this new functionality document current interface for adding commands to the BES architecture.


1800 - Dinner



Friday

0830 - Coffee
0900 -
Module check
Making sure a loaded module matches the version of BES and any required modules


SSL authentication/authorization issues
Currently problem with SSL authentication and keeping SSL channel open for secure communication


Multiple catalogs
BES and OLFS integration


1230 - Lunch
1300 -


1400-1800
Strategy Breakout (cont)



1800 - Dinner and Flee!