HPE OneView
1825766 Members
2603 Online
109687 Solutions
New Discussion

Uploading SPP

 
SOLVED
Go to solution
BradV
Esteemed Contributor

Uploading SPP

Trying to upload the latest SPP to OneView using the REST API: 

ISO=spp-2019.03.0-SPP2019030.2019_0206.85.iso
curl --insecure \
     --max-time 1200 \
     --header "accept: application/json" \
     --header "X-API-Version: ${currentVersion}" \
     --header "auth: ${sessionID}" \
     --header "uploadfilename:${ISO}" \
     --form "file=\"@/var/tmp/${ISO}\"" \
     --request POST ${OneView}/rest/firmware-bundles | jq -r '.'

It is failing and I'm getting back: 

{
  "data": {},
  "nestedErrors": [],
  "erroSource": null,
  "recommendedActions": [],
  "details": null,
  "message": "Parsed multipart servlet request file is empty; nested exception is com.hp.ci.mgmt.fwdrivers.exceptions.FileUploadException: Emtpy file was found in the request.",
  "errorCode": null
}

Anyone have an idea what I am doing wrong?  I don't have any scopes defined.  So, did not include the scopeuri header.

16 REPLIES 16
ChrisLynch
HPE Pro

Re: Uploading SPP

The form attribute name is called filename, not file.  

I work at HPE
[Any personal opinions expressed are mine, and not official statements on behalf of Hewlett Packard Enterprise]
Accept or Kudo
BradV
Esteemed Contributor

Re: Uploading SPP

Hi Chris,

Then the REST API reference needs updated.  At least my version shows: '-F file="@/var/tmp/.."  I did change to filename instead of file, but got back the same error.  I tried including the initialScopeUris header as just blank thinking maybe that was required, but still same error.  I do see the words, "a form with the Content-Type multipart/form-data and submit action as https://{app1}/rest/firmware-bundles."  So, I added: 

--header "content-type: multipart/form-data" \

to the call, but still did not work.  None of the examples show that option however. 

ChrisLynch
HPE Pro

Re: Uploading SPP

This is straight from the REST API Documentation for POST /rest/firmware-bundles:

Upload SPP cURL examples from OV REST API Documentation.png

And sorry, the form attribute you have is correct.  I was looking at another part of my code for the PowerShell library, which does the exact same thing you are trying to do, and has not changed in a long time.

I work at HPE
[Any personal opinions expressed are mine, and not official statements on behalf of Hewlett Packard Enterprise]
Accept or Kudo
BradV
Esteemed Contributor

Re: Uploading SPP

Hi Chris,

Yes, that is exactly what I saw.  In the examples, they don't show an api version header, nor do they show anything about a content-type header.  In the last bullet above that section, it talks about a content-type multipart/form-data.  So, should that header also be included?  I used the long form of switches.  -m is the same as --max-time.  -k is the same as --insecure.  -X is the same as --request.  -H is the same as --header.  -F is the same as --form.  I also don't have any scopes defined.  Is the header intialscopeuris mandatory, or optional?  Are you sure the form parameter for the file name is "file?"  Just want to make sure it's not something like that.

BradV
Esteemed Contributor

Re: Uploading SPP

Also, I don't see in the api reference firmware bundles section anything about retrieving a list of currently uploaded bundles nor deleting a currently uploaded bundle.  Are those functions available, but just not documented?

BradV
Esteemed Contributor
Solution

Re: Uploading SPP

Finally got back to this and got it working.  I had to many quotes in the form line.  This code is working: 

# Upload SPP:
DIR=/var/tmp
ISO=spp-2019.03.0-SPP2019030.2019_0206.85.iso
curl --insecure \
     --max-time 1200 \
     --header "accept: application/json" \
     --header "auth: ${sessionID}" \
     --header "X-API-Version: ${currentVersion}" \
     --header "content-type: multipart/form-data" \
     --header "uploadfilename:${ISO}" \
     --form file="@${DIR}/${ISO}" \
     --request POST ${OneView}/rest/firmware-bundles | jq -r '.'

So, now just need to see if there is an API for getting the current list of uploaded bundles and how to delete an uploaded bundle.  I don't see those in the API reference.

ChrisLynch
HPE Pro

Re: Uploading SPP

 


@BradV wrote:

Finally got back to this and got it working.  I had to many quotes in the form line.  This code is working: 

So, now just need to see if there is an API for getting the current list of uploaded bundles and how to delete an uploaded bundle.  I don't see those in the API reference.



GET /rest/firmware-drivers and DELETE /rest/firmware-drivers/{GUID} are the two API's that are documented to perform the operations you want to do.

 

 

I work at HPE
[Any personal opinions expressed are mine, and not official statements on behalf of Hewlett Packard Enterprise]
Accept or Kudo
BradV
Esteemed Contributor

