fix: esxi references2Objects refer nil objects

This commit is contained in:
Qiu Jian
2019-02-20 23:13:27 +08:00
parent fb4592a4fa
commit 72d8dd8961
2 changed files with 14 additions and 8 deletions
+12 -7
View File
@@ -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))
+2 -1
View File
@@ -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