Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

job-ingest: add ingest module, flux job command, libjob library #1626

Merged
merged 15 commits into from
Aug 28, 2018

Commits on Aug 28, 2018

  1. libutil/fluid: 0-pad DOTHEX encoding

    Problem: DOTHEX-encoded FLUIDs can be used to map FLUIDs
    onto the KVS namespace, but without zero padding,
    flux-kvs ls doesn't display or sort them nicely.
    
    Pad each dotted hex number out to four digits.
    garlick committed Aug 28, 2018
    Configuration menu
    Copy the full SHA
    45863bd View commit details
    Browse the repository at this point in the history
  2. libutil/fluid: detect bad mnemonic input

    Problem: fluid_decode (type=MNEMONIC) does not fail if
    presented with words not in its dictionary or a phrase
    too short to represent a uint64_t.
    
    mn_decode()'s inline documentation is incorrect:
    
    /* Return value:
     *  This function may return all the value returned by mn_decode_word_index
     *  plus the following result code:
     *
     * MN_EWORD  - Unrecognized word.
     */
    
    It actually returns the number of bytes successfully
    written to the output.
    
    Require mn_decode() to return 8 in order for fluid_decode() to
    be successful.
    garlick committed Aug 28, 2018
    Configuration menu
    Copy the full SHA
    ec62dc0 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    2edc33c View commit details
    Browse the repository at this point in the history
  4. build: add jobspec sharness test to Makefile.am

    Problem: jobspec sharness test was not run.
    
    Add jobspec inputs to EXTRA_DIST and run jobspec
    test if ENABLE_JOBSPEC.
    garlick committed Aug 28, 2018
    Configuration menu
    Copy the full SHA
    6f980ae View commit details
    Browse the repository at this point in the history
  5. build: define HAVE_JOBSPEC in config.h

    Problem: while there is an ENABLE_JOBSPEC Makefile
    conditional, there is nothing that can be tested in
    config.h to determine if jobspec is being built.
    
    Add HAVE_JOBSPEC to config.h
    garlick committed Aug 28, 2018
    Configuration menu
    Copy the full SHA
    66f3d62 View commit details
    Browse the repository at this point in the history
  6. build: add --with-flux-security (opt-in)

    If user requests it by specifying --with-flux-security,
    have configure locate flux-security using pkg-config.
    
    Defines HAVE_FLUX_SECURITY in config.h
    Defines HAVE_FLUX_SECURITY for Makefile.am's
    garlick committed Aug 28, 2018
    Configuration menu
    Copy the full SHA
    f372ed7 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    63011e2 View commit details
    Browse the repository at this point in the history
  8. libjob: add flux job library

    Add a library will provides an API for job creation,
    monitoring, and control.  For now it contains only
    an interface for job submission.
    garlick committed Aug 28, 2018
    Configuration menu
    Copy the full SHA
    09429d1 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    8debfa7 View commit details
    Browse the repository at this point in the history
  10. modules/job-ingest: add module for job ingest

    Add a module that handles job-ingest.add RPCs to
    add new jobs to the KVS using a rudimentary form of
    the RFC 16 job schema foramt.  The user is returned
    a jobid based on the FLUID proposal, which allows
    64-bit id generation to occur in parallel across ranks,
    while retaining a loose ordering of ids based in the
    time submitted.  KVS per-job directories are generated
    using the DOTHEX FLUID encoding, e.g.
    
    job.active.0000.011c.ae00.0002
    
    The instance owner and any user with ROLE_USER may
    submit jobs.  Jobs must be signed, and the user
    authenticated as the submitter (by the connector) must
    match the signature, but the job signature is not
    authenticated at ingest time.  The connector-authenticated
    userid is recored in the KVS under the "userid" key.
    The signed blob is recorded under the "J-signed" key.
    
    The job submission consists of signed RFC 14 jobspec,
    which is validated by temporarily instantiating a C++
    Jobspec object and recording any parse errors.
    The parsed Jobspec may be further validated in the
    future, for example to find resource requests that can
    not be fulfilled, but for now we ingest all valid jobspec.
    (Validation is performed in a standalone .cpp file linked
    against libjobspec.la.  The standalone C++, which exports
    a validate function callable from C, is compiled with the
    C++ compiler; automake then knows to link job-ingest
    against libstdc++).  The unwrapped jobspec is written
    to the KVS under the "jobspec" key.
    
    The module is completely event driven, and KVS overhead
    is reduced and ingest rate increased by batching job-ingest.submit
    requests that arrive toether within 10ms.
    
    A "job-ingest.submit" event is generated after the KVS commit
    which contains an array of new jobids.  This can be consumed
    by the job-manager module in the future, which will handle
    listing jobs for users, and informing the scheduler when
    new active jobs have been submitted.
    garlick committed Aug 28, 2018
    Configuration menu
    Copy the full SHA
    2741ca7 View commit details
    Browse the repository at this point in the history
  11. cmd/flux-job: add flux-job command

    Add a front end command that will eventually contain
    the primary user interfaces for submitting and
    managing jobs such as list, run, or cancel.
    For now, it contains two subcommands  for testing
    the job-ingest module:
    
    submitbench - test ingest throughput, maintaining
       a minimum number of outstanding RPCs
    
    id - convert jobid's between representations.
    garlick committed Aug 28, 2018
    Configuration menu
    Copy the full SHA
    8988609 View commit details
    Browse the repository at this point in the history
  12. sharness: add "job" rc1/rc3 scripts

    Ad a test_under_flux "profile" for testing the
    new execution system, starting with job-ingest module.
    garlick committed Aug 28, 2018
    Configuration menu
    Copy the full SHA
    ebb2b2a View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    175783a View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    e113ca2 View commit details
    Browse the repository at this point in the history
  15. travis-ci: build --with-flux-security

    Pull in flux-security-0.2.0 via the travis-dep-builder script,
    then add --with-flux-security to some builders in the travis
    build matrix.
    garlick committed Aug 28, 2018
    Configuration menu
    Copy the full SHA
    8f405a3 View commit details
    Browse the repository at this point in the history