Chart Verifier API
June 1, 2023 ยท View on GitHub
IMPORTANT:
- The API is first published in chart verifier release 1.8.0
- The API in release 1.8.0 is not finalized and is subject to change.
- The API is also available in development release 0.1.0.
Overview
The chart-verifier API is written using the Go language and is created to enable services to run the chart verifier and obtain a report. Use the chart-verifier API the same way as any Go package such as import and invoke.
The chart-verifier API consists of the following Go language packages:
| Package | Description |
|---|---|
| verifier | Provides an API to set the verify flags for the chart-verifier and run the verifier to generate a report. |
| report | Provides an API to get and set report content as a string in the JSON or YAML format. |
| reportSummary | Provides an API to set the report flags for the chart-verifier and generate a report summary. |
| checks | Provides an API to get a set containing all available checks. |
Each of these packages are now described in more detail. These are followed by an example of use.
verifier
Go definition of the APIVerifier interface
func NewVerifier() ApiVerifier
type ApiVerifier interface {
SetBoolean(key BooleanKey, value bool) ApiVerifier
SetDuration(key DurationKey, duration time.Duration) ApiVerifier
SetString(key StringKey, value []string) ApiVerifier
SetValues(key ValuesKey, values map[string]interface{}) ApiVerifier
EnableChecks(names []apichecks.CheckName) ApiVerifier
UnEnableChecks(names []apichecks.CheckName) ApiVerifier
Run(chart_uri string) (ApiVerifier, error)
GetReport() *report.Report
}
Description of each function of the APIVerifier interface
-
NewVerifier - Creates a new
Verifier. -
SetBoolean: Sets a boolean flag.
BooleanKeyvalues are defined in the verifier package and include:WebCatalogOnlyProvider Delivery(deprecated - replaced byWebCatalogOnly)SuppressErrorLogSkipCleanup
-
SetDuration: Sets a duration flag.
DurationKeyvalues are defined in the verifier package and include:Timeout
-
SetString: Sets a string or string array flag.
StringKeyvalues are defined in the verifier package and include:KubeApiServerKubeAsUserKubeCaFileKubeConfigKubeContextKubeTokenNamespaceOpenshiftVersionRegistryConfigRepositoryConfigRepositoryCacheConfigChartValuesKubeAsGroups
-
SetValues: Sets a map of string,value pairs.
ValuesKeyvalues are defined in the verifier package and include:CommandSetChartSetChartSetFileChartSetString
-
EnableChecks: Specifies a subset of checks to run.
- Any checks not specified will not be run.
- If no checks are specified all checks will be enabled.
- A list of
CheckNamevalues that you can be enable are defined in the checks package, see checks.
-
UnEnableChecks: Specifies a subset of checks not to run.
- Any checks not listed will be run.
- If no checks are specified all checks will be enabled.
- A list of
CheckNamevalues that you can un-enable are defined in the checks package, see checks.
-
Run: Runs the verifier based on the flags set and uri provided.
-
GetReport: Use after
Runto get the verifier report see Report.
Report
Go definition of the APIReport interface
func NewReport() APIReport
type APIReport interface {
GetContent(ReportFormat) (string, error)
SetContent(string) APIReport
SetURL(url *url.URL) APIReport
Load() (*Report, error)
}
Description of each function of the APIVerifier interface
-
NewReport: Creates a new
Report. -
GetContent: Gets the report as a string in either the JSON or YAML format. ReportFormat values are defined and available in the report package:
JsonReport- for the JSON format.YamlReport- for the YAML format.
-
SetContent: Sets the report content from a string, for example a string as returned by
GetContent. The format of the report YAML/JSON will be determined based on the report content. -
SetUrl: Sets the URL of a report, the report being in string format, for example a string as returned by
GetContent. The format of the report YAML/JSON will be determined based on the report content. -
Load: Loads a report based on content set using
SetContentorSetUrl. This will be called internally when the report is needed but can be used to check if a report will load without error.
ReportSummary
Go definition of the APIReportSummary interface
func NewReportSummary() APIReportSummary
type APIReportSummary interface {
SetReport(report *apireport.Report) APIReportSummary
GetContent(SummaryType, SummaryFormat) (string, error)
SetValues(values map[string]interface{}) APIReportSummary
SetBoolean(key BooleanKey, value bool) APIReportSummary
}
Description of each function of the APIVerifier interface
-
NewReportSummary: Creates a
ReportSummary. -
SetReport: Sets the report from which the summary should be generated. For example a report as returned by
report.NewReport. -
GetContent: Gets the report summary as a string in either the JSON or YAML format. ReportFormat values are defined and availalble in the reportsummary package:
JsonReport- for the JSON format.YamlReport- for the YAML format.
-
SetValues: Sets value flags to customize content of the report summary.
- For example, to customize the result summary to be for a different profile.vendortype than is in the report:
- set value
profile.vendortypeto the required profile (partner/redhat/community). - see also: profiles.
- set value
- For example, to customize the result summary to be for a different profile.vendortype than is in the report:
-
SetBoolean: Used to set a boolean flag.
BooleanKeyvalues are defined in the reportsummary package and include:SkipDigestCheck- Intended for testing purpoises only.
Checks
Go definition of the GetChecks function
func GetChecks() []CheckName
Description of the GetChecks function
- GetChecks: Get an array of
CheckNametypes. The array content provides the following values that can be used for the verifier.EnableChecks and verifier.UnEnableChecks attributes.ChartTestingContainsTestContainsValuesSchemaContainsValuesHasKubeVersionHasReadmeHelmLintImagesAreCertifiedIsHelmV3NotContainCsiObjectsNotContainsCRDsRequiredAnnotationsPresent
Example:
This example shows a basic invocation of the chart-verifier API, getting and printing the resulting report and the report summary of the report.
Note:
- The example does not include error checking code for clarity purposes.
- The example with error checking is available here.
- For full use of the chart-verifier see:
- Import the packages of the chart-verifier API:
import (
"fmt"
"github.com/redhat-certification/chart-verifier/pkg/chartverifier/checks"
"github.com/redhat-certification/chart-verifier/pkg/chartverifier/report"
"github.com/redhat-certification/chart-verifier/pkg/chartverifier/reportsummary"
"github.com/redhat-certification/chart-verifier/pkg/chartverifier/verifier"
)
- Set a profile.vendortype of redhat, un-enable the chart testing check, and run verify:
// Run verification for a chart, but omit the chart testing check and run checks based on the redhat profile
commandSet := make(map[string]interface{})
commandSet["profile.vendortype"] = "redhat"
verifier, verifierErr := verifier.NewVerifier().
SetValues(verifier.CommandSet, commandSet).
UnEnableChecks([]checks.CheckName{checks.ChartTesting}).
Run("https://github.com/redhat-certification/chart-verifier/blob/main/tests/charts/psql-service/0.1.9/psql-service-0.1.9.tgz?raw=true")
- Get and print the report, created from the previous step, in the YAML format:
// Get and print the report from the verify command
report, reportErr := verifier.GetReport().
GetContent(report.YamlReport)
fmt.Println("report content:\n", report)
- Set the
profile.vendortypevalue topartner, get and print a report summary of the previous report in the JSON format.
// Get and print the report summary of the report, but using the partner profile.
values := make(map[string]interface{})
values["profile.vendortype"] = "partner"
reportSummary, summmaryErr := reportsummary.NewReportSummary().
SetReport(verifier.GetReport()).
SetValues(values).
GetContent(reportsummary.AllSummary, reportsummary.JsonReport)
fmt.Println("report summary content:\n", reportSummary)