package esx import ( "context" "git.twelvetwelve.org/library/core/log" "github.com/vmware/govmomi/find" "github.com/vmware/govmomi/property" "github.com/vmware/govmomi/vim25/mo" ) type Networks struct { ClientRef } type Network struct { Id string Name string VLAN int32 } func (net *Networks) List(ctx context.Context) ([]Network, error) { finder := find.NewFinder(net.VIM()) host, err := finder.DefaultHostSystem(ctx) if err != nil { log.Errorf("Could not find default host") return nil, err } ns, err := host.ConfigManager().NetworkSystem(ctx) if err != nil { log.Errorf("Could not get host config") return nil, err } var mns mo.HostNetworkSystem pc := property.DefaultCollector(net.VIM()) err = pc.RetrieveOne(ctx, ns.Reference(), []string{"networkInfo.portgroup"}, &mns) if err != nil { log.Errorf("Could not get portgroup config") return nil, err } networks := make([]Network, 0) for _, pg := range mns.NetworkInfo.Portgroup { networks = append(networks, Network{ Id: pg.Spec.Name, Name: pg.Spec.Name, VLAN: pg.Spec.VlanId, }) } // return mns.NetworkInfo.Portgroup, nil return networks, nil }