MCPcopy Index your code
hub / github.com/docker/docker-agent / createEvent

Method createEvent

pkg/telemetry/http.go:17–50  ·  view source on GitHub ↗

createEvent creates an EventPayload struct from eventType and properties

(eventName string, properties map[string]any)

Source from the content-addressed store, hash-verified

15
16// createEvent creates an EventPayload struct from eventType and properties
17func (tc *Client) createEvent(eventName string, properties map[string]any) EventPayload {
18 osInfo, _, osLanguage := getSystemInfo()
19
20 // Create a new properties map that includes both user properties and system metadata
21 allProperties := make(map[string]any)
22
23 // Copy user-provided properties first
24 maps.Copy(allProperties, properties)
25
26 // Allow callers to attach custom metadata to telemetry events
27 if tags := os.Getenv("TELEMETRY_TAGS"); tags != "" {
28 for pair := range strings.SplitSeq(tags, ",") {
29 if k, v, ok := strings.Cut(pair, "="); ok && strings.TrimSpace(k) != "" {
30 allProperties[strings.TrimSpace(k)] = strings.TrimSpace(v)
31 }
32 }
33 }
34
35 // Add system metadata AFTER tags so they cannot be overwritten
36 allProperties["user_uuid"] = tc.userUUID
37 allProperties["desktop_uuid"] = tc.desktopUUID
38 allProperties["version"] = tc.getVersion()
39 allProperties["os"] = osInfo
40 allProperties["os_language"] = osLanguage
41
42 event := EventPayload{
43 Event: EventType(eventName),
44 EventTimestamp: time.Now().UnixMilli(),
45 Source: "cagent",
46 Properties: allProperties,
47 }
48
49 return event
50}
51
52// printEvent prints event in debug mode
53func (tc *Client) printEvent(event *EventPayload) {

Callers 2

trackMethod · 0.95

Calls 4

getVersionMethod · 0.95
getSystemInfoFunction · 0.85
NowMethod · 0.80
EventTypeTypeAlias · 0.70

Tested by 1