Uploaded image for project: 'Z39.50'
  1. Z39.50
  2. ZF-27

Stacking configurations: base, tenant, filters



    • Story
    • Status: Closed (View Workflow)
    • P2
    • Resolution: Done
    • None
    • 1.4
    • None
    • None


      To implement both multi-tenancy (ZF-2) and per-database output tweaks required for the ABLE bindery application (ZF-25), it will be necessary to allow more flexibility in the configuration in how the server works, based both on tenant and on further specifications.

      At present, the Z39.50 database name is ignored. The plan now is to accept and recognise database names of the form name, name|filter1, name|filter1|filter2, etc. The resulting session will be driven by a configuration that is the result of combining:

      • The base configuration config.json, as now
      • A tenant-specific configuration overlay, config.NAME.json. (This may be absent, and if so is taken as being empty.)
      • Zero or more filter-specific confguration overlays, config.FILTER1.json, config.FILTER2.json, etc.

      The last value specified "wins" in each case, i.e. a filter-specific value will override a tenant-specific value, which will override the base value. When values are complex key->value mappings, new values will in general be added to the old values rather then replacing them — so for example a single additional access-point can be added to the indexMap without needing to repeat the whole overridden index-map.

      This scheme will allow us to do quite a few things in a uniform way:

      • Basic configuration all in one place
      • Tenant-specific overrides, such as the Chicago-specific definition of ISBN searching (see ZF-24) in the tenant configuration, leaving the standard definition to apply to other tenants.
      • Application-specific overrides, such as those needed by the ABLE client, all specific only in a filter that is not used except when explicitly requested.

      TestRail: Results


          Issue Links



                mike Mike Taylor
                mike Mike Taylor
                0 Vote for this issue
                1 Start watching this issue



                  TestRail: Runs

                    TestRail: Cases