tree 575f3df841d4b8265ca99e3ed35cfab0b4e3538d
parent ef510eef7810a99ecf16539160146efd6b766988
author NICHOLAS W. SPEETER <nwspeete@us.ibm.com> 1481041477 -0500
committer Philippe Suter <psuter@us.ibm.com> 1481312294 -0500

API Gateway router as an instance of generic meta API router.

 - Controller routes for API Gateway and Unit Tests for the routes
 - Generalized API gateway router to a "meta api" route handler.

The API gateway experiment and controller changes is an example of a more general pattern where we use whisk actions to extend the controller for experimental API changes without necessarily changing the controller. This commit generalizes the API gateway route handler so that system packages are self-encoding as "meta" api handlers (via an annotation on the package and an explicit mapping from http verbs to action names to invoke in response) the subject making the activation request is subject to entitlemnt checks for activations (this is tantamount to limiting API requests from a single user) invoking actions directly rather than posting to the controller REST interface checking that meta packages exist and performing cursory sanity checks tests.

  - Meta router is accessible through /experimental.
  - Add entitlement check before invoking meta api handler.
  - Warn if meta api handler is public.
  - Post meta action activation directly to load balancer, bypassing REST API.
  - Pass API context information to meta actions.
  - Pass request body to meta action as well. Must be application/json type.
  - Pass remaining path URI to meta action.
  - Add verb to __ow_ context submitted to action.
  - Additional tests for name/namespaces.
