Forum Discussion

Asheeholic's avatar
Asheeholic
Level 3
2 years ago

NetBackup Api policy config patch not working

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?

  • davidmoline's avatar
    davidmoline
    2 years ago

    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

8 Replies

  • 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

    • quebek's avatar
      quebek
      Moderator

      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....

      • davidmoline's avatar
        davidmoline
        Level 6

        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

    • Asheeholic's avatar
      Asheeholic
      Level 3

      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.

      • davidmoline's avatar
        davidmoline
        Level 6

        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