@@ -26,6 +26,7 @@ import (
2626type OutboundEvent struct {
2727 Topic string `json:"topic,omitempty"`
2828 Category string `json:"category,omitempty"`
29+ Source string `json:"source"`
2930
3031 UserName string `json:"userName,omitempty"`
3132 CreatedTime time.Time `json:"createdTime,omitempty"`
@@ -54,8 +55,10 @@ func Stream(ctx context.Context, c *vim25.Client, controller *types.Controller)
5455 eventsPerPage := int32 (1 )
5556 tail := true
5657 force := true
58+ source := c .URL ().Host
59+
60+ recv := makeRecv (controller , m , source )
5761
58- recv := makeRecv (controller , m )
5962 err := m .Events (ctx , managedTypes , eventsPerPage , tail , force , recv )
6063 if err != nil {
6164 return errors .Wrap (err , "error connecting to event-stream" )
@@ -64,14 +67,14 @@ func Stream(ctx context.Context, c *vim25.Client, controller *types.Controller)
6467}
6568
6669// 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 {
6871 return func (managedObjectReference vtypes.ManagedObjectReference , baseEvent []vtypes.BaseEvent ) error {
6972 log .Printf ("Object %v" , managedObjectReference )
7073
7174 for i , event := range baseEvent {
7275 log .Printf ("Event [%d] %v" , i , event )
7376
74- topic , message , err := handleEvent (event , m )
77+ topic , message , err := handleEvent (event , m , source )
7578 if err != nil {
7679 log .Printf ("error handling event: %s" , err .Error ())
7780 continue
@@ -85,7 +88,7 @@ func makeRecv(controller *types.Controller, m *event.Manager) func(managedObject
8588 }
8689}
8790
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 ) {
8992 // Sanity check to avoid nil pointer exception
9093 if event == nil {
9194 return "" , "" , errors .New ("event must not be nil" )
@@ -114,6 +117,7 @@ func handleEvent(event vtypes.BaseEvent, m *event.Manager) (string, string, erro
114117 CreatedTime : createdTime ,
115118 ObjectName : name ,
116119 ManagedObjectReference : ref ,
120+ Source : source ,
117121 })
118122 if err != nil {
119123 return "" , "" , errors .Wrap (err , "error marshaling outboundevent" )
0 commit comments