diff --git a/pkg/util/esxi/datacenter.go b/pkg/util/esxi/datacenter.go index 7d7c1359cd..e0444ef6e0 100644 --- a/pkg/util/esxi/datacenter.go +++ b/pkg/util/esxi/datacenter.go @@ -62,9 +62,12 @@ func (dc *SDatacenter) scanDatastores() error { if dc.istorages == nil { var stores []mo.Datastore dsList := dc.getDatacenter().Datastore - err := dc.manager.references2Objects(dsList, DATASTORE_PROPS, &stores) - if err != nil { - return err + if dsList != nil { + err := dc.manager.references2Objects(dsList, DATASTORE_PROPS, &stores) + if err != nil { + log.Errorf("references2Objects dsList fail %s", err) + return err + } } dc.istorages = make([]cloudprovider.ICloudStorage, len(stores)) for i := 0; i < len(stores); i += 1 { @@ -114,10 +117,12 @@ func (dc *SDatacenter) getDcObj() *object.Datacenter { func (dc *SDatacenter) fetchVms(vmRefs []types.ManagedObjectReference) ([]cloudprovider.ICloudVM, error) { var vms []mo.VirtualMachine - err := dc.manager.references2Objects(vmRefs, VIRTUAL_MACHINE_PROPS, &vms) - if err != nil { - log.Errorf("references2Objects fail %s", err) - return nil, err + if vmRefs != nil { + err := dc.manager.references2Objects(vmRefs, VIRTUAL_MACHINE_PROPS, &vms) + if err != nil { + log.Errorf("references2Objects fail %s", err) + return nil, err + } } retVms := make([]cloudprovider.ICloudVM, len(vms)) diff --git a/pkg/util/esxi/host.go b/pkg/util/esxi/host.go index acd4f99073..babb057fdf 100644 --- a/pkg/util/esxi/host.go +++ b/pkg/util/esxi/host.go @@ -11,6 +11,7 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" "yunion.io/x/pkg/util/netutils" + "yunion.io/x/pkg/util/regutils" "yunion.io/x/onecloud/pkg/cloudprovider" "yunion.io/x/onecloud/pkg/compute/models" @@ -80,7 +81,7 @@ func NewHost(manager *SESXiClient, host *mo.HostSystem, dc *SDatacenter) *SHost func (self *SHost) GetName() string { name := self.SManagedObject.GetName() dotPos := strings.IndexByte(name, '.') - if dotPos > 0 { + if dotPos > 0 && !regutils.MatchIP4Addr(name) { name = name[:dotPos] } return name