From 1bd6ffa3c94dd2dded4d473fd94907cdf8cc82e4 Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Thu, 5 Nov 2015 10:14:30 -0500 Subject: [PATCH] Add PowerShell version of request_tower_configuration. From @nitzmahone. --- MANIFEST.in | 1 + setup.py | 2 +- tools/scripts/request_tower_configuration.ps1 | 40 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tools/scripts/request_tower_configuration.ps1 diff --git a/MANIFEST.in b/MANIFEST.in index 703daa31b3..36d627dc10 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -15,6 +15,7 @@ recursive-exclude awx/main/tests * recursive-exclude awx/ui/client * recursive-exclude awx/settings local_settings.py* include tools/scripts/request_tower_configuration.sh +include tools/scripts/request_tower_configuration.ps1 include tools/scripts/ansible-tower-service include tools/munin_monitors/* include tools/sosreport/* diff --git a/setup.py b/setup.py index 1478d5132c..3c46b87f00 100755 --- a/setup.py +++ b/setup.py @@ -122,7 +122,7 @@ setup( ("%s" % webconfig, ["config/awx-httpd-80.conf", "config/awx-httpd-443.conf", "config/awx-munin.conf"]), - ("%s" % sharedir, ["tools/scripts/request_tower_configuration.sh",]), + ("%s" % sharedir, ["tools/scripts/request_tower_configuration.sh","tools/scripts/request_tower_configuration.ps1"]), ("%s" % docdir, ["docs/licenses/*",]), ("%s" % munin_plugin_path, ["tools/munin_monitors/tower_jobs", "tools/munin_monitors/callbackr_alive", diff --git a/tools/scripts/request_tower_configuration.ps1 b/tools/scripts/request_tower_configuration.ps1 new file mode 100644 index 0000000000..17f1e91012 --- /dev/null +++ b/tools/scripts/request_tower_configuration.ps1 @@ -0,0 +1,40 @@ +Param( + [string]$tower_url, + [string]$host_config_key, + [string]$job_template_id +) + +Set-StrictMode -Version 2 +$ErrorActionPreference = "Stop" + +If(-not $tower_url -or -not $host_config_key -or -not $job_template_id) +{ + Write-Host "Requests server configuration from Ansible Tower" + Write-Host "Usage: $($MyInvocation.MyCommand.Name) [:server port] " + Write-Host "Example: $($MyInvocation.MyCommand.Name) example.towerhost.net 44d7507f2ead49af5fca80aa18fd24bc 38" + Exit 1 +} + +$retry_attempts = 10 +$attempt = 0 + +$data = @{ + host_config_key=$host_config_key +} + +While ($attempt -lt $retry_attempts) { + Try { + $resp = Invoke-WebRequest -Method POST -Body $data -Uri http://$tower_url/api/v1/job_templates/$job_template_id/callback/ -UseBasicParsing + + If($resp.StatusCode -eq 202) { + Exit 0 + } + } + Catch { + $ex = $_ + $attempt++ + Write-Host "$([int]$ex.Exception.Response.StatusCode) received... retrying in 1 minute (Attempt $attempt)" + } + Start-Sleep -Seconds 60 +} +Exit 1 \ No newline at end of file