Re: Uploading SPP

Hi Chris,

Thanks!  I see it was the next group in the API reference.    I got the status with: 

 

# To check existing firmware bundles, run:
curl --insecure \
     --header "auth: ${sessionID}" \
     --header "X-API-Version: ${currentVersion}" \
     --output firmware \
     --request GET ${OneView}/rest/firmware-drivers
#
# Then to see a summary of the information, run:
cat firmware | jq '.members[] | {baselineShortName,bundleType,hpsumVersion,isoFileName,releaseDate,resourceState,status,type,uri,uuid,version}'

 

To delete, I should use the value returned with 'uri,' correct?  For example, 

 

URI=/rest/firmware-drivers/SPP_Gen9_10_11
curl --insecure \
     --header "auth: ${sessionID}" \
     --header "X-API-Version: ${currentVersion}" \
     --header "content-type: application/json" \
     --include \
     --request DELETE ${OneView}${URI}

 

Does that look correct?

ChrisLynch
HPE Pro

Re: Uploading SPP

Correct.

I work at HPE
[Any personal opinions expressed are mine, and not official statements on behalf of Hewlett Packard Enterprise]
Accept or Kudo
BradV
Esteemed Contributor

Re: Uploading SPP

Thanks.  Yes, that worked. 

shashikalyan
Frequent Visitor

Re: Uploading SPP

