mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-02-15 09:26:36 +00:00
Handling errors to prevent panics
Signed-off-by: Rahman Mousavian <rahman.mousavian@oracle.com>
This commit is contained in:
@@ -203,9 +203,9 @@ func getScheduledTasks() (scheduledTasks ScheduledTasks, err error) {
|
|||||||
rootFolderObj := res.ToIDispatch()
|
rootFolderObj := res.ToIDispatch()
|
||||||
defer rootFolderObj.Release()
|
defer rootFolderObj.Release()
|
||||||
|
|
||||||
fetchTasksRecursively(rootFolderObj, &scheduledTasks)
|
err = fetchTasksRecursively(rootFolderObj, &scheduledTasks)
|
||||||
|
|
||||||
return scheduledTasks, nil
|
return scheduledTasks, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func fetchTasksInFolder(folder *ole.IDispatch, scheduledTasks *ScheduledTasks) error {
|
func fetchTasksInFolder(folder *ole.IDispatch, scheduledTasks *ScheduledTasks) error {
|
||||||
@@ -220,7 +220,11 @@ func fetchTasksInFolder(folder *ole.IDispatch, scheduledTasks *ScheduledTasks) e
|
|||||||
err = oleutil.ForEach(tasks, func(v *ole.VARIANT) error {
|
err = oleutil.ForEach(tasks, func(v *ole.VARIANT) error {
|
||||||
task := v.ToIDispatch()
|
task := v.ToIDispatch()
|
||||||
|
|
||||||
parsedTask := parseTask(task)
|
parsedTask, err := parseTask(task)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
*scheduledTasks = append(*scheduledTasks, parsedTask)
|
*scheduledTasks = append(*scheduledTasks, parsedTask)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@@ -250,17 +254,45 @@ func fetchTasksRecursively(folder *ole.IDispatch, scheduledTasks *ScheduledTasks
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseTask(task *ole.IDispatch) ScheduledTask {
|
func parseTask(task *ole.IDispatch) (scheduledTask ScheduledTask, err error) {
|
||||||
scheduledTask := ScheduledTask{}
|
taskNameVar, err := oleutil.GetProperty(task, "Name")
|
||||||
|
if err != nil {
|
||||||
|
return scheduledTask, err
|
||||||
|
}
|
||||||
|
|
||||||
scheduledTask.Name = oleutil.MustGetProperty(task, "Name").ToString()
|
taskPathVar, err := oleutil.GetProperty(task, "Path")
|
||||||
scheduledTask.Path = strings.ReplaceAll(oleutil.MustGetProperty(task, "Path").ToString(), "\\", "/")
|
if err != nil {
|
||||||
scheduledTask.Enabled = oleutil.MustGetProperty(task, "Enabled").Value().(bool)
|
return scheduledTask, err
|
||||||
scheduledTask.State = TaskState(oleutil.MustGetProperty(task, "State").Val)
|
}
|
||||||
scheduledTask.MissedRunsCount = float64(oleutil.MustGetProperty(task, "NumberOfMissedRuns").Val)
|
|
||||||
scheduledTask.LastTaskResult = TaskResult(oleutil.MustGetProperty(task, "LastTaskResult").Val)
|
|
||||||
|
|
||||||
return scheduledTask
|
taskEnabledVar, err := oleutil.GetProperty(task, "Enabled")
|
||||||
|
if err != nil {
|
||||||
|
return scheduledTask, err
|
||||||
|
}
|
||||||
|
|
||||||
|
taskStateVar, err := oleutil.GetProperty(task, "State")
|
||||||
|
if err != nil {
|
||||||
|
return scheduledTask, err
|
||||||
|
}
|
||||||
|
|
||||||
|
taskNumberOfMissedRunsVar, err := oleutil.GetProperty(task, "NumberOfMissedRuns")
|
||||||
|
if err != nil {
|
||||||
|
return scheduledTask, err
|
||||||
|
}
|
||||||
|
|
||||||
|
taskLastTaskResultVar, err := oleutil.GetProperty(task, "LastTaskResult")
|
||||||
|
if err != nil {
|
||||||
|
return scheduledTask, err
|
||||||
|
}
|
||||||
|
|
||||||
|
scheduledTask.Name = taskNameVar.ToString()
|
||||||
|
scheduledTask.Path = strings.ReplaceAll(taskPathVar.ToString(), "\\", "/")
|
||||||
|
scheduledTask.Enabled = taskEnabledVar.Value().(bool)
|
||||||
|
scheduledTask.State = TaskState(taskStateVar.Val)
|
||||||
|
scheduledTask.MissedRunsCount = float64(taskNumberOfMissedRunsVar.Val)
|
||||||
|
scheduledTask.LastTaskResult = TaskResult(taskLastTaskResultVar.Val)
|
||||||
|
|
||||||
|
return scheduledTask, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t TaskState) String() string {
|
func (t TaskState) String() string {
|
||||||
|
|||||||
Reference in New Issue
Block a user