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 }