@BradV  or @ChrisLynch I did as per curl command but it is uploading till around 99% and failing here is the below result of upload statstics. Kindly help me on this issue

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 6721M 0 0 0 13.7M 0 77.4M 0:01:26 --:--:-- 0:01:26 76.9M 1 6721M 0 0 1 91.7M 0 77.8M 0:01:26 0:00:01 0:01:25 77.8M 2 6721M 0 0 2 171M 0 78.6M 0:01:25 0:00:02 0:01:23 78.6M 3 6721M 0 0 3 249M 0 78.5M 0:01:25 0:00:03 0:01:22 78.4M 4 6721M 0 0 4 328M 0 78.5M 0:01:25 0:00:04 0:01:21 78.5M 5 6721M 0 0 5 395M 0 76.4M 0:01:27 0:00:05 0:01:22 76.4M 7 6721M 0 0 7 476M 0 77.1M 0:01:27 0:00:06 0:01:21 76.9M 8 6721M 0 0 8 554M 0 77.2M 0:01:26 0:00:07 0:01:19 76.7M 9 6721M 0 0 9 634M 0 77.5M 0:01:26 0:00:08 0:01:18 76.9M 10 6721M 0 0 10 710M 0 77.4M 0:01:26 0:00:09 0:01:17 76.5M 11 6721M 0 0 11 791M 0 77.8M 0:01:26 0:00:10 0:01:16 79.2M 13 6721M 0 0 13 876M 0 78.4M 0:01:25 0:00:11 0:01:14 80.0M 14 6721M 0 0 14 959M 0 78.8M 0:01:25 0:00:12 0:01:13 81.0M 15 6721M 0 0 15 1043M 0 79.1M 0:01:24 0:00:13 0:01:11 81.8M 16 6721M 0 0 16 1127M 0 79.4M 0:01:24 0:00:14 0:01:10 83.2M 18 6721M 0 0 18 1211M 0 79.8M 0:01:24 0:00:15 0:01:09 83.8M 19 6721M 0 0 19 1295M 0 80.1M 0:01:23 0:00:16 0:01:07 83.8M 20 6721M 0 0 20 1364M 0 79.4M 0:01:24 0:00:17 0:01:07 80.8M 20 6721M 0 0 20 1404M 0 77.2M 0:01:27 0:00:18 0:01:09 72.1M 21 6721M 0 0 21 1478M 0 77.0M 0:01:27 0:00:19 0:01:08 70.1M 22 6721M 0 0 22 1533M 0 76.0M 0:01:28 0:00:20 0:01:08 64.5M 23 6721M 0 0 23 1595M 0 75.3M 0:01:29 0:00:21 0:01:08 59.8M 24 6721M 0 0 24 1632M 0 73.6M 0:01:31 0:00:22 0:01:09 53.7M 25 6721M 0 0 25 1697M 0 73.2M 0:01:31 0:00:23 0:01:08 58.5M 26 6721M 0 0 26 1770M 0 73.2M 0:01:31 0:00:24 0:01:07 58.3M 27 6721M 0 0 27 1848M 0 73.4M 0:01:31 0:00:25 0:01:06 62.9M 28 6721M 0 0 28 1917M 0 73.2M 0:01:31 0:00:26 0:01:05 64.4M 29 6721M 0 0 29 1995M 0 73.4M 0:01:31 0:00:27 0:01:04 72.6M 30 6721M 0 0 30 2074M 0 73.6M 0:01:31 0:00:28 0:01:03 75.5M 32 6721M 0 0 32 2154M 0 73.8M 0:01:31 0:00:29 0:01:02 76.8M 33 6721M 0 0 33 2233M 0 74.0M 0:01:30 0:00:30 0:01:00 76.9M 34 6721M 0 0 34 2312M 0 74.1M 0:01:30 0:00:31 0:00:59 79.1M 35 6721M 0 0 35 2392M 0 74.3M 0:01:30 0:00:32 0:00:58 79.2M 36 6721M 0 0 36 2471M 0 74.4M 0:01:30 0:00:33 0:00:57 79.3M 37 6721M 0 0 37 2543M 0 74.4M 0:01:30 0:00:34 0:00:56 77.7M 39 6721M 0 0 39 2622M 0 74.5M 0:01:30 0:00:35 0:00:55 77.7M 40 6721M 0 0 40 2700M 0 74.6M 0:01:30 0:00:36 0:00:54 77.5M 41 6721M 0 0 41 2771M 0 74.5M 0:01:30 0:00:37 0:00:53 75.8M 42 6721M 0 0 42 2851M 0 74.6M 0:01:29 0:00:38 0:00:51 76.0M 43 6721M 0 0 43 2930M 0 74.8M 0:01:29 0:00:39 0:00:50 77.4M 44 6721M 0 0 44 3008M 0 74.8M 0:01:29 0:00:40 0:00:49 77.2M 45 6721M 0 0 45 3091M 0 75.0M 0:01:29 0:00:41 0:00:48 78.2M 47 6721M 0 0 47 3176M 0 75.3M 0:01:29 0:00:42 0:00:47 80.9M 48 6721M 0 0 48 3259M 0 75.4M 0:01:29 0:00:43 0:00:46 81.6M 49 6721M 0 0 49 3328M 0 75.3M 0:01:29 0:00:44 0:00:45 79.6M 50 6721M 0 0 50 3408M 0 75.4M 0:01:29 0:00:45 0:00:44 80.0M 51 6721M 0 0 51 3487M 0 75.5M 0:01:28 0:00:46 0:00:42 79.1M 52 6721M 0 0 52 3557M 0 75.4M 0:01:29 0:00:47 0:00:42 76.2M 54 6721M 0 0 54 3631M 0 75.3M 0:01:29 0:00:48 0:00:41 74.3M 55 6721M 0 0 55 3711M 0 75.4M 0:01:29 0:00:49 0:00:40 76.4M 56 6721M 0 0 56 3789M 0 75.5M 0:01:29 0:00:50 0:00:39 76.1M 57 6721M 0 0 57 3865M 0 75.5M 0:01:28 0:00:51 0:00:37 75.6M 58 6721M 0 0 58 3946M 0 75.6M 0:01:28 0:00:52 0:00:36 77.7M 59 6721M 0 0 59 4026M 0 75.7M 0:01:28 0:00:53 0:00:35 78.9M 61 6721M 0 0 61 4102M 0 75.7M 0:01:28 0:00:54 0:00:34 78.2M 62 6721M 0 0 62 4179M 0 75.7M 0:01:28 0:00:55 0:00:33 77.9M 63 6721M 0 0 63 4262M 0 75.8M 0:01:28 0:00:56 0:00:32 79.3M 64 6721M 0 0 64 4314M 0 75.4M 0:01:29 0:00:57 0:00:32 73.5M 65 6721M 0 0 65 4393M 0 75.5M 0:01:28 0:00:58 0:00:30 73.4M 66 6721M 0 0 66 4472M 0 75.5M 0:01:28 0:00:59 0:00:29 73.9M 67 6721M 0 0 67 4552M 0 75.6M 0:01:28 0:01:00 0:00:28 74.5M 68 6721M 0 0 68 4631M 0 75.7M 0:01:28 0:01:01 0:00:27 73.8M 70 6721M 0 0 70 4710M 0 75.7M 0:01:28 0:01:02 0:00:26 79.3M 71 6721M 0 0 71 4790M 0 75.8M 0:01:28 0:01:03 0:00:25 79.2M 72 6721M 0 0 72 4867M 0 75.8M 0:01:28 0:01:04 0:00:24 79.1M 73 6721M 0 0 73 4948M 0 75.9M 0:01:28 0:01:05 0:00:23 79.2M 74 6721M 0 0 74 5028M 0 75.9M 0:01:28 0:01:06 0:00:22 79.2M 75 6721M 0 0 75 5106M 0 76.0M 0:01:28 0:01:07 0:00:21 79.2M 77 6721M 0 0 77 5186M 0 76.0M 0:01:28 0:01:08 0:00:20 79.2M 78 6721M 0 0 78 5264M 0 76.1M 0:01:28 0:01:09 0:00:19 79.3M 79 6721M 0 0 79 5342M 0 76.1M 0:01:28 0:01:10 0:00:18 78.8M 80 6721M 0 0 80 5420M 0 76.1M 0:01:28 0:01:11 0:00:17 78.4M 81 6721M 0 0 81 5504M 0 76.2M 0:01:28 0:01:12 0:00:16 79.5M 83 6721M 0 0 83 5587M 0 76.3M 0:01:28 0:01:13 0:00:15 80.1M 84 6721M 0 0 84 5665M 0 76.3M 0:01:28 0:01:14 0:00:14 80.2M 85 6721M 0 0 85 5744M 0 76.4M 0:01:27 0:01:15 0:00:12 80.4M 86 6721M 0 0 86 5824M 0 76.4M 0:01:27 0:01:16 0:00:11 80.7M 87 6721M 0 0 87 5901M 0 76.4M 0:01:27 0:01:17 0:00:10 79.3M 89 6721M 0 0 89 5985M 0 76.5M 0:01:27 0:01:18 0:00:09 79.5M 90 6721M 0 0 90 6066M 0 76.6M 0:01:27 0:01:19 0:00:08 80.1M 91 6721M 0 0 91 6149M 0 76.7M 0:01:27 0:01:20 0:00:07 81.0M 92 6721M 0 0 92 6233M 0 76.7M 0:01:27 0:01:21 0:00:06 81.9M 93 6721M 0 0 93 6304M 0 76.7M 0:01:27 0:01:22 0:00:05 80.5M 94 6721M 0 0 94 6350M 0 76.3M 0:01:28 0:01:23 0:00:05 73.0M 95 6721M 0 0 95 6389M 0 75.8M 0:01:28 0:01:24 0:00:04 64.5M 96 6721M 0 0 96 6464M 0 75.8M 0:01:28 0:01:25 0:00:03 62.8M 97 6721M 0 0 97 6532M 0 75.8M 0:01:28 0:01:26 0:00:02 59.7M 97 6721M 0 0 97 6586M 0 75.5M 0:01:28 0:01:27 0:00:01 56.4M 99 6721M 0 0 99 6666M 0 75.5M 0:01:28 0:01:28 --:--:-- 63.1M 100 6721M 0 298 100 6721M 3 75.6M 0:01:28 0:01:28 --:--:-- 70.4M
Actions

