diff --git a/builder/vmware/common/driver_player5.go b/builder/vmware/common/driver_player5.go index 4ce3b5c7a..0abfa9c53 100644 --- a/builder/vmware/common/driver_player5.go +++ b/builder/vmware/common/driver_player5.go @@ -205,11 +205,28 @@ func (d *Player5Driver) Verify() error { d.VmwareDriver.NetworkMapper = func() (NetworkNameMapper, error) { pathNetmap := playerNetmapConfPath() if _, err := os.Stat(pathNetmap); err != nil { - return nil, fmt.Errorf("Could not find netmap conf file: %s", pathNetmap) + log.Printf("Located networkmapper configuration file using Player: %s", pathNetmap) + return ReadNetmapConfig(pathNetmap) } - log.Printf("Located networkmapper configuration file using Player: %s", pathNetmap) - return ReadNetmapConfig(pathNetmap) + // If we weren't able to find the networkmapper configuration file, then fall back + // to the networking file which might also be in the configuration directory. + libpath, _ := playerVMwareRoot() + pathNetworking := filepath.Join(libpath, "networking") + if _, err := os.Stat(pathNetworking); err != nil { + return nil, fmt.Errorf("Could not determine network mappings from files in path: %s", libpath) + } + + // We were able to successfully stat the file.. So, now we can open a handle to it. + log.Printf("Located networking configuration file using Player: %s", pathNetworking) + fd, err := os.Open(pathNetworking) + if err != nil { + return nil, err + } + defer fd.Close() + + // Then we pass the handle to the networking configuration parser. + return ReadNetworkingConfig(fd) } return nil } diff --git a/builder/vmware/common/driver_workstation9.go b/builder/vmware/common/driver_workstation9.go index a64543b2e..5637b7fa5 100644 --- a/builder/vmware/common/driver_workstation9.go +++ b/builder/vmware/common/driver_workstation9.go @@ -165,12 +165,29 @@ func (d *Workstation9Driver) Verify() error { d.VmwareDriver.NetworkMapper = func() (NetworkNameMapper, error) { pathNetmap := workstationNetmapConfPath() - if _, err := os.Stat(pathNetmap); err != nil { - return nil, fmt.Errorf("Could not find netmap conf file: %s", pathNetmap) + if _, err := os.Stat(pathNetmap); err == nil { + log.Printf("Located networkmapper configuration file using Workstation: %s", pathNetmap) + return ReadNetmapConfig(pathNetmap) } - log.Printf("Located networkmapper configuration file using Workstation: %s", pathNetmap) - return ReadNetmapConfig(pathNetmap) + // If we weren't able to find the networkmapper configuration file, then fall back + // to the networking file which might also be in the configuration directory. + libpath, _ := workstationVMwareRoot() + pathNetworking := filepath.Join(libpath, "networking") + if _, err := os.Stat(pathNetworking); err != nil { + return nil, fmt.Errorf("Could not determine network mappings from files in path: %s", libpath) + } + + // We were able to successfully stat the file.. So, now we can open a handle to it. + log.Printf("Located networking configuration file using Workstation: %s", pathNetworking) + fd, err := os.Open(pathNetworking) + if err != nil { + return nil, err + } + defer fd.Close() + + // Then we pass the handle to the networking configuration parser. + return ReadNetworkingConfig(fd) } return nil }