From 01d7df3ab2af5da6aec4ed2104e9161b45e23ba1 Mon Sep 17 00:00:00 2001 From: Chris Church Date: Tue, 30 Jul 2013 22:47:52 -0400 Subject: [PATCH] Added sample script for launching a job via the API. --- tools/scripts/launch_job.py | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 tools/scripts/launch_job.py diff --git a/tools/scripts/launch_job.py b/tools/scripts/launch_job.py new file mode 100755 index 0000000000..aa9136c639 --- /dev/null +++ b/tools/scripts/launch_job.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python + +import datetime +import getpass +import json +import urllib2 + +REST_API_URL = "http://awx.example.com/api/v1/" +REST_API_USER = "admin" +REST_API_PASS = "password" +JOB_TEMPLATE_ID = 1 + +# Setup urllib2 for basic password authentication. +password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() +password_mgr.add_password(None, REST_API_URL, REST_API_USER, REST_API_PASS) +handler = urllib2.HTTPBasicAuthHandler(password_mgr) +opener = urllib2.build_opener(handler) +urllib2.install_opener(opener) + +# Read the job template. +JOB_TEMPLATE_URL="%sjob_templates/%d/" % (REST_API_URL, JOB_TEMPLATE_ID) +response = urllib2.urlopen(JOB_TEMPLATE_URL) +data = json.loads(response.read()) + +# Update data if needed for the new job. +data.pop('id') +data.update({ + 'name': 'my new job started at %s' % str(datetime.datetime.now()), + 'verbosity': 3, +}) + +# Create a new job based on the template and data. +JOB_TEMPLATE_JOBS_URL="%sjobs/" % JOB_TEMPLATE_URL +request = urllib2.Request(JOB_TEMPLATE_JOBS_URL, json.dumps(data), + {'Content-type': 'application/json'}) +response = urllib2.urlopen(request) +data = json.loads(response.read()) + +# Get the job ID and check for passwords needed to start the job. +JOB_ID = data['id'] +JOB_START_URL = '%sjobs/%d/start/' % (REST_API_URL, JOB_ID) +response = urllib2.urlopen(JOB_START_URL) +data = json.loads(response.read()) + +# Prompt for any passwords needed. +start_data = {} +for password in data.get('passwords_needed_to_start', []): + value = getpass.getpass('%s: ' % password) + start_data[password] = value + +# Make POST request to start the job. +request = urllib2.Request(JOB_START_URL, json.dumps(start_data), + {'Content-type': 'application/json'}) +response = urllib2.urlopen(request)