@@ -26,6 +26,7 @@ import (
26
26
type OutboundEvent struct {
27
27
Topic string `json:"topic,omitempty"`
28
28
Category string `json:"category,omitempty"`
29
+ Source string `json:"source"`
29
30
30
31
UserName string `json:"userName,omitempty"`
31
32
CreatedTime time.Time `json:"createdTime,omitempty"`
@@ -54,8 +55,10 @@ func Stream(ctx context.Context, c *vim25.Client, controller *types.Controller)
54
55
eventsPerPage := int32 (1 )
55
56
tail := true
56
57
force := true
58
+ source := c .URL ().Host
59
+
60
+ recv := makeRecv (controller , m , source )
57
61
58
- recv := makeRecv (controller , m )
59
62
err := m .Events (ctx , managedTypes , eventsPerPage , tail , force , recv )
60
63
if err != nil {
61
64
return errors .Wrap (err , "error connecting to event-stream" )
@@ -64,14 +67,14 @@ func Stream(ctx context.Context, c *vim25.Client, controller *types.Controller)
64
67
}
65
68
66
69
// makeRecv returns a event handler function called by the event manager on each event
67
- func makeRecv (controller * types.Controller , m * event.Manager ) func (managedObjectReference vtypes.ManagedObjectReference , baseEvent []vtypes.BaseEvent ) error {
70
+ func makeRecv (controller * types.Controller , m * event.Manager , source string ) func (managedObjectReference vtypes.ManagedObjectReference , baseEvent []vtypes.BaseEvent ) error {
68
71
return func (managedObjectReference vtypes.ManagedObjectReference , baseEvent []vtypes.BaseEvent ) error {
69
72
log .Printf ("Object %v" , managedObjectReference )
70
73
71
74
for i , event := range baseEvent {
72
75
log .Printf ("Event [%d] %v" , i , event )
73
76
74
- topic , message , err := handleEvent (event , m )
77
+ topic , message , err := handleEvent (event , m , source )
75
78
if err != nil {
76
79
log .Printf ("error handling event: %s" , err .Error ())
77
80
continue
@@ -85,7 +88,7 @@ func makeRecv(controller *types.Controller, m *event.Manager) func(managedObject
85
88
}
86
89
}
87
90
88
- func handleEvent (event vtypes.BaseEvent , m * event.Manager ) (string , string , error ) {
91
+ func handleEvent (event vtypes.BaseEvent , m * event.Manager , source string ) (string , string , error ) {
89
92
// Sanity check to avoid nil pointer exception
90
93
if event == nil {
91
94
return "" , "" , errors .New ("event must not be nil" )
@@ -114,6 +117,7 @@ func handleEvent(event vtypes.BaseEvent, m *event.Manager) (string, string, erro
114
117
CreatedTime : createdTime ,
115
118
ObjectName : name ,
116
119
ManagedObjectReference : ref ,
120
+ Source : source ,
117
121
})
118
122
if err != nil {
119
123
return "" , "" , errors .Wrap (err , "error marshaling outboundevent" )
0 commit comments