mirror of
https://github.com/hanzoai/o11y-foundry.git
synced 2026-11-03 02:08:34 +00:00
#### Summary Introduces a per-Kind `Planner` contract so Foundry can drive multiple casting Kinds through a single pipeline. `Foundry.Forge` / `Cast` / `Gauge` become Kind-agnostic; per-Kind state (registry, moldings, casting strategy, enricher) lives in the Kind's own Planner. #### Changes - New `internal/planner` package defining the `Planner` contract. - `Foundry` holds a `Planners` dispatch map; each casting package implements the contract (`installation.Planner`, `collectionagent.Planner`). - Installation registry moves from `internal/foundry/registry.go` to `internal/casting/installation/registry.go`. - CollectionAgent Kind scaffolded: Planner + collector molding wired end-to-end. No deployment castings yet. - `MoldingKindCollector` added to `api/v1alpha1/molding_kind.go`. Related: https://github.com/SigNoz/platform-pod/issues/1971, https://github.com/SigNoz/platform-pod/issues/1972
34 lines
840 B
Go
34 lines
840 B
Go
package collectormolding
|
|
|
|
import (
|
|
"log/slog"
|
|
|
|
"github.com/signoz/foundry/api/v1alpha1"
|
|
"github.com/signoz/foundry/api/v1alpha1/collectionagent"
|
|
collectionagentmolding "github.com/signoz/foundry/internal/molding/collectionagent"
|
|
|
|
"context"
|
|
)
|
|
|
|
var _ collectionagentmolding.Molding = (*collector)(nil)
|
|
|
|
type collector struct {
|
|
logger *slog.Logger
|
|
}
|
|
|
|
func New(logger *slog.Logger) *collector {
|
|
return &collector{logger: logger}
|
|
}
|
|
|
|
func (m *collector) Kind() v1alpha1.MoldingKind {
|
|
return v1alpha1.MoldingKindCollector
|
|
}
|
|
|
|
func (m *collector) MoldV1Alpha1(ctx context.Context, config *collectionagent.Casting) error {
|
|
if config.Spec.Collector.Status.Env == nil {
|
|
config.Spec.Collector.Status.Env = make(map[string]string)
|
|
}
|
|
config.Spec.Collector.Status.Env["OTEL_COLLECTOR_KIND"] = config.Spec.Collector.Kind.String()
|
|
return nil
|
|
}
|