mirror of
https://github.com/hanzoai/o11y-foundry.git
synced 2026-11-02 14:03:05 +00:00
# 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
114 lines
4.1 KiB
Go
114 lines
4.1 KiB
Go
package rendercasting
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"github.com/hanzoai/o11y-foundry/api/v1alpha1"
|
|
"github.com/hanzoai/o11y-foundry/internal/molding"
|
|
"github.com/hanzoai/o11y-foundry/internal/types"
|
|
)
|
|
|
|
var _ molding.MoldingEnricher = (*renderMoldingEnricher)(nil)
|
|
|
|
type renderMoldingEnricher struct {
|
|
material domain.StructuredMaterial
|
|
}
|
|
|
|
func newRenderMoldingEnricher(config *installation.Casting) (*renderMoldingEnricher, error) {
|
|
material, err := getRenderMaterial(config, "render.yaml")
|
|
if err != nil {
|
|
return nil, errors.Wrapf(err, errors.TypeInternal, "failed to get render yaml material")
|
|
}
|
|
|
|
return &renderMoldingEnricher{material: material}, nil
|
|
}
|
|
|
|
func (enricher *renderMoldingEnricher) EnrichStatus(ctx context.Context, kind v1alpha1.MoldingKind, config *installation.Casting) error {
|
|
switch kind {
|
|
case v1alpha1.MoldingKindTelemetryStore:
|
|
// Get telemetrystore service names
|
|
serviceNames, err := enricher.material.GetStringSlice("services.#.name")
|
|
if err != nil {
|
|
return errors.Wrapf(err, errors.TypeInternal, "failed to get telemetrystore service names")
|
|
}
|
|
|
|
var addrs []string
|
|
var storeServiceNames []string
|
|
for _, serviceName := range serviceNames {
|
|
if strings.Contains(serviceName, "telemetrystore") && !strings.Contains(serviceName, "migrator") {
|
|
addrs = append(addrs, domain.MustNewAddress("tcp", serviceName, 9000).String())
|
|
storeServiceNames = append(storeServiceNames, serviceName)
|
|
}
|
|
}
|
|
config.Spec.TelemetryStore.Status.Addresses.TCP = addrs
|
|
|
|
// Store service names in extras for template usage
|
|
if config.Spec.TelemetryStore.Status.Extras == nil {
|
|
config.Spec.TelemetryStore.Status.Extras = make(map[string]string)
|
|
}
|
|
config.Spec.TelemetryStore.Status.Extras["service_names"] = strings.Join(storeServiceNames, ",")
|
|
|
|
case v1alpha1.MoldingKindO11y:
|
|
// Get telemetrystore service names
|
|
serviceNames, err := enricher.material.GetStringSlice("services.#.name")
|
|
if err != nil {
|
|
return errors.Wrapf(err, errors.TypeInternal, "failed to get telemetrystore service names")
|
|
}
|
|
|
|
var apiServerAddr []string
|
|
var opampAddr []string
|
|
for _, serviceName := range serviceNames {
|
|
if strings.Contains(serviceName, "-o11y") {
|
|
apiServerAddr = append(apiServerAddr, types.FormatAddress("tcp", serviceName, 8080))
|
|
opampAddr = append(opampAddr, types.FormatAddress("ws", serviceName, 4320))
|
|
}
|
|
}
|
|
config.Spec.O11y.Status.Addresses.APIServer = apiServerAddr
|
|
config.Spec.O11y.Status.Addresses.Opamp = opampAddr
|
|
|
|
case v1alpha1.MoldingKindTelemetryKeeper:
|
|
// Get telemetrykeeper service names
|
|
serviceNames, err := enricher.material.GetStringSlice("services.#.name")
|
|
if err != nil {
|
|
return errors.Wrapf(err, errors.TypeInternal, "failed to get telemetrykeeper service names")
|
|
}
|
|
|
|
var addrsClient []string
|
|
var addrsRaft []string
|
|
var keeperServiceNames []string
|
|
for _, serviceName := range serviceNames {
|
|
if strings.Contains(serviceName, "telemetrykeeper") {
|
|
addrsClient = append(addrsClient, domain.MustNewAddress("tcp", serviceName, 9181).String())
|
|
addrsRaft = append(addrsRaft, domain.MustNewAddress("tcp", serviceName, 9234).String())
|
|
keeperServiceNames = append(keeperServiceNames, serviceName)
|
|
}
|
|
}
|
|
config.Spec.TelemetryKeeper.Status.Addresses.Client = addrsClient
|
|
config.Spec.TelemetryKeeper.Status.Addresses.Raft = addrsRaft
|
|
|
|
// Store service names in extras for template usage
|
|
if config.Spec.TelemetryKeeper.Status.Extras == nil {
|
|
config.Spec.TelemetryKeeper.Status.Extras = make(map[string]string)
|
|
}
|
|
config.Spec.TelemetryKeeper.Status.Extras["service_names"] = strings.Join(keeperServiceNames, ",")
|
|
|
|
case v1alpha1.MoldingKindIngester:
|
|
// Get ingester service names
|
|
serviceNames, err := enricher.material.GetStringSlice("services.#.name")
|
|
if err != nil {
|
|
return errors.Wrapf(err, errors.TypeInternal, "failed to get ingester service names")
|
|
}
|
|
|
|
var addrs []string
|
|
for _, serviceName := range serviceNames {
|
|
if strings.Contains(serviceName, "ingester") {
|
|
addrs = append(addrs, domain.MustNewAddress("tcp", serviceName, 4318).String())
|
|
}
|
|
}
|
|
config.Spec.Ingester.Status.Addresses.OTLP = addrs
|
|
}
|
|
|
|
return nil
|
|
}
|