github.com/vmware/govmomi@v0.51.0/task/manager.go (about)

     1  // © Broadcom. All Rights Reserved.
     2  // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package task
     6  
     7  import (
     8  	"context"
     9  
    10  	"github.com/vmware/govmomi/vim25"
    11  	"github.com/vmware/govmomi/vim25/methods"
    12  	"github.com/vmware/govmomi/vim25/types"
    13  )
    14  
    15  type Manager struct {
    16  	r types.ManagedObjectReference
    17  	c *vim25.Client
    18  }
    19  
    20  // NewManager creates a new task manager
    21  func NewManager(c *vim25.Client) *Manager {
    22  	m := Manager{
    23  		r: *c.ServiceContent.TaskManager,
    24  		c: c,
    25  	}
    26  
    27  	return &m
    28  }
    29  
    30  // Reference returns the task.Manager MOID
    31  func (m Manager) Reference() types.ManagedObjectReference {
    32  	return m.r
    33  }
    34  
    35  // CreateCollectorForTasks returns a task history collector, a specialized
    36  // history collector that gathers TaskInfo data objects.
    37  func (m Manager) CreateCollectorForTasks(ctx context.Context, filter types.TaskFilterSpec) (*HistoryCollector, error) {
    38  	req := types.CreateCollectorForTasks{
    39  		This:   m.r,
    40  		Filter: filter,
    41  	}
    42  
    43  	res, err := methods.CreateCollectorForTasks(ctx, m.c, &req)
    44  	if err != nil {
    45  		return nil, err
    46  	}
    47  
    48  	return newHistoryCollector(m.c, res.Returnval), nil
    49  }