Download

6617M 0 0 0 6617M 0 75.3M --:--:-- 0:01:27 --:--:-- 78.4M 100 6698M 0 0 0 6698M 0 75.4M --:--:-- 0:01:28 --:--:-- 79.2M* read function returned funny value
* stopped the pause stream!
100 6724M 0 0 0 6724M 0 75.4M --:--:-- 0:01:29 --:--:-- 79.6M
* Closing connection 0
} [5 bytes data]
* TLSv1.2 (OUT), TLS alert, Client hello (1):
} [2 bytes data]
curl: (26) read function returned funny value
Actions

Download

 

BradV
Esteemed Contributor

Re: Uploading SPP

Can you show the command you used?

shashikalyan
Frequent Visitor

Re: Uploading SPP

@BradV     

  $DIR = "/seconddisk"

        $ISO = "2019_12.iso"

         curl --noproxy "*" --insecure --header "accept: application/json" --header "auth: ${ApplianceConnection.SessionID}"  --header "X-API-Version:1200" --header "content-type: multipart/form-data" --header "uploadfilename:${ISO}" --form file="@${DIR}/${ISO}" --request POST https://xxxx/rest/firmware-bundles | jq -r '.'

BradV
Esteemed Contributor

Re: Uploading SPP

Sorry, haven't seen this until now.  I do not see anything wrong with that command other than the noproxy.  Try it without that?

dshurgahj
New Member

Re: Uploading SPP

We have tried uploading the.SSP files in the electronic file manager, but the system is showing that files were already added and we cannot add the same.

We have even changed the file names before upload but still the error persists. Please note that we need to add the latest.SPP files in the electronic file manager as per SAP note 2902401

Please advise. Attached screenshot for your easy reference want home theatre systems on a budget? Find them here.

Note: We have tried this in SAP 10 version FP 2102 & 2105 but still the same issue.

ChrisLynch
HPE Pro

Re: Uploading SPP

The SPP name is what OneView keys off of, not just the ISO file name.  You need to provide a different baseline name, one that you define in SUM or the Custom SPP Portal.

I work at HPE
[Any personal opinions expressed are mine, and not official statements on behalf of Hewlett Packard Enterprise]
Accept or Kudo