Pingdom - Create Uptime Check

Octopus.Script exported 2018-06-11 by sarbis belongs to ‘Pingdom’ category.

Creates Pingdom http check using Create New Check API method.

Parameters

When steps based on the template are included in a project’s deployment process, the parameters below can be set.

Username

Pingdom.Username =

Mandatory.

Password

Pingdom.Password =

Mandatory.

App key

Pingdom.AppKey =

Mandatory.

Name

Pingdom.CheckName =

Mandatory.

Target

Pingdom.CheckTarget =

Mandatory.

Interval

Pingdom.CheckIntervalMinutes =

Check interval in minutes. Integer (1, 5, 15, 30, 60)

Contact Ids

Pingdom.CheckContactIds =

Pingdom contact identifiers. For example contactids=154325,465231,765871.

Pingdom.CheckIntegrationIds =

null

Send notification when down

Pingdom.CheckSendNotificationWhenDown =

Send notification when down n times.

Notify every

Pingdom.CheckNotifyAgainEvery =

Notify again every n result. 0 means that no extra notifications will be sent.

Send to email

Pingdom.CheckSendToEmail = True

null

Notify when back up

Pingdom.CheckNotifyWhenBackUp = True

Notify when back up again.

Tags

Pingdom.CheckTags =

Pingdom check tags. Example: octopus,azure.

Http encryption enabled

Pingdom.CheckHttpEncryptionEnabled =

null

Http target port

Pingdom.CheckHttpTargetPort =

null

Auth

Pingdom.CheckAuth =

Username and password for target HTTP authentication. Example: user.

Should contain

Pingdom.CheckShouldContain =

Target site should contain this string.

Should not contain

Pingdom.CheckShouldNotContain =

Target site should NOT contain this string. If shouldcontain is also set, this parameter is not allowed.

Post data

Pingdom.CheckPostData =

Data that should be posted to the web page, for example submission data for a sign-up or login form. The data needs to be formatted in the same way as a web browser would send it to the web server

Error when failed

Pingdom.ThrowErrorWhenFailed =

When checked, throws Octopus exception if template script has failed.

Script body

Steps based on this template will execute the following PowerShell script.

# Ref https://www.pingdom.com/resources/api#MethodCreate+New+Check

Function Get-Parameter() {
    Param(
        [parameter(Mandatory=$true)]
        [string]$Name, 
        [switch]$Required, 
        $Default, 
        [switch]$FailOnValidate
    )

    $result = $null
    $errMessage = [string]::Empty

    If ($OctopusParameters -ne $null) {
        $result = $OctopusParameters[$Name]
        Write-Host ("Octopus parameter value for " + $Name + ": " + $result)
    }

    If ($result -eq $null) {
        $variable = Get-Variable $Name -EA SilentlyContinue
        if ($variable -ne $null) {
            $result = $variable.Value
        }
    }

    If ($result -eq $null -or [string]::IsNullOrEmpty($result)) {
        If ($Required) {
            $errMessage = "Missing value for $Name"
        } ElseIf (-Not $Default -eq $null) {
            Write-Host ("Default value: " + $Default)
            $result = $Default
        }
    }

    If (-Not [string]::IsNullOrEmpty($errMessage)) {
        If ($FailOnValidate) {
            Throw $errMessage
        } Else {
            Write-Warning $errMessage
        }
    }

    return $result
}

Function Test-Any() { 
   begin { 
      $any = $false
   } 
   process { 
      $any = $true
   } 
   end { 
      $any
   } 
} 

