refactor slightly to handle multiple entities
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
98
main.go
98
main.go
@@ -51,6 +51,9 @@ var (
|
|||||||
hostResults []HostFailureResults
|
hostResults []HostFailureResults
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// This function optionally filters events by a single MoRef, any additonal MoRefs are ignored
|
||||||
|
// See https://golang.hotexamples.com/site/file?hash=0x7414a58898f22f77b81f05c04e2e2a2280e018ba9a71a2f4efb2bda7c55c35ac&fullName=govc/command.go&project=kristinn/govmomi
|
||||||
|
// for an example of how to deal with multiple entities
|
||||||
func getEvents(eventTypes []string, entities []types.ManagedObjectReference, begin time.Duration, end time.Duration) []types.Event {
|
func getEvents(eventTypes []string, entities []types.ManagedObjectReference, begin time.Duration, end time.Duration) []types.Event {
|
||||||
var returnEvents []types.Event
|
var returnEvents []types.Event
|
||||||
// Refer https://github.com/vmware/govmomi/blob/main/examples/events/main.go
|
// Refer https://github.com/vmware/govmomi/blob/main/examples/events/main.go
|
||||||
@@ -59,7 +62,7 @@ func getEvents(eventTypes []string, entities []types.ManagedObjectReference, beg
|
|||||||
fmt.Fprintf(os.Stderr, "Error getting vCenter time: %s\n", err)
|
fmt.Fprintf(os.Stderr, "Error getting vCenter time: %s\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
} else {
|
} else {
|
||||||
log.Printf("vCenter time is '%v'\n", now)
|
//log.Printf("vCenter time is '%v'\n", now)
|
||||||
}
|
}
|
||||||
|
|
||||||
m := event.NewManager(c.Client)
|
m := event.NewManager(c.Client)
|
||||||
@@ -76,44 +79,89 @@ func getEvents(eventTypes []string, entities []types.ManagedObjectReference, beg
|
|||||||
BeginTime: types.NewTime(now.Add(begin * -1)),
|
BeginTime: types.NewTime(now.Add(begin * -1)),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if len(entities) > 0 {
|
|
||||||
log.Printf("getEvents setting entity '%v' to filter\n", entities[0])
|
|
||||||
filter.Entity = &types.EventFilterSpecByEntity{
|
|
||||||
Entity: entities[0],
|
|
||||||
Recursion: types.EventFilterSpecRecursionOptionAll,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if end != 0 {
|
if end != 0 {
|
||||||
filter.Time.EndTime = types.NewTime(now.Add(end * -1))
|
filter.Time.EndTime = types.NewTime(now.Add(end * -1))
|
||||||
}
|
}
|
||||||
|
|
||||||
collector, err := m.CreateCollectorForEvents(ctx, filter)
|
if len(entities) == 0 {
|
||||||
if err != nil {
|
entities = append(entities, root)
|
||||||
fmt.Fprintf(os.Stderr, "Error creating event collector: %s\n", err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
defer collector.Destroy(ctx)
|
for _, e := range entities {
|
||||||
|
log.Printf("getEvents setting entity '%v' to filter\n", entities[0])
|
||||||
|
filter.Entity = &types.EventFilterSpecByEntity{
|
||||||
|
Entity: e,
|
||||||
|
Recursion: types.EventFilterSpecRecursionOptionAll,
|
||||||
|
}
|
||||||
|
|
||||||
for {
|
collector, err := m.CreateCollectorForEvents(ctx, filter)
|
||||||
events, err := collector.ReadNextEvents(ctx, 100)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "Error reading events: %s\n", err)
|
fmt.Fprintf(os.Stderr, "Error creating event collector: %s\n", err)
|
||||||
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(events) == 0 {
|
defer collector.Destroy(ctx)
|
||||||
break
|
|
||||||
|
for {
|
||||||
|
events, err := collector.ReadNextEvents(ctx, 100)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error reading events: %s\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(events) == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := range events {
|
||||||
|
event := events[i].GetEvent()
|
||||||
|
returnEvents = append(returnEvents, *event)
|
||||||
|
//kind := reflect.TypeOf(events[i]).Elem().Name()
|
||||||
|
//log.Printf("%d [%s] [%s] %s\n", event.Key, event.CreatedTime.In(location).Format(time.ANSIC), kind, event.FullFormattedMessage)
|
||||||
|
log.Printf("%d [%s] %s\n", event.Key, event.CreatedTime.Format(time.ANSIC), event.FullFormattedMessage)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := range events {
|
|
||||||
event := events[i].GetEvent()
|
|
||||||
returnEvents = append(returnEvents, *event)
|
|
||||||
//kind := reflect.TypeOf(events[i]).Elem().Name()
|
|
||||||
//log.Printf("%d [%s] [%s] %s\n", event.Key, event.CreatedTime.In(location).Format(time.ANSIC), kind, event.FullFormattedMessage)
|
|
||||||
log.Printf("%d [%s] %s\n", event.Key, event.CreatedTime.Format(time.ANSIC), event.FullFormattedMessage)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
if len(entities) > 0 {
|
||||||
|
log.Printf("getEvents setting entity '%v' to filter\n", entities[0])
|
||||||
|
filter.Entity = &types.EventFilterSpecByEntity{
|
||||||
|
Entity: entities[0],
|
||||||
|
Recursion: types.EventFilterSpecRecursionOptionAll,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
collector, err := m.CreateCollectorForEvents(ctx, filter)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error creating event collector: %s\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer collector.Destroy(ctx)
|
||||||
|
|
||||||
|
for {
|
||||||
|
events, err := collector.ReadNextEvents(ctx, 100)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error reading events: %s\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(events) == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := range events {
|
||||||
|
event := events[i].GetEvent()
|
||||||
|
returnEvents = append(returnEvents, *event)
|
||||||
|
//kind := reflect.TypeOf(events[i]).Elem().Name()
|
||||||
|
//log.Printf("%d [%s] [%s] %s\n", event.Key, event.CreatedTime.In(location).Format(time.ANSIC), kind, event.FullFormattedMessage)
|
||||||
|
log.Printf("%d [%s] %s\n", event.Key, event.CreatedTime.Format(time.ANSIC), event.FullFormattedMessage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
return returnEvents
|
return returnEvents
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user