package
0.0.0-20200122233423-62801f1d34cf
Repository: https://github.com/vishvananda/pkg.git
Documentation: pkg.go.dev

# README

Webhook

Webhook based API-Coverage tool uses ValidatingAdmissionWebhook which is a web-server that the K8 API-Server calls into for every API-Object update to verify if the object is valid before storing it into its datastore. Each validation request has the json representation of the object being created/modified, that the tool uses to capture coverage data. webhook package inside this folder provides a mechanism for individual repos to setup ValidatingAdmissionWebhook.

APICoverageWebhook type inside the package encapsulates necessary configuration details and helper methods required to setup the webhook. Each repo is expected to call into SetupWebhook() providing following three parameters:

  1. http.Handler: This is the http handler (that implements ServeHTTP( w http.ResponseWriter, r *http.Request)) that the web server created by APICoverageWebhook uses.
  2. rules: This is an array of RuleWithOperations objects from the k8s.io/api/admissionregistration/v1beta1 package that the webhook uses for validation on each API Object update. e.g: knative-serving while calling this method would provide rules that will handle API Objects like Service, Configuration, Route and Revision.
  3. namespace: Namespace name where the webhook would be installed.
  4. stop channel: Channel to terminate webhook's web server.

SetupWebhook() method in its implementation creates a TLS based web server and registers the webhook by creating a ValidatingWebhookConfiguration object inside the K8 cluster.

APICoverageRecorder type inside the package encapsulates the apicoverage recording capabilities. Repo using this type is expected to set:

  1. ResourceForest: Specifying the version and initializing the ResourceTrees
  2. ResourceMap: Identifying the resources whose APICoverage needs to be calculated.
  3. NodeRules: NodeRules that are applicable for the repo.
  4. FieldRules: FieldRules that are applicable for the repo.
  5. DisplayRules: DisplayRules to be used by GetResourceCoverage method.

# Functions

BuildWebhookConfiguration builds the APICoverageWebhook object using the provided names.

# Constants

ResourceCoverageEndPoint is the endpoint for Resource Coverage API.
ResourcePercentageCoverageEndPoint is the end point for Resource Percentage coverages API.
ResourceQueryParam query param name to provide the resource.
TotalCoverageEndPoint is the endpoint for Total Coverage API.

# Structs

APICoverageRecorder type contains resource tree to record API coverage for resources.
APICoverageWebhook encapsulates necessary configuration details for the api-coverage webhook.