function Submit-DeploymentToNewRelic { <# .SYNOPSIS Posts a Deployment to a New Relic application via the API .PARAMETER ApiKey New Relic Api Key .PARAMETER ApplicationId New Relic supplied Application Id .PARAMETER AppVersion Version of the application being updated. .PARAMETER DeployUser Name of person doing the deploy .PARAMETER EnvironmentKey Name of the Environment being deployed to #> [CmdletBinding()] Param( [Parameter(Mandatory = $true)] [string] $ApiKey, [Parameter(Mandatory = $true)] [string] $ApplicationId, [Parameter(Mandatory = $true)] [string] $AppVersion, [Parameter(Mandatory = $true)] [string] $DeployUser, [Parameter(Mandatory = $true)] [string] $EnvironmentKey ) $postParams = @{ "deployment[revision]" = $appVersion; "deployment[description]" = "Deployment of $($appVersion) to $($environmentKey)"; "deployment[changelog]" = "Update to $($appVersion)"; "deployment[user]" = $deployUser } $postUri = ("https://api.newrelic.com/v2/applications/{0}/deployments.xml" -f $applicationId) Write-Verbose ("$logLead : Posting Deployment Version {0} to URI {1}" -f $appVersion, $postUri) try { $postResponse = Invoke-WebRequest -UseBasicParsing -Uri $postUri -Method Post -Headers @{"X-Api-Key" = $apiKey } -Body $postParams if ($postResponse.StatusCode -notmatch "20\d") { Write-Host "$logLead : Posting to Newrelic returned a status code other than 20x for Uri PostUrl=$postUri StatusCode=$($postResponse.StatusCode) StatusDescription=$($postResponse.StatusDescription)" return $false } } catch [System.Net.WebException] { $errorMessage = $_.Exception.Message $contentResponse = (New-Object System.IO.StreamReader($_.Exception.Response.GetResponseStream())).ReadToEnd() Write-Warning "$logLead : Could not complete deployment to NewRelic. Error message: [$errorMessage]. Content of response was [$contentResponse]" return $false } catch { $errorMessage = $_.Exception.Message Write-Warning "$logLead : Could not complete deployment to NewRelic. Error message: [$errorMessage]" return $false } return $true }