forked from flashcat/categraf
182 lines
5.5 KiB
Go
182 lines
5.5 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package zpages // import "go.opentelemetry.io/collector/service/pkg/zpages"
|
|
|
|
import (
|
|
_ "embed"
|
|
"html/template"
|
|
"io"
|
|
"log"
|
|
)
|
|
|
|
var (
|
|
templateFunctions = template.FuncMap{
|
|
"even": even,
|
|
"getKey": getKey,
|
|
"getValue": getValue,
|
|
}
|
|
|
|
//go:embed templates/component_header.html
|
|
componentHeaderBytes []byte
|
|
componentHeaderTemplate = parseTemplate("component_header", componentHeaderBytes)
|
|
|
|
//go:embed templates/extensions_table.html
|
|
extensionsTableBytes []byte
|
|
extensionsTableTemplate = parseTemplate("extensions_table", extensionsTableBytes)
|
|
|
|
//go:embed templates/page_header.html
|
|
headerBytes []byte
|
|
headerTemplate = parseTemplate("header", headerBytes)
|
|
|
|
//go:embed templates/page_footer.html
|
|
footerBytes []byte
|
|
footerTemplate = parseTemplate("footer", footerBytes)
|
|
|
|
//go:embed templates/pipelines_table.html
|
|
pipelinesTableBytes []byte
|
|
pipelinesTableTemplate = parseTemplate("pipelines_table", pipelinesTableBytes)
|
|
|
|
//go:embed templates/properties_table.html
|
|
propertiesTableBytes []byte
|
|
propertiesTableTemplate = parseTemplate("properties_table", propertiesTableBytes)
|
|
|
|
//go:embed templates/features_table.html
|
|
featuresTableBytes []byte
|
|
featuresTableTemplate = parseTemplate("features_table", featuresTableBytes)
|
|
)
|
|
|
|
func parseTemplate(name string, bytes []byte) *template.Template {
|
|
return template.Must(template.New(name).Funcs(templateFunctions).Parse(string(bytes)))
|
|
}
|
|
|
|
// HeaderData contains data for the header template.
|
|
type HeaderData struct {
|
|
Title string
|
|
}
|
|
|
|
// WriteHTMLPageHeader writes the header.
|
|
func WriteHTMLPageHeader(w io.Writer, hd HeaderData) {
|
|
if err := headerTemplate.Execute(w, hd); err != nil {
|
|
log.Printf("zpages: executing template: %v", err)
|
|
}
|
|
}
|
|
|
|
// SummaryExtensionsTableData contains data for extensions summary table template.
|
|
type SummaryExtensionsTableData struct {
|
|
Rows []SummaryExtensionsTableRowData
|
|
}
|
|
|
|
// SummaryExtensionsTableRowData contains data for one row in extensions summary table template.
|
|
type SummaryExtensionsTableRowData struct {
|
|
FullName string
|
|
Enabled bool
|
|
}
|
|
|
|
// WriteHTMLExtensionsSummaryTable writes the summary table for one component type (receivers, processors, exporters).
|
|
// Id does not write the header or footer.
|
|
func WriteHTMLExtensionsSummaryTable(w io.Writer, spd SummaryExtensionsTableData) {
|
|
if err := extensionsTableTemplate.Execute(w, spd); err != nil {
|
|
log.Printf("zpages: executing template: %v", err)
|
|
}
|
|
}
|
|
|
|
// SummaryPipelinesTableData contains data for pipelines summary table template.
|
|
type SummaryPipelinesTableData struct {
|
|
Rows []SummaryPipelinesTableRowData
|
|
}
|
|
|
|
// SummaryPipelinesTableRowData contains data for one row in pipelines summary table template.
|
|
type SummaryPipelinesTableRowData struct {
|
|
FullName string
|
|
InputType string
|
|
MutatesData bool
|
|
Receivers []string
|
|
Processors []string
|
|
Exporters []string
|
|
}
|
|
|
|
// WriteHTMLPipelinesSummaryTable writes the summary table for one component type (receivers, processors, exporters).
|
|
// Id does not write the header or footer.
|
|
func WriteHTMLPipelinesSummaryTable(w io.Writer, spd SummaryPipelinesTableData) {
|
|
if err := pipelinesTableTemplate.Execute(w, spd); err != nil {
|
|
log.Printf("zpages: executing template: %v", err)
|
|
}
|
|
}
|
|
|
|
// ComponentHeaderData contains data for component header template.
|
|
type ComponentHeaderData struct {
|
|
Name string
|
|
ComponentEndpoint string
|
|
Link bool
|
|
}
|
|
|
|
// WriteHTMLComponentHeader writes the header for components.
|
|
func WriteHTMLComponentHeader(w io.Writer, chd ComponentHeaderData) {
|
|
if err := componentHeaderTemplate.Execute(w, chd); err != nil {
|
|
log.Printf("zpages: executing template: %v", err)
|
|
}
|
|
}
|
|
|
|
// PropertiesTableData contains data for properties table template.
|
|
type PropertiesTableData struct {
|
|
Name string
|
|
Properties [][2]string
|
|
}
|
|
|
|
// WriteHTMLPropertiesTable writes the HTML for properties table.
|
|
func WriteHTMLPropertiesTable(w io.Writer, chd PropertiesTableData) {
|
|
if err := propertiesTableTemplate.Execute(w, chd); err != nil {
|
|
log.Printf("zpages: executing template: %v", err)
|
|
}
|
|
}
|
|
|
|
// WriteHTMLPageFooter writes the footer.
|
|
func WriteHTMLPageFooter(w io.Writer) {
|
|
if err := footerTemplate.Execute(w, nil); err != nil {
|
|
log.Printf("zpages: executing template: %v", err)
|
|
}
|
|
}
|
|
|
|
func even(x int) bool {
|
|
return x%2 == 0
|
|
}
|
|
|
|
func getKey(row [2]string) string {
|
|
return row[0]
|
|
}
|
|
|
|
func getValue(row [2]string) string {
|
|
return row[1]
|
|
}
|
|
|
|
// FeatureGateTableData contains data for feature gate table template.
|
|
type FeatureGateTableData struct {
|
|
Rows []FeatureGateTableRowData
|
|
}
|
|
|
|
// FeatureGateTableRowData contains data for one row in feature gate table template.
|
|
type FeatureGateTableRowData struct {
|
|
ID string
|
|
Enabled bool
|
|
Description string
|
|
}
|
|
|
|
// WriteHTMLFeaturesTable writes a table summarizing registered feature gates.
|
|
func WriteHTMLFeaturesTable(w io.Writer, ftd FeatureGateTableData) {
|
|
if err := featuresTableTemplate.Execute(w, ftd); err != nil {
|
|
log.Printf("zpages: executing template: %v", err)
|
|
}
|
|
}
|