diff --git a/lib/apis/Get-IcingaDirectorSelfServiceConfig.psm1 b/lib/apis/Get-IcingaDirectorSelfServiceConfig.psm1 new file mode 100644 index 0000000..7e48f9c --- /dev/null +++ b/lib/apis/Get-IcingaDirectorSelfServiceConfig.psm1 @@ -0,0 +1,33 @@ +function Get-IcingaDirectorSelfServiceConfig() +{ + param( + $DirectorUrl, + $ApiKey = $null + ); + + if ([string]::IsNullOrEmpty($DirectorUrl)) { + throw 'Please enter a valid Url to your Icinga Director'; + } + + if ([string]::IsNullOrEmpty($ApiKey)) { + throw 'Please enter either a template or your host key'; + } + + $ProgressPreference = "SilentlyContinue"; + + $EndpointUrl = [string]::Format('{0}/self-service/powershell-parameters?key={1}', $DirectorUrl, $ApiKey); + + $response = Invoke-WebRequest -Uri $EndpointUrl -UseBasicParsing -Headers @{ 'accept' = 'application/json'; 'X-Director-Accept' = 'application/json' } -Method 'POST'; + + if ($response.StatusCode -ne 200) { + throw $response.Content; + } + + $JsonContent = ConvertFrom-Json -InputObject $response.Content; + + if (Test-PSCustomObjectMember -PSObject $JsonContent -Name 'error') { + throw 'Icinga Director Self-Service has thrown an error: ' + $JsonContent.error; + } + + return $JsonContent; +} diff --git a/lib/apis/Register-IcingaDirectorSelfServiceHost.psm1 b/lib/apis/Register-IcingaDirectorSelfServiceHost.psm1 new file mode 100644 index 0000000..da2250d --- /dev/null +++ b/lib/apis/Register-IcingaDirectorSelfServiceHost.psm1 @@ -0,0 +1,38 @@ +function Register-IcingaDirectorSelfServiceHost() +{ + param( + $DirectorUrl, + $Hostname, + $ApiKey = $null + ); + + if ([string]::IsNullOrEmpty($DirectorUrl)) { + throw 'Please enter a valid Url to your Icinga Director'; + } + + if ([string]::IsNullOrEmpty($Hostname)) { + throw 'Please enter the hostname to use'; + } + + if ([string]::IsNullOrEmpty($ApiKey)) { + throw 'Please enter the API key of the template you wish to use'; + } + + $ProgressPreference = "SilentlyContinue"; + + $EndpointUrl = [string]::Format('{0}/self-service/register-host?name={1}&key={2}', $DirectorUrl, $Hostname, $ApiKey); + + $response = Invoke-WebRequest -Uri $EndpointUrl -UseBasicParsing -Headers @{ 'accept' = 'application/json'; 'X-Director-Accept' = 'application/json' } -Method 'POST'; + + if ($response.StatusCode -ne 200) { + throw $response.Content; + } + + $JsonContent = ConvertFrom-Json -InputObject $response.Content; + + if (Test-PSCustomObjectMember -PSObject $JsonContent -Name 'error') { + throw 'Icinga Director Self-Service has thrown an error: ' + $JsonContent.error; + } + + return $JsonContent; +}