# 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:
http.Handler
: This is the http handler (that implementsServeHTTP( w http.ResponseWriter, r *http.Request)
) that the web server created by APICoverageWebhook uses.rules
: This is an array ofRuleWithOperations
objects from thek8s.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 likeService
,Configuration
,Route
andRevision
.namespace
: Namespace name where the webhook would be installed.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:
ResourceForest
: Specifying the version and initializing the ResourceTreesResourceMap
: Identifying the resources whose APICoverage needs to be calculated.NodeRules
: NodeRules that are applicable for the repo.FieldRules
: FieldRules that are applicable for the repo.DisplayRules
: DisplayRules to be used byGetResourceCoverage
method.