github.com/vmware/govmomi@v0.51.0/object/opaque_network.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 object
     6  
     7  import (
     8  	"context"
     9  	"fmt"
    10  
    11  	"github.com/vmware/govmomi/vim25"
    12  	"github.com/vmware/govmomi/vim25/mo"
    13  	"github.com/vmware/govmomi/vim25/types"
    14  )
    15  
    16  type OpaqueNetwork struct {
    17  	Common
    18  }
    19  
    20  func NewOpaqueNetwork(c *vim25.Client, ref types.ManagedObjectReference) *OpaqueNetwork {
    21  	return &OpaqueNetwork{
    22  		Common: NewCommon(c, ref),
    23  	}
    24  }
    25  
    26  func (n OpaqueNetwork) GetInventoryPath() string {
    27  	return n.InventoryPath
    28  }
    29  
    30  // EthernetCardBackingInfo returns the VirtualDeviceBackingInfo for this Network
    31  func (n OpaqueNetwork) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) {
    32  	summary, err := n.Summary(ctx)
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  
    37  	backing := &types.VirtualEthernetCardOpaqueNetworkBackingInfo{
    38  		OpaqueNetworkId:   summary.OpaqueNetworkId,
    39  		OpaqueNetworkType: summary.OpaqueNetworkType,
    40  	}
    41  
    42  	return backing, nil
    43  }
    44  
    45  // Summary returns the mo.OpaqueNetwork.Summary property
    46  func (n OpaqueNetwork) Summary(ctx context.Context) (*types.OpaqueNetworkSummary, error) {
    47  	var props mo.OpaqueNetwork
    48  
    49  	err := n.Properties(ctx, n.Reference(), []string{"summary"}, &props)
    50  	if err != nil {
    51  		return nil, err
    52  	}
    53  
    54  	summary, ok := props.Summary.(*types.OpaqueNetworkSummary)
    55  	if !ok {
    56  		return nil, fmt.Errorf("%s unsupported network summary type: %T", n, props.Summary)
    57  	}
    58  
    59  	return summary, nil
    60  }