SAM Developer Documents:

------------------------

 

- Prerequisites in order to be productive as a sam developer; intended audience for

  further documentation

  (i.e., what we assume you already know, that we will NOT be documenting)

   - cvs

   - understanding of product packaging techniques,

     product environment bootstrapping

     (specifically as related to ups/upd)

   - subprojects may require knowledge about:

      CORBA, oracle (sql in general), x509, globus, condor, grid protocols, xml, java, ???

  >>> this probably needs to be done from scratch.

 

- Automated Documententation generation:

  We believe it is necessary to spend some time investigating and

  configuring a set of tools for automatic code documentation generation,

  so that the public interfaces, methods, etc., for

  all modules are documented in a consistent way as part of

  the package release procedure.

 

   o  python clients:  pydoc, ?

   o  IDL: idldoc, ?

   o  c++: ???

   o  java: javadoc, ?

 

  Once these tools are in place, each component should include

  standardized documentation on:

    a) IDL-based (public) interfaces (via idldoc-like tool)

    b) API-based (public) interfaces (via CommandParser tools)

    c) internal (private) interfaces (via pydoc/javadoc/???-like tool)

 

 

- DEVELOPER OVERVIEW DOCUMENTATION:

  --------------------------------

  - Additional documents that need to be written and/or pulled

    together from existing documents, which describe more of the

    technical "how and why" behind-the-scenes issues not covered

    in the automated docs.

 

    o  Overview: How the pieces fit together

       - diagram showing the major SAM components and how

         they fit together

 

    o  Overview: SAM CORBA Infrastructure

             - IDL naming conventions

         - corba structure wrappers

             - corba exception handling

             - automarshalling proxies and servants

 

    o  Overview: Server Instantiation and Configuration Tools

         - sam_bootstrap/sam_config

             - serverRun/jim_config

 

    o  Overview: Packaging Standards

         - sam_util

             - standardized GNUmakefile targets

 

    o  Overview: API Command Suite ToolChest (for python apps)

         - sam_common_pylib/SamCommand/ suite of utilities

 

    o  Overview: Monitoring Tools

         - samTV

             - jim/grid monitoring

 

    o  Overview: Test Tools

         - sam_test_tools

             - dbserver unit tests

             - sam_common_pylib unit tests

 

    o  Overview: Data Movement

         - sam_cp & protocols

 

    o  Overview: Local Job Scheduler Adaptation

         - sam_batch_adapter

 

 

- COMPONENT DOCUMENTATION:

-------------------------

Preliminary Component Breakdown:

    Core SAM

      INFRASTRUCTURE:

            Corba Infrastructure:

              dbProxy (autoMarshall)

              corbaStruct wrappers

              exception handling

            python API Infrastructure:

              commandParsing tools

 

      DB - (oracle)

 

      Servers:

        DBServer

              dimension parser

              dbServerBase

              dbServerGen

 

        Station

              smaster

              fss

              stagers

 

        Name Server

            Logger

            Optimizer

            (MIS)

 

      Clients

        Libraries (sam_common_pylib, sam_client_cpplib)

            Packages:

          sam_user_pyapi, sam_admin_pyapi, sam_mis_pyapi

              Experiment specific: sam_manager, AC++

              sam_project_editor, sam_farm_request

 

      Major Utilities:

        samTV

            sam_cp + transfer protocols

            sam_bootstrap (sam_products, init_sam)

            sam_config

            test_harness

 

    JIM 

      Infrastructure

        xmldb (client/server)

            configuration (jim_config)

            GSI (sam_gsi_config, cron jobs)

            middleware (globus, condor)

      Client suite

      Submission site suite

      Broker site

      Monitoring suite

        current state (push/pull models)

            history

            web interface (jim_www)

      Execution site suite

        Fabric interface (jim_job_managers)

        Fabric management (jim_sandbox)

        Registration services (jim_advertise)