08-04-2022 03:01 AM
I used netbackup API in swagger for test, and GET, PUT, DELETE is working, but the PATCH is not working.
The Policy Name is "OEL7-1_ORACLE"
The cURL is
curl -X 'PATCH' \
'xx:1556/netbackup/config/policies/OEL7-1_ORACLE' \
-H 'accept: */*' \
-H 'X-NetBackup-Audit-Reason: xx' \
-H 'Content-Type: application/vnd.netbackup+json;version=7.0' \
-d '{
"data": {
"type": "policy",
"id": "OEL7-1_ORACLE",
"attributes": {
"policy": {
"policyName": "OEL7-1_ORACLE",
"policyAttribute": {
"active": true
}
}
}
}
}'
I want to that policy make active 'true', but the Error is 400 and
{ "errorCode": 9926, "errorMessage": "Input JSON is invalid", "attributeErrors": {}, "fileUploadErrors": [], "errorDetails": []}
What did i miss?
Solved! Go to Solution.
08-06-2022 07:17 PM
Hi @Asheeholic
I figured it out - you use the Chrome inspect (network tab) option to look at the payload sent. What the WebUI sends is different to the documentation (doesn't help).
All you need to do is change the data payload to something like this (your header lines should be fine as is).
{
"data": {
"type": "patchPolicyRequest",
"id": "OEL7-1_ORACLE",
"attributes": {
"policy": {
"policyAttributes": {
"active": false
}
}
}
}
}
So the "type" is documented incorrectly - it should be patchPolicyRequest (not policyPatchRequest), and within the attributes section you need an additional "policy" section before the policyAttributes.
Cheers
David
08-04-2022 04:59 PM - edited 08-04-2022 05:00 PM
Hi @Asheeholic
You should mention the NetBackup version as the API calls vary somewhat between versions. I'm guessing that you are using version 10.0 though due to the content type version.
Anyway, Review the documentation - your input doesn't look correct. You've added the policy name again in the data section which is not correct (the policy is definde in the base URL). The type of operation in the data section is not correct - it should be policyPatchRequest, not policy. The policyAttribute should be policyAttributes.
Try something like the below and see if you can make it work. I've have also had trouble with getting the syntax correct at times and the documentation is not good in helping in finding syntax errors (IMHO).
curl -X 'PATCH' \
'xx:1556/netbackup/config/policies/OEL7-1_ORACLE' \
-H 'accept: */*' \
-H 'X-NetBackup-Audit-Reason: xx' \
-H 'Content-Type: application/vnd.netbackup+json;version=7.0' \
-d '{
"data": {
"type": "policyPatchRequest",
"id": "OEL7-1_ORACLE",
"attributes": {
"policyAttributes": {
"active": true
}
}
}
}'
Cheers
David
08-05-2022 01:59 AM
hey
Maybe I am old but I don't get why would you like to use APIs to activate policy fi there is nice and easy way of doing the same via command line:
bpplinfo policy name -modify -active
just thinking out loud....
08-05-2022 04:04 AM
Yes, This NetBackup version is 10, and I fixed that cURL, but still not working.
I agreed with that the documentation is not good for finding error.
Anyway, the Syntex is
curl -X 'PATCH' \ 'xx/netbackup/config/policies/OEL7-1_ORACLE' \ -H 'accept: */*' \ -H 'Content-Type: application/vnd.netbackup+json;version=7.0' \ -d '{ "data": { "type": "policyPatchRequest", "id": "OEL7-1_ORACLE", "attributes": { "policyAttributes": { "active": false } } }}'
and the result is still saying that
{ "errorCode": 9926, "errorMessage": "Input JSON is invalid", "attributeErrors": {}, "fileUploadErrors": [], "errorDetails": []}
I think the documentation of API is something wrong... I'm trying to find the other way. please tell me if you find out the way.
Thank you.
ps. I found out that this policy patch config api came out in 9.1 version.
08-05-2022 05:51 PM
Hi @quebek
Yes I think you must be an old timer like me.....
While what you say is true, what if you don't have a command line to access or access as superuser. Not everyone has the luxury of being given elevated access to the backup hosts.
David
08-05-2022 11:36 PM
Hi @Asheeholic
If you can figure out how to get more verbose logging for the WebUI backen server, then you can replicate the API call by activating/deacivating a policy in the GUI. I can see it uses the same API call in the webserver logs, but no details that I can find about the payload sent.
I'm asking internally if there is a way to increase the webserver logging without breaking things. If you know then please share.
Cheers
David
08-06-2022 07:17 PM
Hi @Asheeholic
I figured it out - you use the Chrome inspect (network tab) option to look at the payload sent. What the WebUI sends is different to the documentation (doesn't help).
All you need to do is change the data payload to something like this (your header lines should be fine as is).
{
"data": {
"type": "patchPolicyRequest",
"id": "OEL7-1_ORACLE",
"attributes": {
"policy": {
"policyAttributes": {
"active": false
}
}
}
}
}
So the "type" is documented incorrectly - it should be patchPolicyRequest (not policyPatchRequest), and within the attributes section you need an additional "policy" section before the policyAttributes.
Cheers
David
08-06-2022 07:27 PM
I was almost in despair. I was annoyed about the clients swearing at me. But it seems you saved me. Thank you.
08-06-2022 07:30 PM
Hi @Asheeholic
I'm glad I could help - I now need to figure out who I need to tell to get the documentation updated.
Cheers
David