HP OneView Manual del usuario

Página 296

Advertising
background image

.EXAMPLE
$uploadResponse = uploadTo-appliance $filePath $sessionID $hostname $fileName
#>

$uploadUri = "/rest/backups/archive"
$fullUploadUri = $hostname + $uploadUri
$uploadTimeout = 43200000 # 12 hours
$bufferSize = 65536 # bytes

try
{
[net.httpsWebRequest]$uploadRequest = [net.webRequest]::create($fullUploadUri)
$uploadRequest.method = "POST"
$uploadRequest.Timeout = $uploadTimeout
$uploadRequest.ReadWriteTimeout = $uploadTimeout
$uploadRequest.SendChunked = 1
$uploadRequest.AllowWriteStreamBuffering = 0
$uploadRequest.accept = "application/json"
$boundary = "----------------------------bac8d687982e"
$uploadRequest.ContentType = "multipart/form-data; boundary=----------------------------bac8d687982e"
$uploadRequest.Headers.Add("auth", $authinfo)
$uploadRequest.Headers.Add("X-API-Version", $global:scriptApiVersion)
$fs = New-Object IO.FileStream ($filepath,[System.IO.FileMode]::Open)
$rs = $uploadRequest.getRequestStream()
$rs.WriteTimeout = $uploadTimeout
$disposition = "Content-Disposition: form-data; name=""file""; filename=""encryptedBackup"""
$conType = "Content-Type: application/octet-stream"

[byte[]]$BoundaryBytes = [System.Text.Encoding]::UTF8.GetBytes("--" + $boundary + "`r`n");
$rs.write($BoundaryBytes,0,$BoundaryBytes.Length);

[byte[]]$contentDisp = [System.Text.Encoding]::UTF8.GetBytes($disposition + "`r`n");
$rs.write($contentDisp,0,$contentDisp.Length);

[byte[]]$contentType = [System.Text.Encoding]::UTF8.GetBytes($conType + "`r`n`r`n");
$rs.write($contentType,0,$contentType.Length);

$fs.CopyTo($rs,$bufferSize)
$fs.close()

[byte[]]$endBoundaryBytes = [System.Text.Encoding]::UTF8.GetBytes("`n`r`n--" + $boundary + "--`r`n");
$rs.write($endBoundaryBytes,0,$endBoundaryBytes.Length);
$rs.close()
}
catch [System.Exception]
{
Write-Host "Not able to send backup"
Write-Host $error[0].Exception
}
try
{
[net.httpsWebResponse]$response = $uploadRequest.getResponse()
$responseStream = $response.getResponseStream()
$responseStream.ReadTimeout = $uploadTimeout
$streamReader = New-Object IO.StreamReader ($responseStream)
$rawUploadResponse = $streamReader.readtoend()
$response.close()

if ($rawUploadResponse -eq $null)
{
return
}

$uploadResponse = $rawUploadResponse | convertFrom-Json

if ($uploadResponse.status -eq "SUCCEEDED")
{
Write-Host "Upload complete."
return $uploadResponse
}
else
{
Write-Host $rawUploadResponse
Write-Host $uploadResponse
return
}
}
catch [Net.WebException]
{
Write-Host $error[0]
$errorResponse = $error[0].Exception.InnerException.Response.getResponseStream()
$sr = New-Object IO.StreamReader ($errorResponse)

296 Ejemplos de secuencias de comandos de copia de seguridad y restauración

Advertising