SadiJr opened a new issue #5445:
URL: https://github.com/apache/cloudstack/issues/5445
<!--
Verify first that your issue/request is not already reported on GitHub.
Also test if the latest release and main branch are affected too.
Always add information AFTER of these HTML comments, but no need to delete
the comments.
-->
##### ISSUE TYPE
* Enhancement Request
##### COMPONENT NAME
<!--
Categorize the issue, e.g. API, VR, VPN, UI, etc.
-->
~~~
Veeam Plugin
~~~
##### CLOUDSTACK VERSION
<!--
New line separated list of affected versions, commit ID for issues on main
branch.
-->
~~~
4.15.0.0
~~~
##### OS / ENVIRONMENT
<!--
Information about the environment if relevant, N/A otherwise
-->
- Windows Server 2019 Datacenter (1809);
- Veeam B&R v11 (build 11.0.0.837), Enterprise license;
- OpenSSH 7.7p1;
- PowerShell 5.1.17763.2090;
##### SUMMARY
<!-- Explain the problem/feature briefly -->
We are validating the use of VMWare hypervisor with Veeam Backup. We
followed the step-by-step in the ACS documentation
(http://docs.cloudstack.apache.org/en/latest/adminguide/veeam_plugin.html) and
backups work fine (take backups, assign or remove VMs to Backup Offerings,
import or delete Backup Offerings).
However, listing of backups does not work. I read the code and added some
logs to understand if it has any output from PowerShell commands in list
backups, and this process is fine:
```
2021-09-05 21:14:16,875 DEBUG [o.a.c.b.v.VeeamClient]
(BackgroundTaskPollManager-6:ctx-82417a48) (logid:069b2990) Veeam response for
PowerShell commands [PowerShell Add-PSSnapin VeeamPSSnapin;$backup =
Get-VBRBackup -Name "test1-CSBKP-e56b6ef4-c930-4fd0-a952-97f0dde19dbf";if
($backup) { (Get-VBRRestorePoint -Backup:$backup -Name "test1" ^| Where-Object
{$_.IsConsistent -eq $true}) }] is: [
VM Name Creation Time Type
------- ------------- ----
test1 03/09/2021 23:01:24 Increment
test1 04/09/2021 23:01:23 Increment
Add-PSSnapin : No snap-ins have been registered for Windows PowerShell
version 5.
At line:1 char:1
+ Add-PSSnapin VeeamPSSnapin;$backup = Get-VBRBackup -Name test1 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (VeeamPSSnapin:String)
[Add-PSSnapin], PSArgumentException
+ FullyQualifiedErrorId :
AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand
].
```
The restore points aren't saved in the table used by ACS (backups).
Investigating further, I discovered a insert error in this table:
```
2021-09-05 21:14:16,880 DEBUG [o.a.c.b.VeeamBackupProvider]
(BackgroundTaskPollManager-6:ctx-82417a48) (logid:069b2990) Creating a new
entry in backups: [uuid: 4ee1b349-a886-48a0-94db-4822eef4db53, vm_id: 226,
external_id: null, type: null, date: null, backup_offering_id: 6, account_id:
9, domain_id: 3, zone_id: 1].
2021-09-05 21:14:16,881 DEBUG [c.c.u.d.T.Transaction]
(BackgroundTaskPollManager-6:ctx-82417a48) (logid:069b2990) Rolling back the
transaction: Time = 1 Name = BackgroundTaskPollManager-6; called by
-TransactionLegacy.rollback:888-TransactionLegacy.removeUpTo:831-TransactionLegacy.close:655-TransactionContextInterceptor.invoke:36-ReflectiveMethodInvocation.proceed:175-ExposeInvocationInterceptor.invoke:95-ReflectiveMethodInvocation.proceed:186-JdkDynamicAopProxy.invoke:212-$Proxy348.persist:-1-VeeamBackupProvider$1.doInTransactionWithoutResult:299-TransactionCallbackNoReturn.doInTransaction:25-Transaction$2.doInTransaction:50
2021-09-05 21:14:16,881 ERROR [o.a.c.b.BackupManagerImpl]
(BackgroundTaskPollManager-6:ctx-82417a48) (logid:069b2990) Failed to sync
backup usage metrics and out-of-band backups due to: [DB Exception on:
com.mysql.cj.jdbc.ClientPreparedStatement: INSERT INTO backups (backups.uuid,
backups.vm_id, backups.external_id, backups.type, backups.date, backups.size,
backups.protected_size, backups.status, backups.backup_offering_id,
backups.account_id, backups.domain_id, backups.zone_id) VALUES
(x'34656531623334392D613838362D343861302D393464622D343832326565663464623533',
226, null, null, null, 2546351857664, 4087873952862, 'BackedUp', 6, 9, 3, 1)].
com.cloud.utils.exception.CloudRuntimeException: DB Exception on:
com.mysql.cj.jdbc.ClientPreparedStatement: INSERT INTO backups (backups.uuid,
backups.vm_id, backups.external_id, backups.type, backups.date, backups.size,
backups.protected_size, backups.status, backups.backup_offering_id,
backups.account_id, backups.domain_id, backups.zone_id) VALUES
(x'34656531623334392D613838362D343861302D393464622D343832326565663464623533',
226, null, null, null, 2546351857664, 4087873952862, 'BackedUp', 6, 9, 3, 1)
```
Apparently this is because ACS expects to receive the output in a specific
format, which is different from what we are receiving:
```java
private Backup.RestorePoint getRestorePointFromBlock(String[] parts) {
String id = null;
String created = null;
String type = null;
for (String part : parts) {
if (part.matches("Id(\\s)+:(.)*")) {
String[] split = part.split(":");
id = split[1].trim();
} else if (part.matches("CreationTime(\\s)+:(.)*")) {
String [] split = part.split(":", 2);
created = split[1].trim();
} else if (part.matches("Type(\\s)+:(.)*")) {
String [] split = part.split(":");
type = split[1].trim();
}
}
return new Backup.RestorePoint(id, created, type);
}
```
While digging deeper I found out that Veeam, in 11 version, changed from
snapin to Module
(https://forums.veeam.com/powershell-f26/veeam-11-powershell-snapin-gone-t72598.html,
https://forums.veeam.com/powershell-f26/no-snap-ins-have-been-registered-for-windows-powershell-t31603.html,
https://www.veeam.com/veeam_backup_11_0_whats_new_wn.pdf). This caused the
first line of all SSH commands (`PowerShell Add-PSSnapin VeeamPSSnapin`) result
in error, but this error does not prevent the execution of the command.
Also in 11 Veeam version, it introduced an API to list `restore points`, so
I'll work to fix this behavior in 11 version, keeping old versions working.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]