Documentation ¶
Index ¶
- type AttachedObjects
- type AttachedTags
- type BatchError
- type BatchErrors
- type Category
- type Manager
- func (c *Manager) AttachMultipleTagsToObject(ctx context.Context, tagIDs []string, ref mo.Reference) error
- func (c *Manager) AttachTag(ctx context.Context, tagID string, ref mo.Reference) error
- func (c *Manager) AttachTagToMultipleObjects(ctx context.Context, tagID string, refs []mo.Reference) error
- func (c *Manager) CreateCategory(ctx context.Context, category *Category) (string, error)
- func (c *Manager) CreateTag(ctx context.Context, tag *Tag) (string, error)
- func (c *Manager) DeleteCategory(ctx context.Context, category *Category) error
- func (c *Manager) DeleteTag(ctx context.Context, tag *Tag) error
- func (c *Manager) DetachMultipleTagsFromObject(ctx context.Context, tagIDs []string, ref mo.Reference) error
- func (c *Manager) DetachTag(ctx context.Context, tagID string, ref mo.Reference) error
- func (c *Manager) GetAttachedObjectsOnTags(ctx context.Context, tagID []string) ([]AttachedObjects, error)
- func (c *Manager) GetAttachedTags(ctx context.Context, ref mo.Reference) ([]Tag, error)
- func (c *Manager) GetAttachedTagsOnObjects(ctx context.Context, objectID []mo.Reference) ([]AttachedTags, error)
- func (c *Manager) GetCategories(ctx context.Context) ([]Category, error)
- func (c *Manager) GetCategory(ctx context.Context, id string) (*Category, error)
- func (c *Manager) GetTag(ctx context.Context, id string) (*Tag, error)
- func (c *Manager) GetTagForCategory(ctx context.Context, id, category string) (*Tag, error)
- func (c *Manager) GetTags(ctx context.Context) ([]Tag, error)
- func (c *Manager) GetTagsForCategory(ctx context.Context, id string) ([]Tag, error)
- func (c *Manager) ListAttachedObjects(ctx context.Context, tagID string) ([]mo.Reference, error)
- func (c *Manager) ListAttachedObjectsOnTags(ctx context.Context, tagID []string) ([]AttachedObjects, error)
- func (c *Manager) ListAttachedTags(ctx context.Context, ref mo.Reference) ([]string, error)
- func (c *Manager) ListAttachedTagsOnObjects(ctx context.Context, objectID []mo.Reference) ([]AttachedTags, error)
- func (c *Manager) ListCategories(ctx context.Context) ([]string, error)
- func (c *Manager) ListTags(ctx context.Context) ([]string, error)
- func (c *Manager) ListTagsForCategory(ctx context.Context, id string) ([]string, error)
- func (c *Manager) UpdateCategory(ctx context.Context, category *Category) error
- func (c *Manager) UpdateTag(ctx context.Context, tag *Tag) error
- type Tag
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AttachedObjects ¶
type AttachedObjects struct { TagID string `json:"tag_id"` Tag *Tag `json:"tag,omitempty"` ObjectIDs []mo.Reference `json:"object_ids"` }
AttachedObjects is the response type used by ListAttachedObjectsOnTags.
func (*AttachedObjects) UnmarshalJSON ¶
func (t *AttachedObjects) UnmarshalJSON(b []byte) error
UnmarshalJSON implements json.Unmarshaler.
type AttachedTags ¶
type AttachedTags struct { ObjectID mo.Reference `json:"object_id"` TagIDs []string `json:"tag_ids"` Tags []Tag `json:"tags,omitempty"` }
AttachedTags is the response type used by ListAttachedTagsOnObjects.
func (*AttachedTags) UnmarshalJSON ¶
func (t *AttachedTags) UnmarshalJSON(b []byte) error
UnmarshalJSON implements json.Unmarshaler.
type BatchError ¶
BatchError is an error returned for a single item which failed in a batch operation
type BatchErrors ¶
type BatchErrors []BatchError
BatchErrors contains all errors which occurred in a batch operation
func (BatchErrors) Error ¶
func (b BatchErrors) Error() string
type Category ¶
type Category struct { ID string `json:"id,omitempty"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Cardinality string `json:"cardinality,omitempty"` AssociableTypes []string `json:"associable_types,omitempty"` UsedBy []string `json:"used_by,omitempty"` }
Category provides methods to create, read, update, delete, and enumerate categories.
type Manager ¶
Manager extends rest.Client, adding tag related methods.
func NewManager ¶
NewManager creates a new Manager instance with the given client.
func (*Manager) AttachMultipleTagsToObject ¶
func (c *Manager) AttachMultipleTagsToObject(ctx context.Context, tagIDs []string, ref mo.Reference) error
AttachMultipleTagsToObject attaches multiple tag IDs to a managed object. This operation is idempotent. If a tag is already attached to the object, then the individual operation is a no-op and no error will be thrown. This operation is not atomic. If the underlying call fails with one or more tags not successfully attached to the managed object reference it might leave the managed object reference in a partially tagged state and needs to be resolved by the caller. In this case BatchErrors is returned and can be used to analyze failure reasons on each failed tag.
Specified tagIDs must use URN-notation instead of display names or a generic error will be returned and no tagging operation will be performed. If the managed object reference does not exist a generic 403 Forbidden error will be returned.
This operation was added in vSphere API 6.5.
func (*Manager) AttachTagToMultipleObjects ¶
func (c *Manager) AttachTagToMultipleObjects(ctx context.Context, tagID string, refs []mo.Reference) error
AttachTagToMultipleObjects attaches a tag ID to multiple managed objects. This operation is idempotent, i.e. if a tag is already attached to the object, then the individual operation is a no-op and no error will be thrown.
This operation was added in vSphere API 6.5.
func (*Manager) CreateCategory ¶
CreateCategory creates a new category and returns the category ID.
func (*Manager) CreateTag ¶
CreateTag creates a new tag with the given Name, Description and CategoryID.
Example ¶
package main import ( "context" "fmt" "github.com/vmware/govmomi/simulator" "github.com/vmware/govmomi/vapi/rest" "github.com/vmware/govmomi/vapi/tags" "github.com/vmware/govmomi/vim25" _ "github.com/vmware/govmomi/vapi/simulator" ) func main() { simulator.Run(func(ctx context.Context, vc *vim25.Client) error { c := rest.NewClient(vc) _ = c.Login(ctx, simulator.DefaultLogin) m := tags.NewManager(c) id, err := m.CreateCategory(ctx, &tags.Category{ AssociableTypes: []string{"VirtualMachine"}, Cardinality: "SINGLE", Description: "This is My Category", Name: "my-category", }) if err != nil { return err } id, err = m.CreateTag(ctx, &tags.Tag{ CategoryID: id, Description: "This is My Tag", Name: "my-tag", }) if err != nil { return err } tag, err := m.GetTag(ctx, id) if err != nil { return err } fmt.Println(tag.Name) return nil }) }
Output: my-tag
func (*Manager) DeleteCategory ¶
DeleteCategory deletes a category.
func (*Manager) DetachMultipleTagsFromObject ¶
func (c *Manager) DetachMultipleTagsFromObject(ctx context.Context, tagIDs []string, ref mo.Reference) error
DetachMultipleTagsFromObject detaches multiple tag IDs from a managed object. This operation is idempotent. If a tag is already detached from the object, then the individual operation is a no-op and no error will be thrown. This operation is not atomic. If the underlying call fails with one or more tags not successfully detached from the managed object reference it might leave the managed object reference in a partially tagged state and needs to be resolved by the caller. In this case BatchErrors is returned and can be used to analyze failure reasons on each failed tag.
Specified tagIDs must use URN-notation instead of display names or a generic error will be returned and no tagging operation will be performed. If the managed object reference does not exist a generic 403 Forbidden error will be returned.
This operation was added in vSphere API 6.5.
func (*Manager) DetachTag ¶
DetachTag detaches a tag ID from a managed object. If the tag is already removed from the object, then this operation is a no-op and an error will not be thrown.
func (*Manager) GetAttachedObjectsOnTags ¶
func (c *Manager) GetAttachedObjectsOnTags(ctx context.Context, tagID []string) ([]AttachedObjects, error)
GetAttachedObjectsOnTags combines ListAttachedObjectsOnTags and populates each Tag field.
func (*Manager) GetAttachedTags ¶
GetAttachedTags fetches the array of tags attached to the given object.
func (*Manager) GetAttachedTagsOnObjects ¶
func (c *Manager) GetAttachedTagsOnObjects(ctx context.Context, objectID []mo.Reference) ([]AttachedTags, error)
GetAttachedTagsOnObjects calls ListAttachedTagsOnObjects and populates each Tags field.
Example ¶
package main import ( "context" "fmt" "log" "github.com/vmware/govmomi/property" "github.com/vmware/govmomi/simulator" "github.com/vmware/govmomi/vapi/rest" "github.com/vmware/govmomi/vapi/tags" "github.com/vmware/govmomi/view" "github.com/vmware/govmomi/vim25" "github.com/vmware/govmomi/vim25/mo" _ "github.com/vmware/govmomi/vapi/simulator" ) func main() { simulator.Run(func(ctx context.Context, vc *vim25.Client) error { c := rest.NewClient(vc) _ = c.Login(ctx, simulator.DefaultLogin) m := tags.NewManager(c) id, err := m.CreateCategory(ctx, &tags.Category{Name: "my-category"}) if err != nil { return err } id, err = m.CreateTag(ctx, &tags.Tag{CategoryID: id, Name: "my-tag"}) if err != nil { return err } v, err := view.NewManager(vc).CreateContainerView(ctx, vc.ServiceContent.RootFolder, []string{"VirtualMachine"}, true) if err != nil { log.Fatal(err) } vms, err := v.Find(ctx, nil, property.Match{}) // List all VMs in the inventory if err != nil { return err } refs := make([]mo.Reference, len(vms)) // Convert list type for i := range vms { refs[i] = vms[i] } for i := 0; i < len(refs)/2; i++ { // AttachTag to half of the VMs if err = m.AttachTag(ctx, id, refs[i]); err != nil { return err } } attached, err := m.GetAttachedTagsOnObjects(ctx, refs) // Get AttachedTags for all VMs if err != nil { return err } n := 0 for _, a := range attached { // Count tags attached to all VMs n += len(a.Tags) } fmt.Printf("%d of %d vms are tagged", n, len(vms)) return nil }) }
Output: 2 of 4 vms are tagged
func (*Manager) GetCategories ¶
GetCategories fetches a list of category information in the system.
func (*Manager) GetCategory ¶
GetCategory fetches the category information for the given identifier. The id parameter can be a Category ID or Category Name.
func (*Manager) GetTag ¶
GetTag fetches the tag information for the given identifier. The id parameter can be a Tag ID or Tag Name.
func (*Manager) GetTagForCategory ¶
GetTagForCategory fetches the tag information for the given identifier in the given category.
func (*Manager) GetTagsForCategory ¶
The id parameter can be a Category ID or Category Name.
func (*Manager) ListAttachedObjects ¶
ListAttachedObjects fetches the array of attached objects for the given tag ID.
func (*Manager) ListAttachedObjectsOnTags ¶
func (c *Manager) ListAttachedObjectsOnTags(ctx context.Context, tagID []string) ([]AttachedObjects, error)
ListAttachedObjectsOnTags fetches the array of attached objects for the given tag IDs.
func (*Manager) ListAttachedTags ¶
ListAttachedTags fetches the array of tag IDs attached to the given object.
func (*Manager) ListAttachedTagsOnObjects ¶
func (c *Manager) ListAttachedTagsOnObjects(ctx context.Context, objectID []mo.Reference) ([]AttachedTags, error)
ListAttachedTagsOnObjects fetches the array of attached tag IDs for the given object IDs.
func (*Manager) ListCategories ¶
ListCategories returns all category IDs in the system.
func (*Manager) ListTagsForCategory ¶
The id parameter can be a Category ID or Category Name.
func (*Manager) UpdateCategory ¶
UpdateCategory updates one or more of the AssociableTypes, Cardinality, Description and Name fields.
type Tag ¶
type Tag struct { ID string `json:"id,omitempty"` Description string `json:"description,omitempty"` Name string `json:"name,omitempty"` CategoryID string `json:"category_id,omitempty"` UsedBy []string `json:"used_by,omitempty"` }
Tag provides methods to create, read, update, delete, and enumerate tags.