I try to get a resource representation of the hierarchy of the VM guest OS file system within a VM backup ( Veeam REST API v8.0.0.917).
I'am using the following HTTP request: GET /catalog/vms/{VMNAME}/vmRestorePoints/{ID}/guestfs/{FILEPATH}?action=listAll
I have notice that if I query a path like "C:/Users" or "C:/Windows" the server returs correct response.
Examples:
GET /catalog/vms/{VMNAME}/vmRestorePoints/{ID}/guestfs/C:/Users?action=listAll
GET /catalog/vms/{VMNAME}/vmRestorePoints/{ID}/guestfs/C:/Windows?action=listAll
But, if query a path of livel 2 like "C:/Users/Administrator", "C:/Windows/System32" or level 3 like "C:/Users/Administrator/AppData" (and so on ... )
Examples:
GET /catalog/vms/{VMNAME}/vmRestorePoints/{ID}/guestfs/C:/Users/Administrator?action=listAll
GET /catalog/vms/{VMNAME}/vmRestorePoints/{ID}/guestfs/C:/Users/Administrator/AppData?action=listAll
GET /catalog/vms/{VMNAME}/vmRestorePoints/{ID}/guestfs/C:/Windows/System32?action=listAll
then the server returns the following error:
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<Error StatusCode="500"
Message="Exception has been thrown by the target of an invocation."
xmlns="http://www.veeam.com/ent/v1.0"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FirstChanceExceptionMessage>Can`t change directory. [Users/Administrator].</FirstChanceExceptionMessage>
<StackTrace>Veeam.Backup.Interaction.RestAPI.CRestAPICommunicationException:
Exception has been thrown by the target of an invocation. --->
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. --->
System.Runtime.InteropServices.COMException: Can`t change directory. [Users/Administrator].

Server stack trace: 
at VeeamGuestIndexerLib.IOibDFBrowser.GetFolders(String rootPath)
at Veeam.Backup.CatalogFsLib.CGuestDataBrowser.GetVmSubFolders(String rootPath)
at Veeam.Backup.CatalogSearchLib.CSearchSession.GetVmSubFolders(Guid taskId, String rootPath)
at Veeam.Backup.CatalogDataService.CCatalogSearcherStub.Veeam.Backup.Interaction.CatalogClient.ICatalogSearcher.GetVmSubFolderNames(Guid sessionId, Guid taskId, String rootPath)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

Exception rethrown at [0]: 
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Veeam.Backup.Interaction.CatalogClient.ICatalogSearcher.GetVmSubFolderNames(Guid sessionId, Guid browsetaskId, String rootPath)
at Veeam.Backup.Interaction.CatalogClient.CCatalogSearcherProxy.<>c__DisplayClass21.<Veeam.Backup.Interaction.CatalogClient.ICatalogSearcher.GetVmSubFolderNames>b__20()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at Veeam.Common.Remoting.CRetryableMethod.DoInvoke(Delegate dlg, Object[] args)
at Veeam.Common.Remoting.CRetryableMethod.Invoke[Ret](ActionDelegate`1 dlg)
at Veeam.Backup.Interaction.CatalogClient.CCatalogSearcherProxy.Veeam.Backup.Interaction.CatalogClient.ICatalogSearcher.GetVmSubFolderNames(Guid sessionId, Guid taskId, String rootPath)
at Veeam.Backup.Enterprise.Core.CCatalogHelper.<>c__DisplayClass8.<GetDirectories>b__7(Guid sessionId)
at Veeam.Backup.Enterprise.Core.CCatalogHelper.DoWithCheckingSession[T](SearcherMethodDelegate`1 dlg)
at Veeam.Backup.Enterprise.Core.CCatalogHelper.GetDirectories(Guid browseTaskId, String path)
at Veeam.Backup.Enterprise.RestAPIService.CRestApiCatalogScope.GetDirectoryEntries(String vmRealName, Guid origOibId, String path, COibGuestFsBrowser resolver)
at Veeam.Backup.Enterprise.RestAPIService.CRestApiCatalogScope.GetCatalogVmRestorePointFSEntries(String vmRealName, String origOibIdStr, String path, String typeStr, String pageSizeStr, String pageNumStr)
at Veeam.Backup.Enterprise.RestAPIService.CEnterpriseRestServiceStub.GetCatalogVmRestorePointFSEntriesAll(String vmIdStr, String oibId, String path)
at SyncInvokeGetCatalogVmRestorePointFSEntriesAll(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
--- End of inner exception stack trace ---</StackTrace>
</Error>
Thank you,
Mardock.