& {
    Write-Host "Start PingdomCreateUptimeCheck"

    Add-Type -AssemblyName System.Web

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    $throwErrorWhenFailed = [System.Convert]::ToBoolean([string](Get-Parameter -Name "Pingdom.ThrowErrorWhenFailed" -Default "False"))

    $pingdomUsername = [string] (Get-Parameter -Name "Pingdom.Username" -Required -FailOnValidate:$throwErrorWhenFailed)
    $pingdomPassword = [string] (Get-Parameter -Name "Pingdom.Password" -Required -FailOnValidate:$throwErrorWhenFailed)
    $pingdomAppKey = [string] (Get-Parameter -Name "Pingdom.AppKey" -Required -FailOnValidate:$throwErrorWhenFailed)

    $pingdomCheckName = [string] (Get-Parameter -Name "Pingdom.CheckName" -Required -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckTarget = [string] (Get-Parameter -Name "Pingdom.CheckTarget" -Required -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckType = "http"
    $pingdomCheckIntervalMinutes = [System.Nullable[int]] (Get-Parameter -Name "Pingdom.CheckIntervalMinutes" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckContactIds = [string] (Get-Parameter -Name "Pingdom.CheckContactIds" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckSendNotificationWhenDown = [System.Nullable[int]] (Get-Parameter -Name "Pingdom.CheckSendNotificationWhenDown" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckNotifyAgainEvery = [System.Nullable[int]] (Get-Parameter -Name "Pingdom.CheckNotifyAgainEvery" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckNotifyWhenBackUp = [string](Get-Parameter -Name "Pingdom.CheckNotifyWhenBackUp" -Default "True" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckTags = [string] (Get-Parameter -Name "Pingdom.CheckTags" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckHttpUrl = [string] (Get-Parameter -Name "Pingdom.CheckHttpUrl" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckHttpEncryptionEnabled = [string](Get-Parameter -Name "Pingdom.CheckHttpEncryptionEnabled" -Default "False" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckHttpTargetPort = [System.Nullable[int]] (Get-Parameter -Name "Pingdom.CheckHttpTargetPort" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckAuth = [string] (Get-Parameter -Name "Pingdom.CheckAuth" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckShouldContain = [string] (Get-Parameter -Name "Pingdom.CheckShouldContain" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckShouldNotContain = [string] (Get-Parameter -Name "Pingdom.CheckShouldNotContain" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckPostData = [string] (Get-Parameter -Name "Pingdom.CheckPostData" -FailOnValidate:$throwErrorWhenFailed)
    $pingdomCheckIntegrationIds = [string] (Get-Parameter -Name "Pingdom.CheckIntegrationIds" -FailOnValidate:$throwErrorWhenFailed)

    $apiVersion = "2.1"
    $url = "https://api.pingdom.com/api/{0}/checks" -f $apiVersion
    $securePassword = ConvertTo-SecureString $pingdomPassword -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential($pingdomUsername, $securePassword)
    $headers = @{ 
        "App-Key" = $pingdomAppKey
    }

    # Validate if check already registered

    Write-Host "Getting uptime check list to find check by name: $url"
    Try {
        $response = Invoke-RestMethod -Uri $url -Method Get -ContentType "application/json" -Credential $credential -Headers $headers
    } Catch {
        $errMessage = "Error occured when getting uptime check in Pingdom: " + $_.Exception.Message
        If($throwErrorWhenFailed -eq $true) {
            Write-Error $errMessage
        }
        Else {
            Write-Warning $errMessage
        }
    }

    $checkExists = $response.checks | Where-Object { $_.name -eq $pingdomCheckName } | Test-Any
    If ($checkExists -eq $true) {
        Write-Host "Check with name $pingdomCheckName already registered. New check will not be created!"
        Exit
    }

    # Create new check

    $apiParameters = @{}
    $apiParameters.Add("name", $pingdomCheckName)
    $apiParameters.Add("host", $pingdomCheckTarget)
    $apiParameters.Add("type", $pingdomCheckType)
    $apiParameters.Add("contactids", $pingdomCheckContactIds)
    $apiParameters.Add("integrationids", $pingdomCheckIntegrationIds)
    If ($pingdomCheckIntervalMinutes -ne $null) {
        $apiParameters.Add("resolution", $pingdomCheckIntervalMinutes)
    }
    If ($pingdomCheckSendNotificationWhenDown -ne $null) {
        $apiParameters.Add("sendnotificationwhendown", $pingdomCheckSendNotificationWhenDown)
    }
    If ($pingdomCheckNotifyAgainEvery -ne $null) {
        $apiParameters.Add("notifyagainevery", $pingdomCheckNotifyAgainEvery)
    }
    If ($pingdomCheckNotifyWhenBackUp -ne $null) {
        $apiParameters.Add("notifywhenbackup", $pingdomCheckNotifyWhenBackUp.ToLower())
    }
    If ($pingdomCheckTags -ne $null) {
        $apiParameters.Add("tags", $pingdomCheckTags)
    }
    If (-Not [string]::IsNullOrEmpty($pingdomCheckHttpUrl)) {
        $apiParameters.Add("url", $pingdomCheckHttpUrl)
    }
    If ($pingdomCheckHttpEncryptionEnabled -ne $null) {
        $apiParameters.Add("encryption", $pingdomCheckHttpEncryptionEnabled.ToLower())
    }
    If ($pingdomCheckHttpTargetPort -ne $null) {
        $apiParameters.Add("port", $pingdomCheckHttpTargetPort)
    }
    If (-Not [string]::IsNullOrEmpty($pingdomCheckAuth)) {
        $apiParameters.Add("auth", $pingdomCheckAuth)
    }
    If (-Not [string]::IsNullOrEmpty($pingdomCheckShouldContain)) {
        $apiParameters.Add("shouldcontain", $pingdomCheckShouldContain)
    }
    If (-Not [string]::IsNullOrEmpty($pingdomCheckShouldNotContain)) {
        $apiParameters.Add("shouldnotcontain", $pingdomCheckShouldNotContain)
    }
    If (-Not [string]::IsNullOrEmpty($pingdomCheckPostData )) {
        $apiParameters.Add("postdata", $pingdomCheckPostData)
    }

    If ($apiParameters.Count -gt 0) {
        $queryString = ""
        $apiParameters.Keys | ForEach-Object { 
            $queryString += ($_ + "=" + [System.Web.HttpUtility]::UrlEncode($apiParameters.Item($_)) + "&")
        }
        $requestBody = $queryString.Substring(0, $queryString.Length - 1)
        $url += "?$requestBody"
    }

    Write-Host "Creating new uptime check: $url"
    Write-Host "Request body: $requestBody"
    Try {
        $response = Invoke-RestMethod -Uri $url -Method Post -Body $requestBody -ContentType "application/json" -Credential $credential -Headers $headers
        Write-Host ("Successfully added uptime check in Pingdom: Name = " + $response.check.name + ", Id = " + $response.check.id)
    } Catch {
        $errMessage = "Error occured when adding uptime check in Pingdom: " + $_.Exception + "`n"
        $errMessage += "Response: " + $_
        If($throwErrorWhenFailed -eq $true) {
            Write-Error $errMessage
        }
        Else {
            Write-Warning $errMessage
        }
    }

    Write-Host "End PingdomCreateUptimeCheck"
}

Provided under the Apache License version 2.0.

Report an issue

To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.

{
  "Id": "70ea4820-7d02-4015-a691-8c77b5ab14d5",
  "Name": "Pingdom - Create Uptime Check",
  "Description": "Creates Pingdom http check using [Create New Check API method](https://www.pingdom.com/resources/api#MethodCreate+New+Check).",
  "Version": 43,
  "ExportedAt": "2018-06-11T13:49:31.508Z",
  "ActionType": "Octopus.Script",
  "Author": "sarbis",
  "Parameters": [
    {
      "Id": "16cdd666-9822-428c-9c1e-fb8943039a98",
      "Name": "Pingdom.Username",
      "Label": "Username",
      "HelpText": "Mandatory.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "d5b36e0f-3c55-4b63-9971-4c9147218514",
      "Name": "Pingdom.Password",
      "Label": "Password",
      "HelpText": "Mandatory.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "Sensitive"
      },
      "Links": {}
    },
    {
      "Id": "2f33c3ed-202a-4711-8897-a47329c18b8d",
      "Name": "Pingdom.AppKey",
      "Label": "App key",
      "HelpText": "Mandatory.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "754d2183-3b3b-4170-898b-f759af555f69",
      "Name": "Pingdom.CheckName",
      "Label": "Name",
      "HelpText": "Mandatory.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "c04286a9-d4e4-4c33-985e-67f52b3a9549",
      "Name": "Pingdom.CheckTarget",
      "Label": "Target",
      "HelpText": "Mandatory.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "96e4c38b-4d43-4083-ace3-510f945a4202",
      "Name": "Pingdom.CheckIntervalMinutes",
      "Label": "Interval",
      "HelpText": "Check interval in minutes. Integer (1, 5, 15, 30, 60)",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "7fc1f49f-446c-4836-8966-b1786d45f6b1",
      "Name": "Pingdom.CheckContactIds",
      "Label": "Contact Ids",
      "HelpText": "Pingdom contact identifiers. For example contactids=154325,465231,765871.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "f76811df-7a79-4fee-a491-46c6ce4bc813",
      "Name": "Pingdom.CheckIntegrationIds",
      "Label": "",
      "HelpText": null,
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "963c6ff8-b79e-408d-9729-036b58c42857",
      "Name": "Pingdom.CheckSendNotificationWhenDown",
      "Label": "Send notification when down",
      "HelpText": "Send notification when down n times.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "6ba72782-3eee-465c-9176-659de024f8dd",
      "Name": "Pingdom.CheckNotifyAgainEvery",
      "Label": "Notify every",
      "HelpText": "Notify again every n result. 0 means that no extra notifications will be sent.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "9ad13abe-13ab-466c-bd0e-a51637bece3b",
      "Name": "Pingdom.CheckSendToEmail",
      "Label": "Send to email",
      "HelpText": null,
      "DefaultValue": "True",
      "DisplaySettings": {
        "Octopus.ControlType": "Checkbox"
      },
      "Links": {}
    },
    {
      "Id": "8a958bb9-5a61-4956-b79d-7f990271b127",
      "Name": "Pingdom.CheckNotifyWhenBackUp",
      "Label": "Notify when back up",
      "HelpText": "Notify when back up again.",
      "DefaultValue": "True",
      "DisplaySettings": {
        "Octopus.ControlType": "Checkbox"
      },
      "Links": {}
    },
    {
      "Id": "93e9f063-b0b9-495b-8774-fd140b96a640",
      "Name": "Pingdom.CheckTags",
      "Label": "Tags",
      "HelpText": "Pingdom check tags. Example: octopus,azure.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "9d579e60-2228-4521-9178-2da35817d0b8",
      "Name": "Pingdom.CheckHttpEncryptionEnabled",
      "Label": "Http encryption enabled",
      "HelpText": null,
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "Checkbox"
      },
      "Links": {}
    },
    {
      "Id": "e289c1f6-cfbc-4774-ac97-395ac353b3b3",
      "Name": "Pingdom.CheckHttpTargetPort",
      "Label": "Http target port",
      "HelpText": null,
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "dcda6fd8-9e42-40c4-9213-f77e9e67b974",
      "Name": "Pingdom.CheckAuth",
      "Label": "Auth",
      "HelpText": "Username and password for target HTTP authentication. Example: user:password.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "bab9c934-dfb4-42c3-817f-22b58a8ef3d5",
      "Name": "Pingdom.CheckShouldContain",
      "Label": "Should contain",
      "HelpText": "Target site should contain this string.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "96e83352-1dce-4d16-bce7-0f8d4929ced7",
      "Name": "Pingdom.CheckShouldNotContain",
      "Label": "Should not contain",
      "HelpText": "Target site should NOT contain this string. If shouldcontain is also set, this parameter is not allowed.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "60570a61-678f-4ef2-90e5-c70d7b53ecb4",
      "Name": "Pingdom.CheckPostData",
      "Label": "Post data",
      "HelpText": "Data that should be posted to the web page, for example submission data for a sign-up or login form. The data needs to be formatted in the same way as a web browser would send it to the web server",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "MultiLineText"
      },
      "Links": {}
    },
    {
      "Id": "fdb84b63-f86b-4aff-b9e9-e9166d512f51",
      "Name": "Pingdom.ThrowErrorWhenFailed",
      "Label": "Error when failed",
      "HelpText": "When checked, throws Octopus exception if template script has failed.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "Checkbox"
      },
      "Links": {}
    }
  ],
  "Properties": {
    "Octopus.Action.Script.ScriptSource": "Inline",
    "Octopus.Action.RunOnServer": "false",
    "Octopus.Action.Package.DownloadOnTentacle": "False",
    "Octopus.Action.Package.FeedId": null,
    "Octopus.Action.Package.PackageId": null,
    "Octopus.Action.Script.ScriptFileName": null,
    "Octopus.Action.Script.Syntax": "PowerShell",
    "Octopus.Action.Script.ScriptBody": "# Ref https://www.pingdom.com/resources/api#MethodCreate+New+Check\n\nFunction Get-Parameter() {\n    Param(\n        [parameter(Mandatory=$true)]\n        [string]$Name, \n        [switch]$Required, \n        $Default, \n        [switch]$FailOnValidate\n    )\n\n    $result = $null\n    $errMessage = [string]::Empty\n\n    If ($OctopusParameters -ne $null) {\n        $result = $OctopusParameters[$Name]\n        Write-Host (\"Octopus parameter value for \" + $Name + \": \" + $result)\n    }\n\n    If ($result -eq $null) {\n        $variable = Get-Variable $Name -EA SilentlyContinue\n        if ($variable -ne $null) {\n            $result = $variable.Value\n        }\n    }\n\n    If ($result -eq $null -or [string]::IsNullOrEmpty($result)) {\n        If ($Required) {\n            $errMessage = \"Missing value for $Name\"\n        } ElseIf (-Not $Default -eq $null) {\n            Write-Host (\"Default value: \" + $Default)\n            $result = $Default\n        }\n    }\n\n    If (-Not [string]::IsNullOrEmpty($errMessage)) {\n        If ($FailOnValidate) {\n            Throw $errMessage\n        } Else {\n            Write-Warning $errMessage\n        }\n    }\n\n    return $result\n}\n\nFunction Test-Any() { \n   begin { \n      $any = $false\n   } \n   process { \n      $any = $true\n   } \n   end { \n      $any\n   } \n} \n\n& {\n    Write-Host \"Start PingdomCreateUptimeCheck\"\n\n    Add-Type -AssemblyName System.Web\n\n    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12\n\n    $throwErrorWhenFailed = [System.Convert]::ToBoolean([string](Get-Parameter -Name \"Pingdom.ThrowErrorWhenFailed\" -Default \"False\"))\n\n    $pingdomUsername = [string] (Get-Parameter -Name \"Pingdom.Username\" -Required -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomPassword = [string] (Get-Parameter -Name \"Pingdom.Password\" -Required -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomAppKey = [string] (Get-Parameter -Name \"Pingdom.AppKey\" -Required -FailOnValidate:$throwErrorWhenFailed)\n\n    $pingdomCheckName = [string] (Get-Parameter -Name \"Pingdom.CheckName\" -Required -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckTarget = [string] (Get-Parameter -Name \"Pingdom.CheckTarget\" -Required -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckType = \"http\"\n    $pingdomCheckIntervalMinutes = [System.Nullable[int]] (Get-Parameter -Name \"Pingdom.CheckIntervalMinutes\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckContactIds = [string] (Get-Parameter -Name \"Pingdom.CheckContactIds\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckSendNotificationWhenDown = [System.Nullable[int]] (Get-Parameter -Name \"Pingdom.CheckSendNotificationWhenDown\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckNotifyAgainEvery = [System.Nullable[int]] (Get-Parameter -Name \"Pingdom.CheckNotifyAgainEvery\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckNotifyWhenBackUp = [string](Get-Parameter -Name \"Pingdom.CheckNotifyWhenBackUp\" -Default \"True\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckTags = [string] (Get-Parameter -Name \"Pingdom.CheckTags\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckHttpUrl = [string] (Get-Parameter -Name \"Pingdom.CheckHttpUrl\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckHttpEncryptionEnabled = [string](Get-Parameter -Name \"Pingdom.CheckHttpEncryptionEnabled\" -Default \"False\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckHttpTargetPort = [System.Nullable[int]] (Get-Parameter -Name \"Pingdom.CheckHttpTargetPort\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckAuth = [string] (Get-Parameter -Name \"Pingdom.CheckAuth\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckShouldContain = [string] (Get-Parameter -Name \"Pingdom.CheckShouldContain\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckShouldNotContain = [string] (Get-Parameter -Name \"Pingdom.CheckShouldNotContain\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckPostData = [string] (Get-Parameter -Name \"Pingdom.CheckPostData\" -FailOnValidate:$throwErrorWhenFailed)\n    $pingdomCheckIntegrationIds = [string] (Get-Parameter -Name \"Pingdom.CheckIntegrationIds\" -FailOnValidate:$throwErrorWhenFailed)\n\n    $apiVersion = \"2.1\"\n    $url = \"https://api.pingdom.com/api/{0}/checks\" -f $apiVersion\n    $securePassword = ConvertTo-SecureString $pingdomPassword -AsPlainText -Force\n    $credential = New-Object System.Management.Automation.PSCredential($pingdomUsername, $securePassword)\n    $headers = @{ \n        \"App-Key\" = $pingdomAppKey\n    }\n\n    # Validate if check already registered\n\n    Write-Host \"Getting uptime check list to find check by name: $url\"\n    Try {\n        $response = Invoke-RestMethod -Uri $url -Method Get -ContentType \"application/json\" -Credential $credential -Headers $headers\n    } Catch {\n        $errMessage = \"Error occured when getting uptime check in Pingdom: \" + $_.Exception.Message\n        If($throwErrorWhenFailed -eq $true) {\n            Write-Error $errMessage\n        }\n        Else {\n            Write-Warning $errMessage\n        }\n    }\n\n    $checkExists = $response.checks | Where-Object { $_.name -eq $pingdomCheckName } | Test-Any\n    If ($checkExists -eq $true) {\n        Write-Host \"Check with name $pingdomCheckName already registered. New check will not be created!\"\n        Exit\n    }\n\n    # Create new check\n\n    $apiParameters = @{}\n    $apiParameters.Add(\"name\", $pingdomCheckName)\n    $apiParameters.Add(\"host\", $pingdomCheckTarget)\n    $apiParameters.Add(\"type\", $pingdomCheckType)\n    $apiParameters.Add(\"contactids\", $pingdomCheckContactIds)\n    $apiParameters.Add(\"integrationids\", $pingdomCheckIntegrationIds)\n    If ($pingdomCheckIntervalMinutes -ne $null) {\n        $apiParameters.Add(\"resolution\", $pingdomCheckIntervalMinutes)\n    }\n    If ($pingdomCheckSendNotificationWhenDown -ne $null) {\n        $apiParameters.Add(\"sendnotificationwhendown\", $pingdomCheckSendNotificationWhenDown)\n    }\n    If ($pingdomCheckNotifyAgainEvery -ne $null) {\n        $apiParameters.Add(\"notifyagainevery\", $pingdomCheckNotifyAgainEvery)\n    }\n    If ($pingdomCheckNotifyWhenBackUp -ne $null) {\n        $apiParameters.Add(\"notifywhenbackup\", $pingdomCheckNotifyWhenBackUp.ToLower())\n    }\n    If ($pingdomCheckTags -ne $null) {\n        $apiParameters.Add(\"tags\", $pingdomCheckTags)\n    }\n    If (-Not [string]::IsNullOrEmpty($pingdomCheckHttpUrl)) {\n        $apiParameters.Add(\"url\", $pingdomCheckHttpUrl)\n    }\n    If ($pingdomCheckHttpEncryptionEnabled -ne $null) {\n        $apiParameters.Add(\"encryption\", $pingdomCheckHttpEncryptionEnabled.ToLower())\n    }\n    If ($pingdomCheckHttpTargetPort -ne $null) {\n        $apiParameters.Add(\"port\", $pingdomCheckHttpTargetPort)\n    }\n    If (-Not [string]::IsNullOrEmpty($pingdomCheckAuth)) {\n        $apiParameters.Add(\"auth\", $pingdomCheckAuth)\n    }\n    If (-Not [string]::IsNullOrEmpty($pingdomCheckShouldContain)) {\n        $apiParameters.Add(\"shouldcontain\", $pingdomCheckShouldContain)\n    }\n    If (-Not [string]::IsNullOrEmpty($pingdomCheckShouldNotContain)) {\n        $apiParameters.Add(\"shouldnotcontain\", $pingdomCheckShouldNotContain)\n    }\n    If (-Not [string]::IsNullOrEmpty($pingdomCheckPostData )) {\n        $apiParameters.Add(\"postdata\", $pingdomCheckPostData)\n    }\n\n    If ($apiParameters.Count -gt 0) {\n        $queryString = \"\"\n        $apiParameters.Keys | ForEach-Object { \n            $queryString += ($_ + \"=\" + [System.Web.HttpUtility]::UrlEncode($apiParameters.Item($_)) + \"&\")\n        }\n        $requestBody = $queryString.Substring(0, $queryString.Length - 1)\n        $url += \"?$requestBody\"\n    }\n\n    Write-Host \"Creating new uptime check: $url\"\n    Write-Host \"Request body: $requestBody\"\n    Try {\n        $response = Invoke-RestMethod -Uri $url -Method Post -Body $requestBody -ContentType \"application/json\" -Credential $credential -Headers $headers\n        Write-Host (\"Successfully added uptime check in Pingdom: Name = \" + $response.check.name + \", Id = \" + $response.check.id)\n    } Catch {\n        $errMessage = \"Error occured when adding uptime check in Pingdom: \" + $_.Exception + \"`n\"\n        $errMessage += \"Response: \" + $_\n        If($throwErrorWhenFailed -eq $true) {\n            Write-Error $errMessage\n        }\n        Else {\n            Write-Warning $errMessage\n        }\n    }\n\n    Write-Host \"End PingdomCreateUptimeCheck\"\n}"
  },
  "Category": "Pingdom",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/pingdom-create-uptime-check.json",
  "Website": "/step-templates/70ea4820-7d02-4015-a691-8c77b5ab14d5",
  "Logo": "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",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}

History

Page updated on Monday, June 11, 2018