Files
zeekay 4e3a8ef9ca merge: upstream/main (preserve Hanzo brand, 50 commits)
# Conflicts:
#	api/v1alpha1/casting.go
#	api/v1alpha1/installation/signoz.go
#	docs/casting.md
#	docs/examples/docker/compose/pours/deployment/configs/ingester/opamp.yaml
#	docs/examples/systemd/binary/pours/deployment/signoz-ingester.service
#	docs/examples/systemd/binary/pours/deployment/signoz-signoz.service
#	docs/examples/systemd/binary/pours/deployment/signoz-telemetrystore-migrator.service
#	docs/schemas/v1alpha1.yaml
#	internal/foundry/registry.go
#	internal/instrumentation/handler.go
#	internal/molding/signozmolding/signoz.go
2026-06-02 09:59:25 -07:00

58 lines
1.9 KiB
Go

package telemetrykeepermolding
import (
"embed"
"github.com/hanzoai/o11y-foundry/api/v1alpha1"
"github.com/hanzoai/o11y-foundry/internal/types"
)
//go:embed templates/*.gotmpl
var templates embed.FS
var (
KeeperClickhousev2556YAML *domain.Template = domain.MustNewTemplateFromFS(templates, "templates/keeper.clickhouse.v2556.yaml.gotmpl", domain.FormatYAML)
)
// Data is the template data for rendering ClickHouse Keeper configs.
type Data struct {
RaftAddresses []domain.Address // Inter-keeper consensus addresses
ClientAddresses []domain.Address // Client-facing addresses
ServerCount int
ServerID int // Current server ID for per-node config generation
}
func newData(config *installation.Casting) (Data, error) {
var data Data
if config.Spec.TelemetryKeeper.Spec.Cluster.Replicas == nil {
data.ServerCount = 1
} else {
data.ServerCount = max(*config.Spec.TelemetryKeeper.Spec.Cluster.Replicas, 1)
}
raftAddresses := config.Spec.TelemetryKeeper.Status.Addresses.Raft
if len(raftAddresses) < data.ServerCount {
return Data{}, errors.Newf(errors.TypeInvalidInput, "insufficient raft addresses: have %d, need %d servers", len(raftAddresses), data.ServerCount)
}
clientAddresses := config.Spec.TelemetryKeeper.Status.Addresses.Client
if len(clientAddresses) < data.ServerCount {
return Data{}, errors.Newf(errors.TypeInvalidInput, "insufficient client addresses: have %d, need %d servers", len(clientAddresses), data.ServerCount)
}
newRaftAddrs, err := domain.ParseAddresses(raftAddresses[:data.ServerCount])
if err != nil {
return Data{}, errors.Wrapf(err, errors.TypeInternal, "failed to parse raft addresses")
}
data.RaftAddresses = newRaftAddrs
newClientAddrs, err := domain.ParseAddresses(clientAddresses[:data.ServerCount])
if err != nil {
return Data{}, errors.Wrapf(err, errors.TypeInternal, "failed to parse client addresses")
}
data.ClientAddresses = newClientAddrs
return data, nil
}