package string
import (
"context"
"net/http"
"github.com/grafana/agent/component"
"github.com/grafana/agent/component/module"
"github.com/grafana/agent/pkg/river/rivertypes"
)
func init() {
component.Register(component.Registration{
Name: "module.string",
Args: Arguments{},
Exports: module.Exports{},
Build: func(opts component.Options, args component.Arguments) (component.Component, error) {
return New(opts, args.(Arguments))
},
})
}
type Arguments struct {
Content rivertypes.OptionalSecret `river:"content,attr"`
Arguments map[string]any `river:"arguments,block,optional"`
}
type Component struct {
mod *module.ModuleComponent
}
var (
_ component.Component = (*Component)(nil)
_ component.HealthComponent = (*Component)(nil)
_ component.HTTPComponent = (*Component)(nil)
)
func New(o component.Options, args Arguments) (*Component, error) {
c := &Component{
mod: module.NewModuleComponent(o),
}
if err := c.Update(args); err != nil {
return nil, err
}
return c, nil
}
func (c *Component) Run(ctx context.Context) error {
c.mod.RunFlowController(ctx)
return nil
}
func (c *Component) Update(args component.Arguments) error {
newArgs := args.(Arguments)
return c.mod.LoadFlowContent(newArgs.Arguments, newArgs.Content.Value)
}
func (c *Component) Handler() http.Handler {
return c.mod.Handler()
}
func (c *Component) CurrentHealth() component.Health {
return c.mod.CurrentHealth()
}