Functions/CloudHub.ps1
# CloudHub API class CloudHub { static [string] $BasePath = "/cloudhub/api/v2" static [string] Alerts($alertId) { return [CloudHub]::BasePath + "/alerts/$alertId" } static [string] Applications($domain) { return [CloudHub]::BasePath + "/applications/$domain" } } function Get-CloudHubAlert { [CmdletBinding()] param ( [Parameter(ParameterSetName = "Id", Mandatory = $true)][guid] $AlertId, [Parameter(ParameterSetName = "Query", Mandatory = $false)][string] $ApplicationName, [Parameter(ParameterSetName = "Query", Mandatory = $false)][guid] $EnvironmentId = $Script:Context.Environment.id, [Parameter(ParameterSetName = "Query", Mandatory = $false)][int] $Offset, [Parameter(ParameterSetName = "Query", Mandatory = $false)][int] $Limit ) process { $params = @{ resource = $ApplicationName offset = $PSBoundParameters["Offset"] limit = $PSBoundParameters["Limit"] } $path = [CloudHub]::Alerts($AlertId) Invoke-AnypointApi -Method Get -Path $path -QueryParameters $params -EnvironmentId $EnvironmentId | Expand-Property -propertyName "data" } } function Get-CloudHubApplication { [CmdletBinding()] param ( [Parameter(ParameterSetName = "Id", Mandatory = $true)][string] $Domain, [Parameter(ParameterSetName = "Query", Mandatory = $false)][switch] $RetrieveStatistics, [Parameter(ParameterSetName = "Query", Mandatory = $false)][int] $Period, [Parameter(ParameterSetName = "Query", Mandatory = $false)][guid] $EnvironmentId = $Script:Context.Environment.id ) process { $params = @{ retrieveStatistics = $RetrieveStatistics period = $PSBoundParameters["Period"] } $path = [CloudHub]::Applications($Domain) Invoke-AnypointApi -Method Get -Path $path -QueryParameters $params -EnvironmentId $EnvironmentId } } function Start-CloudHubApplication { [CmdletBinding()] param ( [Parameter(Mandatory = $true)][string[]] $Domains, [Parameter(Mandatory = $false)][guid] $EnvironmentId = $Script:Context.Environment.id ) process { ControlCloudHubApplication -Action START -Domains $Domains -EnvironmentId $EnvironmentId } } function Stop-CloudHubApplication { [CmdletBinding()] param ( [Parameter(Mandatory = $true)][string[]] $Domains, [Parameter(Mandatory = $false)][guid] $EnvironmentId = $Script:Context.Environment.id ) process { ControlCloudHubApplication -Action STOP -Domains $Domains -EnvironmentId $EnvironmentId } } function Restart-CloudHubApplication { [CmdletBinding()] param ( [Parameter(Mandatory = $true)][string[]] $Domains, [Parameter(Mandatory = $false)][guid] $EnvironmentId = $Script:Context.Environment.id ) process { ControlCloudHubApplication -Action RESTART -Domains $Domains -EnvironmentId $EnvironmentId } } function Remove-CloudHubApplication { [CmdletBinding()] param ( [Parameter(Mandatory = $true)][string[]] $Domains, [Parameter(Mandatory = $false)][guid] $EnvironmentId = $Script:Context.Environment.id ) process { ControlCloudHubApplication -Action DELETE -Domains $Domains -EnvironmentId $EnvironmentId } } function Update-CloudHubApplicationRuntimeVersion { [CmdletBinding()] param ( [Parameter(Mandatory = $true)][string[]] $Domains, [Parameter(Mandatory = $false)][guid] $EnvironmentId = $Script:Context.Environment.id ) process { ControlCloudHubApplication -Action UPDATE -Domains $Domains -EnvironmentId $EnvironmentId } } function ControlCloudHubApplication { [CmdletBinding()] param ( [Parameter(Mandatory = $true)][ValidateSet("START", "STOP", "RESTART", "DELETE", "UPDATE")] $Action, [Parameter(Mandatory = $true)][string[]] $Domains, [Parameter(Mandatory = $false)][guid] $EnvironmentId = $Script:Context.Environment.id ) process { $body = @{ action = $Action domains = $Domains } $path = [CloudHub]::Applications($null) Invoke-AnypointApi -Method Put -Path $path -Body $body -EnvironmentId $EnvironmentId } } Export-ModuleMember -Function ` Get-CloudHubAlert, ` Get-CloudHubApplication, ` Start-CloudHubApplication, Stop-CloudHubApplication, Restart-CloudHubApplication, Remove-CloudHubApplication, Update-CloudHubApplicationRuntimeVersion |