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
|
||||
)
|
||||
|
||||
// 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 {
|
||||
var returnEvents []types.Event
|
||||
// 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)
|
||||
os.Exit(1)
|
||||
} else {
|
||||
log.Printf("vCenter time is '%v'\n", now)
|
||||
//log.Printf("vCenter time is '%v'\n", now)
|
||||
}
|
||||
|
||||
m := event.NewManager(c.Client)
|
||||
@@ -76,44 +79,89 @@ func getEvents(eventTypes []string, entities []types.ManagedObjectReference, beg
|
||||
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 {
|
||||
filter.Time.EndTime = types.NewTime(now.Add(end * -1))
|
||||
}
|
||||
|
||||
collector, err := m.CreateCollectorForEvents(ctx, filter)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Error creating event collector: %s\n", err)
|
||||
os.Exit(1)
|
||||
if len(entities) == 0 {
|
||||
entities = append(entities, root)
|
||||
}
|
||||
|
||||
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 {
|
||||
events, err := collector.ReadNextEvents(ctx, 100)
|
||||
collector, err := m.CreateCollectorForEvents(ctx, filter)
|
||||
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 {
|
||||
break
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user