func (s *searchDatastoreTask) addFile(dir string, name string) { details := s.req.SearchSpec.Details if details == nil { details = new(types.FileQueryFlags) } file := path.Join(dir, name) st, err := os.Stat(file) if err != nil { log.Printf("stat(%s): %s", file, err) return } info := types.FileInfo{ Path: name, } var finfo types.BaseFileInfo if details.FileSize { info.FileSize = st.Size() } if details.Modification { mtime := st.ModTime() info.Modification = &mtime } if isTrue(details.FileOwner) { // Assume for now this process created all files in the datastore user := os.Getenv("USER") info.Owner = user } if st.IsDir() { finfo = &types.FolderFileInfo{FileInfo: info} } else if details.FileType { switch path.Ext(name) { case ".img": finfo = &types.FloppyImageFileInfo{FileInfo: info} case ".iso": finfo = &types.IsoImageFileInfo{FileInfo: info} case ".log": finfo = &types.VmLogFileInfo{FileInfo: info} case ".nvram": finfo = &types.VmNvramFileInfo{FileInfo: info} case ".vmdk": // TODO: lookup device to set other fields finfo = &types.VmDiskFileInfo{FileInfo: info} case ".vmx": finfo = &types.VmConfigFileInfo{FileInfo: info} default: finfo = &info } } s.res.File = append(s.res.File, finfo) }
func (s *searchDatastoreTask) addFile(file os.FileInfo, res *types.HostDatastoreBrowserSearchResults) { details := s.SearchSpec.Details if details == nil { details = new(types.FileQueryFlags) } name := file.Name() info := types.FileInfo{ Path: name, } var finfo types.BaseFileInfo if details.FileSize { info.FileSize = file.Size() } if details.Modification { mtime := file.ModTime() info.Modification = &mtime } if isTrue(details.FileOwner) { // Assume for now this process created all files in the datastore user := os.Getenv("USER") info.Owner = user } if file.IsDir() { finfo = &types.FolderFileInfo{FileInfo: info} } else if details.FileType { switch path.Ext(name) { case ".img": finfo = &types.FloppyImageFileInfo{FileInfo: info} case ".iso": finfo = &types.IsoImageFileInfo{FileInfo: info} case ".log": finfo = &types.VmLogFileInfo{FileInfo: info} case ".nvram": finfo = &types.VmNvramFileInfo{FileInfo: info} case ".vmdk": // TODO: lookup device to set other fields finfo = &types.VmDiskFileInfo{FileInfo: info} case ".vmx": finfo = &types.VmConfigFileInfo{FileInfo: info} default: finfo = &info } } res.File = append(res.File, finfo) }