mirror of
https://github.com/SigNoz/signoz.git
synced 2026-09-29 06:41:01 +01:00
<!--A few plain bullets saying what changed and why, for a reviewer skimming it - not a wall of text, not a restatement of the diff, not generated boilerplate.--> #### Description Until now every org started with no span mapper groups and we had to create `llm`, `agent` and `tool` by hand. This PR ships them as defaults. - The three groups live as JSON in the binary. On startup and when a new org is created, they get seeded. When we change a definition and bump its version, the next release updates the org's copy in place. - Anything SigNoz ships is marked `origin: system` and can only be switched on or off. Users can't rename or delete these groups and mappers, and can't take their names. Anything the user adds is theirs to edit or remove, including new mappers in a shipped group or new sources on a shipped mapper. - Upgrades keep the user's on/off choices and never touch their items. - Condition substrings and sources now carry `enabled` and `origin`, so a substring is an object instead of a plain string. Disabled ones are left out of the collector config. - - Migration 127 only adds the `origin` and `version` columns. Stored JSON is not rewritten because these tables are empty on every instance. - Fixes creating a group or mapper with `enabled: false` being saved as true (the bun `default:true` tag turned false into SQL `DEFAULT`) Frontend: no UI changes. Generated client regenerated; drafts carry `enabled` and `origin` so saves from the existing screens round-trip shipped items intact. <!--Reference issues using `Closes #issue-number` to enable automatic closure on merge. --> #### Issues closed by this PR Closes https://github.com/SigNoz/engineering-pod/issues/5329 <!--Anything reviewers should keep in mind while reviewing --> #### Additional Information * Frontend follow-up: toggles for sources and substrings, "Default" badge and read-only rows for shipped items, hide rename/delete on system groups and mappers. * Deferred: per-group upgrade changelog ( will come back to this later) --------- Co-authored-by: Gaurav Tewari <gauravtewari111@gmail.com> Co-authored-by: Gaurav Tewari <tewarig@users.noreply.github.com>
52 lines
2.5 KiB
Go
52 lines
2.5 KiB
Go
package spanmapper
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
|
|
"github.com/SigNoz/signoz/pkg/query-service/agentConf"
|
|
"github.com/SigNoz/signoz/pkg/types/spantypes"
|
|
"github.com/SigNoz/signoz/pkg/valuer"
|
|
)
|
|
|
|
// Module defines the business logic for span attribute mapping groups and mappers.
|
|
type Module interface {
|
|
// Since this module interacts with OpAMP, it must implement the AgentFeature interface.
|
|
agentConf.AgentFeature
|
|
|
|
// Group operations
|
|
ListGroups(ctx context.Context, orgID valuer.UUID, q *spantypes.ListSpanMapperGroupsQuery) ([]*spantypes.SpanMapperGroup, error)
|
|
GetGroup(ctx context.Context, orgID, id valuer.UUID) (*spantypes.SpanMapperGroup, error)
|
|
CreateGroup(ctx context.Context, orgID valuer.UUID, group *spantypes.SpanMapperGroup) error
|
|
UpdateGroup(ctx context.Context, orgID, id valuer.UUID, name *string, condition *spantypes.SpanMapperGroupCondition, enabled *bool, updatedBy string) error
|
|
DeleteGroup(ctx context.Context, orgID, id valuer.UUID) error
|
|
|
|
// Mapper operations
|
|
ListMappers(ctx context.Context, orgID, groupID valuer.UUID) ([]*spantypes.SpanMapper, error)
|
|
GetMapper(ctx context.Context, orgID, groupID, id valuer.UUID) (*spantypes.SpanMapper, error)
|
|
CreateMapper(ctx context.Context, orgID, groupID valuer.UUID, mapper *spantypes.SpanMapper) error
|
|
UpdateMapper(ctx context.Context, orgID, groupID, id valuer.UUID, fieldContext spantypes.FieldContext, config *spantypes.SpanMapperConfig, enabled *bool, updatedBy string) error
|
|
DeleteMapper(ctx context.Context, orgID, groupID, id valuer.UUID) error
|
|
TestMappers(ctx context.Context, orgID valuer.UUID, spans []spantypes.SpanMapperTestSpan, groups []*spantypes.SpanMapperGroupWithMappers) ([]spantypes.SpanMapperTestSpan, []string, error)
|
|
|
|
// ReconcileSystemGroups provisions or upgrades the shipped mapping groups
|
|
// for one org. It runs at startup for every org and again on org creation.
|
|
ReconcileSystemGroups(ctx context.Context, orgID valuer.UUID) error
|
|
}
|
|
|
|
// Handler defines the HTTP handler interface for mapping group and mapper endpoints.
|
|
type Handler interface {
|
|
// Group handlers
|
|
ListGroups(rw http.ResponseWriter, r *http.Request)
|
|
CreateGroup(rw http.ResponseWriter, r *http.Request)
|
|
UpdateGroup(rw http.ResponseWriter, r *http.Request)
|
|
DeleteGroup(rw http.ResponseWriter, r *http.Request)
|
|
|
|
// Mapper handlers
|
|
ListMappers(rw http.ResponseWriter, r *http.Request)
|
|
CreateMapper(rw http.ResponseWriter, r *http.Request)
|
|
UpdateMapper(rw http.ResponseWriter, r *http.Request)
|
|
DeleteMapper(rw http.ResponseWriter, r *http.Request)
|
|
TestMappers(rw http.ResponseWriter, r *http.Request)
|
|
}
|