88 lines
1.9 KiB
Go
88 lines
1.9 KiB
Go
package template
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/influxdata/influx-cli/v2/api"
|
|
"github.com/influxdata/influx-cli/v2/clients"
|
|
"github.com/influxdata/influx-cli/v2/pkg/template"
|
|
)
|
|
|
|
type Client struct {
|
|
clients.CLI
|
|
api.TemplatesApi
|
|
api.OrganizationsApi
|
|
}
|
|
|
|
type SummarizeParams struct {
|
|
clients.OrgParams
|
|
|
|
Sources []template.Source
|
|
|
|
RenderTableColors bool
|
|
RenderTableBorders bool
|
|
}
|
|
|
|
func (c Client) Summarize(ctx context.Context, params *SummarizeParams) error {
|
|
orgID, err := params.GetOrgID(ctx, c.ActiveConfig, c.OrganizationsApi)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
templates, err := template.ReadSources(ctx, params.Sources)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Execute a dry-run to make the server summarize the template(s).
|
|
req := api.TemplateApply{
|
|
DryRun: true,
|
|
OrgID: orgID,
|
|
Templates: templates,
|
|
}
|
|
res, err := c.ApplyTemplate(ctx).TemplateApply(req).Execute()
|
|
if err != nil {
|
|
return fmt.Errorf("failed to summarize template: %w", err)
|
|
}
|
|
|
|
if c.PrintAsJSON {
|
|
return c.PrintJSON(res.Summary)
|
|
}
|
|
return template.PrintSummary(res.Summary, c.StdIO, params.RenderTableColors, params.RenderTableBorders)
|
|
}
|
|
|
|
type ValidateParams struct {
|
|
clients.OrgParams
|
|
|
|
Sources []template.Source
|
|
}
|
|
|
|
func (c Client) Validate(ctx context.Context, params *ValidateParams) error {
|
|
orgID, err := params.GetOrgID(ctx, c.ActiveConfig, c.OrganizationsApi)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
templates, err := template.ReadSources(ctx, params.Sources)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Execute a dry-run to make the server summarize the template(s).
|
|
req := api.TemplateApply{
|
|
DryRun: true,
|
|
OrgID: orgID,
|
|
Templates: templates,
|
|
}
|
|
_, err = c.ApplyTemplate(ctx).TemplateApply(req).Execute()
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
|
|
if apiErr, ok := err.(api.GenericOpenAPIError); ok {
|
|
return fmt.Errorf("template failed validation:\n\t%s", apiErr)
|
|
}
|
|
return fmt.Errorf("failed to validate template: %w", err)
|
|
}
|